TCP Ping 或 Traceroute 如何工作?

TCP Ping 或 Traceroute 如何工作?

tcp ping 或 traceroute 如何工作?它是否只考虑建立 TCP 握手所需的时间?

另外,在 ICMP ping 中您可以指定数据包大小,这可以在 TCP ping 中实现吗?

答案1

我相信您指的是这些实用程序:

http://www.vdberg.org/~richard/tcpping.html

http://michael.toren.net/code/tcptraceroute/

由于 tcpping 需要 tcptraceroute,因此我将从 tcptraceroute 开始。

tcptraceroute 的作者指出,与传统的 traceroute 不同,“通过发送 TCP SYN 数据包而不是 UDP 或 ICMP ECHO 数据包,tcptraceroute 能够绕过最常见的防火墙过滤器。”

此外:值得注意的是,tcptraceroute 从未与目标主机完全建立 TCP 连接。

因此,tcptraceroute 不会测量完成三次握手所需的时间,因为这永远不会发生。它测量从初始 SYN 到 SYN/ACK 的时间。这有时被称为半开连接扫描。

来自 nmap 手册页:

          This technique is often referred to as half-open scanning,
          because you don’t open a full TCP connection. You send a SYN
          packet, as if you are going to open a real connection and then
          wait for a response. A SYN/ACK indicates the port is listening
          (open), while a RST (reset) is indicative of a non-listener. If
          no response is received after several retransmissions, the port
          is marked as filtered. The port is also marked filtered if an
          ICMP unreachable error (type 3, code 1,2, 3, 9, 10, or 13) is
          received.

至于你的数据包大小问题,上面的描述也有答案。由于 tcptraceroute 发送的是标准 SYN 数据包,因此它应该是一个小数据包,大概是 64 字节。

答案2

我不知道“TCP Ping”或“TCP Traceroute”的任何标准规范或参考实现,所以您可能需要选择一对实现这些测试的特定工具,然后使用数据包嗅探器查看这些特定工​​具的作用。

答案3

它是否只考虑建立 TCP 握手所需的时间?

不...你的机器发出了 3UDPTTL(生存时间)为 1 的数据包。当这些数据包到达下一跳路由器时,它会将 TTL 减为 0,从而拒绝该数据包。它会将 ICMP 生存时间已超出(类型 11),传输期间 TTL 等于 0(代码 0)发送回您的机器 - 源地址为其自身,因此您现在知道路径中第一个路由器的地址。

更多信息请参阅http://www.tek-tips.com/faqs.cfm?fid=381

答案4

Traceroute'' 是一个网络调试实用程序,它试图跟踪数据包通过网络的路径。Traceroute 传输具有较小生存​​时间 (TTL) 值的数据包。在每个路由器上,该值都会减少 1,如果 TTL 达到 0,则数据包已过期并被丢弃。Traceroute 依赖于常见的路由器做法,即在发生这种情况时向发送方发送 ICMP 超时消息(记录在 RFC 792 中)。

相关内容