ping和traceroute

来源:互联网 发布:怎么报复淘宝差评 编辑:程序博客网 时间:2024/05/19 04:28

看了看ping和traceroute的源码,对比了一下这两个基于ip层协议的应用小程序。

虽然实现原理都比较简单,却是十分有用的检测工具。


ping就像是潜水艇发射的雷达声波,发出一个icmp回显请求,等待接收icmp回显应答。

打印出的信息包括icmp保温序列号(发出/接收的第几对icmp报文),ttl(从255开始递减),应答和请求报文时间差。

一台主机可以开启多个ping进程,在icmp请求/应答报文的序列号字段标识的是进程的pid,可相互区分。

若探测主机不在arp -a高速缓存列表里,则第一次探测的时间会稍微长些。


traceroute用固定的长度探测周围主机,可以显示出到目的主机都经过哪些路由。尽管ping也有记录路由功能的字段,但是由于ping主要用于探测目的主机是否可达,并没有在这个字段设置太大的长度,最多纪录9个经过的ip地址。(另外把所有信息都纪录在一个数据包里也是不明智的方法)。

因此,traceroute的做法是故意制造ttl和udp port错误, 通过收到错误应答消息来判断主机位置: 发送一个端口号不存在的udp报文,第一次设置ttl为1,第二次设置ttl为2,……,这样n跳可达的主机收到包的时候,对比自己的ip不是目的主机ip,会在丢弃udp报文的同时发送icmp不可达报文,源主机就可以记录到途径的各个主机地址。直到目的主机收到这个报文,但是udp端口号是不存在的,就会发送icmp超时报文。


原创粉丝点击