首頁>Club>
4
回覆列表
  • 1 # 逍遙俠28

    對於網路工程師而言,報文格式是基礎,尤其是對於IPv4報文頭的格式及其各欄位的功能更是必備技能。


    IPv4報文頭格式及各欄位功能:


    IPv4報文頭格式


    各欄位功能:


    1、版本號(Version):長度 4 bit 。標識目前採用的 IP 協議的版本號。一般的值為 0100(IPv4),0110(IPv6)


    2、IP 報頭長度(Header Length):長度 4 bit 。這個欄位的作用是為了描述 IP 報頭的長度,因為在 IP 報頭中有變長的可選部分。該部分佔 4 個 bit,長度單位為 4 個位元組,即本區域值 = IP 頭部長度(單位為位元組)/ 長度單位(4 個位元組)。因此,一個 IP 報頭的長度最長為 “ 1111 ”,即 15 x 4 個位元組 = 60 個位元組。IP 報頭最小長度為 20 位元組。


    3、服務型別(Type of Service):長度 8 bit 。8 位按位被如下定義:PPP DTRC0(更多詳細資訊可以參見 RFC1340 和 RFC1349)


    PPP:前 3 位,定義包的優先順序,取值越大資料越重要


    000 普通(Routine)


    001 優先的(Priority)


    010 立即的傳送(Immediate)


    011 閃電式的(Flash)


    100 比閃電還閃電式的(Flash Override)


    101 CRI / TIC / ECP(找不到這個詞的翻譯)


    110 網間控制(Internetwork Control)


    111 網路控制(Network Control)


    DTRCO:後 5 位


    D 時延:0:普通,1:延遲儘量小


    T 吞吐量:0:普通,1:流量儘量大


    R 可靠性:0:普通,1:可靠性儘量大


    M 傳輸成本:0:普通,1:成本儘量小


    0 最後一位被保留,恆定為 0


    4、IP 包總長度(Total Length):長度 16 bit 。以位元組為單位計算的 IP 包的長度(包括頭部和資料),所以 IP 包最大長度 65535 位元組。所以,資料包有效載荷的大小 = IP 包總長度(Total Length)- IP 報頭長度(Header Length)。


    5、識別符號(Identifier):長度 16 bit 。該欄位和 Flags 和 Fragment Offest 欄位聯合使用,對較大的上層資料包進行分段(fragment)操作。路由器將一個包拆分後,所有拆分開的小包被標記相同的值,以便目的端裝置能夠區分哪個包屬於被拆分開的包的一部分。


    6、標記(Flags):長度 3 bit 。


    該欄位第一位不使用。


    第二位是 DF(Don’t Fragment)位,DF 位設為 1 時表明路由器不能對該上層資料包分段。如果一個上層資料包無法在不分段的情況下進行轉發,則路由器會丟棄該上層資料包並返回一個錯誤資訊。


    第三位是 MF(More Fragments)位,當路由器對一個上層資料包分段,則路由器會在除了最後一個分段的 IP 包的報頭中將 MF 位設為 1 。


    7、片偏移(Fragment Offset):長度 13 bit,以 8 個八位組為單位。表示該 IP 包在該組分片包中位置,接收端靠此來組裝還原 IP 包。


    8、生存時間(TTL):長度 8 bit,設計之初是以秒(s)為單位的,但實際以跳數為單位,建議的預設值為 64 。當 IP 包進行傳送時,先會對該欄位賦予某個特定的值。當 IP 包經過每一個沿途的路由器的時候,每個沿途的路由器會將 IP 包的 TTL 值減少 1 。如果 TTL 減少為 0,則該 IP 包會被丟棄。這個欄位可以防止由於路由環路而導致 IP 包在網路中不停被轉發。


    9、協議(Protocol):長度 8 bit 。標識了上層所使用的協議。以下是比較常用的協議號:1 ICMP;2 IGMP;6 TCP;17 UDP;88 IGRP;89 OSPF 。


    10、頭部校驗(Header Checksum):長度 16 bit 。用來做 IP 頭部的正確性檢測,但不包含資料部分。 因為每個路由器要改變 TTL 的值,所以路由器會為每個透過的資料包重新計算這個值(RFC1141 討論了一些簡化計算的策略)。


    11、起源和目標地址(Source and Destination Addresses):這兩個地址都是 32 bit 。標識了這個 IP 包的起源和目標地址。要注意除非使用 NAT,否則整個傳輸的過程中,這兩個地址不會改變。


    12、可選項(Options):這是一個可變長的欄位。該欄位屬於可選項,主要用於測試,由起源裝置根據需要改寫。可選專案包含以下內容:


    鬆散源路由(Loose source routing):給出一連串路由器介面的 IP 地址。IP 包必須沿著這些 IP 地址傳送,但是允許在相繼的兩個 IP 地址之間跳過多個路由器。


    嚴格源路由(Strict source routing):給出一連串路由器介面的 IP 地址。IP 包必須沿著這些 IP 地址傳送,如果下一跳不在 IP 地址表中則表示發生錯誤。


    路由記錄(Record route):當 IP 包離開每個路由器的時候記錄路由器的出站介面的 IP 地址。


    時間戳(Timestamps):當 IP 包離開每個路由器的時候記錄時間。


    填充(Padding):因為 IP 報頭長度(Header Length)部分的單位為 32 bit,所以 IP 報頭的長度必須為 32 bit 的整數倍。因此,在可選項後面,IP 協議會填充若干個 0,以達到 32 bit 的整數倍。

  • 2 # 氣質摔得稀碎

    UDP則與TCP不同,UDP包頭內有總長度欄位,同樣為兩個位元組,因此UDP資料包的總長度被限制為65535,這樣恰好可以放進一個IP包內,使得 UDP/IP協議棧的實現非常簡單和高效。65535再減去UDP頭本身所佔據的8個位元組,UDP服務中的最大有效載荷長度僅為65527(好像還要減去IP頭20個位元組,最後為65507)。這個值也就是

    你在呼叫getsockopt()時指定SO_MAX_MSG_SIZE所得到返回值,任何使用SOCK_DGRAM屬性的socket,一次send的 資料都不能超過這個值,否則必然得到一個錯誤。

  • 中秋節和大豐收的關聯?
  • 心包膜剝除手術後要住院多久?