使用 Wireshark 排除網絡延遲故障

已發表: 2021-10-07

網絡延遲是網絡生態系統中從源到目的地傳輸請求或數據的延遲。 讓我們看看如何解決網絡延遲問題。

任何需要使用網絡的操作,例如打開網頁、單擊鏈接或打開應用程序並玩網絡遊戲,都稱為活動。 用戶的活動就是請求,Web 應用程序的響應時間就是響應這個請求所用的時間。

此時間延遲還包括服務器完成請求所需的時間。 因此,它被定義為往返——請求被記錄、處理,然後被用戶接收,並在那裡被解碼所花費的時間。

術語“低延遲”是指相對較短的數據傳輸延遲。 另一方面,長時間的延遲或過度的延遲是不可取的,因為它們會降低用戶體驗。

如何修復網絡延遲?

互聯網上有許多工具和軟件可用於分析和排除網絡故障。 有些是付費的,有些是免費的。 然而,有一個叫做 Wireshark 的工具,它是一個開源和 GPL 許可的應用程序,用於實時捕獲數據包。 Wireshark 是世界上最流行和最常用的網絡協議分析器。

它將幫助您捕獲網絡數據包並詳細顯示它們。 一旦捕獲到網絡數據包,您就可以使用這些數據包進行實時或離線分析。 此應用程序允許您在顯微鏡下檢查您的網絡流量,過濾並深入研究以找到問題的根源,協助網絡分析並最終幫助網絡安全。

什麼導致網絡延遲?

網絡連接緩慢的幾個主要原因包括:

  • 高延遲
  • 應用依賴
  • 數據包丟失
  • 攔截裝置
  • 低效的窗口大小

在本文中,我們檢查了網絡延遲的每個原因以及如何解決 Wireshark 的問題。

使用 Wireshark 進行檢查

高延遲

高延遲是指數據從一個端點傳輸到另一個端點所需的時間。 高延遲對網絡通信的影響是巨大的。 在下圖中,我們以高延遲路徑上文件下載的往返時間為例。 往返延遲時間可能經常超過一秒,這是不可接受的。

線鯊4

  • 轉到 Wireshark 統計信息。
  • 選擇選項 TCP 流圖。
  • 選擇往返時間圖以了解下載文件所需的時間。

Wireshark 用於計算路徑上的往返時間,以查看這是否是傳輸控制協議 (TCP) 通信網絡性能缺陷的原因。 TCP 用於各種應用,包括網上沖浪、數據傳輸、文件傳輸協議等。 在許多情況下,可以調整操作系統以在高延遲通道上更有效地執行,特別是當主機使用 Windows XP 時。

應用程序依賴

某些應用程序依賴於其他應用程序、進程或主機通信。 例如,假設您的數據庫應用程序依賴於連接到其他服務器來獲取數據庫項。 在這種情況下,那些其他服務器上緩慢的性能會影響本地應用程序的加載時間。

以目標服務器引用其他幾個網站的 Web 瀏覽體驗為例。 例如,要加載站點的主頁 www.espn.com,您必須首先訪問 16 個主機,這些主機為 www.espn.com 主頁提供廣告和內容。

線鯊-3

在上圖中,Wireshark 中的 HTTP 負載分佈窗口顯示了 www.espn.com 主頁使用的所有服務器的列表。

數據包丟失

我在網絡上發現的最普遍的問題之一是數據包丟失。 當數據包未通過 Internet 從發送方正確傳送到接收方時,就會發生數據包丟失。 當用戶訪問網站並開始下載該網站的元素時,丟失的數據包會導致重新傳輸,從而增加下載 Web 文件的確定性並減慢整個下載過程。

此外,當應用程序使用 TCP 時,丟失的數據包會產生特別不利的影響。 當 TCP 連接檢測到丟棄的數據包時,吞吐率會自動減慢以補償網絡問題。

它逐漸提高到更可接受的速度,直到下一個數據包被丟棄,導致數據吞吐量顯著降低。 大文件下載,否則應該很容易通過網絡傳輸,但會遭受嚴重的數據包丟失。

