为了查看本地访问远程IP所经过的路径,我们可以通过跟踪路由来实现,最常用的用命恐怕要属Windows下的tracert跟Linux下的traceroute了。直观的ping命令可以判断出本地与远程目标地址之间的访问速度,当我们ping不通的时候,可以使用tracert或者traceroute命令来找出通信断在哪一个路由节点。
跟踪路由工作原理:
通过向目标发送不同IP生存时间(TTL)值的“Internet控制消息协议(ICMP)”数据包,从而确定到目标所经过的路由。告诉每个路由器在转发数据包之前至少将数据包上的TTL值减1。当TTL减为0时,路由会将”ICMP timeout”消息回传源地址。收到线路上的路由回传包后,Tracert先发送TTL为1的应答包,并将紧跟其后的每个应答包的TTL值增1,直到目标地址响应或TTL达到最大值或者中间某个路由回传timeout包,从而确定路由是否畅通。
Windows 下的tracert命令示例:
Ubuntu 下的traceroute命令示例:
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。
Ubuntu 11.04下traceroute全是**
就算traceroute 192.168.1.1也是一样
请问这是什么原因
你的路由或者网关地址是192.168.1.1吗?如果不是的话,尝试traceroute一下路由或网关的IP地址,如果还是还是星号的话说明你的网关或者路由出于安全考虑,屏蔽了icmp数据包,导致traceroute收不到确认数据包。如果本地路由或者网关能traceroute通,而远程IP地址不通的话,说明网络提供商(比如电信或者网通之类的公司)的防火墙屏蔽了traceroute发出去的icmp包。