Wireshark
Wireshark是非常流行的網絡封包分析工具,可以幫助我們分析解決很多網絡問題。
win10上安裝之后可能會看不到網絡接口,可以看我上篇文章
Wireshark安裝好后打開沒有找到接口
TCP協議
TCP協議運行在TCP/IP網絡模型的傳輸層,提供端到端的連接,并且支持超時重傳,擁塞控制,流量控制等等呢個。
TCP協議是一個面向連接的協議,在正式請求之前客戶端需要與服務端進行“三次握手”,初始化雙方的sequence number之后才能進行請求。
TCP/IP網絡模型
TCP報文頭部
TCP報文頭部是支持TCP協議進行各種功能的基礎,TCP頭部里面包含了源端口和宿端口,sequence number和acknowledge number等等。
Wireshark抓包看TCP三次握手
以請求百度為例,首先設置wireshark的捕獲過濾器(注意和顯示過濾器區分開來)
開始捕獲
開始捕獲還是空白的,因為還沒有請求百度,在bash里面發個請求來看看
看看wireshark捕獲到了什么東東呢
一大堆的內容,別的先不管,就看前三個網絡包,都是TCP包,這就對應上了我們要細講的TCP三次握手啦。點擊第一列,下面會出現詳細信息
可以看到有四層,重點關注Tranmission Control Protocol層,也就是傳輸層。單擊點開看看內容
可以和上面的圖片TCP頭部是對應的,源端口,宿端口,Flags等等。這里我們重點看三個內容:sequence number, acknowledgment number, flags。接下來再看看wireshark里面的第二行和第三行。
然后我們就可以理出這樣一個邏輯:
三次握手之后客戶端和服務端就可以愉快的交流啦。
總結
wireshark是一個很好用的工具,我才剛開始用,要學會使用捕獲過濾器和顯示過濾器的來得到我們想要的信息。
參考
https://wiki.wireshark.org/CaptureFilters
https://www.wireshark.org/docs/dfref/
https://juejin.im/book/5c70dbbe51882562046911bc/section/5c90d1d55188252d7e34d708