Appearance
ICMP 协议
1. ICMP 类型(Type)与代码(Code)
在 ICMP(Internet Control Message Protocol,互联网控制消息协议)中,每个 ICMP 报文都包含两个重要字段:类型(Type) 和 代码(Code)。它们用于区分不同的 ICMP 消息类型,并进一步提供更详细的错误或状态信息。
1.1 Type(类型)
Type
字段表示 ICMP 消息的主要类别,用于指明该消息的用途。例如:Type 0
:表示 Echo Reply(回显应答,Ping 应答)。Type 3
:表示 Destination Unreachable(目标不可达),用于通知数据包无法到达目的地。Type 8
:表示 Echo Request(回显请求,Ping 请求),通常用于ping
命令。Type 11
:表示 Time Exceeded(超时),用于指示数据包在传输过程中 TTL(生存时间)归零。
1.2 Code(代码)
Code
字段是Type
字段的细化扩展,它提供了更具体的错误或控制信息。例如:- 当
Type = 3
(Destination Unreachable,目标不可达)时:Code 0
:Network Unreachable(网络不可达)Code 1
:Host Unreachable(主机不可达)Code 3
:Port Unreachable(端口不可达)
- 当
Type = 11
(Time Exceeded,超时)时:Code 0
:TTL equals 0 during transit(传输过程中 TTL 归零)Code 1
:TTL equals 0 during reassembly(数据报组装过程中 TTL 归零)
- 当
1.3 Type 与 Code 结合示例
ICMP 消息的 Type
和 Code
结合使用,以明确指示网络状态。例如:
- Ping(ICMP Echo Request & Reply)
Type 8, Code 0
:发送 Ping 请求Type 0, Code 0
:Ping 响应
- 目标不可达(Destination Unreachable)
Type 3, Code 1
:主机不可达Type 3, Code 3
:端口不可达
- TTL 超时(Time Exceeded)
Type 11, Code 0
:数据包在传输过程中 TTL 归零(用于traceroute
)
通过 Type
和 Code
,ICMP 能够精确传递网络状态和故障信息,帮助诊断和优化网络连接。
2. 说明与补充
2.1 Ping(ICMP Echo Request & Reply)
Type 8, Code 0
:表示 ICMP 回显请求(Echo Request),即ping
命令的请求数据包。Type 0, Code 0
:表示 ICMP 回显应答(Echo Reply),即ping
的响应数据包。
2.2 目标不可达(Destination Unreachable)
Type 3
代码中,Code 0
-Code 15
涵盖了各种不可达情况,如主机、网络、协议、端口等。
2.3 TTL 超时(Time Exceeded)
Type 11, Code 0
:数据包在传输过程中 TTL 归零,通常用于traceroute
路由追踪工具。Type 11, Code 1
:数据报在重组过程中 TTL 归零。
2.4 重定向(Redirect)
Type 5
相关代码用于指示主机或网络的 IP 路由需要更改。
2.5 源端被关闭(Source Quench)
Type 4
旨在减少数据包发送速率,避免网络拥塞,但现代 IP 实现通常不会使用该机制。
2.6 作废的类型(Obsolete Types)
Type 8
以上部分类型已被废弃,例如Timestamp request/reply
和Information request/reply
。
这样整理后,表格更整齐,结构更清晰,并补充了一些关键信息。