ICMP 协议

ICMP 协议 ICMP 全称是 Internet Control Message Protocol互联网控制报文协议。它是计算机网络中非常基础且重要的一个网络层协议主要与 IP互联网协议配合使用。如果把 IP 协议比作负责运送包裹的“快递员”那么 ICMP 就是一套异常报告与诊断系统。当快递数据包在运输过程中遇到问题比如地址不存在、道路堵塞等时系统就会通过 ICMP 给你发送一条反馈信息。ICMP 主要负责在网络设备如路由器、主机之间传递控制信息和错误报告。它本身不用于传输用户的应用数据而是为了保证网络顺畅运行而存在的幕后功臣。主要有两个核心功能错误报告当网络设备在处理数据包时遇到问题它会向发送方返回一个 ICMP 错误消息。例如如果路由器找不到目的主机的路径它会返回一个“目标不可达Destination Unreachable”的消息。网络诊断与查询允许主机或网络管理员主动查询网络状态测试网络连通性。日常生活中的 ICMP 应用即使你没有听过 ICMP你也极有可能在日常生活中使用过基于它开发的工具Ping 命令 这是 ICMP 最著名的应用。当你在命令行输入ping www.google.com时你的电脑实际上是在发送一个 ICMP Echo Request回显请求 报文。如果目标服务器在线且网络通畅它会返回一个 ICMP Echo Reply回显应答 报文。这就好比你在山谷里喊了一声请求然后听到了回音应答以此来判断网络是否连通以及延迟有多高。Traceroute / Tracert 命令 用于追踪数据包从你的电脑到目标服务器所经过的路径经过了哪些路由器。它巧妙地利用了 ICMP 的 Time Exceeded超时 报文来记录沿途的每一个节点。常见的 ICMP 报文类型ICMP 报文通过“类型码Type”和“代码Code”来区分不同的情况。常见的有Type 0 / Type 8 Echo Reply回显应答和 Echo Request回显请求。用于 Ping 测试。Type 3 Destination Unreachable目标不可达。细分代码还会告诉你具体是网络不可达、主机不可达还是端口不可达。Type 11 Time Exceeded超时。通常是因为数据包在网络中迷路了经过的路由器数量TTL耗尽而被丢弃时发送。