尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ping 一下,为什么就能知道“通不通“?——ICMP 这个藏在水面下的“网络修理工“
ping 一下为什么就能知道通不通——ICMP 这个藏在水面下的网络修理工你肯定敲过ping。网络连不上第一反应就是ping 一下。这个命令几乎成了网络好不好的代名词。可你有没有想过一件事——ping敲下去屏幕上蹦出来的那几行Reply from … timexx ms TTLxx背后到底是谁在干活不是 TCP不是 UDP而是一个你可能从没注意过、却天天在用的协议ICMP。一、IP 协议有个锅自己背不动先回到网络层。IP 协议负责把数据包从源地址送到目的地址但它是个尽力而为的协议——只负责送不负责送到。包丢了、路走不通了、TTL 耗尽了IP 自己一声不吭。可网络总得有个报信的吧不能包丢了就石沉大海得告诉发送方包没送成原因是啥。这个报信的就是 ICMP——Internet Control Message Protocol互联网控制报文协议。注意它的定位很多人容易搞混ICMP 是网络层的协议但它的报文要封装在 IP 数据报里传输。也就是说ICMP 是寄居在 IP 头上的一层它本身就是 IP 的一个负载。┌─────────────────────────┐ │ IP 头部 │ 协议字段 1表示里面装的是 ICMP ├─────────────────────────┤ │ ICMP 报文 │ 类型 代码 校验和 数据 └─────────────────────────┘一句话概括 ICMP 的职责报告差错 提供查询。它不是为了传业务数据而是为了诊断和控制网络本身。二、看透 ICMP 报文的身份证类型 代码ICMP 报文的核心是两个字段类型Type和代码Code。类型说明这是哪一类事代码进一步说明这一类里的哪一种情况。打个比方类型是派出所代码是具体警情。同样是目的不可达Type 3代码能细分出一大堆网络不可达Code 0、主机不可达Code 1、协议不可达Code 2、端口不可达Code 3……下面这张表把最常用的几种列出来类型代码含义谁在用00回显应答Echo Replyping 的回信30~15目的不可达报告路走不通50~3重定向告诉主机有更优的路由80回显请求Echo Requestping 的去信110/1超时TTL 耗尽 / 分片重组超时traceroute 的探针看到 Type 8 和 Type 0 了吗这就是ping的全部秘密。三、ping 到底在做什么一问一答ping的本质就是发一个ICMP 回显请求Type 8然后等对方回一个ICMP 回显应答Type 0。一台机器收到 Type 8 的报文它的网络协议栈会自动完全不需要用户程序参与回一个 Type 0。所以哪怕对方没有跑任何服务、没有开任何端口只要它的网络是通的、IP 层是活的它就会回你。这解释了为什么ping能测网络连通性而不是某个服务是否启动——它测的是网络层到网络层之间那根线通不通跟应用层的端口、服务一点关系都没有。主机A 主机B │ Type 8 Echo Request │ │────────────────────────────▶│ │ │ │ Type 0 Echo Reply │ │◀────────────────────────────│ │ │ time (收到应答时刻 - 发出请求时刻) TTL 应答包里剩下的生存时间那timexx ms和TTLxx又是怎么来的time就是这一来一回的往返时延RTT。TTL这个有意思。TTLTime To Live生存时间是 IP 头里的一个字段包每经过一个路由器就减 1减到 0 路由器就把包丢掉并回一个 ICMP 超时报文。ping显示的那个 TTL是应答包到达你这里时剩下的值。所以你可以反推它初始值——常见系统初始值Linux 是 64Windows 是 128。你看到 TTL6x对方八成是台 Linux看到 12x大概率是 Windows。四、traceroute靠 TTL逐站敲门ping只能告诉你能不能到但网络走不通时你更想知道具体卡在哪一跳。这时候tracerouteWindows 上是tracert登场了。它的原理巧就巧在利用了 TTL 这个字段——故意让包死在半路上逼每个路由器报出自己的身份。做法是这样先把 TTL 设为 1发一个探测包。第 1 个路由器收到后TTL 减 1 变成 0它就把包丢了同时回一个ICMP 超时报文Type 11。这个超时报文的来源 IP就是第 1 个路由器的地址。再把 TTL 设为 2。包经过第 2 个路由器时 TTL 耗尽第 2 个路由器回超时报文。于是你知道了第 2 跳的地址。如此递增直到包终于抵达目的地。目的地收到后回的不是超时而是端口不可达Type 3 Code 3——因为 traceroute 故意用一个目标机器上没人监听的端口。你看到端口不可达就知道到终点啦。TTL1 ──▶ R1 返回超时 第1跳 TTL2 ──▶ R2 返回超时 第2跳 TTL3 ──▶ R3 返回超时 第3跳 ... TTLn ──▶ 目的主机 返回端口不可达到终点了每一跳都让它报一次家门整条路径就串出来了。这就是traceroute背后的全部智慧——用故意找死的方式去照亮平时看不见的中间路径。五、ICMP 的两副面孔好东西也能被用来干坏事ICMP 设计之初是为了报好消息和修网络但它开放、无认证的特性也让它成了攻击者眼里的工具。最典型的就是ICMP 洪泛攻击Ping Flood攻击者向目标疯狂发送海量的回显请求目标机器疲于回应答CPU 和带宽被耗尽正常服务就瘫了。历史上还有过Ping of Death——利用老的协议栈处理超大分片时的漏洞一个构造过的 ping 就能让系统崩溃。这也是为什么很多公网服务器会干脆禁掉 ICMP图省事一刀切。结果就是你 ping 它没反应并不代表它真的挂了只是它不搭理你而已。所以记住一个常识ping 不通 ≠ 对方不在线也可能是对方防火墙把 ICMP 挡了。别一 ping 不通就断定是网络断了。六、408 里 ICMP 怎么考ICMP 在 408 网络科目里属于网络层这一章分值不高但选择题高频。常考的姿势有这几种ICMP 工作在哪一层、封装在哪个协议里送分题但每年都有人答成传输层。ping 用的是哪两个报文类型Echo Request / Reply。traceroute 靠什么字段逐跳探测TTL。ICMP 差错报告报文里会带上原始 IP 头 前 8 字节数据——这个细节偶尔会考因为这 8 字节正好能装下 UDP 头或 TCP 的源/目的端口方便报错报对人。这几个点都要搞明白为什么而不是死背。比如为什么差错报文要塞回原始头——因为只有带上原始头接收方才知道我发出去的哪个包出事了ICMP 自己并不包含足够的信息去定位。计算机网络这门课知识点零碎、爱考协议背后的设计动机。这类容易混、容易忘的点建议用 CoLearnyantucs.com的 AI 错题集把每次做错的协议题收进去考前集中回炉卡壳了就丢给 AI 答疑问traceroute 为什么 TTL 逐跳加 1 就能探出路径它会顺着报文流给你讲透。写在最后ICMP 这种协议平时你感觉不到它的存在只有在网络出问题的那一刻它才从幕后走到台前——ping和traceroute这两个最朴素的排障命令全靠它在底下撑着。这让我想起一个挺朴素的道理一个系统要能长期运转光有干正事的通道是不够的还得有一条报故障的通道。文件传输是正事ICMP 就是那条默默报信的维修热线。没有它你连网络死在哪一跳都不知道。下次再敲ping你看到的就不再是几行冷冰冰的回显而是一个巧妙的一问一答协议在千里之外替你把网络这根线从头探到尾。想把这门课的路由、ICMP、ARP、TCP 这些协议串成一张完整的图推荐 B站【408实验室】的《数据结构》课程跟着把网络层到传输层的原理一次捋清比零散地背协议名靠谱得多。
RELATED

