http://blog.csdn.net/ns_code/article/details/29894111
2014
IP數據報
IP是TCP/IP協(xié)議族中最核心的協(xié)議,所有的TCP、UDP、ICMP、IGMP數據都以IP數據報的格式傳輸。IP僅提供盡力而為的傳輸服務(wù),如果發(fā)生某種錯誤,IP會(huì )丟失該數據,然后發(fā)送ICMP消息給信源端。另外,IP數據報可以不按發(fā)送順序接受。
IP數據報的格式如下:
前20字節和緊接其后的選項部分是IP數據報的首部,前20個(gè)字節是固定的,選項可有可無(wú)。首部的每一行是一個(gè)32位字的單位,最高位在左邊,為0bit,最低位在右邊,為31bit。4字節的32bit值按照以下次序傳輸:首先0-7bit,其次8-15比特,然后16-23bit,最后是24-31bit,這種傳輸次序稱(chēng)為big endian字節序(我們在C語(yǔ)言寫(xiě)位操作的算法時(shí)常用到該詞)。TCP/IP首部中的所有二進(jìn)制整數在網(wǎng)絡(luò )中傳輸時(shí)都要求以這種次序,因此它又稱(chēng)作網(wǎng)絡(luò )字節序,其他形式存儲的二進(jìn)制數據,如little endian格式,則必須在傳輸數據之前把首部轉化成網(wǎng)絡(luò )字節序。
首部長(cháng)度是指首部占32bit字的數目,因為4位的最大值為15,因此首部最長(cháng)為60字節,也即是說(shuō)選項部分的最大值為40字節,不夠4的倍數,要用0填充,使數據部分的起始地址為4的倍數。
總長(cháng)度指整個(gè)IP數據報的長(cháng)度,包括首部和數據部分,16bit,最長(cháng)可達65535字節。盡管理論上可以傳送一個(gè)長(cháng)達65535的IP數據報,但實(shí)際上還要考慮網(wǎng)絡(luò )的最大承載能力等因素,標準的TCP/IP分組大小為576字節,減去IP首部的20個(gè)字節,TCP首部的20個(gè)字節,路由協(xié)議頭的24個(gè)字節,為512字節,因此主機接受的數據報的數據部分一般不超過(guò)512個(gè)字節。(PS:這點(diǎn)看的也不是太懂,網(wǎng)上很多人也有此疑問(wèn),謝希仁的計算機網(wǎng)絡(luò )中寫(xiě)的一次IP數據報最少576字節,尼瑪這里翻譯的是不超過(guò)576字節,先往后看吧,說(shuō)不定看到后面就豁然開(kāi)朗了)。
這兩天差不多算是搞明白了,很多基于UDP協(xié)議的應用之所以要求UDP的數據部分不超過(guò)512個(gè)字節(576-20-20),主要是考慮整個(gè)傳輸路徑上的效率,因為鏈路層為X2.5的網(wǎng)絡(luò )的MTU為576個(gè)字節,這基本也是各種鏈路層網(wǎng)絡(luò )的最小MTU,大于這個(gè)值就不會(huì )產(chǎn)生分片,之所以建議不超過(guò)這個(gè)值應該是考慮到網(wǎng)絡(luò )承載能力和傳輸效率、每臺主機的接受能力等很多因素的權衡。當然書(shū)上也說(shuō),576只是建議值,實(shí)際上大于它也是可以的,只是這樣在遇到X2.5網(wǎng)絡(luò )時(shí)可能產(chǎn)生分片。暫時(shí)是這么理解的,不知道看到后面會(huì )不會(huì )有新的收獲。
第十一章中又有說(shuō):現在許多但不是所有的廣域網(wǎng)都可以處理大于512字節的分組。
3個(gè)標志位主要用來(lái)標識分片的IP數據報,片位移為分片的數據報的首個(gè)字節偏離整個(gè)原始數據報的位置。
IP路由選擇
主機通過(guò)路由器和目的主機連接。主機通過(guò)IP數據報連接目的主機時(shí),按照如下步驟搜索(同一網(wǎng)絡(luò )中的搜索要經(jīng)過(guò)ARP協(xié)議將目的主機的IP地址解析為MAC地址):
聯(lián)系客服