Linux网络协议ICMP简介(icmplinux)
Linux网络通信协议ICMP(Internet Control Message Protocol,互联网控制报文协议)是一种低级的协议,它用于在Internet上传输控制消息和诊断信息。它可以在TCP/IP协议族中的网络层唯一且最重要的协议。
ICMP是一种处理Internet上不可靠的、无连接层的报文的协议,它用于定位和报告传输问题,同时还支持一些特定的应用类型,如网络扫描、路由控制信息发送和修复网络状态。它最早是在RFC 792提出的。
ICMP报文信息格式:
0 8 16 24 32
+———-+———–+———–+———–+
| 类型 | 代码 | 校验和 | 更多可选 |
+———-+———–+———–+———–+
| 数据 |
+——————————————————+
ICMP报文类型(Type): ICMP报文类型作为发送方发送的一种信息类型,通常有七种:
1. Echo响应(0):请求回显,常用于PING命令;
2. 响应中断(3):主机无法在指定的时间完成请求;
3. 无法路由(5):网络未配置路由到指定地址;
4. TTL丢失(11):到达指定地址但TTL次数耗尽;
5. 校验和错误(12):发送的报文中经过计算的校验和总和与报文的校验和字段中的值不同;
6. 端口不可达(13):指定端口不可达;
7. 网络不可达(14):指定网络不可达。
ICMP代码(Code)是根据ICMP的报文类型而定,它们实际上是报文类型的分类,已补充说明报文类型的更多信息。
最重要的是,ICMP在有线网络中可以实现两个主机之间的信息传递,比如用户按照一定的网络协议发出某条控制请求或报文时,两台主机之间采用ICMP协议将该信息发送给对方,就能够根据报文的类型和内容以及附带的参数信息来处理这类网络请求,从而使网络运行良好。