1. 程式人生 > >wireshark抓包分析tcp的三次握手詳細過程

wireshark抓包分析tcp的三次握手詳細過程

下載安裝wireshark

抓包分析詳細過程

  1. 在wireshark中輸入http過濾, 然後選中一條http記錄,如下圖:
    右鍵點選選中 追蹤流 > tcp流,如下:
    會看到下圖所示:
    可以發現,wireshark截獲到了三次握手的三個資料包。第四個包才是HTTP的, 這說明HTTP的確是使用TCP建立連線的。
    • 第一次握手:
      客戶端傳送一個TCP,標誌位為SYN,序列號為0, 代表客戶端請求建立連線。 如下圖
    • 第二次握手:
      伺服器發回確認包, 標誌位為 SYN,ACK. 將確認序號(Acknowledgement Number)設定為客戶的I S N加1以.即0+1=1, 如下圖
    • 第三次握手:
      客戶端再次傳送確認包(ACK) SYN標誌位為0,ACK標誌位為1.並且把伺服器發來ACK的序號欄位+1,放在確定欄位中傳送給對方.並且在資料段放寫ISN的+1, 如下圖

就這樣通過了TCP三次握手,建立了連線

有人可能對三次握手過程中的 +1可能有疑問,說明如下:

TCP會話的每一端都包含一個32位(bit)的序列號,該序列號被用來跟蹤該端傳送的資料量。每一個包中都包含序列號,在接收端則通過確認號用來通知傳送端資料成功接收
當某個主機開啟一個TCP會話時,他的初始序列號是隨機的,可能是0和4,294,967,295之間的任意值,然而,像Wireshark這種工具,通常顯示的都是相對序列號/確認號,而不是實際序列號/確認號,相對序列號/確認號是和TCP會話的初始序列號相關聯的。這是很方便的,因為比起真實序列號/確認號,跟蹤更小的相對序列號/確認號會相對容易一些
比如,在“包1”中,最初的相對序列號的值是0,但是最下方面板中的ASCII碼顯示真實序列號的值是0xf61c6cbe,轉化為10進製為4129057982
如果想要關閉相對序列號/確認號,可以選擇Wireshark選單欄中的 Edit -> Preferences ->protocols ->TCP,去掉Relative sequence number後面勾選框中的√即可


然後就會看到