Networking

TCP/IP 丟包網路測試(在 PingPlotter 的上下文中)

  • July 22, 2009

我的問題可能是非常基本的基於 TCP/IP / 路由器的,但我需要根據我使用過的 Winpcap 應用程序 pingplotter 來解決它。

我在上一份工作中使用的功能之一是使用這個 Win32 應用程序 PingPlotter 來測試 TCP/IP 封包遺失和大小為 2000 字節的數據包的傳輸時間。

現在要啟用此功能,需要使用 Winpcap 驅動程序。

不過,這似乎有點像黑魔法,當接收應用程序不在另一端時,如何對遠端伺服器進行隨機 TCP/IP 封包遺失測試?

是不是只是尋找packet tcp/ip packet ack/nack報文,在協議分析的底層分析IP穩定性?輸入我的問題我可能正在回答我自己的問題,但我真的不了解任何細節,所以很高興驗證或糾正。

我的問題的第二部分是這樣的:該工具能夠創建我的測試 tcp/ip 數據包到 tracert 上的每一跳的封包遺失的漂亮圖表。

對於目標伺服器,我知道它是我可以連接的 SQL Server,它似乎使每個數據包都失敗,儘管 tracert 的所有躍點似乎都可以傳遞。如果機器具有某種描述的基於作業系統的軟體防火牆(在實踐中經常看到),這是我知道我可能期望的嗎?

我注意到 PingPlotter 通常在埠 80 上進行測試。

還有其他人對我如何更好地測試客戶端與伺服器的連接有任何其他建議嗎?我們從 SQL Server 客戶端庫中收到消息說保持活動偶爾會失去,所以我想設置一些 tcp/ip 數據包測試並繪製一個 1k 數據包的丟包和傳輸時間的漂亮圖表,監控過夜。

在我上一個工作的地方,我這樣做了,發現了很多問題,但是無法驗證發送到埠 80 的 tcp/ip 數據包有點麻煩,因為它立即報告 100% 封包遺失,儘管它的功能是一個工作且可訪問的 SQL Server。

找到這個關於 PingPlotter 埠使用的連結。您所說的 TCP/IP“Ping”似乎只是在指定埠上發送 TCP SYN 並等待 ACK。因此,如果您的伺服器在埠 80 (http) 上沒有響應,您可能需要嘗試 SQL 服務正在偵聽的埠(MSSQL 為 1433,MySQL 為 3306)。

  1. 不要使用大小為 2000 字節的數據包進行測試。2000 字節可能比某些設備的 MTU 大,使它們分段/丟棄數據包,這不會讓您清楚地了解由於通道錯誤而導致的傳輸失去。
  2. 為了監控連接性較差的無線網路中從客戶端到伺服器的封包遺失,我有時只使用 ping。Linux ping 命令最後給出了很好的總結,比如

--- www.l.google.com ping statistics ---

10 packets transmitted, 9 received, 10% packet loss, time 8999ms

rtt min/avg/max/mdev = 102.921/123.423/144.075/12.673 ms

因此,您可以讓 ping 通宵執行,當您使用Ctrl+結束 ping 時,C您將能夠看到封包遺失百分比等。

這也不是完美的方式,因為它可能是渠道中的一種方式問題。因此數據包可能會到達目的地,但由於某些原因,回复可能會失去。在這種情況下執行(在目的地)

tcpdump -v -i eth0 'icmp'

查看 ping 請求是否甚至到達目的地有助於清除問題。

如果由於某種原因 Linux 客戶端不可用,請嘗試安裝 cygwin 並使用 cygwin ping。它可能與 Linux ping 相同,最後應該會告訴您統計資訊。

引用自:https://serverfault.com/questions/43806