网络诊断:ICMP、Ping、Traceroute

在工作和生活中,常常会遇到网络不通的情况,而机器明明就在那里,看着都好好的,就是网络不通。遇到类似的问题如何定位呢?

1 ICMP 协议的格式

要分析类似的问题,我们先需要了解一个协议,ICMP 协议,ICMP 全称 internet Control Message Protocol,就是互联网控制报文协议。

网络包在异常复杂的网络环境中传输时,常常会遇到各种各样的问题。当遇到问题的时候,总不能“死个不明不白”,要传出消息来,报告情况,这样才能调整传输策略。

ICMP 报文是封装在 IP 包中的,因为传输指令的时候,肯定需要源地址和目的地址。它本身非常简单,作为控制报文肯定要尽量简单。

ICMP 报文有很多的类型,不同的类型有不同的代码。最常用的类型是主动请求为8,主动请求的应答为 0。

查询报文类型

查询报文类型是主动侦探网络的情况。对应的工具为 ping。ping 会存放发送请求的时间值,来计算往返时间,说明路程的长短。

差错报文类型

差错报文就是发送出一些侦探包,根据侦探包的返回类型来判断网络呢情况。主要有以下几种差错:

  • 终点不可达
    具体的原因在代码中表示就是,网络不可达错误码为 0,主机不可达错误码为 1,协议不可达错误码为 2,端口不可达错误码为 3,需要分片但设置不了分片错误码为 4。
  • 源站抑制
    即网络拥堵,让源站放慢发送速度。
  • 时间超时
    超过网络包的生命周期还没到达。
  • 路由重定向
    即下次请发另一个路由器,此路不是最优路径。

2 ping 的工作过程

3 Traceroute:差错报文类型的使用

那么是不是要网络确实遇到这些错误了才能出现这些错误报文呢?那也不是,有一个 traceroute 程序会使用 ICMP 的规则,故意制造一些能够产生错误的场景。

所以,一个作用是 traceroute 的第一个作用就是故意设置特殊的 TTL,来追踪去往目的地沿途要经过的路由器。如果将 TTL 设置为 1,则经过一个路由器该报文就牺牲了,会产生一个差错报文返回。将 TTL 设置为 2,则经过两个路由器该报文就牺牲了,如此可以拿到此报文发送出去将经过的全部路由器 ip。

traceroute 可以设置一个不可能的端口,来测试报文超时时间。

traceroute 可以故意设置不分片,从而确定路径的 MTU。

4 总结

  • ICMP 相当于网络世界的侦察兵。分为主动请求报文和差错报文类型。
  • Ping 使用查询报文,Traceroute 使用差错报文。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值