在網路中,一幀乙太網資料報的格式如下所示,常用的udp以及tcp通訊都是基於ip協議基礎上的。
(1)版本佔4
位,指ip
協議的版本。通訊雙方使用的
ip協議版本必須一致。目前廣泛使用的
ip協議版本號為4(即
ipv4
)。關於
ipv6
,目前還處於草案階段。
(2)首部長度佔4
位,可表示的最大十進位制數值是
15。請注意,這個欄位所表示數的單位是
32位字長(1個
32位字長是
4位元組),因此,當
ip的首部長度為
1111
時(即十進位制的
15),首部長度就達到
60位元組。當
ip分組的首部長度不是
4位元組的整數倍時,必須利用最後的填充字段加以填充。因此資料部分永遠在
4位元組的整數倍開始,這樣在實現
ip協議時較為方便。首部長度限制為
60位元組的缺點是有時可能不夠用。但這樣做是希望使用者儘量減少開銷。最常用的首部長度就是
20位元組(即首部長度為
0101
),這時不使用任何選項。
(3)區分服務佔8
位,用來獲得更好的服務。這個欄位在舊標準中叫做服務型別,但實際上一直沒有被使用過。
1998
年ietf
把這個字段改名為區分服務
ds(differentiated services)
。只有在使用區分服務時,這個欄位才起作用。
(4)總長度總長度指首部和資料之和的長度,單位為位元組。總長度欄位為
16位,因此資料報的最大長度為65535位元組。 在
ip層下面的每一種資料鏈路層都有自己的幀格式,其中包括幀格式中的資料字段的最大長度,這稱為最大傳送單元
mtu(maximum transfer unit)
。當乙個資料報封裝成鏈路層的幀時,此資料報的總長度(即首部加上資料部分)一定不能超過下面的資料鏈路層的
mtu值。
(5)標識(identification)佔16
位。ip
軟體在儲存器中維持乙個計數器,每產生乙個資料報,計數器就加
1,並將此值賦給標識字段。但這個「標識
」並不是序號,因為
ip是無連線服務,資料報不存在按序接收的問題。當資料報由於長度超過網路的
mtu而必須分片時,這個標識欄位的值就被複製到所有的資料報的標識欄位中。相同的標識欄位的值使分片後的各資料報片最後能正確地重灌成為原來的資料報。
(6)標誌(flag)佔3
位,但目前只有
2位有意義。 ●
標誌欄位中的最低位記為
mf(more fragment)
。mf=1
即表示後面
「還有分片
」的資料報。
mf=0
表示這已是若干資料報片中的最後乙個 ●
標誌字段中間的一位記為
df(don』t fragment)
,意思是
「不能分片
」。只有當
df=0
時才允許分片。
(7)片偏移佔
13位。片偏移指出:較長的分組在分片後,某片在原分組中的相對位置。也就是說,相對使用者資料字段的起點,該片從何處開始。片偏移以
8個位元組為偏移單位。這就是說,每個分片的長度一定是
8位元組(
64位)的整數倍。
(8)生存時間佔8
位,生存時間字段常用的的英文縮寫是
ttl(time to live)
,表明是資料報在網路中的壽命。由發出資料報的源點設定這個字段。其目的是防止無法交付的資料報無限制地在網際網路中兜圈子,因而白白消耗網路資源。最初的設計是以秒作為
ttl的單位。每經過乙個路由器時,就把
ttl減去資料報在路由器消耗掉的一段時間。若資料報在路由器消耗的時間小於
1秒,就把
ttl值減1。當
ttl值為
0時,就丟棄這個資料報。
(9)協議佔
8位,協議字段指出此資料報攜帶的資料是使用何種協議,以便使目的主機的
ip層知道應將資料部分上交給哪個處理過程。
(10)
首部檢驗和佔16
位。這個欄位只檢驗資料報的首部,但不包括資料部分。這是因為資料報每經過乙個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標誌、片偏移等都可能發生變化)。不檢驗資料部分可減少計算的工作量。
(11)
源ip位址佔32
位。 (12)
目的ip位址佔32
位。
分片是指需要傳送的資料大於最大傳輸單元(mtu)的時候,就需要分成多個包,然後乙個個的傳送給對方。如果通過tcp傳輸資料,到ip層的時候,肯定不需要分片;只有通過udp傳輸大資料的時候,需要分片。
例如:用udp協議傳送10240個位元組資料;
但資料提交到網路層的時候,由於資料超過了最大傳輸單元,就分片了。分成多個包通過ip協議傳送個對方。每個資料報最大的位元組為mtu - ip頭 = 1500 - 20 = 1480。
IP協議 Linux網路程式設計
版本號 4位,ip協議的版本 首部長度 4位,4個位元位計算出來的值乘4等於首部的長度 復位型別 8位,前三個位元位表表示優先權,但是已經棄用了 後面的4個位元位分別表示 最小延遲 最大吞吐量 最高可用性 最小費用,這四個位元位是乙個互斥的關係,一般都是0,表示預設屬性 最後乙個位元位是保留位,必須...
網路協議 IP
資料鏈路層的主要作用是在互連同一種資料鏈路的節點之間程序包 幀 傳遞,一旦跨越多種資料鏈路,就需要借助網路層。網路層可以跨越不同的資料鏈路,即使是在不同的資料鏈路上也能實現兩端節點之間的資料報傳輸。如何抵達目的地,網路層的路由技術,主要實現路徑的選擇與優化 不可靠 丟了就丟了 無連線 不維護狀態,不...
網路程式設計(TCP IP協議 埠 IP位址)
網路能夠把多方鏈結在一起,然後可以進行資料傳遞 網路程式設計 讓不同電腦上的軟體能夠進行資料傳遞,即程序之間的通訊 為了把全世界的所有不同型別的計算機都連線起來,就必須規定一套全球通用的協議,為了實現網際網路這個目標,網際網路協議簇 internet protocol suite 就是通用協議標準。...