我正在寻找一种工具来监控 TCP 连接的质量。我试图描述我的意思:
它应该是一个有客户端和服务器部分的工具。客户端每秒向服务器发送 1kB 的数据,服务器监控数据包的传输速度。
或者换句话说:我正在寻找类似于“ping”命令的东西,除了我可以测试 TCP 连接,并且具有相当高的带宽(即更多的数据包),例如 1kB/s。
我对最大吞吐量不感兴趣,但对持续快速传输感兴趣。比如说,我会通过最大吞吐量也是 128kps 的连接传输 128kps 的 MP3 文件,但延迟很低。而且我想立即播放该文件(或者说,缓冲时间为 1 秒)。
目标是监控网络(互联网)连接的实际可用性。(不,我对像 nagios 这样设置复杂、使用复杂的软件不感兴趣。)
非常感谢!
答案1
您如何定义“数据包传输速度有多快”?如果您想知道数据包从 A 点到达 B 点需要多长时间,那么我认为没有亚毫秒级精确的时钟同步就无法做到这一点。
我会尝试捕获一些实际流量(即实际使用应用程序时),并使用 WireShark 进行分析,查找发送的某些数据与相应的 ACK 数据包之间的延迟。这样就可以计算出流量的往返时间 (RTT)。
更新:
TCP 堆栈必须跟踪每个连接的 RTT。(它用于优化数据包传输和管理窗口大小)。如果您使用的是 Linux,并且它是您自己的应用程序,则可以使用getsockopt(fd,.. ,TCP_INFO,...)
返回的数据,其中包含所有这些内部参数。您可以每秒查看一次这些数据并将其传输到显示应用程序。
答案2
答案3
仅供参考.. Linux“ping”有这个选项:
-s packetsize
指定要发送的数据字节数。默认值为 56,与 8 个字节的 ICMP 头数据组合后,将转换为 64 个 ICMP 数据字节。
答案4
我不确定您是在寻找长期运行的监视器,还是寻找像 ping 这样的一次性测试应用程序。如果您想分析链接的 TCP 性能,经典工具是网络管道。NetPIPE 可以告诉您吞吐量和双向通信的延迟。