利用Wireshark學習tcp/ip——握手和揮手

利用wireshark學習http之——tcp三次握手合四次揮手

早上起牀後,離上班還有段時間,下載了Wireshark玩玩。
隨機選取了一個http,而後右鍵follow tcp stream,此時界面上就會被自動篩選爲該http上下文的報文。網絡

clipboard.png

如圖所示,
no.130 172.20.10:57019向183.192.195.147:80發送了一個Syn tcp包,該包tcp頭部有額外的24字節的option信息,其中一個tcp option表示了maximum segment size(MSS)爲1460 bytes,告訴對方我單個tcp包最多可傳輸1460bytes。
列表上的length表示鏈路層上的數據長度,咱們能夠算一下
tcp包內容長度0 + tcp頭部20+24 + ip頭部20 + 鏈路層頭部14 = 78
後續no.131和no.132是第二次和第三次握手,網上有不少文章這裏就不展開講了。咱們能夠看到三次握手以後,172.20.10:57019發送的數據包的長度都是1400,知足了183.192.195.147:80的要求。tcp

咱們選中no.136,以下圖學習

clipboard.png

因此該http請求總共用了4個tcp報文,最後一個的tcp報文長度只有94,總共4294spa

再看no.137-no.140,每一項ack都對應了請求的數據,回覆「我正常收到了數據」。
No.141 是no.136的http請求的響應。3d

最後看揮手,發現了有個tcp out-of-order的狀況,這個是由於tcp的包亂序接收了,因此這裏的順序有問題。我再抓了一個例子blog

clipboard.png

看最後4個包
這裏的揮手就正常了
B:我這邊沒有東西發送了
A:好的,我收到你的通知了,我可能還須要給你發送
A:我這邊發送完畢了
B:我收到你的關閉通知了ip

咱們發如今關閉該鏈接以前,49.120向32.119發送了tcp keep-alive的保活包,保活包裏網絡層包總長度是40(頭部20),在傳輸層裏頭部佔20,也就是該tcp包沒有負載任何內容。it

clipboard.png

在wireshark裏,發現了這個,wireshark幫咱們分析了該包是tcp keep-alive的包,那麼wireshark是這麼知道的呢?
咱們能夠看到No.2320,seq是4153,再看No.1076的ack是4154,也就是說明了保活包的seq是對方ack - 1。其實就是該包沒有任何的負載內容,因此seq並無增長。io

相關文章
相關標籤/搜索