什么是 ICMP ?ping 和 ICMP 之间有啥关系?
你好,这里是网络技术联盟站。
今天应粉丝要求约稿讲一下 ICMP,说起 ICMP,咋一看,很熟悉,但是仔细想想又讲不出来啥,所以这就是本文的目的。
让我们直接开始吧!
什么是 ICMP?
英文全称:
Internet Control Message Protocol
中文名称:互联网控制报文协议
工作在 OSI 模型的网络层和 TCP/IP 模型的 Internet 层
ICMP 消息不直接传递到数据链路层
在 RFC 792 中定义
ICMP 通常不被网络上的用户应用程序直接使用,并且与 TCP 和 UDP 的工作方式完全不同。
简而言之,ICMP 的主要用途是发送 Echo ICMP 请求消息的 Ping 或 Trace 工具,以计算和确定网络上的计算机是否可用、数据包往返这台计算机所需的时间以及它们经过的计算机数量。
ICMP 历史
ICMP 属于 TCP/IP 协议栈,互联网的先驱之一 Jon Postel 撰写了 ICMP 的原始概念,1981 年 4 月,在 RFC 777 中,编写了第一个标准,RFC 792 也是由 Postel 编写并于 1981 年 9 月由 Internet Engineering Community 发布的。
ICMP 的结构
类型 Type:ICMP 中的每条消息都包含唯一的类型并放置在此字段中,其中一个常见的字段称为 echo request,类型为 8,此字段为 8 位,因此共有 256 种消息类型。
代码 Code:ICMP 为每种类型的消息提供了带有 Code 字段的附加信息,代码字段为 8 位,有 256 个可能的值。
校验和 Checksum:该字段为 16 位,计算方式与 IPv4 类似,用于为整个 ICMP 消息提供消息的错误检测。
ICMP 的功能
ICMP 主要设计用于在将发送设备连接到接收设备的路径中工作的设备,在路径中间工作的最常见设备是路由器,ICMP 不限于路由器,网络中的任何设备都可以使用 ICMP 并向另一台设备发送消息,ICMP 为所有控制和信息消息提供单一机制。
ICMP 的主要功能如下。
当源发送的 IP 数据包无法传递时,允许路由器通知源。
允许源发现到目标设备的所有可用路径。
允许源检查目标设备是否在线和启动。
允许管理员测试连接和调试与连接相关的问题。
ICMP 消息
ICMP 主要有以下消息:
Echo Request / Echo Reply
中文名称:回声请求/回声回复
Echo Reply:ICMP Type 0
Echo Request:ICMP Type 8
回声消息可用于确定网络上的设备是否正在工作。
本地计算机向目标计算机发送 ICMP Echo Request 消息,接收计算机使用 Echo Replymessage 进行响应。
Destination Unreachable
中文名称:目的地不可达
ICMP Type 3
表示无法到达目标网络、主机或端口
Redirect
中文名称:重定向
ICMP Type 5
用于将主机重定向到不同的网络路径。
Source Quench
中文名称:源抑制
ICMP type 4
用于实现一个基本的流量控制机制,并通知源端停止发送数据包一段时间。
此消息通知数据报包在网络上快速传输,如果资源繁忙,则减慢到源设备的数据包传输速度。
Time Exceeded
中文名称:超市
ICMP Type 11
表示由于跳数过多,已超过生存时间 ( TTL )。
消息类型汇总:
总结
Internet 控制消息协议 (ICMP) 是 TCP/IP 的实用协议,负责提供有关 TCP/IP 网络上的设备、服务或路由的可用性的信息,大多数网络故障排除技术和工具都以常见的 ICMP 消息类型为中心,最著名的就是 ping,主要用于测试设备之间的通信。
版权声明: 本文为 InfoQ 作者【wljslmz】的原创文章。
原文链接:【http://xie.infoq.cn/article/c925f594802dee2c0c5ad7cc0】。未经作者许可,禁止转载。
评论