計算機網絡實驗: 使用Wireshark抓包工具進行應用層和傳輸層網絡協議分析(TCP部分)

在這一部分,我們通過與遠程服務器之間發送 150KB 的文件來分析 TCP 數據包的發送和接收。研究內容包括:

  • TCP利用序列號和確認號來提供的可靠數據傳輸
  • TCP 擁塞控制算法中的慢啓動和擁塞避免
  • TCP 協議的流控制策略
  • 如何建立 TCP 連接
  • TCP 連接的性能(吞吐量和往返時間)

具體步驟爲:

  1. 抓取傳輸到遠程服務器的 TCP 數據包
    a) 打開 web 瀏覽器,進入:
    http://gaia.cs.umass.edu/wireshark-labs/alice.txt
    複製這篇文章 Alice in Wonderland 到電腦。
    在這裏插入圖片描述
    直接複製文字到本地即可,也可以單擊鼠標右鍵,選擇“網頁另存爲”,保存txt文件。
    在這裏插入圖片描述
    b) 接下來訪問:
    http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html
    如下圖:
    在這裏插入圖片描述
    接下來,點擊“瀏覽”,選擇在上一步中保存的txt文件,但不點擊upload按鈕。不要關閉瀏覽器。
    在這裏插入圖片描述
    c) 啓動Wireshark,現在開始進行數據包捕獲。然後在網絡封包分析和數據包捕獲選項頁面點擊“OK”。
    在這裏插入圖片描述
    d) 返回瀏覽器,點擊“Upload alice.txt file”按鈕來更新文件到服務器。一旦這個文件被更新,會有一條恭喜信息。
    在這裏插入圖片描述
    e) 現在停止網絡封包分析和數據捕獲。網絡封包分析窗口如下所示:
    在這裏插入圖片描述
    在這裏插入圖片描述
    f) 很意外地,發現有52.114.77.164與168.63.202.111這兩個IP地址的報文,干擾了我們的判斷。對這部分問題的處理見如下鏈接:
    【解決方案】使用Wireshark工具抓取TCP數據包時爲什麼遇到了52.114.77.164與168.63.202.111?

    g) 再次啓動Wireshark,嘗試捕獲報文。結果如下。
    在這裏插入圖片描述
    下圖爲實驗指導書中給出的結果。
    在這裏插入圖片描述
    與實驗指導書中給出的結果進行對比,二者一致,所有的TCP報文,源地址與目的地址只有192.168.0.101與128.119.245.12,前者爲本機IP地址,後者爲服務器IP地址,捕獲成功。

  2. 分析建立 TCP 連接的過程。

    從捕獲到的TCP報文入手,結合課程所學,進行分析。

    a) 根據課程所學,我們知道,TCP通過三次握手建立連接。

    步驟1:客戶機向服務器發送 TCP SYN報文段
    · 指定初始序號
    · 沒有數據
    步驟2:服務器收到SYN報文段, 用SYNACK報文段回覆
    · 服務器爲該連接分配緩衝區和變量
    · 指定服務器初始序號
    步驟3:客戶機接收到 SYNACK, 用ACK報文段回覆,可能包含數據

    具體過程如下圖所示:
    在這裏插入圖片描述
    b) 下面分析捕獲的報文。在捕獲到的報文段中,可以看到非常明顯的三次握手過程,即前三行:
    在這裏插入圖片描述
    觀察第一個報文段爲客戶端向服務器發送的請求報文的內容,客戶端端口爲1412,服務器端口爲80。這一報文的SYN=1, Seq=0,Len=0,表明該請求無數據,爲連接請求。
    在這裏插入圖片描述
    第二個報文段是服務器向客戶端發送的確認報文段, SYN=1,seq=0,ACK number=1,也就是期望下一段的Seq爲1。服務器響應了來自主機1412端口的連接請求,向主機發送一個確認報文。該報文內容如下圖所示。
    在這裏插入圖片描述
    第三個報文段是客戶端向服務器發送的確認報文段。該報文段的Seq=1,與上一個報文段的 ACK number=1相對應。該報文段的ACK number=1,也就是期望下一段的Seq爲1。該報文內容如下圖所示:
    在這裏插入圖片描述
    在完成三次握手建立連接之後,便進行數據傳輸。

  3. 根據抓取的數據結果,分析 TCP 的基本結構和內容。
    以下圖所示的TCP報文爲例:
    在這裏插入圖片描述
    Source Port:源端口號,這裏是1113
    Destination Port:目的端口號,這裏是80
    Sequence Number:序號,relative爲相對序號,raw爲真實序號
    Acknowledgement number:確認號,與序號相同,有絕對與相對之分
    Header Length:首部長度,這裏爲20字節
    Flags:標誌位,包括Syn、Fin等
    Window size value:窗口大小
    Checksum:檢查和
    Urgent Pointer:緊急指針

  4. TCP 擁塞控制分析:
    a) 在網絡封包分析的“listing of captured-packets”窗口中選一個TCP段,然後選擇Statistics->TCP Stream Graph-> Time-Sequence-Graph(Stevens)
    在這裏插入圖片描述
    b) 可以看到一個類似下面的情形
    在這裏插入圖片描述
    c) 使用 Time-Sequence-Graph(Stevens)繪圖工具查看 TCP 數據段的時序圖,找出TCP 慢啓動的開始和結束以及擁塞避免階段。
    i. 首先,需要讀懂TCP流圖形的橫縱座標的含義。
    a. 橫座標:時間序列
    b. 縱座標:受監控的TCP流在某個方向所傳數據的字節流
    ii. 綜上,可以得出結論:
    a. TCP流圖形用於表示在單位時間內,受監控的TCP流在某個方向所傳數據的字節流。
    b. 斜線的斜率越大,表示文件的傳輸速率越高,反之,文件傳輸緩慢。
    iii. 首先回顧一下擁塞避免:
    在這裏插入圖片描述
    iv. 結合以上兩圖,發現TCP流圖中沒有擁塞避免的階段。0.9s左右速度驟減,推測原因出自網絡狀態不穩定。在慢啓動還沒有結束時,便已經上傳完成了文件。慢啓動對應成倍增加速率,擁塞控制對應線性增加速率。
    d) 如何加大數據量,會怎樣呢?加大數據量,重複上述步驟,結果如下。
    在這裏插入圖片描述
    紅框內爲擁塞避免階段,觀察到每個RTT內,線性增加速率。同時觀察到重傳現象。慢啓動過程與擁塞避免符合我們之前的分析。


版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/qq_41112170/article/details/106546348

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章