浅谈ICMP/ping、traceroute、MTR、fping

日常网络中常用的监控大多是基于ICMP协议开发的,今天打算梳理一下已知的各种监控工具(手段),看看他们之间有什么区别和关联。配合Wireshark完成了一些对协议上的理解。本博客中提到的用源地址是172.31.0.7(我云主机中的内网ip)目的地址是202.101.33.1没有什么特殊的意义,随便敲了一个可用的地址,就目前狼多肉少的年代,随意敲一个ip出来可能都是在用的。

注:以下截图和参数均在CentOS 6.5中呈现的,其他系统和版本可能不相同。


ICMP协议

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它本身不会像TCP、UDP那样作为信息载体的传输协议,但是它可以承载一些数据交互性的数据,针对网络情况作出判断和结果输出。按照官方语言解释就是:错误侦测与回报机制。

简单的说一下ICMP的类型:

ICMP类型介绍——描述

类型0 Echo Reply——回显应答(Ping应答)

类型3 Network Unreachable——网络不可达

 

类型11 TTL equals 0 during transit——传输期间生存时间为0

好了,我们带入应用慢慢理解其中的意思吧。我们在排查网络故障中常用的基于ICMP的工具有ping、traceroute、MTR、fping,用的最多的应该就是ping了吧?话不多说,就从ping开始入手吧。

ping

使用

ping的使用很简单,无论在Windows、linux、mac系统中都是可以直接拿来用的,最原始的使用格式就是ping后面加上目的ip即可,默认是用设备的接口地址作为源地址进行ping操作,也可以通过增加参数来更改默认值。

-c count

增加-c参数可以指定ping的次数,比如计算50次中的丢包率,延迟就需要写入-c 50即可。

-i interval

这里明确说一下这是小写的i不要记混,ping默认的间隔是1秒发送一次ping包,可以通过-i修改间隔时间,间隔时间最短目前只支持到0.2s。

-s packetsize

修改ping包的大小,默认值为56字节,可以测试大包修改相应的数值。

-t ttl

通过-t可以修改ttl值(生命周期),这里多说一点,现实网络中传输是要经过运营商的,也就是常见的电信、联通、移动等ISP服务提供商,所以两个设备之间必定有多设备进行转发,才可以把数据包传到目的设备上,当数据包经过一次转发设备ttl值就会递减1个值,所以默认ping的话只要对端设备不进行icmp策略限制,只要对端不是宕机状态,理论上ping是完全可以把包送过去的,国内最远的距离也不过30跳,当然如果中间路由有环路发生,ttl值就会递减到0从而丢弃报文。

利用这一点,就可以通过ttl值来检测网络中的跳数,比如我在筛选IDC网络质量时会设定一个目的地址,多个IDC机房同时ping向同一个目的ip,把ttl值固定在10,凡是没有ping通的就说明已经超过了10跳,没有通的IDC就会被筛选在外了。

-I interface or address

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值