IP數據報 (IP Datagram)。這是一個與硬件無關的虛擬包,由首部和數據兩部分組成。首部的前一部分是固定長度,共 20 字節,是全部IP數據報必須具備的。在首部的固定部分的後面是一些可選字段,其長度是可變的。首都中的源地址和目的地址都是 IP 協議地址。安全
報文註釋網絡
IP報文內容
ide
Frame 1197: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface 0
Ethernet II, Src: localhost (e4:d5:3d:a2:64:95), Dst: localhost (c8:3a:35:58:12:c8)
Internet Protocol Version 4, Src: localhost (192.168.0.104), Dst: localhost (192.168.0.1)
0100 .... = Version: 4 #佔4bite,指IP協議的版本
spa
.... 0101 = Header Length: 20 bytes (5) #首部長度就是 20 字節
3d
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) #佔8bite,目前被QoS所使用
blog
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 60 #首都及數據之和的長度
接口
Identification: 0x5fc7 (24519) #標識字段的值使分片後的各數據報片最後能正確地重裝成爲原來的數據報
圖片
Flags: 0x00 #MF=1即表示後面「還有分片」的數據報。MF=0表示這已經是若干數據報片中的最後一個
ip
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set #不能分片
ci
..0. .... = More fragments: Not set
Fragment offset: 0 #數據字段的起點,該片從何處開始
Time to live: 64 #數據報在網絡中的壽命
Protocol: ICMP (1) #數據包攜帶的數據是使用何種協議
Header checksum: 0x9940 [validation disabled]#檢驗數據報的首部,但不包括數據部分
[Header checksum status: Unverified]
Source: localhost (192.168.0.104)
Destination: localhost (192.168.0.1)
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]
IP數據報首部的可變部分:支持排錯、測量以及安全等措施,內容很豐富。此字段的長度可變,從 1-40個字節不等,取決於所選擇的項目。
Internet Control Message Protocol
爲何要分片?
1960年以前,數據通訊是基於電路交換技術,根本沒有分片
後來出現了分組交換,纔有了分片,早期分片爲128字節,後來分組交換網絡中最大傳輸單位(MTU)定義了最大能夠傳輸1500字節的數據,刨去20字節的IP包頭長度,一個IP包最多可攜帶1480字節的數據,若是傳輸的數據塊超過1480字節時,網絡層就不得不把它分片,封裝成多個網絡包
接收方又是靠什麼重組分片的?
IP數據包頭,有專門用來數據重組的相應字段flags,好比offset、ID、MF等,能夠按照數據包的分片順序,從新組裝起來
這些分片的數據單元到達對端的鏈路和時間都是不一樣的,對端根據IP首部中的標示符(Identification)、標誌(Flag)、段偏置值字段重組數據包
Identification(肯定IP同一個數據包)
Fragment offset(來肯定來一個分片是第一個、第二個)
Flags More Fragments(肯定無分片)
IP數據包的總長度過大,超過鏈路的最大MTU時,數據包就會被分紅多片,而在現在的IPv4的網絡中,數據傳輸時不可靠的,是盡力而爲的
IP數據包分片的幾個概念:
最大傳輸單元(MTU):是指由IP包頭和數據部分組成的IP數據包長度(1480),MTU值存在於每個網絡接口,不在具體數據包中
最大報文段大小(MMS):是指TCP報文段內數據承載的最大長度(1460),即上層協議交付給TCP的每一個數據單元的最大長度
TCP是如何避免被髮送方分片的?
TCP能夠避免被髮送方分片,由於TCP會在三次握手的時候,協商最大的MSS,而後主動把數據分紅小段再交給網絡層,因此網絡層不須要分片
UDP就沒有MSS的概念,把全部數據交給網絡層
TCP/ipv4版本存在的安全隱患有一、缺少數據源驗證機制三、缺少對數據包的完整性的驗證機制四、缺少機密性保障機制