在這一部分,我們通過與遠程服務器之間發送 150KB 的文件來分析 TCP 數據包的發送和接收。研究內容包括:
- TCP利用序列號和確認號來提供的可靠數據傳輸
- TCP 擁塞控制算法中的慢啓動和擁塞避免
- TCP 協議的流控制策略
- 如何建立 TCP 連接
- TCP 連接的性能(吞吐量和往返時間)
具體步驟爲:
-
抓取傳輸到遠程服務器的 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地址,捕獲成功。 -
分析建立 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。該報文內容如下圖所示:
在完成三次握手建立連接之後,便進行數據傳輸。 -
根據抓取的數據結果,分析 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:緊急指針 -
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