linux網路編程之TCP/IP基礎(三):IP資料報格式和IP地址路由

來源:互聯網
上載者:User

一、IP資料報格式

IP資料報格式如下:


版本
IP協議版本號碼,長度為4位,IPv4此欄位值為4,IPv6此欄位值為6


首部長度
以32位的字為單位,該欄位長度為4位,最小值為5,即不帶任何選項的IP首部20個位元組;最大值為15,所以首部長度最大為60個位元組


服務類型(TOS)
長度為8位。此欄位包含3位的優先權(現已忽略),4位的服務類型子欄位和1位的保留位(必須置0)。4位的服務類型分別為最小延遲(D)、最大輸送量(T)、最高可靠性(R)、最小費用(F),如。



總長度
該欄位長度為16位,以位元組為單位,該欄位長度包含IP的頭部和資料部分(payload)。IP資料報最大可達65535個位元組。


標識
16位標識,用來標識一個IP資料報,每發送一個此值會加1,可用於分區和重新組裝成資料包。


標誌與片位移

3位標誌其中第一位不使用, 每二位DF(Don’t Fragment),該位如果為1,如果傳輸的資料報超過傳輸單元最大值,該資料報會被丟棄,並發送一個ICMP差錯報文。第三位MF(More Fragment)表示是否有更多的片,該位為1,說明後續有分區。最後一片MF為0。
IP包分區後每一個資料報都具有自己的首部,但是片位移值不同,通過片位移值接收端可以重新組裝IP包。


TTL
TTL(Time To Live)表示資料報最多可經過的路由器的數量。資料報每經過一個路由器,TTL減1,減為0時丟棄,並發送ICMP報文通知源主機。TTL可以避免資料報在路由器之間不斷迴圈。


協議類型
表示IP層上承載的是哪個進階協議。在封裝與分用的過程中,協議棧知道該交給哪個層的協議處理。1 ICMP 2 IGMP 6 TCP 17UDP


頭部校正和
保證資料前序部的資料完整性,但校正不包括資料部分。這樣做的目的有二:一是所有將資料封裝在IP資料包中的高層協議均含有覆蓋整個資料的校正和,因此IP資料報沒有必要再對其所承載的資料部分進行校正。二是每經過一個路由器,IP資料報的頭部要發生改變(如TTL),而資料部分不變,這樣只對發生改變的頭部進行校正,顯然不會浪費太多的時間。為了減少計算時間,一般不用CRC校正碼,而是採用更簡單的網際校正和(Internet
Checksum)。


源IP地址
發送資料的主機IP地址


目的IP地址
接收資料的主機IP地址


選項與填充(選項為4位元組整數倍,否則用0填充)
安全和處理限制
路徑記錄:記錄所經曆路由器的IP地址
時間戳記:記錄所經曆路由器的IP地址和時間
寬鬆來源站點路由:指定資料報文必須經曆的IP地址,可以經過沒有指定的IP地址。
嚴格的來源站點路由:指定資料報文必須經曆的IP地址,不能經過沒有指定的IP地址。


二、IP地址與路由

IPv4的IP地址長度為4位元組,通常採用點分十進位標記法(dotted decimal representation)例如0xc0a80002表示為192.168.0.2。Internet被各種路由器和網關裝置分隔成很多網段,為了標識不同的網段,需要把32位的IP地址劃分成網路號和主機號兩部分,網路號相同的各主機位於同一網段,相互間可以直接通訊,網路號不同的主機之間通訊則需要通過路由器轉寄。

假設某主機上的網路介面配置和路由表如下:


這台主機只有一個網路介面連到192.168.232.0/24網路。路由表的Destination是目的網路地址,Genmask是子網路遮罩,Gateway是下一跳地址,Iface是發送介面,Flags中的U標誌表示此條目有效(可以禁用某些條目),G標誌表示此條目的下一跳地址是某個路由器的地址,沒有G標誌的條目表示目的網路地址是與本機介面直接相連的網路,不必經路由器轉寄,因此下一跳地址處記為*號。
如果要發送的資料包的目的地址是192.168.232.1,跟第三行的子網路遮罩做與運算得到192.168.232.0,正是第三行的目的網路地址,因此從eth0介面發送出去,由於192.168.232.0/24正是與eth0介面直接相連的網路,因此可以直接發到目的主機,不需要經路由器轉寄。
如果要發送的資料包的目的地址是202.10.1.2,跟後兩行路由表條目都不匹配,那麼就要按預設路由條目,從eth0介面發出去,首先發往192.168.232.2 路由器,再讓路由器根據它的路由表決定下一跳地址。


路由的處理過程如下,ARP部分可以參考這裡:

參考:

《Linux C 編程一站式學習》

《TCP/IP詳解 卷一》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.