各種協議報頭解析(乙太網,IP,TCP,UDP報頭)?

本篇我們將介紹各種協議的報頭解析。其中包括乙太網資料報頭,IP資料報頭,TCP資料報頭,UDP資料報頭。

工具/原料

wireshark抓包工具

方法/步驟

首先我們介紹乙太網資料報頭的解析。其中乙太網報頭長度為14個位元組。主要包括:目的地址佔6個位元組,源地址6個位元組,型別2個位元組。

各種協議報頭解析(乙太網,IP,TCP,UDP報頭)

接下來我們通過wireshark進行抓包分析,進行驗證乙太網報頭長度為14個位元組。可以通過wireshark解析看到,為14個位元組。

各種協議報頭解析(乙太網,IP,TCP,UDP報頭)

下面我們介紹IP資料報頭的解析。詳細解析:

版本(4位):用來標識IP協議的版本,最常見的就是4和6,分別代表IPv4和IPv6。

首部長度(4位):長度4位。這個欄位的作用是為了描述IP包頭的長度,因為在IP包頭中有變長的可選部分。該部分佔4個bit位,單位為32bit(4個位元組),即本區域值= IP頭部長度(單位為bit)/(8*4),因此,一個IP包頭的長度最長為“1111”,即15*4=60個位元組。IP包頭最小長度為20位元組。

服務型別(8位):長度8位元。8位 按位被如下定義 PPP DTRC0PPP:定義包的優先順序,取值越大資料越重

000 普通 (Routine)

001 優先的 (Priority)

010 立即的傳送 (Immediate)011 閃電式的 (Flash)100 比閃電還閃電式的 (Flash Override)101 CRI/TIC/ECP(找不到這個詞的翻譯)110 網間控制 (Internetwork Control

111 網路控制 (Network ControlD 時延: 0:普通 1:延遲儘量小T 吞吐量: 0:普通 1:流量儘量大R 可靠性: 0:普通 1:可靠性儘量大M 傳輸成本: 0:普通 1:成本儘量小0 最後一位被保留,恆定為0

總長度(16位):此處的總長度是指首部長度和資料長度之和,單位仍然是位元組。

16bit可以表示的最大值為65535,所以IP資料報的最大長度可以到達65535位元組。但由於乙太網的MTU(Maximum Transmission Unit)最大為1500位元組,所以如果IP協議是執行在乙太網的話,就會遇到需要分片的情況。

標誌(3位):這3位中只有前2位有用,中間一位表示DF(don’t fragment),而最低位(最右側的bit)表示MF(more fragment)。

DF等於1的話,表示此IP資料報“不能分片”。只有在DF等於0時,才允許對其進行分片。

MF等於1的話,表示此IP資料報後面還有分片的資料報,而MF等於0時,則表示當前的IP資料報是這一組中最後一個數據報。

片偏移(13位):此域表示當IP資料報超過MTU而被分拆成多片後,每一片在原IP資料報中的位置。此偏移量的參照起點是原資料報的資料部分的起點。

生存時間(8位):長度8位元。當IP包進行傳送時,先會對該欄位賦予某個特定的值。當IP包經過每一個沿途的路由器的時候,每個沿途的路由器會將IP包的TTL值減少1。如果TTL減少為0,則該IP包會被丟棄。這個欄位可以防止由於路由環路而導致IP包在網路中不停被轉發。

協議(8位):標識了上層所使用的協議,以下是比較常用的協議號:

1 ICMP 2 IGMP 6 TCP 17 UDP 88 IGRP 89 OSPF

頭部校驗(16位):用來做IP頭部的正確性檢測,但不包含資料部分。 因為每個路由器要改變TTL的值,所以路由器會為每個通過的資料包重新計算這個值。

源IP地址(16位):

目的IP地址(16位):

總共20個位元組,構成了IP資料報的頭部。

各種協議報頭解析(乙太網,IP,TCP,UDP報頭)

接下來我們通過wireshark抓包,進行解析,並可以看到IP資料報頭的長度為20個位元組。

各種協議報頭解析(乙太網,IP,TCP,UDP報頭)

下面我們介紹TCP協議的資料報頭的解析,其長度為20個位元組。詳細解析:

源埠(16位),目的埠(16位)。

順序號(32位),表明了傳送的資料報的順序。

確認號(32位),希望收到的下一個資料報的序列號。

TCP協議資料報頭頭長(4位),表明TCP頭中包含多少個32位字。

下面6位目前未用,

ACK:ACK位置1表明確認號是合法的。如果ACK為0,那麼資料報不包含確認資訊,確認欄位被省略。

PSH:表示是帶有PUSH標誌的資料。接收方因此請求資料報一到便可送往應用程式而不必等到緩衝區裝滿時才傳送。

RST:用於復位由於主機崩潰或其它原因而出現的錯誤的連線。還可以用於拒絕非法的資料報或拒絕連線請求。

SYN:用於建立連線。

FIN:用於釋放連線。

視窗大小(16位),表示在確認了位元組之後還可以傳送多少個位元組。

檢驗和(16位),是為了確保高可靠性而設定的。它校驗頭部、資料和偽TCP頭部之和。

緊急指標(16位),它是一個偏移量,和序號欄位中的值相加表示緊急資料最後一個位元組的序號。

以上20個位元組組成了TCP協議的基本報頭。

由此我們可以得出一個演算法:普通TCP協議的總報頭長度=乙太網資料報頭+IP資料報頭+TCP協議資料報頭。

各種協議報頭解析(乙太網,IP,TCP,UDP報頭)

下面我們依然使用wireshark進行抓包分析並解析驗證,可以看到TCP協議資料報頭為20個位元組。

各種協議報頭解析(乙太網,IP,TCP,UDP報頭)

下面我們介紹UDP協議的資料報頭。其共佔8個位元組。其中包括:

源埠(2個位元組),目的埠(2個位元組)。

長度(2個位元組),UDP使用者資料報的總長度,以位元組為單位。

檢驗和(2個位元組)。

由此我們可以得出結論,UDP協議的資料報總長度=乙太網資料報長度+IP資料報頭+UDP資料報頭。

各種協議報頭解析(乙太網,IP,TCP,UDP報頭)

下面我們再使用wireshark進行抓包驗證,可以看到UDP資料報頭的長度為8位元組。

各種協議報頭解析(乙太網,IP,TCP,UDP報頭)

相關問題答案