架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 11|回复: 0

[故障诊断] 网络 ICMP(互联网控制消息协议)简单介绍

[复制链接]
发表于 昨天 14:44 | 显示全部楼层 |阅读模式
互联网控制消息协议ICMP(Internet Control Message Protocol)(因特网控制报文协议)是一个差错报告机制,是TCP/IP协议簇中的一个重要子协议,通常被IP层或更高层协议(TCP或UDP)使用,属于网络层协议,主要用于在IP主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。

为什么需要 ICMP?

在数据传输的过程中,IP提供尽力而为的服务,指为了把数据包发送到目的地址尽最大努力。它并不对目的主机是否收到数据包进行验证,无法进行流量控制和差错控制。因此在数据包传输过程中,产生各种错误在所难免。为了更有效地转发IP数据包和提高数据包交付成功的机会,ICMP应运而生。使用ICMP,当网络中数据包传输出现问题时,主机或设备就会向上层协议报告差错情况和提供有关异常情况的报告,使得上层协议能够通过自己的差错控制程序来判断通信是否正确,以进行流量控制和差错控制,从而保证服务质量。

ICMP 的应用场景是什么?

错误报告

ICMP 错误消息报告网络错误,例如目的地不可达、超时或分段问题。这些消息对于具有无连接通信模型的用户数据报协议 (UDP) 尤其重要。

UDP 不提供可靠、有序的数据包传输。发送 UDP 数据包时,数据包可能会丢失,也可能在传送时出现校验和错误等故障。如果发生这种情况,接收方会将 ICMP 错误报告消息发回给发送方,以通知该问题。

诊断

您可以使用 ICMP 进行网络诊断。它最常用于 ping 和 traceroute 命令。

ping 命令通过向目标设备发送 ICMP 回显请求数据包来测试网络设备的可访问性。如果设备可以访问,则会返回 ICMP 回显回复。它可以可靠地检查网络延迟并确保设备可用。

traceroute 命令跟踪数据包从源到目的地所采用的路径。为此,该命令将回显请求和回显回复消息发送到预定目的地。

回显请求包含一个生存时间 (TTL) 值,数据包每通过一个路由器,该值就会减 1。当数据包到达 TTL 为零的路由器时,路由器会向源端发送一条 ICMP 消息。

该消息包含有关数据包所采用路由的信息。Traceroute 会显示数据包的确切路径,可以为您提供网络性能详情。

网络安全

您可以使用 ICMP 检测未经授权的网络流量,并仅允许通过网络传输合法流量。防火墙使用 ICMP 来允许或阻止某些类型的流量。网络管理员还使用 ICMP 监控工具来跟踪网络设备的状态和连接,并检测未知设备。

您还可以使用它来发现可能表明未经授权活动的异常流量模式。

ICMP 协议报文格式

ICMP报文格式如图所示,每一个ICMP消息都将包含引发这条ICMP消息的数据包的完全IP包头,ICMP报文则作为IP数据包的数据部分封装在IP数据包内部。ICMP包头中包含的三个固定字段就是源端设备确定发生错误的类型的主要依据。

Type字段表示ICMP消息的类型;
Code字段表示ICMP消息类型细分的子类型;
Checksum字段表示ICMP报文的校验和。

不同的Type和Code值表示不同的ICMP报文类型,对应了数据包处理过程中可能出现的不同错误情况,不同类型的ICMP报文又分为差错报文和查询报文两种,如ICMP报文分类表所示。

QQ截图20260302144158.jpg

ICMP报文分类

Type
Code
描述
查询/差错
0-Echo响应
0
Echo响应报文
查询
3-目的不可达
0
目标网络不可达报文
差错
1
目标主机不可达报文
差错
2
目标协议不可达报文
差错
3
目标端口不可达报文
差错
4
要求分段并设置DF flag标志报文
差错
5
源路由失败报文
差错
6
未知的目标网络报文
差错
7
未知的目标主机报文
差错
8
源主机隔离报文
差错
9
禁止访问的网络报文
差错
10
禁止访问的主机报文
差错
11
对特定的TOS网络不可达报文
差错
12
对特定的TOS主机不可达报文
差错
13
由于过滤 网络流量被禁止报文
差错
14
主机越权报文
差错
15
优先权终止生效报文
差错
5-重定向
0
重定向网络报文
差错
1
重定向主机报文
差错
2
基于TOS的网络重定向报文
差错
3
基于TOS的主机重定向报文
差错
8-Echo请求
0
Echo请求报文
查询
9-路由器通告
0
路由通告报文
查询
10-路由器请求
0
路由器的发现/选择/请求报文
查询
11-ICMP超时
0
TTL超时报文
差错
1
分片重组超时报文
差错
12-参数问题
0
IP报首部参数错误报文
差错
1
丢失必要选项报文
差错
2
不支持的长度报文
差错
13-时间戳请求
0
时间戳请求报文
查询
14-时间戳应答
0
时间戳应答报文
查询
15-信息请求
0
信息请求报文
查询
16-信息应答
0
信息应答报文
查询

ICMP 与 TCP 的区别

TCP 是一种面向连接的协议,用于进行可靠的、经过错误检查的数据传输。它通常用于网页浏览、电子邮件、远程登录和文件传输应用程序。TCP 需要握手,即在发送方和接收方之间建立信任和身份验证的一系列消息。TCP 可保证消息送达。

相比之下,互联网控制消息协议 (ICMP) 是一种无连接协议。它不保证消息送达。由于 ICMP 仅用于错误报告,因此 ICMP 消息也比 TCP 数据包小。

ICMP 和 TCP 结合使用,以确定 TCP 传输失败的原因。




上一篇:UNIX Domain Socket(UDS) over TCP 通信
下一篇:.NET/C# 基于 PostMessage 广播发送消息
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-3-3 00:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表