相关推荐

Java跨平台原理与企业级开发核心知识体系全解析

Java跨平台原理与企业级开发核心知识体系全解析

1. 从一个“残缺标题”说起:为什么我决定认真聊聊Java看到“java--------------”这个标题,我第一反应是笑了。这明显是个手滑产物,可能是某个同行在搜索框里敲了“java”之后,后面跟了一串无意义的横线,也可能是某个新…

📅 2026/10/9 22:54:05
PHP社区源码高仿全开源:LAMP环境搭建与安全加固指南

PHP社区源码高仿全开源:LAMP环境搭建与安全加固指南

简介:这是一套高仿亿乐社区的PHP全开源社区系统源码,面向PHP初学者与中小型Web项目开发者,可用于快速搭建类论坛、社交社区或内容聚合平台,帮助理解MVC架构实践、前后端交互及数据库驱动型应用的完整部署流程。资源包共1619个文件…

📅 2026/10/9 22:54:05
PaaS化低代码:让低代码真正具备平台级治理能力

PaaS化低代码:让低代码真正具备平台级治理能力

1. 从“平台打架”到“能力下沉”:为什么PaaS化的低代码不是概念炒作,而是工程现实的必然选择你有没有遇到过这样的场景:某业务部门急着上线一个客户满意度回访系统,IT部门评估后说“排期三个月,要走需求评审、UI设计、…

📅 2026/10/9 22:54:05
MORE NEWS

更多资讯

📰

从Day1到Day105:面试经典150题刷题复盘与高效计划

从第1天就开始刷这套题的人很多,能坚持到“day105”的并不多。3月6号这天,我刚好卡在100天刚过的节点上,把面试经典150题的进度条拉到接近尾声。回头看这三个月零几天的过程,最大的感受不是“题变简单了”,而是“会做题…

📰

高并发电商支付中台实战:从架构拆分到稳定性治理

高并发电商场景下的支付中台,不是买一套中间件就能解决的。我做这个项目时,第一次全链路压测就给了我一个下马威:模拟流量只到目标峰值的六成,支付网关的响应时间已经飙到5秒,线程池被打满,随后连订单查询这…

📰

网络基础大汇总:从IP、子网、VLAN到DNS排障的实战主线

说到“网络基础大汇总”,总有人觉得这就是把七层模型、IP地址、路由器这些名词背一遍。但工作久了你会发现,真正值钱的不是背下协议栈,而是遇到“突然连不上”“延迟忽高忽低”“跨网段访问失败”的时候,能快速判断问题出在哪一层…

📰

uni-app x 强力工具库 unix-utils 正式发布

unix-utils 首个版本正式发布!这是一个为 uni-app x 提供便利工具的集合,以 UTS 源码随标准 uni_modules 插件分发(插件市场 npm 双轨),当前包含 toast 模块——对 uni.showToast 的全端兼容封装,覆盖 And…

📰

人脸识别项目落地实战:架构、部署、调优与避坑全解析

简介:一套面向安防、公安及智慧城市领域的人脸识别系统建设方案,完整覆盖项目概况、需求分析、建设目标、动态人像天网与静态人像天网、性能指标及建设原则等模块,层次递进,适合作为方案设计、技术选型或项目投标的参考底稿。资料…

📰

基于 Agones 的多集群游戏服务器统一分配端点(Allocation Endpoint)代理实战指南

游戏开发云原生 【免费下载链接】agones Dedicated Game Server Hosting and Scaling for Multiplayer Games on Kubernetes 项目地址: https://gitcode.com/gh_mirrors/ag/agones 点击查看 免费下载 导读:本指南以 Agones 仓库中 examples/allocation-…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