I C M P经常被认为是I P层的一个组成部分。它传递差错报文以及其他需要注意的信息。I C M P报文通常被I P层或更高层协议( T C P或U D P)使用。一些I C M P报文把差错报文返回给用户进程。
I C M P报文是在I P数据报内部被传输的,如图所示。
报文格式:
报文类型:
I C M P地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码。
I C M P时间戳请求允许系统向另一个系统查询当前的时间。
ICMP端口不可达差错:
I C M P的一个规则是, I C M P差错报文必须包括生成该差错报文的数据报I P首部(包含任何选项),还必须至少包括跟在该I P首部后面的前8个字节。在我们的例子中,跟在I P首部后面的前8个字节包含U D P的首部。一个重要的事实是包含在U D P首部中的内容是源端口号和目的端口号。就是由于目的端号(8888)才导致产生了I C M P端口不可达的差错报文。接收I C M P的系统可以根据源端口号(2924)来把差错报文与某个特定的用户进程相关联。
4.4BSD系统对ICMP报文的处理: