今天才真正明白,pingtraceroute机理是不同的
ping是发送icmp协议的echo requestecho relay的过程,它只发送或者接受这两种icmp报文,对于其它类型的icmp查询报文,服务器必须响应标示符合序列号字段, 而且客户选项的数据必须回显。
可是 traceroute是基于TTL的,他经过一个处理它的路由器,TTL值就减去1,直到TTL0,数据报被丢弃,并发送包含 超时icmp信息的报文通知源主机。
比方说,总共3跳的通路,traceroute
1.       先发送TTL=1的,到第一跳,减去1变为0,数据报被丢弃,超时icmp 报文通知源
2.       发送TTL=2的,到第一跳,减去1变为1,数据报继续,到第二跳,减去1变为0,数据报被丢弃,超时icmp报文通知源
3.       发送TTL=3的,到第一跳,减去1变为2,数据报继续,到第二跳,减去1变为1,数据报继续,到第三跳,减去1变为0,数据报 被丢弃,超时icmp报文通知源
这样逐步跟踪到目的主机,TTL=0,显示出中间的跳数
 
pingrecord功能可以记录ping过去和回来时所经过的跳数 ,最大为9跳(因为IP首部的选项功能开启后又40个字节的选项空间,刚好容纳10IP地址,而record功能被设置后 ,长度为39个字节,“code”“len”“ptr”各占用一个字节,剩下37个字节容纳9IP地址),所以它相当于9p ing的过程,不断的echo request echo relay,最后全部记录下来。
traceroute只是记录过去的跳数
ping -rtraceroute都记录跳数,只是机理不同
 
TTL缺省
unix 255  无线路由255 windows64