Wireshark分析三次握手
Wireshark是非常流行的網絡封包分析軟件,功能很強大。可以截取各種網絡封包,顯示網絡封包的詳細信息。使用wireshark的人必須了解網絡協議,否則就看不懂wireshark了。
為了安全考慮,wireshark只能查看封包,而不能修改封包的內容,或者發送封包。
wireshark能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內容,總結,如果是處理HTTP,HTTPS 還是用Fiddler, 其他協議比如TCP,UDP 就用wireshark.
1.Wireshark的基本使用
封包詳細信息 (Packet Details Pane)
這個面板是我們最重要的,用來查看協議中的每一個字段。
各行信息分別為
Frame: 物理層的數據幀概況
Ethernet II: 數據鏈路層以太網幀頭部信息
Internet Protocol Version 4: 互聯網層IP包頭部信息
Transmission Control Protocol: 傳輸層T的數據段頭部信息,此處是TCP
Hypertext Transfer Protocol: 應用層的信息,此處是HTTP協議
封包詳細信息與對應的OSI模型
2.TCP三次握手的基本了解
TCP三次握手過程圖
第一次握手:
建立連接時,客戶端發送SYN包(Seq=x)到服務器,並進入SYN_SENT狀態,等待服務器確認。
第二次握手:
服務器收到SYN包,必須確認客戶的SYN(ACK=x+1),同時自己也發送一個SYN包(Seq=Y),即SYN+ACK包,此時服務器進入SYN_RECV狀態。
第三次握手:
客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ACK=y+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態,完成三次握手。
TCP包的具體內容
從下圖可以看到wireshark捕獲到的TCP包中的每個字段。
TCP標志的意義
SYN:Synchronize,用於初始化和建立連接,它同時也用於同步設備之間的序列號(Seq)
ACK:Acknolowege,向另一方確認它已收到SYN
Seq:Sequence number,序列號,用於表示曾經發送過數據的字節數+1
Len:用於表示收到的字節大小,0表示本次沒有收到數據
FIN:用於結束連接
注意:
-
即使Seq不為0,並不表示曾經一定發送過數據,是否發送過數據需要依據Len指令的值有沒有大於0的來判斷。
-
3次握手和4次揮手過程中一般是不會傳送數據的,所以這個過程中Len指令都是0
3.三次握手分析:
1.打開wireshark, 輸入捕獲過濾器為:tcp,顯示過濾器為:tcp.port == 80,選擇我連接網絡的網卡為:WLAN
2.點擊右上角開始捕獲分組,進入捕獲界面
3.打開瀏覽器輸入 http://www.aigony.com ,接下來即可看到捕獲信息
圖中可以看到wireshark截獲到了三次握手的三個數據包。第四個包才是HTTP的, 這說明HTTP的確是使用TCP建立連接的。
第一次握手數據包
客戶端向服務器發送連接請求包,標志位SYN(同步序號)置為1,序號Seq為X=0,如下圖
第二次握手的數據包
服務器收到客戶端發過來的報文,由SYN=1知道客戶端要求建立連接。服務器發回確認包, 標志位SYN和ACK都置為1。 將確認序號(Acknowledgement Number)設置為客戶端的Seq+1,即X+1= 0+1=1, 如下圖
第三次握手的數據包
客戶端收到服務器發來的包后檢查確認序號(Acknowledgement Number)是否正確,即第一次發送的序號加1(X+1=1)。以及標志位ACK是否為1。若正確,客戶端再次發送確認包(ACK),SYN標志位為0,ACK標志位為1。 確認序號(Acknowledgement Number)為Y+= 0+1= 1,發送序號Seq為X+1=1。服務器收到后確認序號值與ACK=1則連接建立成功,可以傳送數據了。 如下圖:
就這樣通過TCP三次握手,建立了HTTP連接 。
本文參考的博客:
[1] Wireshark怎么抓包、wireshark抓包詳細圖文教程 [最新綠色版本version 2.6.1 ] https://blog.csdn.net/qq_33468857/article/details/80551450
[2] TCP 3-Way Handshake (SYN, SYN-ACK,ACK) https://www.guru99.com/tcp-3-way-handshake.html
[3] OSI七層模型與TCP/IP五層模型 https://www.cnblogs.com/bqwzx/p/11053778.html
[4] Wireshark抓包分析 TCP三次握手/四次揮手詳解 https://cloud.tencent.com/developer/article/1538191