目录
一、简介
IP协议本身没有为终端系统提供直接的方法来发现那些发往目的地址失败的IP数据包。此外,IP没有提供直接的方式来获取诊断信息(例如,哪些路由器在沿途中被使用了或使用一种方法来估计往返时间)。为解决这些不足之处,将一个特殊的Internet控制报文协议(Internet Control Message Protocol,ICMP)与IP结合使用,以便提供与IP协议层配置和IP数据包处置相关的诊断和控制信息。
ICMP通常被认为是IP层的一部分,它需要在所有IP实现中存在。它使用IP协议进行传输。因此,确切地说,它既不是一个网络层协议,也不是一个传输层协议,二是位于两者之间。
ICMP负责传递可能需要注意的差错和控制报文。ICMP报文通常是由IP层本身、上层的传输协议(TCP/UDP等),甚至某些情况下是用户应用触发执行的。请注意,ICMP并不为IP网络提供可靠性,它只是表明了某些类别的故障和配置信息。最常见的丢包(路由器缓冲区溢出)并不会触发任何的ICMP信息,由其他协议如TCP来处理这种情况。
鉴于ICMP能够影响重要的系统功能操作和获取配置信息,黑客们已经在大量攻击中使用ICMP报文。由于担心这些攻击,网路管理员经常会用防火墙封阻ICMP报文,特别是在边界路由器上。如果ICMP被封锁,大量的诊断程序(例如ping、traceroute)将无法正常工作。
1、在IP中的封装
ICMP报文是在IP数据报内被封装传输的:
二、ICMP报文
ICMP报文可分为两大类:
①有关IP数据报传递的ICMP报文,称为差错报文error message;
②有关信息采集和配置的ICMP报文,称为查询query或信息类报文informational message
1、ICMPv4报文
对于ICMPv4,常见的差错报文包括目的不可达、重定向、超时和参数问题;信息类报文包括回显请求和回显应答,以及路由器通告和路由器请求(一般称为路由器发现)。
2、ICMPv6报文
ICMPv6负责的不仅是差错和信息报文,也负责大量IPv6路由