第7讲 | ICMP与ping:投石问路的侦察兵
刘超
该思维导图由 AI 生成,仅供参考
无论是在宿舍,还是在办公室,或者运维一个数据中心,我们常常会遇到网络不通的问题。那台机器明明就在那里,你甚至都可以通过机器的终端连上去看。它看着好好的,可是就是连不上去,究竟是哪里出了问题呢?
ICMP 协议的格式
一般情况下,你会想到 ping 一下。那你知道 ping 是如何工作的吗?
ping 是基于 ICMP 协议工作的。ICMP 全称 Internet Control Message Protocol,就是互联网控制报文协议。这里面的关键词是“控制”,那具体是怎么控制的呢?
网络包在异常复杂的网络环境中传输时,常常会遇到各种各样的问题。当遇到问题的时候,总不能“死个不明不白”,要传出消息来,报告情况,这样才可以调整传输策略。这就相当于我们经常看到的电视剧里,古代行军的时候,为将为帅者需要通过侦察兵、哨探或传令兵等人肉的方式来掌握情况,控制整个战局。
ICMP 报文是封装在 IP 包里面的。因为传输指令的时候,肯定需要源地址和目标地址。它本身非常简单。因为作为侦查兵,要轻装上阵,不能携带大量的包袱。
ICMP 报文有很多的类型,不同的类型有不同的代码。最常用的类型是主动请求为 8,主动请求的应答为 0。
查询报文类型
我们经常在电视剧里听到这样的话:主帅说,来人哪!前方战事如何,快去派人打探,一有情况,立即通报!
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
ICMP与ping:网络世界的侦察兵 ICMP协议就像网络世界的侦察兵,通过ping工具进行网络连通性测试。ping发送的查询报文类似于主帅派出侦察兵查探敌情,而收到的回复则是侦察兵的报告。文章详细解释了ICMP报文的结构和含义,让读者能够快速了解ICMP协议的工作原理和报文类型。除了ping,文章还介绍了Traceroute的使用,它利用ICMP规则故意制造能够产生错误的场景,用于追踪去往目的地时沿途经过的路由器。此外,Traceroute还可以确定路径的MTU,通过故意设置不分片来检测路径的最大传输单元。总的来说,ICMP与ping的工作原理和报文类型的解释,让读者更好地理解网络连通性测试的基本原理。对于网络运维人员和对网络感兴趣的读者来说,这是一篇值得阅读的技术文章。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》,新⼈⾸单¥68
《趣谈网络协议》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(164)
- 最新
- 精选
- knull许多人问:tracerouter发udp,为啥出错回icmp? 正常情况下,协议栈能正常走到udp,当然正常返回udp。 但是,你主机不可达,是ip层的(还没到udp)。ip层,当然只知道回icmp。报文分片错误也是同理。
作者回复: 是的
2018-09-125158 - 盖好像不发ICMP差错报文的一种情况就是ICMP 的差错报文出错,其它还有目的地址为广播时或者源地址不唯一时也不发差错报文。 前面评论问udp为什么返回ICMP报文的,ICMP一般认为属于网络层的,和IP同一层,是管理和控制IP的一种协议,而UDP和TCP是传输层,所以UDP出错可以返回ICMP差错报文
作者回复: 赞
2018-06-015116 - 手撕油条越听越想听,一周三更听不爽
作者回复: 谢谢
2018-06-0160 - weineel老师您好,以我的经验使用tcp/udp协议可以用scoket api编程,但是文中提到ping程序使用了ip协议,那ping程序的实现是不是用到了其他网络编程接口? 换句话说,每一层的协议都有相应的api可以调用吗?有的话又是什么呢? 但又感觉我们写的程序一般是应用层用socket就行了…
作者回复: 不是每一层都有接口的,tcp ip协议栈在内核里面,内核的最外层是系统调用,所以你看起来就只能调用socket了
2018-06-02220 - xfan如果网络不可达,是谁回复的差错报文呢,是网关吗
作者回复: 网络不可达也是到达了某个地方,发现走不下去了,到哪里哪里返回,一般是某个路由器
2019-04-09219 - Trust me ҉҉҉҉҉҉҉❀tracerouter发送的包是什么程序给的响应? 是目标主机的traceroute程序?还是ICMP
作者回复: 没有服务端,全部在制造错误
2018-06-0112 - 西门吹牛ICMP是第三层网络层的协议 计算几网络教材是这么描述的:为了更有效转发ip数据报和提高转发的机会,ICMP允许主机或者路由器报告差错情况和提供有关异常情况的报告,用于传输出错报告控制信息; 简单的道理放到教材中就晦涩难懂了。 其实可以理解为,ICMP报文可以在主机和路由器之间传输,但传输的不是用户数据,而是网络通不通、主机是否可达、路由是否可用等网络本身的消息,所以可以比作侦察兵,用来侦察在ip层报文传输过程中遇到的异常情况,并能汇报信息,有了异常信息,就可以控制异常,达到更有效的传输效率;控制这种报文,用的是差错报文类型; 另外一种是查询报文类行,可以理解为用来测试俩个主机间的连接是否有效,报文多久能到达; 总之,通过ICMP协议,可以对ip层报文的传输做到把控
作者回复: 是的
2020-06-10211 - anthannTraceroute发送的是udp包,为什么也能收到icmp响应呢?
作者回复: 所以是侦查兵啊,错误了就会发
2018-06-017 - 约书亚差错包也出问题是不是就拉到了,看上层是不是定时重发的协议了?
作者回复: 是的,差错包不会在发差错包
2018-06-017 - yang[小白评论] 看评论说 icmp也属于网络层啊? 我还以为icmp属于应用层呢
作者回复: icmp是网络层,ping是应用
2019-08-2935
收起评论