數據包丟失時是什麼樣子的? 這是有爭議的。 如果程序通過 TCP 運行,數據包丟失可能有兩種形式。 在一個示例中,接收器基於數據包的序列號監控數據包並檢測丟失的數據包。 客戶端對丟失的數據包發出三個請求(雙重確認),導致重新發送。 當發送方發現接收方沒有確認收到數據包時,發送方超時並重新發送數據包。

線鯊

Wireshark 表示發生了網絡擁塞,並且多次確認通過顏色編碼來重新傳輸有問題的流量。 大量重複確認表明網絡中的數據包丟失和顯著延遲。

為了提高網絡速度,精確定位數據包丟失的確切位置至關重要。 當發生丟包時,我們將 Wireshark 沿路徑移動,直到看不到更多的丟包。 我們此時處於數據包丟棄點的“上游”,因此我們知道將調試工作重點放在何處。

攔截裝置

網絡流量警察是做出轉發選擇的互連設備,例如交換機、路由器和防火牆。 當發生丟包時,應將這些設備作為可能的原因進行調查。

這些鏈接設備可以將延遲添加到路徑中。 例如,如果啟用了流量優先級,我們可以看到注入到低優先級流中的額外延遲。

低效的窗口大小

除了 Microsoft 操作系統之外,TCP/IP 網絡中還有其他“窗口”。

  • 滑動窗口
  • 接收窗口
  • 擁塞控制窗口

這些窗口共同構成了網絡基於 TCP 的通信性能。 讓我們首先定義每個窗口及其對網絡帶寬的影響。

滑動窗口

當數據被確認時,滑動窗口用於在網絡上廣播下一個 TCP 段。 發送方收到對傳輸數據片段的確認,滑動窗口擴大。 只要網絡上沒有丟失傳輸,就可以傳輸更大量的數據。 當一個數據包丟失時,滑動窗口會縮小,因為網絡無法管理線路上增加的數據量。

接收窗口

TCP 堆棧的接收器窗口是一個緩衝區空間。 接收到數據後,將其存儲在此緩衝區空間中,直到應用程序獲取它為止。 當應用程序跟不上接收速率時,接收器窗口就會填滿,最終導致“零窗口”場景。 當接收器宣布零窗口條件時,所有到主機的數據傳輸都必須停止。 吞吐量下降到零。 一種稱為窗口縮放 (RFC 1323) 的方法允許主機增加接收器窗口大小並降低零窗口場景的可能性。

線鯊2

上圖顯示了由於零窗口場景導致的網絡通信延遲 32 秒。

擁塞窗口

擁塞窗口定義了網絡可以處理的最大數據量。 發送方的數據包傳輸率、網絡丟包率和接收方的窗口大小都對這個數字有所貢獻。 在健康的網絡通信期間,擁塞窗口穩定增加,直到傳輸完成或達到網絡健康建立的“上限”。 發送方的傳輸能力或接收方的窗口大小。 每個新連接都重新開始窗口大小協商過程。

健康網絡的提示

  • 了解如何將 Wireshark 用作第一響應任務,以快速有效地發現性能不佳的根源。
  • 確定網絡路徑延遲的來源,並在可能的情況下將其降低到可接受的水平。
  • 定位並解決丟包的根源。
  • 檢查數據傳輸窗口大小,如果可能,減少它。
  • 檢查攔截設備的性能,看看它們是否增加了延遲或丟棄了數據包。
  • 優化應用程序,以便它們可以提供更大量的數據,並在可能的情況下從接收器窗口檢索數據。

包起來

我們已經了解了網絡性能問題的主要原因,但不容錯過的一個因素是缺乏對網絡通信行為的了解。 Wireshark 提供網絡可見性,就像 X 射線一樣,CAT 掃描提供對人體的可見性,以進行準確和及時的診斷。 該工具已成為定位和診斷網絡問題的重要工具。

您現在應該使用 Wireshark 通過多個過濾器和工具檢查和解決網絡性能。