我正在尝试在Windows上使用tcp实现tracert。我正在使用Winsock。我使用的套接字是SOCK_STREAM。
问题是如何获取下一个TTL的主机地址。据我所知,在这种情况下我不能使用recvfrom函数,因为TCP是一个基于连接的协议,所以recv相等就是在这种情况下recvfrom。 我尝试使用getpeername,但我仍然只获得目标节点的IP地址。
此外。甚至将TTL = 0设置为IP数据包仍然会找到通往目标计算机的路径并获得响应。
答案 0 :(得分:1)
tracert
(或traceroute
)不适用于TCP但使用ICMP(如ping
)。 TTL应该由 1 启动,然后递增1直到达到目的地。
更多信息可以在http://en.wikipedia.org/wiki/Traceroute#Implementation
找到