ICMP协议

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
IP 协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完 成。其中一个重要的模块就是 ICMP(网络控制报文)协议。


ICMP报文是在IP数据报内部

长度20字节 -
IP首部 ICMP报文

ICMP报文

类型 TYPE 8位 代码 CODE 8位 检验和 Description 16位

ICMP类型的列表

当传送 IP 数据包发生错误–比如主机不可达,路由不可达等等,ICMP 协议将会把错误信息封包,然后传送回给主机。给主机 一个处理错误的机会,这 也就是为什么说建立在 IP 层以上的协议是可能做到安全的原因。ICMP 数据包由8bit 的错误类型和8bit 的代 码和16bit 的校验和组成。而前 16bit 就组成了 ICMP 所要传递的信息。

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

尽管在大多数情况下,错误的包传送应该给出 ICMP 报文,但是在特殊情况下,是不产生 ICMP 错误报文的。如下:

1 ICMP 差错报文不会产生 ICMP 差错报文(出 IMCP 查询报文)(防止 IMCP 的无限产生和传送)
2 目的地址是广播地址或多播地址的IP数据报。
3 作为链路层广播的数据报。
4 不是IP分片的第一片。
5 源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。 虽然里面的一些规定现在还不是很明白,但是所有的这一切规定,都是为了防止产生 ICMP 报文的无限传播而定义的。
6 ICMP 协议大致分为两类,一种是查询报文,一种是差错报文。其中查询报文有以下几种用途:
7 ping 查询(不要告诉我你不知道 ping 程序)
8 子网掩码查询(用于无盘工作站在初始化自身的时候初始化子网掩码)
9 时间戳查询(可以用来同步时间)






上一页  TCP/IP学习理解(四)

下一页  TCP/IP学习理解(六)