1. 程式人生 > >網絡協議抓包分析——IP互聯網協議

網絡協議抓包分析——IP互聯網協議

聯網 互聯網 6.2 sha 一個數 ima shark 產生 icmp

前言

IP協議是位於OSI模型的第三層協議,其主要目的就是使得網絡間可以相互通信。在這一層上運行的協議不止IP協議,但是使用最為廣泛的就是互聯網協議。

什麽是IP數據報

TCP/IP協議定義了一個在因特網上傳輸的包,稱為IP數據報(IP Datagram)。IP數據報是一個與硬件無關的虛擬包,由首部和數據兩部分組成。首部部分主要包含版本、長度和IP地址等信息。數據部分一般用來傳達其他協議如TCP、UDP和ICMP等。整個IP數據報的的首部表示總長度的字段位數為16位,於是可以表示的數據報最大大小為65535,減去首部的最小大小20字節,於是最大payload(負載/載荷)就為65515。但是,由於以太網數據報的payload部分最大只有1500字節,於是如果IP數據報的大小超過了1500字節,就需要分片

IP數據包分析

技術分享圖片

IP分片數據包分析

當IP數據報的數據部分大於1480(1500-20)字節,IP層就會對數據進行分片,封裝到不同的數據包中然後發送。

使用PingPlotter軟件產生數據包大小為5000字節(IP20字節首部+4980數據)的ICMP報文,發送給目的主機66.249.89.147。

5-8幀是一個完整的ping請求包。下面將詳細分析5-8幀的詳細信息。

技術分享圖片

第5幀數據包的標識符0x74fe,所以後面擁有此標識符的數據包原與該幀屬於一個數據包。標誌位的MF=1說明後面還有分片存在。因為是第一個分片,所以分段偏移為0。

在這裏我們可以做一個運算,猜測後面其余分片的大小以及它們的分段偏移。
第一個分片幀的大小為1514字節,去掉共14字節的幀首部和尾部。分片IP數據包的大小為1500字節(首部20字節+數據1480字節)。原數據包的數據部分有4980字節,於是還有4980-1480=3500字節大小的數據。我們可以假設payload都盡量為最大值。那麽推算:
第二個分片IP數據包的payload為1480字節,其分段偏移就為第一分片長度1480/8=185。分段偏移字段一位代表8字節。
第三個分片IP數據包的payload也為1480字節,其分段偏移就為370(第一個分片長度+第三個分片長度)。然後原數據包的數據部分還剩540字節。
第四個分片IP數據包的payload就為540字節,其分段偏移為555(前三個分片長度),並且MF標誌位為0,該數據包後面沒有分片了。

我們來看下後面的分片是否如此:

技術分享圖片

技術分享圖片

技術分享圖片

小結

在理解IP協議首部字段的含義之後,進行抓包分析理解會理解的更深刻。尤其是對IP分片的理解。在學習理論時,總有種不實在的感覺,在利用Wireshark抓包並進行推算後,才實在一些。

網絡協議抓包分析——IP互聯網協議