TCP/IP 数据包丢失网络测试(在 PingPlotter 环境中)

TCP/IP 数据包丢失网络测试(在 PingPlotter 环境中)

我的问题可能是基于非常基本的 TCP/IP / 路由器,但我需要根据我使用过的 Winpcap 应用程序 pingplotter 来表达它。

我在上一个工作单位使用过的功能之一是使用这个 Win32 应用程序 PingPlotter 来测试 TCP/IP 数据包丢失和大小为 2000 字节的数据包的传输时间。

现在要启用此功能,需要使用 Winpcap 驱动程序。

虽然这看起来确实有点像黑魔法,但当接收应用程序不在另一端时,如何对远程服务器进行随机 TCP/IP 数据包丢失测试呢?

它只是寻找数据包 tcp/ip 数据包 ack/nack 消息,并在较低级别的协议分析中分析 IP 稳定性吗? 打出我的问题我可能正在回答我自己的问题,但我真的不了解任何细节,所以验证或纠正是很好的。

我的问题的第二部分是:该工具能够创建漂亮的图表,显示我的测试 tcp/ip 数据包到 tracert 上每一跳的数据包丢失情况。

对于目标服务器(我知道是一台可以连接的 SQL Server),它似乎无法传输每个数据包,尽管 tracert 的所有跳数似乎都正常。如果机器有某种基于操作系统的软件防火墙,这种情况在实践中经常出现,我知道我可能会遇到这种情况吗?

我注意到 PingPlotter 通常在端口 80 上进行测试。

还有人对我如何更好地测试客户端与服务器的连接有什么建议吗?我们从 SQL Server 客户端库收到消息,说保持活动偶尔会丢失,所以我想设置一些 tcp/ip 数据包测试,并绘制一个漂亮的数据包丢失和传输时间图表,用于对 1k 数据包进行整夜监控。

在我上一个工作的地方,我这样做了并发现了很多问题,但是无法验证发送到端口 80 的 tcp/ip 数据包有点麻烦,因为它立即报告 100% 的数据包丢失,尽管它可以作为一个正常工作和可访问的 SQL Server。

答案1

成立此链接关于 PingPlotter 端口使用情况。您所说的 TCP/IP“Ping”似乎只是在指定端口上发送 TCP SYN 并等待 ACK。因此,如果您的服务器在端口 80(http)上没有响应,您可能需要尝试 SQL 服务正在监听的端口(MSSQL 为 1433,MySQL 为 3306)。

答案2

  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

Ctrl因此,您可以让 ping 运行一整夜,当您使用+结束 ping 时C,您将能够看到数据包丢失百分比等。

这也不是完美的方法,因为它可能是通道中的单向问题。因此,数据包可能会到达目的地,但由于某些原因,回复可能会丢失。在这种情况下,运行(在目的地)

tcpdump -v -i eth0 'icmp'

查看 ping 请求是否到达目的地有助于清除所有问题。

如果由于某种原因 Linux 客户端不可用,请尝试安装 cygwin 并使用 cygwin ping。它可能与 Linux ping 相同,并会在最后告诉您统计信息。

相关内容