tft每日頭條

 > 科技

 > wiresharktcp數據包分析

wiresharktcp數據包分析

科技 更新时间:2024-08-10 02:28:26

wiresharktcp數據包分析(Wireshark數據包分析實戰)1

01 引言

最近有位熱心讀者朋友給成哥發來私信,說他現在對IP分片有疑惑。

他讀過成哥的《wireshark數據包分析三闆斧》和《一文秒懂TCPIP實際五層結構》系列文章,直言對自己幫助很大,可以算是成哥的鐵粉了。

但是他在工作中遇到的IP分片現象和成哥文章中講的有出入,想和成哥探讨下具體原因。

成哥覺得這種精神非常好,盡信書不如無書,就要有自己的獨立思考。希望大家也多思考多給成哥提出意見和建議,十分感謝。

今天成哥借此文章,分享一下成哥和這位讀者的探讨過程。

wiresharktcp數據包分析(Wireshark數據包分析實戰)2

02 提出挑戰

這位讀者在一次抓包分析的過程中,看到第四幀有"TCP segment of a reassembled PDU"字樣,不明白是何含義。截圖如下:

wiresharktcp數據包分析(Wireshark數據包分析實戰)3

展開第四幀(分組4)和第五幀(分組5)進行查看後,發現自己更迷惑了。剛才是不明白那個英文字段是什麼含義,現在是連IP分片都暈了。覺得自己現有知識被颠覆了。

從第五幀的内容中看到,第四幀和第五幀進行了分片重組。Wireshark中有顯示"2 Reassembled TCP Segments"。如下圖所示。

wiresharktcp數據包分析(Wireshark數據包分析實戰)4

在仔細查看第四幀和第五幀的IP協議字段,發現寫的是"Don't fragment",即"不分片"。如下圖所示。

wiresharktcp數據包分析(Wireshark數據包分析實戰)5

這就不對了啊,"dont fragment"是不允許分片的意思,怎麼可能在進行分片重組呢?

03 成哥接鍋

成哥看到此疑惑後,首先對這位讀者進行了安撫。告訴他看到的現象沒錯,數據包确實有"Reassembled"等字眼。但成哥在系列文章中講的也沒錯。

誰都沒錯,那這個"Reassembled現象和文章中講述的為何不同呢?

哈哈,要是必須追責,那就追責成哥吧,隻怪成哥的《一文秒懂TCPIP實際五層結構》系列文章,限于篇幅,講的不夠深入,這種場景沒有提到。

現在幫大家把知識點補上,希望大家見諒。

首先複習一下成哥在IP協議中講的"标志字段"和"MSS"内容。

(1)标志字段

标志字段屬于IP協議頭部字段中的一部分,如下圖所示:

wiresharktcp數據包分析(Wireshark數據包分析實戰)6

标志字段用其中一個bit來表示"更多的片 MF (More fragement)"; 标志字段中有一個bit稱作"不分片 DF(Don't fragment)"位;如果将這一比特置1,IP将不對數據報進行分片。相反會把數據包丢棄并發送一個ICMP差錯報文給起始端。

标志字段内容如下圖所示:

wiresharktcp數據包分析(Wireshark數據包分析實戰)7

(2)MSS最大分節尺寸

MSS:maximum segment size,為TCP數據包每次傳輸的最大數據分段大小。TCP協議在建立連接的時候通常要協商雙方的MSS值,通訊雙方會根據雙方提供的MSS值的最小值确定為這次連接的最大MSS值。

MSS值為MTU值減去IPv4 頭部和TCP 得頭部得到。

04 答疑解惑

成哥拿過數據包,看到有"TCP segment of a reassembled PDU"字樣,就明白症結所在了。"TCP segment of a reassembled PD"的字面含義是"TCP報文段的重組裝PDU"。PDU是協議數據單元Protocol Data Unit的縮寫。

這裡先不着急解釋其含義,大家繼續往下看。

wiresharktcp數據包分析(Wireshark數據包分析實戰)8

我們知道TCP報文不會分片,原因是TCP會話建立的前兩個包中包含MSS,用于協商兩端每次傳輸的最大數據包尺寸。如下圖所示:

wiresharktcp數據包分析(Wireshark數據包分析實戰)9

我們看到這裡MSS=1400,說明每個TCP報文的大小不會大于1400字節。同時,如果應用層需要傳輸的數據大于1400字節,該怎麼傳輸呢?

答案是應用層在進行數據包傳輸之前,應用層将大于1400字節的數據包進行分割(注意這裡用的是分割,不是分片),分割成多個小于MSS尺寸的數據,再交給網卡進行數據傳輸。

這種數據分割在應用層完成,對于TCP/IP協議來說是透明的,在網卡看來就是兩個獨立的數據包。

Wireshark是抓包利器,功能強大,能夠分析TCP上層的HTTP協議,并把這種數據包标識出來,記做"TCP segment of a reassembled PDU"。并在數據傳輸最後一個包中,好心的進行"重組",如下圖所示:

wiresharktcp數據包分析(Wireshark數據包分析實戰)10

這就給大家造成了誤會,出現了開頭的一幕,讓這位讀者産生了疑惑。

如果大家在抓包時不想看到這種字段,可以在wireshark軟件的"已啟用的協議"中,去掉HTTP協議的解析的勾選項即可。位置如下。

wiresharktcp數據包分析(Wireshark數據包分析實戰)11

05 總結

通過"TCP segment of a reassembled PDU"這個英文字段,引發了這位熱心讀者的認真思考,提出了好問題,并主動告知成哥,進行共同探讨和學習。

再次感謝。

Wireshark數據包分析三闆斧

  • 一文秒懂 TCP/IP實際五層結構(上篇)
  • IT工程師都需要掌握的容器技術之Docker基本用法
  • ,

    更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

    查看全部

    相关科技资讯推荐

    热门科技资讯推荐

    网友关注

    Copyright 2023-2024 - www.tftnews.com All Rights Reserved