icmp协议

ICMP 协议

ICMP 的全称是 Internet Control Message Protocol 。与 IP 协议一样同属 TCP/IP 模型中的网络层,并且 ICMP 数据包是包裹在 IP 数据包中的。他的作用是报告一些网络传输过程中的错误与做一些同步工作。ICMP 数据包有许多类型。每一个数据包只有前 4 个字节是相同域的,剩余的字段有不同的数据包类型的不同而不同。ICMP 数据包的格式如下

1
2
3
4
5
6
7
8
9
10
11
https://tools.ietf.org/html/rfc792

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 不同的Type和Code有不同的内容 |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

从技术角度来说,ICMP 就是一个“错误侦测与回报机制”, 其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:

  • 侦测远端主机是否存在。
  • 建立及维护路由信息。
  • 重导数据传送路径(ICMP 重定向)。
  • 数据流量控制。
    ICMP 在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。

完整类型列表

TYPECODEDescription
00Echo Reply——回显应答(Ping 应答)
30Network Unreachable——网络不可达
31Host Unreachable——主机不可达
32Protocol Unreachable——协议不可达
33Port Unreachable——端口不可达
34Fragmentation needed but no frag. bit set——需要进行分片但设置不分片标志
35Source routing failed——源站选路失败
36Destination network unknown——目的网络未知
37Destination host unknown——目的主机未知
38Source host isolated (obsolete)——源主机被隔离(作废不用)
39Destination network administratively prohibited——目的网络被强制禁止
310Destination host administratively prohibited——目的主机被强制禁止
311Network unreachable for TOS——由于服务类型 TOS,网络不可达
312Host unreachable for TOS——由于服务类型 TOS,主机不可达
313Communication administratively prohibited by filtering——由于过滤,通信被强制禁止
314Host precedence violation——主机越权
315Precedence cutoff in effect——优先中止生效
40Source quench——源端被关闭(基本流控制)
50Redirect for network——对网络重定向
51Redirect for host——对主机重定向
52Redirect for TOS and network——对服务类型和网络重定向
53Redirect for TOS and host——对服务类型和主机重定向
80Echo request——回显请求(Ping 请求)
90Router advertisement——路由器通告
100Route solicitation——路由器请求
110TTL equals 0 during transit——传输期间生存时间为 0
111TTL equals 0 during reassembly——在数据报组装期间生存时间为 0
120IP header bad (catchall error)——坏的 IP 首部(包括各种差错)
121Required options missing——缺少必需的选项
130Timestamp request (obsolete)——时间戳请求(作废不用)
14Timestamp reply (obsolete)——时间戳应答(作废不用)
150Information request (obsolete)——信息请求(作废不用)
160Information reply (obsolete)——信息应答(作废不用)
170Address mask request——地址掩码请求
180Address mask

ICMP 是个非常有用的协议,尤其是当我们要对网路连接状况进行判断的时候。