用wireshark抓包帶你詳解下IP報文頭

用wireshark抓包帶你詳解下IP報文頭

前言網絡

上一章介紹了網絡層——IP地址 如何查詢你電腦的IP地址?一文帶你搞懂IP地址,本章介紹下IP協議報文頭的格式。ide

咱們前面介紹了主機在傳輸數據以前要進行封裝,在網絡層封裝的就是是IP報文頭,下面咱們就一塊兒看看IP報文頭究竟包含哪些信息,這些信息又有什麼做用呢?優化

正文blog

1 IP報文格式
以下圖所示即爲IP報文頭路由

用wireshark抓包帶你詳解下IP報文頭

那麼IP報文頭的長度爲多大呢?it

答:IP報文頭部長度爲20到60字節。其中固定部分爲20字節,可變部分爲0到40字節io

IP報文頭包含哪些信息呢?class

版本字段:用於區分不一樣IP版本。如IPv四、IPv五、IPv6,用4bit表示,IPV4=0100。後臺

首部長度:由於頭部長度不固定(Option可選部分不固定),因此須要標識該分組的頭部長度多少,用4bit表示,以4byte爲單位,取值範圍:5-15,即20-40byte(其餘字段也是相似的計算方式,由於bit位是不夠表示該字段的值)
DS字段:早期用來表示業務類型,如今用於支持QoS中的差異服務模型,實現網絡流量優化。路由器

源和目的IP地址:是分配給主機的邏輯地址,用於在網絡層標識報文的發送方和接收方。根據源和目的IP地址能夠判斷目的端是否與發送端位於同一網段,若是兩者不在同一網段,則須要採用路由機制進行跨網段轉發。

分片和重組

爲何會出現分片?

將報文分割成多個片斷的過程叫作分片。

網絡中轉發的IP報文的長度能夠不一樣,但若是報文長度超過了數據鏈路所支持的最大長度,則報文須要分割成若干個較小的片斷纔可以在鏈路上傳輸。

任何一個物理網絡都有一個最大的傳輸單元,物理介質傳輸的能力是有限制的,不可能一次可傳無限的數據幀。

以太網最大的幀長爲1518, IP報文1500byte + 幀頭18byte = 1518byte

接收方接收到分片後如何重組?

接收端根據分片報文中的標識符(Identification),標誌(Flags),及片偏移(Fragment Offset)字段對分片報文進行重組。

標識符:用於識別屬於同一個數據包的分片,以區別於同一主機或其餘主機發送的其它數據包分片,保證分片被正確的從新組合。

標誌字段:用於判斷是否已經收到最後一個分片。

第1位沒有被使用。

第2位D是不分片位(DF),Do not fragment,顧名思義,不要分片,當DF位設置爲1時,表示路由器不能對報文進行分片處理。

第3位M表示還有後繼分片(MF),More fragment,多分片,當路由器對報分進行分片時,除了最後一個分片的MF位設置爲0外,其餘全部分片的MF位均設置1,以便接收者直到收到MF位爲0的分片爲止。

片偏移字段:標識某個分片在分組中的位置.。第一個分片的片偏移爲0,第二個分片的片偏移表示緊跟第一個分片後的第一個比特的位置。好比,若是首片報文包含1259比特,那麼第二片報文的片偏移字段值就應該爲1260。

解決網絡擁塞——TTL

數據包在網絡中傳輸爲何會出現擁塞?

報文在網段間轉發時,若是網絡設備上的路由規劃不合理,就可能會出現環路,致使報文在網絡中無限循環,沒法到達目的端。環路發生後,全部發往這個目的地的報文都會被循環轉發,隨着這種報文逐漸增多,網絡將會發生擁塞。

TTL——解決環路致使擁塞

爲避免環路致使的網絡擁塞,IP報文頭中包含一個生存時間TTL(Time To Live)字段。報文每通過一臺三層設備,TTL值減1。初始TTL值由源端設備設置。當報文中的TTL降爲0時,報文會被丟棄。同時,丟棄報文的設備會根據報文頭中的源IP地址向源端發送ICMP錯誤消息。

協議字段

目的端的網絡層在接收並處理報文之後,須要決定下一步對報文該作如何處理。IP報文頭中的協議字段標識了將會繼續處理報文的協議。

與以太幀頭中的Type字段相似,協議字段也是一個十六進制數。該字段能夠標識網絡層協議,如ICMP(Internet Control Message Protocol,因特網控制報文協議)。

IP報文頭中的協議字段也標識上層協議,如TCP(Transmission Control Protocol,傳輸控制協議,對應值0x06)、UDP(User Datagram Protocol,用戶數據報協議,對應值0x11)。

2 IP報文頭的做用:
IP報文頭部信息用於指導網絡設備對報文進行路由和分片。

  • 報文頭中的信息(源和目的IP地址)能夠用來指導網絡設備如何將報文從源設備發送到目的設備。

同一個網段內的數據轉發經過鏈路層便可實現(後續會講如何經過二層實現同網段的數據通訊),而跨網段的數據轉發須要使用網絡設備的路由功能。(後續會講數據包如何經過路由轉發的)

  • 分片是指數據包超過必定長度時,須要被劃分紅不一樣的片斷使其可以在網絡中傳輸。

3 wireshark抓包看下IP報文頭

前面咱們講了如何在ENSP模擬器上經過wireshark抓包,網絡工程師必備技能|如何在華爲ENSP模擬器上經過wireshark抓包,本章節就再也不累贅,下面直接看下下圖的IP報文頭的格式。
用wireshark抓包帶你詳解下IP報文頭

從圖中的IP報文頭中咱們能夠獲得哪些信息呢?

一、IP協議版本爲4,報文頭爲20個字節,即便固定的20個字節,報文的總長度爲56個字節(包括20個字節IP報文頭,8個字節的UDP報文頭,28個字節的數據)

二、標識符值爲33865,惟一標識該數據包;標誌字段值爲010,表示該報文爲不分片;片偏移字段爲0,表示是第一個報文

三、TTL值爲128,表示該報文還能夠在網絡中傳輸128跳,當報文中的TTL降爲0時,報文會被丟棄。

四、協議字段爲UDP,表示接收端收到該報文後,會上送給傳輸層UDP協議處理;

五、校驗和字段爲correct,表示該報文無差錯

六、source爲192.168.1.2 和destination爲192.168.1.3 ,表示數據包從源IP地址192.168.1.2發送給目的IP地址192.168.1.3。

總結

本章主要介紹了IP的報文頭格式,IP報文頭是網絡層封裝的內容,IP報文頭部主要用於指導網絡設備對報文進行路由和分片,你們有疑問能夠後臺留言交流呀!

相關文章
相關標籤/搜索