计算机网络:ICMP协议(Internet控制消息协议)

网络 网络管理
ICMP(Internet Control Message Protocol,互联网控制消息协议)是TCP/IP协议族中的一个重要子协议,该协议位于网络层。

今天和大家聊聊ICMP协议相关的知识,感兴趣的可以一起了解一下!

一、简介

图片图片

ICMP(Internet Control Message Protocol,互联网控制消息协议)是TCP/IP协议族中的一个重要子协议,该协议位于网络层。主要用于在IP主机和路由器之间传递控制消息,报告网络通信中的各种问题。虽然这些控制消息虽然不传输实际的用户数据,但对于数据的准确、可靠传递起着重要作用。ICMP协议的主要目的是提高IP数据报的成功传输率,确保数据通信的稳定性和可靠性。

二、为什么要有ICMP协议?

因为IP协议本身并不提供可靠的传输机制,也不具备差错报告和控制功能。所以当数据包在网络传输过程中出现问题时,IP协议无法及时通知发送方。为了解决这个问题,ICMP协议应运而生。ICMP协议的主要作用包括:

图片图片

差错报告:当数据包在网络传输过程中遇到问题时,ICMP协议可以向发送方报告错误信息,帮助发送方采取相应的措施。

网络诊断:提供了多种查询报文,用于诊断网络连接和路径信息,最常用的工具有ping和traceroute。

流量控制:可以通过源抑制报文通知发送方降低数据发送速率,以缓解网络拥塞。

路由重定向:可以通知主机或路由器更优的路由路径,提高网络传输效率。

三、ICMP协议报文格式

ICMP报文封装在IP数据报中,IP报头在ICMP报文的最前面。ICMP报文的基本格式如下:

图片图片

●  Type:1字节,表示ICMP报文的类型。

●  Code:1字节,表示ICMP报文的代码,对类型进行进一步说明。

●  Checksum:2字节,用于校验整个ICMP报文的完整性。

●  Data:可变长度,包含具体的控制信息或数据。

四、ICMP报文的类型

ICMP报文主要分为两大类:差错报文和查询报文。

图片图片

4.1 差错报文

差错报文用于报告网络通信中的错误情况,常见的差错报文类型包括:

●  目的地不可达(Type 3):当数据包无法到达目标设备时,发送端会收到目的地不可达报文。具体代码如下:

●  0:网络不可达

●  1:主机不可达

●  2:协议不可达

●  3:端口不可达

●  4:需要分片但设置了不分片标志

●  5:源路由失败

●  6:目的网络未知

●  7:目的主机未知

●  9:目的网络被禁止

●  10:目的主机被禁止

●  11:由于TOS网络不可达

●  12:由于TOS主机不可达

●  13:由于过滤通信被禁止

●  14:主机越权

●  15:优先级截止生效

●  超时(Type 11):当数据包的TTL值为0时,路由器会丢弃该数据包并发送超时报文。具体代码如下:

●  0:生存时间超时

●  1:数据报重组超时

●  参数问题(Type 12):当数据包的IP头字段值不正确时,接收方会发送参数问题报文。具体代码如下:

●  0:IP头字段值错误

●  1:必需的选项缺失

●  2:不支持的长度

●  源抑制(Type 4):当路由器或主机因网络拥塞而丢弃数据包时,会发送源抑制报文,请求发送方降低发送速率。

●  重定向(Type 5):当路由器发现更优的路由路径时,会发送重定向报文,通知发送方使用新的路由。具体代码如下:

●  0:网络重定向

●  1:主机重定向

●  2:TOS和网络重定向

●  3:TOS和主机重定向

4.2 查询报文

查询报文用于在不同网络设备之间传递控制信息,常用的查询报文类型包括:

●  回显请求和应答(Type 8和Type 0):用于测试网络连通性,常见的工具是ping。发送方发送回显请求报文(Type 8),接收方收到后回复回显应答报文(Type 0)。

●  时间戳请求和应答(Type 13和Type 14):用于测量网络延迟,发送方发送时间戳请求报文(Type 13),接收方收到后回复时间戳应答报文(Type 14)。

●  地址掩码请求和应答(Type 17和Type 18):用于获取子网掩码信息,主机启动时可以使用这些报文来确定自身的子网掩码。

●  路由器请求和通告(Type 9和Type 10):用于发现和选择路由器,主机可以发送路由器请求报文(Type 9),路由器收到后回复路由器通告报文(Type 10)。

五、ICMP报文的实际案例

5.1 Ping命令

Ping命令是基于ICMP协议的常用网络诊断工具,用于测试网络连通性。以下是Ping命令的工作流程:

1. 发送回显请求报文:发送方主机构造一个ICMP回显请求报文(Type 8),并将其封装在IP数据报中发送给目标主机。

2. 接收回显应答报文:目标主机收到回显请求报文后,构造一个ICMP回显应答报文(Type 0),并将其封装在IP数据报中发送回发送方主机。

3. 显示结果:发送方主机收到回显应答报文后,显示目标主机的IP地址、数据大小和往返时间。

示例:

ping 192.168.2.17

输出:

图片图片

5.2 Traceroute命令

Traceroute命令用于显示数据包从源主机到目标主机的路径信息,常用于诊断网络连接问题。以下是Traceroute命令的工作流程:

1. 发送ICMP报文:发送方主机发送一个带有TTL值为1的ICMP报文(通常是回显请求报文),当该报文到达第一个路由器时,TTL值减为0,路由器丢弃该报文并发送一个超时报文(Type 11)回给发送方。

2. 记录路径信息:发送方记录第一个路由器的IP地址,然后发送一个带有TTL值为2的ICMP报文,重复上述过程,直到数据包到达目标主机或达到最大TTL值。

3. 显示结果:发送方主机显示从源主机到目标主机的每一步路径信息,包括每个路由器的IP地址和响应时间。

示例:

traceroute 8.8.8.8

输出:

图片图片

总结

以上内容就是Internet控制消息协议相关的知识介绍,希望对大家理解ICMP协议提供一些帮助!

责任编辑:武晓燕 来源: 小明互联网技术分享社区
相关推荐

2010-09-08 20:45:31

计算机网络协议

2010-09-08 20:42:09

计算机网络协议

2010-06-12 16:56:37

2013-05-14 13:02:17

计算机网络基础协议

2010-09-02 16:02:45

计算机网络协议

2013-03-08 12:51:03

计算机网络基础协议DHCP

2010-09-08 21:01:44

计算机网络协议

2010-06-14 18:54:57

计算机网络协议

2010-09-08 20:53:14

WinPCap计算机网络协议

2010-06-14 18:58:52

VoIP计算机网络协议

2010-06-13 15:08:07

计算机网络协议

2010-09-02 16:56:10

计算机网络协议

2010-06-14 18:51:05

计算机网络协议

2010-06-12 16:51:54

计算机网络通信协议

2013-10-28 10:06:26

HTTP协议网络协议

2010-06-13 13:35:54

计算机网络协议

2010-06-09 11:00:56

2010-06-29 10:29:19

计算机网络协议

2020-04-15 08:00:00

计算机网络通信设备通信协议

2021-09-03 08:48:22

路由协议计算机通信
点赞
收藏

51CTO技术栈公众号