路由交换01-----ICMP协议
路由交换协议------ICMP
ICMP协议
ICMP (InternetControl Message Protocol)协议是TCP/IP
协议簇的核心协议之一,用来在网络设备之间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
IP数据包格式是这样的:
其中ICMP
数据包的部分是这样的:
(1)类型:用一个8位类型字段表示ICMP
数据包的类型。
- 类型
3
终点不可达 - 类型
5
改变路由 - 类型
0
或8
回显请求或应答 - 类型
11
超时 - 类型
12
参数有问题 - 类型
13
或14
时间戳请求或回答
(2)代码:用来表示指定类型中的一个功能,如果一个类型只有一种功能,那么这个部分是0。
- 根据类型部分结合代码部分具体区分类型中的不同情况
比如类型为3
,代码部分为0
是指网络不可达,为1
是指主机不可达,为3
是指端口不可达。
(3)校验和:数据包中ICMP上的一个16位校验和。
ICMP
报文的前四个字节都是一样的。
- 用于检验
ICMP
报文
ICMP
报文的种类有两种:1.差错报文 2.询问报文。
1.差错报文
ICMP
差错报文共有5种。
- 终点不可达
- 路由重定向
- 超时
- 参数出错
- 源点抑制
2.询问报文
ICMP
询问报文共有2种。
- 回显请求或应答
- 时间戳请求或应答
ICMP
最常见的应用就是ping
。
ping
一个地址就是发送一个回显的请求。
ping
命令还可以铜价添加-s
选项来显示时间戳。
除了ping
之外的典型应用是Tracert
。
Tracert
基于报文中的TTL值(生存时间)来逐跳跟踪报文的转发路径,TTL
还可以用来防止环路。
有这样一个拓扑图:
现在我在路由器R2
上ping
路由器R1
并在R2
的Eth0/0/0
上开始抓包。
在抓包的内容中可以看到ICMP
中的类型、代码和校验和。
各位大佬不介意的话我只想要一点流量。个人博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App