趣谈网络5讲| ICMP与IP

检测一个网址是否能够访问,通常会使用 ping 命令去检查,那么 ping 是怎么操作的呢?在这个过程中会用到什么协议呢?

ICMP 协议的格式

ping 是基于 ICMP 协议工作的。ICMP 全称 Internet Control Message Protocol,就是互联网控制报文协议。

ICMP报文是封装在 IP 包里面。因为传输指令的时候,需要源地址和目标地址。

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

查询报文类型
常用的 ping 就是查询报文,是一种主动请求,并且获得主动应答的 ICMP 协议。
对 ping 的主动请求,进行网络抓包,称为 ICMP ECHO REQUEST。同理,主动请求的回复,称为 ICMP ECHO REPLY。比起原生的 ICMP,这里多了两个字段标识符和序号。标识符用来表示用于哪一种功能,序号用来表示表示 ping 的情况好坏。

差错报文类型
差错报文类型有下面几种情况,

  • 第一种是终点不可达:
    • 网络不可达代码为 0
    • 主机不可达代码为 1
    • 协议不可达代码为 2
    • 端口不可达代码为 3
    • 需要进行分片但设置了不分片为
  • 源站抑制 : 让源站放慢发送速度
  • 时间超时 : 超过网络包的生存时间还是没到
  • 路由重定向 : 让下次发给另一个路由器

查询报文类型的使用

下图是 ping 的发送和接受过程。在这里需要强调一下,ping 是应用层的服务, ICMP是属于网络层的协议

Traceroute:差错报文类型的使用

Traceroute的第一个作用:故意设置特殊的TTL。来追踪去往目的地是沿途经过的路由器
Traceroute的另外一个作用: 故意设置不分片,从而确定路径的 MTU 。

小结

  • ICMP相当于网络世界的侦察兵。两种类型的 ICMP 报文,一种是 主动探查的查询报文,一种异常报告的差错报文
  • ping 使用查询报文, Traceroute 使用差错报文

说点什么

avatar
  Subscribe  
提醒

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部