java 程序ping,Ping程序

介绍

ping是用来测试目的主机是否可达的一个程序

原理:向目的主机发送ICMP回显请求报文,并等待返回ICMP回显应答

ping客户端:发送回显请求的主机

ping服务端:被ping的主机

大部分TCP/IP实现都在内核中实现ping服务端

ICMP回显请求与应答

报文格式:

3029ec9eb783daaf644afce37f82faa9.png

标识符:Unix采用进程id作为标识符。用来匹配ICMP回显请求与应答

序号:从0开始,每次回显请求都会+1。用来确认是否有分组丢失、重复、乱序

局域网内ping:

619b0a3987f3483cf3ab3f2c4e986679.png

广域网内ping:

1f65542ecaf0f91b53f6c89b88033e4f.png

观察到出现高延迟和大量分组丢失情况

IP记录路由选项

作为IP首部中的选项字段,最长40字节。用来记录IP报文经过了哪些主机

通过ping -R,程序就会记录并使用IP记录路由选项

当经过一个路由器,它记录出口IP地址,当带该选项的回显应答回到源主机(发ping请求的主机),也会记录该主机的入口地址。通过该功能,可以发现实际路由过程中会频繁使用默认路由

IP记录路由选项的报文:

24fdf75ffb0a4269560cc0042e79955b.png

code:IP选项类型。值7代表IP记录路由选项

len:选项总字节长度。值为39

ptr:存放下一个IP地址的位置。初始化值为4,每当加入一个IP,值+4,当值为40时代表已经记录9个IP,空间已满

通过这种方式记录路由过程的问题:

不是所有主机都支持该选项。现在大部分系统都支持

记录的IP有限。由于只有40字节来记录,除开记录元信息的,最多只能记录9个IP

IP记录时间戳选项

作为IP首部中的选项字段,最长40字节。

IP记录时间戳选项的报文:

ece1badacc32ba5f8e29363980316929.png

code:IP选项类型:值0x44代表IP记录时间戳选项

len:选项总字节长度。值为36或40

ptr:存放下一个时间戳的位置

OF:4位溢出字段。当路由器没有空间追加时间戳时,就增加溢出字段的值

FL:4位标志字段。不同标志描述了时间戳部分该记录哪些东西

可用FL:

41af896c9dd01d7a97fb37e7732fd679.png

该方案的问题是:

通常标志3才有意义。标志0功能太弱,标志1会导致只能放4条记录,并且可能都不是自己关心的

标志3中指定了主机,但这些主机的时间戳可能并不准确

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值