2.5 IPv4
——————————————————————————————————————————————
1Word=4Octet=32Byte=32Bit,1Octet代表8字節(二進制),Word代表多比特的組合,Flag表示1個字節的控制函數,Flag爲1是代表被設置,Flag爲0時代表是沒有用到的乾淨的clear,這些在IPv4中使用,但也用於IPv6、TCP和UDP以及其他IETF協議。
IPv4包被稱爲數據報,數據報定義如下,在RFC 1594中,它被定義爲一個獨立的獨立數據實體,它承載足夠的信息,而不依賴任何其他較早發送的數據包進行路由,這就是是一個獨立的單元,它具有所有的控制特性和功能,並且它可以獨立地路由,它們被成功地路由或不成功不是依賴於先前的包。換句話說每個IPv4數據包都可以是個火車頭。
IP包被設計成有IPv4包和IPv6包,這是IP v4包的結構:首先它分爲有一個報頭和一個有效負載,有效載荷部分將包括TCP/UDP報頭以及數據部分,該數據部分是有效載荷段部分
IPv4的基本功能是互聯網絡和路由,IPv4分組報頭包(IPv4 packet header)含將IPv4包傳遞到其目的地所需的所有功能,這就是爲什麼它被稱爲數據報的原因。
——————————————————————————————————————————————
看下圖,一共分爲14部分一共佔有20octets:
1.版本(version)(IP v 4中有4字節/IP v 6中有6字節)
不同的IP包的版本通過version被用來分辨。
2.因特網報頭長度(IHL)(4 bits)
顧名思義,這是一個用Word表示的IP v4 header長度,IHL最小值爲5,所以說最小長度是5Words,即20Octets。
3.區分服務字段(DS) 和 顯示擁塞通知(ECN) (Lds=6bits,Lecn=2bits)
(1)DS區分服務優先級分配,6字節。
(2)ECN這些用於網絡擁塞的顯式信令,以減緩在網絡中檢測到的延遲或擁塞時正在傳輸的分組的速度。
4.總長度(Total Length)(16bits)
總長度以八位字節爲單位的IP數據包的總長度,也就是2的16次方個Octets也就是2的19次方bits的空間,當然,這些空間不會全部用到,because IPv4 packet size is limited by the layer 2 frame size,就是第二層的幀。
這裏插一個notion,那就是
4.5.MTU
它是一個IP分組的最大大小,可以在介質上無碎片地傳輸,即不用分組
比如:
(1)當你使用以太網的時候,基於IEEE 802.3標準,MTU的大小是1500個八位字節,如下圖,出來MAC目的地MAC源,802.1Qtag,以及長度,中間一大塊有效載荷段(payload)有46到1500Octets的長度,
(2)在遵循IEEE 802.11無線局域網、無線LAN標準的Wi-Fi的情況下,您可以看到2304個八位字節的最大大小MSDU(MAC服務數據單元)MTU和MPDU(即包含了MAC協議數據單元,這將包括幀控制、持續時間ID、地址、FCS,MSDU),在IP v4和IP v6裏頭MSDU都是2304Octets,
5.標識(Identification)(16bits)
這是唯一鑑別IPv4包的方法,它與源地址,目的地址,和協議領域一起使用下面會說到。
6.標誌和片偏移(Flags and Fragment Offset)(Lfl=3bits LFr=13bits)
這個是非常有用的一個功能那就是分組碎片化,即當一個數據包太大不能通過網絡的時候需要把它大卸八塊才能傳輸。
1.先來看看這個Flag,其中只有兩個字節有被用到
(1.1)0號字節是預留的,設置成0。
(1.2)1號字節是DF表示不用碎片化,1號字節爲1時表示真即不用碎片化,爲0就是假表示可能要碎片化,當Bit1爲1時就跳過了,爲0時開始檢查Bit2。
(1.3)2號字節是MF表示要去碎片化,2號字節爲1時表示碎片化就這樣不斷循環下去,0時表示這是最後一個碎片了。
2.片段偏移(Fragment Offset)(13 bits)
這表明原始數據報中的這個片段屬於哪裏,而除了最後一個片段以外的片段必須包含一個數據字段,這是長度爲64字節的單位.通俗來說拿2.1~2.4中的書集做例子這就是箱子編號。
7.生存時間(TTL)(8 bits)
它指定數據包允許在Internet中保留的秒的時間長度。IP分組通過的每一個路由器都應該至少減少一個TTL。TTL與該項中的跳數相似,如果TTL字段在到達目的地之前變爲零,則該分組將被丟棄,這個在level.1有提到,可以參考level.1的Week 5(part 2)
8.協議(Protocol)(8 bits)
這句話很重要中文翻譯不來:This identifies the type of the next header in the packet directly following the IPv4 header.然後這個協議(IP v4型)將會一直指示下去,第三層...第四層...還有最後的載荷段層(下圖)。
這是protocol代號,每個號碼對應一個協議,其中就有最流行的TCP/UDP,也可以看到ICMP,它是Internet控制消息協議,還有OSPF,用來執行路由路徑的建立。
9.報頭校驗(Header Checksum)(16bits)
報頭校驗和包括錯誤檢測碼,使得IPv4分組報頭受到保護,但它不保護IP分組的有效載荷部分,包中的領域確實發生了變化,當它們改變時,重新計算報頭校驗和每經過一個路由器的時候都需要檢查錯誤,因爲這裏面的一些領域在路由的過程中會發生變化就比如TTL領域和Flag領域等等。
10.地址(address)(32 bits)
地址分爲五ABCDE類而CIDR,這是無類別的域間路由表示法現在使用得更爲流行
(1)這是一種有效地分配IP地址和啓用IP路由的方法,1993由IETF提出,取代了分類IP地址,因爲ABCDE類的子網太大了使得IP的使用效率不高,A lot of IP addresses had unused, reserved, wasted IP addresses,CIDR使得Internet更加的具有可延展性,因爲網絡可以分配一個合適的子網出來。
(2)CIDR基於其實際網絡規模和短期預測需求,使IPv4和IPv6地址塊分配給organizations,也可以用於將IPv4和IPv6地址空間分配給因特網服務提供商以及最終用戶,可變長度子網掩蔽(VLSM)是CIDR使用的一種技術
拿123.234.100.56/24做例子,我們從中可知子網掩碼是255.255.255.0,我們通過原來的IP地址可以知道路由前綴是123.234.100.0,這樣,前綴知道了,所需子網也知道了,就可以去分配空間了,前綴參考資料:https://blog.csdn.net/hrl7752/article/details/78037033
11.選項和填充(Options & Padding)(32bits)
選項領域被用來向主機發送請求,在選項的末尾,包括填充,填充是被用來確保IP v4報頭的長度是個32bit的倍數(通過填充一些bits,相當於補位),2中的IHL就會被padding拿來考察是否長度上有匹配。