![NPing 在 `TCP Connect` 上花费的时间明显少于 `TCP`](https://linux22.com/image/735425/NPing%20%E5%9C%A8%20%60TCP%20Connect%60%20%E4%B8%8A%E8%8A%B1%E8%B4%B9%E7%9A%84%E6%97%B6%E9%97%B4%E6%98%8E%E6%98%BE%E5%B0%91%E4%BA%8E%20%60TCP%60.png)
我使用 NPing(NMap 的 ping 工具)测量可能不响应 ICMP 的特定服务器的延迟。此外,服务器通常不运行 HTTP(S),我只检查与游戏反恐精英相关的特定 TCP 端口的延迟。
我总是尝试 ICMP、TCP 和 TCP-Connect,并分别执行它们。我的方法是:
- 尝试 ICMP (
nping --icmp dstip -p dstport
) - 然后,尝试 TCP (
nping --tcp dstip -p dstport
) - 然后,尝试 TCP-CONNECT (
nping --tcp-connect dstip -p dstport
)。 - 从所有这些中获得最低的延迟。
在我的直觉中,预期的行为应该是
ICMP latency >= TCP-Connect latency >= TCP latency
实际情况是
ICMP latency >= TCP latency >>> TCP-Connect latency
(其中 >>> 代表“大很多”)
举个例子,在一台服务器中,ICMP 会产生超时,TCP 可以绕过180ms
,而 TCP-Connect 只会产生绕过3ms
。
对于为什么会发生这种情况有什么想法吗?
编辑1:该tcptraceroute
工具还为我提供了3ms
。两者非常接近并通过 IXP 连接。见下文:
~$ sudo tcptraceroute dstip dstport
Selected device ens3, address 172.16.1.6, port 58803 for outgoing packets
Tracing the path to dstip on TCP port dstport, 30 hops max
1 my_localip (172.16.1.6) 0.139 ms 0.131 ms 0.155 ms
2 my_isp_globalip 0.288 ms 0.233 ms 0.264 ms
3 my_isp_bordergw 1.855 ms 0.311 ms 0.257 ms
4 IXP_router_name (IXP_router_ip) 0.570 ms 0.420 ms 0.482 ms
5 dst_bordergw 2.820 ms 2.967 ms 3.145 ms
6 dst_internalrouter 2.736 ms 3.665 ms 2.331 ms
7 dstname (dstip) [open] 3.095 ms 3.088 ms 3.145 ms
不过...为什么 NPing 的 TCP 模式会导致这么长的延迟?
编辑2:根据tcpdump
,在 TCP 模式下,TCP Syn 响应大约在 左右3 to 6ms
。那么为什么 NPing 会通知我180ms
延迟?