互联网控制消息协议(ICMP)是 TCP/IP 协议套件的基本组成部分。它不用于系统间交换数据,而是用于报告错误和发送操作信息。对于任何希望learn linux网络管理的人来说,理解 ICMP 对于调试网络问题(如数据包投递失败)至关重要。
ICMP 消息结构
每条 ICMP 消息都有一个标准化的结构,包括类型(type)、代码(code)和校验和(checksum)。
- 类型 (Type):此字段指示 ICMP 消息的一般类别。例如,它指定消息是错误报告还是信息查询。
- 代码 (Code):此字段提供有关消息类型的更具体信息。例如,如果类型是“目标不可达”,代码将指明不可达的具体原因。
- 校验和 (Checksum):用于验证消息的完整性,确保其在传输过程中没有损坏。
这种结构使 ICMP 成为一个强大的诊断工具,本linux tutorial将帮助您了解其实际应用。
常见 ICMP 类型
虽然 ICMP 类型很多,但有几种在日常网络故障排除中特别常见。
- 类型 8 - 回显请求 (Echo Request):
ping命令向目标主机发送此消息以检查连通性。 - 类型 0 - 回显应答 (Echo Reply):如果目标主机可达,它会以回显应答响应回显请求,确认可以建立连接。
- 类型 3 - 目标不可达 (Destination Unreachable):当数据包无法投递到最终目的地时,路由器或主机发送此消息。有 16 个不同的代码值提供具体原因,例如:
- 代码 0:网络不可达
- 代码 1:主机不可达
- 类型 11 - 超时 (Time Exceeded):当数据包的生存时间(TTL)值在到达目的地之前变为零时,会生成此消息。这通常发生在路由环路中,并且
traceroute命令使用它来映射网络路径。
当我们探索labex linux terminal中可用的常见网络故障排除工具时,您将更熟悉这些消息。