1. 程式人生 > >Wireshark入門與進階系列十之追蹤檔案分析

Wireshark入門與進階系列十之追蹤檔案分析

0x00 前言

    Wireshark(前稱Ethereal)中文版是一個網路封包分析軟體。網路封包分析軟體的功能是擷取網路封包,並儘可能顯示出最為詳細的網路封包資料。Wireshark使用WinPCAP作為介面,直接與網絡卡進行資料報文交換。本文著重分析追蹤檔案分享,以此來確認線路延時、客戶端延遲、伺服器延遲等常見問題。

0x01 基本原理

1 wireshark線路捕獲的硬體基礎,詳細見下圖:

 

2 分析網路主要效能問題

  • 高延遲(客戶端,伺服器,連結)
  • 丟包(上傳,下載)
  • 擁塞(網路,接收器)
  • 配置問題(服務不可用,迴圈)
  • 重定向(路由,服務)
  • 相互依賴性(第三方)
  • 低吞吐量(Itty-Bitty Stinkin資料包)
  • 協商故障(應用層協議)

0x02 網路延時

線路延遲 - -----客戶端延遲-----伺服器延遲

① SYN---SYN-ACK 延時--->>鏈路延時

        問題分析:SYN和ACK SYN之間的時間暗示線路的往返延遲時間和通過TCP / IP棧來建立連線的處理延時。如果這過程平均需要很長一段時間,那麼我們就需要考慮沿著引入延時的網路路徑來尋找鏈路和裝置,也就是說在硬體裝置和線路直接的接入有問題。可能的原因有:接入層的客戶端配置有問題;接入層的埠鬆動、損壞;終端到接入層(交換層)網路線路老化、被截斷等原因。

        排障思路:檢查本地的客戶端的配置、埠-->>連線本地的客戶端到伺服器(接入層交換機、交換層的路由器)的線路--->>伺服器

 

② SYN-ACK---ACK--->>客戶端延時

        問題分析:在SYN ACK和ACK之間的時間暗示客戶端的響應速度 - 這僅和客戶端的TCP / IP堆疊相關,和客戶端處理應用程式的能力無關。也就是說客戶端開啟過多的應用程式或者程序,這些程序建立了太多的連線,這些連線保持連線或者出於等待狀態。

        排障思路:檢視客戶端的網路連線情況,並且確認哪些程式開啟了大量的連線,關閉部分不必要的連線;隱藏的後臺程式保持了大量的連線,檢視這些連線是否必要的,如果沒有必要請關閉這些連線。


③ACK --- GET/  --->>客戶端延時

        問題分析:ACK和GET命令(或下一個被髮送的任何命令)之間的時間暗示著客戶端的應用程式產生請求的速度。通常在TCP 握手過程完成時,應用程式會作出即時的請求到伺服器(除等待伺服器首先發送資料外。例如對於FTP,客戶端等待的標識)

        排障思路:對於這種情況,我們可以在客戶端進行重新整理或者進行程序的更新;如果客戶端的程序太多過度佔用資源,會導客戶端來不及傳送請求或者是客戶端使用代理等等問題,重點排查客戶端的問題。


④ GET / ---ACK --->>鏈路延時

        問題分析:GET命令和ACK之間的時間再次暗示著鏈路遲。本質上類似①,如果這需要很長的時間,再看看網路路徑一次。

        排障思路:檢查本地的客戶端的配置、埠-->>連線本地的客戶端到伺服器(接入層交換機、交換層的路由器)的線路--->>伺服器


⑤ GET / -- ACK -- DATA -->>伺服器延時

       問題分析:從GET命令到資料的實際返回的時間代表著伺服器處理請求和獲取資料返回給客戶端的必需的時間。如果這個時間值高(但④低),那麼我們看一下在這個連線中響應緩慢的伺服器

       排障思路:從這個症狀來看,是伺服器的Web應用轉發和處理請求過慢,可能的原因是伺服器的配置有問題或者伺服器上的記憶體CPU等消耗過大,導致伺服器Web響應不過來,所以重點排除伺服器的web 容器等配置以及伺服器的資源使用情況。

 

0x04 參考資料


歡迎大家分享更好的思路,熱切期待^^_^^ !