我的问题可能是非常基本的基于TCP / IP /路由器的,但我需要用我已经使用的Winpcap应用pingplotter来解决。
我在最后一个工作中使用的function之一是使用此Win32应用程序PingPlotter来testing大小为2000bytes的数据包的TCP / IP数据包丢失和传输时间。
现在启用此function,需要使用Winpcap驱动程序。
它看起来有点不可思议,但是当一个接收应用程序不在另一端时,如何对远程服务器进行随机TCP / IP数据包丢失testing呢?
它只是寻找包TCP / IP包ACK / NACK消息,并分析IP协议分析的较低水平的稳定性? input我的问题,我可能会回答我自己的问题,但我真的不明白任何细节,所以很高兴validation或更正。
我的问题的第二部分是:这个工具能够创build我的testingtcp / ip数据包的丢包到tracert的每一跳的漂亮的图表。
对于我所知道的可以连接到的SQL Server的目标服务器,似乎每个数据包都会失败,尽pipetracert的所有跳转都可以正常工作。 如果机器具有一些基于操作系统的软件防火墙,那么在实践中经常看到这一点,我知道这是我所知道的吗?
我注意到PingPlotter通常在端口80上进行testing。
有没有其他人有任何其他的build议,我可能会更好地testing客户端连接到服务器? 我们从SQL Server客户端库获取消息,指出keep-alive有时会丢失,所以我想要设置一些tcp / ip数据包testing,并为1k数据包画出一个很好的丢包和传输时间图过夜。
在我最后的工作中,我做了这个,发现了很多问题,但是validation发送到端口80的tcp / ip数据包的失败有点麻烦,因为它报告100%的数据包丢失,尽pipe作为一个工作和可访问的SQL Server。
find这个关于PingPlotter端口使用情况的链接 。 看来您所说的TCP / IP“Ping”只是在指定的端口上发送TCP SYN,并等待ACK。 所以,如果你的服务器没有响应端口80(http),你可能想尝试SQL服务正在监听的端口(1433为MSSQL,3306为MySQL)。
不要使用大小为2000字节的数据包进行testing。 2000字节可能比一些设备的MTU大,这使得它们分段/丢弃数据包,这不会让你清楚地认识到由于信道错误而导致的传输损失。
为了监控连接不好的无线networking中客户端到服务器的丢包情况,我有时只使用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 + C结束ping时,您将能够看到丢包率等。
这也不是完美的方式,因为它可能是渠道中的单向问题。 所以数据包可能会到达目的地,但由于某些原因,回复可能会丢失。 在这种情况下(在目的地)
tcpdump -v -i eth0 'icmp'
看是否ping请求甚至到达目的地有助于清除事情。
如果由于某种原因,Linux客户端不可用,请尝试安装cygwin并使用cygwin ping。 它可能与Linux的ping相同,应该告诉你统计结束。