ping和traceroute

看了看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超时报文。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值