ICMP协议

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

ICMP位于TCP/IP协议族中IP层。

ICMP的主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。同时ICMP的这种通知消息会使用IP进行发送,收到ICMP包的主机会分解ICMP的首部和数据与以后得知具体发生的原因。

ICMP报文在IP数据报内部被传输,正式规范参考RFC792.

 

ICMP报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。

类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。校验和字段覆盖整个ICMP报文,算法与IP首部校验和相同。

ICMP消息分类

ICMP消息大致分成两类:一类是通知出错原因的错误消息(差错报文),另一类是用于诊断的查询消息(查询报文)。

常用ICMP消息类型

不同类型由报文中的类型字段和代码字段来共同决定。

类型3:ICMP目标不可达消息

 IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP消息。并在这个消息中显示不可达的具体原因。而在实际通信过程中常遇到错误代码为1,表示主机不可达,它是指路由表中没有改主机信息或者该主机没有联网的意思。

ICMP不可达消息.png

 

类型5:ICMP重定向消息

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

ICMP重定向消息.png

类型11:ICMP超时消息

IP包中有有一个字段叫做TTL,它的值就是每经过一次路由器就会被减1,直到0时该IP包会被丢弃,此时IP路由器将会发送一个ICMP超时的消息给发送端主机,并通过该包已被丢弃。

设置IP包生存周期的主要目的,是为了在路由控制遇到问题发生循环状态时,避免IP包无休止地在网络上被转发。

 

类型0、8:ICMP回送消息

用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息。可以向对端主机发送回送请求的消息(类型8),也可以接受对端主机发回来的回送应答消息(类型0)。网络上最常用的ping命令,就是利用这个消息实现的。

 

参考:

ICMP百度百科

跟我学TCP/IP系列4--IP协议

图解TCP/IP

TCP/IP详解卷一

posted @ 2017-06-23 08:05  yuxi_o  阅读(8616)  评论(0编辑  收藏  举报