ICMP协议

141 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

图片.png ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 

ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。

图片.png 通常ICMP差错报告报文有5种:无法支付、拥塞丢数据、TTL=0、首部字段有问题、值得更好的路由;

图片.png

图片.png 不应发送ICMP差错报文的情况

·对ICMP差错报告报文不再发送ICMP差错报告报文

·对第一个分片的数据报文的所有后续数据报片都不发送ICMP差错报告报文

·对具有组播地址的数据报都不发送ICMP差错报告报文

·对具有特殊地址的数据报不发送ICMP差错报告报文

图片.png ICMP 主要有两个应用,一个是 Ping,一个是 Traceroute。

  1. Ping

Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。

Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

  1. Traceroute

Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。

Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。