网络协议学习(2):ICMP协议

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

ICMP协议的功能主要有: 
1. 确认IP包是否成功到达目标地址 
2. 通知在发送过程中IP包被丢弃的原因 
如下图所示: 

网络协议学习(2):ICMP协议

ICMP消息类型

类型(十进制) 内容
0 回送应答
3 目标不可达
4 原点抑制
5 重定向或改变路由
8 回送请求
9 路由器公告
10 路由器请求
11 超时
17 地址子网请求
18 地址子网应答

主要的ICMP消息

ICMP目标不可达消息(类型3)

IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达( Destination Unreachable Message)的ICMP消息,并在这个消息中显示不可达的具体原因。

ICMP重定向消息(类型5)

如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个 ICMP重定向(ICMP Redirect Message)的消息给这个主机。在这个消息中包含了最合适的路由信息和源数据。这主要发生在路由器持有更好的路由信息的情况下。路由器会通过这样的ICMP消息给发送端主机一个更合适的发送路由。

网络协议学习(2):ICMP协议

ICMP超时消息(类型11)

IP包中有一个字段叫做TTL (Time To Live,生存周期),它的值随着每经过一次路由器就会减;",直到减到0时该IP包会被丢弃。此时, IP路由器将会发送一个ICMP超时的消息(ICMP Time Exceeded Message,错误号0")给发送端主机,并通知该包已被丢弃。

设置IP包生存周期的主要目的,是为了在路由控制遇到问题发生循环状况时,避免IP包无休止地在网络上被转发。此外,有时可以用TTL控制包的到达范围,例如设置一个较小的TTL值。

网络协议学习(2):ICMP协议

ICMP回送消息(类型0,8)

用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息。可以向对端主机发送回送请求的消息(ICMP Echo Request Mes sage,类型8),也可以接收对端主机发回来的回送应答消息(ICMP Echo Reply Message,类型0)。

网络上最常用的“ping命令"就是利用这个消息实现的。

网络协议学习(2):ICMP协议

 

Ping过程 原理 详解(图):http://www.360doc.com/content/10/0804/20/1278923_43700893.shtml

PING命令过程:https://blog.csdn.net/QQ2558030393/article/details/90736514