一、网际控制报文协议ICMP
1、为什么会引入ICMP协议
在上篇博客中讲过,IP协议提供的是不可靠无连接的数据传输服务,它具有传输数据到达目的主机的能力,但并不保证数据被准确送达,那么需要保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。
例如:
当传送IP数据包发生错误:比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这也就是为什么说建立在IP层以上的协议是可能做到安全的原因了。
2、ICMP协议报文格式
如下图所示:
字段说明:
字段 | 说明 |
---|---|
类型 | 占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。 |
代码 | 占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。 |
校验和 | 这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的 |