介绍
ping是用来测试目的主机是否可达的一个程序
原理:向目的主机发送ICMP回显请求报文,并等待返回ICMP回显应答
ping客户端:发送回显请求的主机
ping服务端:被ping的主机
大部分TCP/IP实现都在内核中实现ping服务端
ICMP回显请求与应答
报文格式:
标识符:Unix采用进程id作为标识符。用来匹配ICMP回显请求与应答
序号:从0开始,每次回显请求都会+1。用来确认是否有分组丢失、重复、乱序
局域网内ping:
广域网内ping:
观察到出现高延迟和大量分组丢失情况
IP记录路由选项
作为IP首部中的选项字段,最长40字节。用来记录IP报文经过了哪些主机
通过ping -R,程序就会记录并使用IP记录路由选项
当经过一个路由器,它记录出口IP地址,当带该选项的回显应答回到源主机(发ping请求的主机),也会记录该主机的入口地址。通过该功能,可以发现实际路由过程中会频繁使用默认路由
IP记录路由选项的报文:
code:IP选项类型。值7代表IP记录路由选项
len:选项总字节长度。值为39
ptr:存放下一个IP地址的位置。初始化值为4,每当加入一个IP,值+4,当值为40时代表已经记录9个IP,空间已满
通过这种方式记录路由过程的问题:
不是所有主机都支持该选项。现在大部分系统都支持
记录的IP有限。由于只有40字节来记录,除开记录元信息的,最多只能记录9个IP
IP记录时间戳选项
作为IP首部中的选项字段,最长40字节。
IP记录时间戳选项的报文:
code:IP选项类型:值0x44代表IP记录时间戳选项
len:选项总字节长度。值为36或40
ptr:存放下一个时间戳的位置
OF:4位溢出字段。当路由器没有空间追加时间戳时,就增加溢出字段的值
FL:4位标志字段。不同标志描述了时间戳部分该记录哪些东西
可用FL:
该方案的问题是:
通常标志3才有意义。标志0功能太弱,标志1会导致只能放4条记录,并且可能都不是自己关心的
标志3中指定了主机,但这些主机的时间戳可能并不准确