![ping 可以替代 tcp 吗?](https://linux22.com/image/483645/ping%20%E5%8F%AF%E4%BB%A5%E6%9B%BF%E4%BB%A3%20tcp%20%E5%90%97%EF%BC%9F.png)
检查网络“质量”是一项常见任务 - 延迟、丢包数等。但“ping”有许多缺点: - 它使用 ICMP。许多 ISP 针对 ICMP 和 TCP 流量使用不同的整形器,因此“ping”将显示 10ms 延迟,但 TCP 连接将经历 1000ms+。 - 它发送的数据包数量非常少。默认情况下,每秒一个数据包。由于 TCP 协议可以容忍数据包丢失(即使一半数据包丢失,它也能运行得很好 - 这是正常的),因此完全不清楚 ping 的“30% 数据包丢失”是否会导致连接中断,或者这是否完全正常。
那么,有没有其他方法可以替代 ping 来使用 TCP 连接而不是 ICMP 并检查互联网连接质量?
答案1
不管 TCP 是否可以容忍数据包丢失/数据包排序问题,如果“人口”足够大 - 即超过 100 次 ping,30% 的 ping 丢失仍然是相当严重的。
但要回答这个问题,你可以看看 nmap。我相信很快就会有大量的例子出现 :)
但更重要的是,您不只是想要往返时间,您真正想要看到的是从您的机器到服务器以及在每一次(可能的)跳跃中返回的性能。
您可以使用traceroute
- 来执行此操作,但是最常见的版本是使用 ICMP 或 UDP 完成的,但搜索tcp traceroute
- 并从那里开始。
这里有一些有趣的工具供您尝试……
下面是一个例子lft
...
% lft -S 4.2.2.2
Hop LFT trace to vnsc-bak.sys.gtei.net (4.2.2.2):80/tcp
1 ln-gateway.centergate.com (206.117.161.1) 0.5ms
2 isi-acg.ln.net (130.152.136.1) 2.3ms
3 isi-1-lngw2-atm.ln.net (130.152.180.21) 2.5ms
4 gigabitethernet5-0.lsanca1-cr3.bbnplanet.net (4.24.4.249) 3.0ms
5 p6-0.lsanca1-cr6.bbnplanet.net (4.24.4.2) 3.4ms
6 p6-0.lsanca2-br1.bbnplanet.net (4.24.5.49) 3.3ms
7 p15-0.snjpca1-br1.bbnplanet.net (4.24.5.58) 10.9ms
8 so-3-0-0.mtvwca1-br1.bbnplanet.net (4.24.7.33) 11.1ms
9 p7-0.mtvwca1-dc-dbe1.bbnplanet.net (4.24.9.166) 11.0ms
10 vlan40.mtvwca1-dc1-dfa1-rc1.bbnplanet.net (128.11.193.67) 11.1ms
** [neglected] no reply packets received from TTLs 11 through 20
** [4.2-3 BSD bug] the next gateway may errantly reply with reused TTLs
21 [target] vnsc-bak.sys.gtei.net (4.2.2.2) 11.2ms
答案2
Netcat 电动工具描述如何做TCP Ping使用 netcat。具体来说,每个未经请求的 ACK 数据包都应返回 RST。
答案3
我个人非常喜欢地铁(http://www.bitwizard.nl/mtr/),mtr 是基于 ncurses 的 traceroute 克隆,可以使用 icmp 和 udp。它显示您与某个主机之间的链接中的薄弱环节,并且以这种方式不具侵入性。
当真正进行一些负载测试时,我会使用 iperf(客户端/服务器)。
答案4
ICMP 数据包的传输速度通常较慢(如果有差异的话),因为大多数网络会降低它们的优先级,尤其是 ping 数据包。通常,如果您看到 ICMP 和 TCP 响应的结果如此不同,则问题要么是服务器过载,要么是沿途防火墙的特定 TCP 整形。
你应该调查traceroute -P tcp
,,当然tcptraceroute
。lft
telnet