IP協議

IP協議

IP 協議作爲通信子網的最高層,提供無連接的數據報傳輸機制。IP協議是點到點的,核心問題是尋徑。它向上層提供統一的IP數據報,使得各種物理幀的差異性對上層協議不復存在。

IP協議的作用

  • 尋址和路由
  • 傳遞服務:提供不可靠,無連接的服務。

    爲什麼說IP協議不可靠和、無連接
    不可靠:是指不能保證IP數據報能成功到達目的地,是一種盡力而爲的傳輸服務,路由器對IP報錯誤處理方式是丟包,併發送ICMP給源地址。
    無連接:是指IP並不維護任何關於後續數據報的狀態信息。每個數據報的處理是相互獨立的。

  • 數據分段和重組
    IP是網絡層上的主要協議,同時被TCP和UDP使用。TCP和UDP的每組數據都通過端系統和每個中間路由器中的IP層在互聯網中進行傳輸。

    在TCP/IP協議族中,網絡層IP提供的是一種不可靠的服務。也就是說,它只是儘可能快地把分組從源結點送到目的結點,但是並不提供任何可靠性保證。而另一方面,TCP在不可靠的IP層上提供了一個可靠的運輸層。爲了提供這種可靠的服務,TCP採用了超時重傳、發送和接收端到端的確認分組等機制。由此可見,運輸層和網絡層分別負責不同的功能。(詳見TCP UDP)

IP協議的工作原理

IP是TCP/IP協議族中最爲核心的協議。所有的TCP、UDP、ICMP及IGMP數據都以IP 數據報格式傳輸。IP提供不可靠、無連接的數據報傳送。
不可靠(unreliable)的意思是它不能保證IP 數據報能成功地到達目的地。IP 僅提供最好的傳輸服務。如果發生某種錯誤時,如某個路由器暫時用完了緩衝區,IP 有一個簡單的錯誤處理算法:丟棄該數據報,然後發送ICMP 消息報給信源端。任何要求的可靠性必須由上層來提供(如TCP)。
無連接(connectionless)這個術語的意思是IP 並不維護任何關於後續數據報的狀態信息。每個數據報的處理是相互獨立的。這也說明,IP 數據報可以不按發送順序接收。如果一信源向相同的信宿發送兩個連續的數據報(先是A,然後是B),每個數據報都是獨立地進行路由選擇,可能選擇不同的路線,因此B可能在A到達之前先到達。

當應用程序用TCP傳送數據時,數據被送入協議棧中,然後逐個通過每一層直到被當作一串比特流送入網絡。其中每一層對收到的數據都要增加一些首部信息(有時還要增加尾部信息),如圖所示。TCP傳給IP的數據單元稱作TCP報文段或簡稱爲TCP段(TCP segment)。IP傳給網絡接口層的數據單元稱作IP數據報(IP datagram)。通過以太網傳輸的比特流稱作幀(Frame)。
下圖中幀頭和幀尾下面所標註的數字是典型以太網幀首部的字節長度。以太網數據幀的物理特性是其長度必須在46~1500字節之間。由於現在幾乎所有的計算機系統都採用8bit的字節,因此我們在本書中使用字節(byte)這個術語。
這裏寫圖片描述
數據進入協議棧時的封裝過程

UDP數據與TCP數據基本一致。唯一的不同是UDP傳給IP的信息單元稱作UDP數據報(UDP datagram),而且UDP的首部長爲8字節。
由於TCP、UDP、ICMP和IGMP都要向IP傳送數據,因此IP必須在生成的IP首部中加入某種標識,以表明數據屬於哪一層。爲此,IP在首部中存入一個長度爲8bit的數值,稱作協議域。1表示爲ICMP協議,2表示爲IGMP協議,6表示爲TCP協議,17表示爲UDP協議。
類似地,許多應用程序都可以使用TCP或UDP來傳送數據。運輸層協議在生成報文首部時要存入一個應用程序的標識符。TCP和UDP都用一個16bit的端口號來表示不同的應用程序。TCP和UDP把源端口號和目的端口號分別存入報文首部中。
(網絡接口分別要發送和接收IP、ARP和RARP數據,因此也必須在以太網的幀首部中加入應用程序某種形式的標識,以指明生成數據的網絡層協議。爲此,以太網的幀首部也有一個16 bit的幀類型域。)

IP協議數據報文格式

一個IP數據報由首部和數據兩部分組成。首部的前一部分長度是固定的20個字節,後面部分的長度則是可變長度。下面介紹首部各字段的意義。
這裏寫圖片描述

這裏寫圖片描述

一個IP數據報由首部和數據兩部分組成。首部的前一部分長度是固定的20個字節,
後面部分的長度則是可變長度。下面介紹首部各字段的意義。

