大家好,我是圈圈,一个喜欢结交朋友的老网工!
每天一个网络知识,今天我们要聊聊:什么是ICMP协议?
IP协议是无连接的“邮递员”,只管转发,不关心丢包或路径问题。数据包丢了?IP不会告诉你原因。ARP解决本地寻址,但跨网诊断呢?这就需要ICMP:RFC 792(1981年)定义的辅助协议,工作在网络层(OSI第3层),封装在IP包中(协议号1)。它不传输用户数据,而是控制消息:错误报告(如“目的地不可达”)和查询(如“回声请求”)。
想象ICMP如“快递反馈”:包裹丢了,系统发短信“地址错误”;你测试路径,它报告“中转站1正常,2拥塞”。ICMP是IP的“后勤保障”,支持工具如ping(连通测试)和traceroute(路径追踪)。根据IETF数据,ICMP消息占网络流量的<1%,但诊断价值巨大。在现代网络中,它还用于PMTUD(路径MTU发现),避免碎片化。
ICMP不路由,只报告;它无状态,简单可靠。但安全问题突出:可被滥用攻击。
ICMP的核心是“消息”:每个消息有类型(Type,8位)和码(Code,8位),细分功能。常见类型:
- 类型0/8:Echo Reply/Request
:ping的核心,回声应答/请求。码0,无细分。 - 类型3:Destination Unreachable
:目的地不可达。码0=网不可达,1=主机不可达,3=端口不可达(UDP/TCP),4=碎片需但DF位设(勿分片)。 - 类型5:Redirect
:重定向,路由器告诉主机“用更好路径”。 - 类型11:Time Exceeded
:超时。码0=TTL超(traceroute用),1=碎片重组超时。 - 类型12:Parameter Problem
:参数错误,如IP头无效。
消息结构(IP包负载):
- 类型+码
:2字节,标识功能。 - 校验和
:2字节,防篡改。 - 标识+序列号
:4字节,匹配请求/应答(ping用)。 - 数据
:可变,如Echo带原始数据,回显测试完整性。
在IPv6中,ICMPv6扩展更多功能,包括邻居发现(取代ARP)。Windows/Linux用ping -t连续测试;Cisco用ping 8.8.8.8验证。
ICMP工作如“警报系统”:
- 错误报告
:路由器/主机检测问题时生成ICMP。例:路由器收TTL=1包,减至0,丢包并发类型11(超时),源IP=原目的,目的IP=原源。 - 查询机制
:主机主动发请求,期待应答。例:ping发类型8,目标回类型0,携带相同数据。 - 封装与转发
:ICMP消息作为IP负载,源/目的IP互换(错误时)。不触发循环:无TTL,但路由器限速防洪泛。 - 速率限制
:现代系统(如Linux icmp_ratelimit)防滥用。
在路径MTU:主机发大包设DF位,若中途碎片禁,路由器回类型3码4,报告最小MTU,发送方调整。
协议交互:TCP/UDP上层依赖ICMP反馈端口不可达;IP用它报告路由问题。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...