1. 網絡地址轉換
網絡地址轉換(Network Address Translation,NAT)誕生于1994年,它的提出是在IPv4地址資源面臨枯竭的背景下,NAT在一定程度上,能夠有效的解決公網地址不足的問題。
NAT的工作原理就是重寫通過路由器的數據包的識別信息。 NAT路由器將其管理的內部主機發送的數據包的源IP地址由局部地址變為全局地址,從外部傳輸過來的數據包則做相反轉換以分配到合適的內部主機。
2. IP數據報
IP協議提供不可靠無連接的數據報傳輸服務,IP層提供的服務是通過IP層對數據報的封裝與拆封來實現的。 IP數據報是一個與硬件無關的虛擬包,由IP首部和數據區兩大部分,其中IP首部是為了正確傳輸高層數據而加的各種控制信息,數據區包括高層協議需要傳輸的數據。
IP數據報的格式如下圖示:
IP數據報各字段功能如下:
版本:占據4bit空間,該字段規定了數據報的IP協議版本,對于IPv4,該值為4; 對于IPv6,該值為6; 通過查看版本號,路由器能夠確定如何解釋IP數據報的其他部分,不同的IP版本使用不同的數據報格式
首部長度:占據4bit空間,用于記錄IP首部的數據的長度; 可表示的最大十進制數是15,但是該字段所表示的數的單位是字(32bit),即當該字段為15時,首部長度就達到15*4=60字節
服務類型(TOS):占據8bit空間,包含在IPv4首部中,以便使不同類型的IP數據報能相互區別開來。 也就是路由器根據這個字段的值來為數據報選擇最合理的路徑
數據報長度:占據16bit空間,是指整個IP數據報的長度(首部區+數據區),以字節為單位。 由于該字段長度為16位二進制數,因此理論上IP數據報最長可達65536個字節(事實上受物理網絡的限制,要比這個數值小很多)
標識:占據16bit空間,用于表示IP層發送出去的每一份IP數據報,在發送每一份報文,該值加 1,在分片的時候,該字段會被復制到每個分片數據報中,在目標接收主機中,使用該字段判斷這些數據是否屬于同一個IP數據報
標志:占據3bit空間,第一位保留未用,第二位是不分片標志位,為1表示IP數據報在發送的過程中不允許進行分片,為0表示IP層在必要的時候可以對其進行分片處理; 第三位為更多分片位,為1表示該分片數據報不是整個IP數據報的最后一個分片,為0表示是整個IP數據報的最后一個分片
分片偏移量:占據13bit空間,表示當前分片所攜帶的數據在整個IP數據報中的相對偏移位置(以 8 字節為單位),目標主機必須受到以0偏移量開始到最高偏移量的所有分片,才能將分片進行重裝為一個完整的IP數據報,并且重裝IP數據報的依據就是分片的偏移量
生存時間(Time-To-Live,TTL):占據8bit空間,用來確保數據報不會永遠在網絡中循環。 每當IP數據報由一臺路由器處理時,該字段的值減 1,若TTL字段減為0,則該數據報必須丟棄,同時會返回一個ICMP差錯報文給源主機,這樣數據就不會永遠在網絡中漂流而占據資源
上層協議:占據8bit空間,該字段僅在一個IP數據報到達其最終目的地才會有用。 該字段的值指示了IP數據報的數據部分應交給哪個特定的傳輸層協議。 例如,值為6表明數據部分要交給 TCP,而值為17表明數據要交給UDP。 在 IP 數據報中的協議號所起的作用,類似于運輸層報文段中端口號字段所起的作用。 常用網際協議編號如下圖示:
首部檢驗和:占據16bit空間,用于協議頭數據有效性的校驗,可以保證IP報頭區在傳輸時的正確性和完整性。 頭部檢驗和字段是根據IP協議頭計算出的檢驗和,它不對頭部后面的數據進行計算
源IP地址:占據32bit空間,表示發送端IP地址
目標IP地址:占據32bit空間,表述目的端IP地址
選項字段:占據0~40個字節,允許IP首部被擴展,首部選項在日常生活中還是比較少使用的,因此在每個IP數據報首部中必須存在的字段是不包括選項字段的,這樣能夠節約開銷,如果與選項字段就添加,沒有就無需理會
數據區域:是IP數據報的最后的一個字段,也是最重要的內容,因為有數據區域才會有數據報首部的存在,在大多數情況下,IP數據報中的數據字段包含要交付給目標IP地址的運輸層(TCP協議或UDP協議),當然數據區域也可承載其他類型的報文,如ICMP報文
3. IP協議抓包分析
使用ping -l size命令對指定IP地址ping指定大小字節的數據。 如下圖示,對IP地址ping了4096個字節的數據:
打開wireshark進行抓包,監聽IP地址后,在對該IP地址ping 4096字節的數據,可以抓取到如下數據包:
由于以太網數據幀的最大長度為1500個字節,因此4096字節的數據被分為了3個片。 下圖中標志(Flags)字段的第三位為1表示該數據報是分片數據報,分片偏移量(Fragment offset)為0
第二段數據報的標志(Flags)字段的第三位為1表示該數據報仍然是分片數據報,此時分片偏移量(Fragment offset)為1480
第三段數據報的標志(Flags)字段的第三位為0表示是整個IP數據報的最后一個分片,此時分片偏移量(Fragment offset)為1480; 三段組成一個完整的ICMP數據報
-
以太網
+關注
關注
40文章
5383瀏覽量
171148 -
IP協議
+關注
關注
3文章
85瀏覽量
21636 -
路由器
+關注
關注
22文章
3708瀏覽量
113562 -
NAT
+關注
關注
0文章
141瀏覽量
16223 -
IPv4
+關注
關注
0文章
142瀏覽量
19869
發布評論請先 登錄
相關推薦
評論