IP:把數(shù)據(jù)包送達(dá)目的主機(jī) 數(shù)據(jù)包要在互聯(lián)網(wǎng)上進(jìn)行傳輸,就要符合網(wǎng)際協(xié)議(IP)標(biāo)準(zhǔn),,互聯(lián)網(wǎng)上不同的在線設(shè)備都有唯一的地址,,地址只是一個數(shù)字,這和大部分家庭收件地址類似,,你只需要知道一個家庭的具體地址,,就可以往這個地址發(fā)送包裹,這樣物流系統(tǒng)就能把物品送到目的地,。 計算機(jī)的地址就稱為 IP 地址,,訪問任何網(wǎng)站實際上只是你的計算機(jī)向另外一臺計算機(jī)請求信息,。 如果要想把一個數(shù)據(jù)包從主機(jī) A 發(fā)送給主機(jī) B,那么在傳輸之前,,數(shù)據(jù)包上會被附加上主機(jī) B 的 IP 地址信息,,這樣在傳輸過程中才能正確尋址。額外地,,數(shù)據(jù)包上還會附加上主機(jī) A 本身的 IP 地址,,有了這些信息主機(jī) B 才可以回復(fù)信息給主機(jī) A。這些附加的信息會被裝進(jìn)一個叫 IP 頭的數(shù)據(jù)結(jié)構(gòu)里,。IP 頭是 IP 數(shù)據(jù)包開頭的信息,,包含 IP 版本、源 IP 地址,、目標(biāo) IP 地址,、生存時間等信息。 簡化的 UDP 網(wǎng)絡(luò)三層傳輸模型 UDP:把數(shù)據(jù)包送達(dá)應(yīng)用程序 IP 是非常底層的協(xié)議,,只負(fù)責(zé)把數(shù)據(jù)包傳送到對方電腦,但是對方電腦并不知道把數(shù)據(jù)包交給哪個程序,,是交給瀏覽器還是交給王者榮耀?因此,,需要基于 IP 之上開發(fā)能和應(yīng)用打交道的協(xié)議,最常見的是“用戶數(shù)據(jù)包協(xié)議(User Datagram Protocol)”,,簡稱UDP,。 UDP 中一個最重要的信息是端口號,端口號其實就是一個數(shù)字,,每個想訪問網(wǎng)絡(luò)的程序都需要綁定一個端口號,。通過端口號 UDP 就能把指定的數(shù)據(jù)包發(fā)送給指定的程序了,所以IP 通過 IP 地址信息把數(shù)據(jù)包發(fā)送給指定的電腦,,而 UDP 通過端口號把數(shù)據(jù)包分發(fā)給正確的程序,。和 IP 頭一樣,端口號會被裝進(jìn) UDP 頭里面,,UDP 頭再和原始數(shù)據(jù)包合并組成新的 UDP 數(shù)據(jù)包,。UDP 頭中除了目的端口,還有源端口號等信息,。 簡化的 UDP 網(wǎng)絡(luò)四層傳輸模型 UDP 不能保證數(shù)據(jù)可靠性,,但是傳輸速度卻非??欤?UDP 會應(yīng)用在一些關(guān)注速度,、但不那么嚴(yán)格要求數(shù)據(jù)完整性的領(lǐng)域,,如在線視頻,、互動游戲等。 TCP:把數(shù)據(jù)完整地送達(dá)應(yīng)用程序 對于瀏覽器請求,,或者郵件這類要求數(shù)據(jù)傳輸可靠性(reliability)的應(yīng)用,,如果使用 UDP 來傳輸會存在兩個問題:
基于這兩個問題,,我們引入 TCP 了。TCP(Transmission Control Protocol,,傳輸控制協(xié)議)是一種面向連接的,、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,。相對于 UDP,,TCP 有下面兩個特點:
和 UDP 頭一樣,TCP 頭除了包含了目標(biāo)端口和本機(jī)端口號外,,還提供了用于排序的序列號,,以便接收端通過序號來重排數(shù)據(jù)包。 簡化的 TCP 網(wǎng)絡(luò)四層傳輸模型 下面我們再看下完整的 TCP 連接過程,,通過這個過程你可以明白 TCP 是如何保證重傳機(jī)制和數(shù)據(jù)包的排序功能的。 一個TCP連接的生命周期 從上圖可以看出,,一個完整的 TCP 連接的生命周期包括了建立連接、傳輸數(shù)據(jù),、關(guān)閉連接三個階段,。
TCP 為了保證數(shù)據(jù)傳輸?shù)目煽啃裕瑺奚藬?shù)據(jù)包的傳輸速度,,因為“三次握手”和“數(shù)據(jù)包校驗機(jī)制”等把傳輸過程中的數(shù)據(jù)包的數(shù)量提高了一倍,。 |
|