IP數據報首部的固定部分
1. 版本
版本字段佔4bit,指IP協議的版本。通信雙方使用的IP協議的版本必須一致。版本有IPV4 和IPV6
2. 首部長度
首部長度字段佔4bit,可表示的最大數值是15個單位(一個單位爲4字節),因此IP的首部長度的最大值是60字節。當IP分組的首部長度不是4字節的整數倍時,必須利用最後一個填充字段加以填充。這樣,數據部分永遠在4字節的整數倍時開始,這樣在實現起來會比較方便。首部長度限制爲60字節的缺點是有時(如採用源站選路時)不夠用。但這樣做的用意是要用戶儘量減少額外的開銷。
3. 服務類型
服務類型字段共8bit長,用來獲得更好的服務,其意義見圖6的上面部分所示。
服務類型字段的前三個比特表示優先級,它可使數據報具有8個優先級中的一個。
第4個比特是D比特,表示要求有更低的時延。第5個比特是T比特,表示要求有更高的吞吐量。第6個比特是R比特,表示要求有更高的可靠性,即在數據報傳的過程中,被結點交換機丟棄的概率要更小些。第7個比特是C比特,是新增加的,表示要求選擇價格更低廉的路由。最後一個比特目前尚未使用。
4. 總長度
總長度指首部和數據之和的長度,單位爲字節。總長度字段爲16bit,因此數據報的最大長度爲65535字節。這在當前是夠用的。
當很長的數據報要分段進行傳送時,“總長度”不是指未分段前的數據報長度,而是指分段後每個段的首部長度與數據長度的總和。
5. 標識
標識字段的意義和OSI的IPDU中的數據單元標識符的意義一樣,是爲了使分段後的各數據報段最後能準確地重裝成爲原來的數據報。請注意:這裏的“標識”並沒有順序號的意思,因爲IP是無連接服務,數據報不存在按序接收的問題。
6. 標誌
標誌字段佔3bit。目前只有前兩個比特有意義。
標誌字段中的最低位記爲MF(More Fragment)。MF=1即表示後面還有分段的數據報。MF=0表示這已是若干數據報段中的最後一個。
標誌字段中間的一位記爲DF(Don’t Fragment)。只有當DF=0時才允許分段。
7. 段偏移
段偏移字段的意義和OSI的IPDU中規定的相似,只是表示的單位不同。這裏是以8個字節爲偏移單位。可見IP數據報的段偏移字段(13bit長)和OSI的IPDU的段偏移字段(16bit長)是相當的。
8. 壽命
壽命字段記爲TTL(Time To Live),其單位爲秒。壽命的建議值是32秒。但也可設定爲3-4秒,或甚至255秒。
9. 協議
協議字段佔8bit,它指出此數據攜帶的運輸層數據是使用何種協議,以便目的主機的IP層知道應將此數據報上交給哪個進程。常用的一些協議和響應的協議字段值(寫在協議後面的括弧中)是:UDP(17),TCP(6),ICMP(1),GGP(3),EGP(8),IGP(9),OSPF(89),以及ISO的TP4(29)。
10. 首部檢驗和
此字段只檢驗數據報的首部,不包括數據部分。不見眼數據部分是因爲數據報每經過一個結點,結點處理機就要重新計算一下首部檢驗和(一些字段,如壽命、標誌、段偏移等都可能發生變化)。如將數據部分一起檢驗,計算的工作量就太大了。
首部校驗和(16bit)字段只校驗數據報的首部,不包括數據部分。這裏不採用CRC檢驗碼而採用簡單的計算方法
實現對IP分組首部的差錯檢測
計算校驗和時,該字段置全0
採用反碼算數運算求和,和的反碼作爲首部校驗和字段
逐跳計算、逐跳校驗
11. 地址
源站IP地址字段和目的站IP地址字段都各佔4字節。

IP分片

最大傳輸單元(MTU)
網絡鏈路存在MTU (最大傳輸單元)—鏈路層數據幀可封裝數據的上限
不同鏈路的MTU不同

這裏寫圖片描述
IP分片與重組
大IP分組向較小MTU鏈路轉發時, 可以被“分片” (fragmented)

1個IP分組分爲多片IP分組
IP分片到達目的主機後進行“重組”(reassembled)
IP首部的相關字段用於標識分片以及確定分片的相對順序

總長度、標識、標誌位和片偏移
這裏寫圖片描述
分片相關的字段
這裏寫圖片描述

標識字段佔16位:標識一個IP分組

IP協議利用一個計數器,每產生IP分組計數器加1,作爲該IP分組的標識
標誌位字段佔3位:

DF (Don’t Fragment)
DF =1:禁止分片
DF =0:允許分片

MF (More Fragment)

MF =1:非最後一片
MF =0:最後一片(或未分片)
這裏寫圖片描述

片偏移字段佔13位:一個IP分組分片封裝原IP分組數據的相對偏移量
片偏移字段以8字節爲單位

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章