最新资讯

  • 网络网络层之(6)ICMPv4协议

网络网络层之(6)ICMPv4协议

2025-05-06 06:00:52 0 阅读

网络网络层之(6)ICMPv4协议


Author: Once Day Date: 2024年6月2日

一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…

漫漫长路,有人对你微笑过嘛…

全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CSDN博客。

参考文章:

  • 《TCP/IP详解卷一》
  • RFC 792 - Internet Control Message Protocol (ietf.org)
  • RFC 4884 - Extended ICMP to Support Multi-Part Messages (ietf.org)
  • TCP/IP 笔记 - ICMPv4和ICMPv6 : Internet控制报文协议 - 野兽’ - 博客园 (cnblogs.com)
  • 5.ICMPv4协议分析与实践_icmp v4-CSDN博客
  • ICMP Echo Request/Reply消息格式 - IP报文格式大全(html) - 华为 (huawei.com)
  • TCP/IP卷一:44—ICMP之(ICMP(控制报文协议)简介、ICMPv4、ICMPv6报文格式/报文处理)_大量的icmpv6报文-CSDN博客

文章目录

  • 网络网络层之(6)ICMPv4协议
        • 1. 概述
          • 1.1 ICMPv4介绍
          • 1.2 相关RFC文档
        • 2. 报文格式
          • 2.1 ICMPv4首部
          • 2.2 ICMPv4报文类型
          • 2.3 ICMPv4常见代码
          • 2.4 ICMPv4差错报文限制
          • 2.5 ICMPv4目的不可达(类型3)
          • 2.6 ICMPv4重定向(类型5)
          • 2.7 ICMPv4超时(类型11)
          • 2.8 ICMPv4参数问题(类型12)
          • 2.9 ICMPv4回显请求/应答(类型0/8)
          • 2.10 ICMPv4路由器请求和通告(类型9/10)
        • 3. ICMP攻击
          • 3.1 洪泛攻击

1. 概述
1.1 ICMPv4介绍

ICMPv4是IPv4协议族中的一个重要协议,它主要用于传递网络层的控制和错误信息。与IP数据报不同,ICMPv4报文并不直接用于传输用户数据,而是辅助IP协议更好地完成数据传输任务

ICMPv4报文封装在IP数据报中进行传输。报文主要由两部分组成:报头和数据部分。报头包含了类型、代码和校验和等重要信息,用于识别报文的类型和检测传输错误,数据部分携带了与具体报文类型相关的信息。

根据功能,ICMPv4报文可以分为两大类:差错报告报文和查询报文。

(1) 差错报告报文用于告知源主机在数据传输过程中遇到的各种错误情况:

  • 目标不可达,数据包无法送达目标地址。
  • 超时,数据包在网络中存在的时间超过限制。
  • 重定向,通知源主机有更优的路由路径。

(2) 查询报文则用于网络探测和管理:

  • 回显请求和应答,对应ping工具,用于连通性测试。
  • 时间戳请求和应答,用于进行时间同步。

常用的网络诊断工具如ping、traceroute都是基于ICMPv4实现的,可以利用它们快速判断网络状态,定位故障点。

1.2 相关RFC文档

以下是与ICMPv4相关的主要RFC文档列表:

  • RFC 792 - Internet Control Message Protocol (1981),定义了ICMPv4协议的基本规范,包括报文格式、类型和代码等。
  • RFC 950 - Internet Standard Subnetting Procedure (1985),引入了子网编址的概念,通过子网掩码实现IP地址的划分。
  • RFC 1122 - Requirements for Internet Hosts – Communication Layers (1989),定义了互联网主机在实现TCP/IP协议栈时需要遵循的各项要求。
  • RFC 1191 - Path MTU Discovery (1990),提出了路径MTU发现机制,用于确定到达目标主机路径上的最小MTU。
  • RFC 1256 - ICMP Router Discovery Messages (1991),引入了ICMPv4路由器发现报文,用于主机动态地发现本地网络上的路由器。
  • RFC 1393 - Traceroute Using an IP Option (1993),描述了使用IP选项实现traceroute的方法。
  • RFC 1812 - Requirements for IP Version 4 Routers (1995),定义了IPv4路由器的各项需求,其中包括对ICMPv4的处理要求。
  • RFC 2463 - Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification (1998),定义了ICMPv6协议,作为IPv6协议族中与ICMPv4相对应的协议。
  • RFC 4443 - Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification (2006),更新了ICMPv6协议的规范,取代了RFC 2463。
  • RFC 4884 - Extended ICMP to Support Multi-Part Messages (2007),扩展了ICMPv4和ICMPv6,支持多部分消息,增加了对大型诊断消息的传输能力。
  • RFC 5837 - ICMP Extensions for Multiprotocol Label Switching (2010),定义了用于MPLS的ICMPv4和ICMPv6扩展,支持MPLS网络的错误报告和诊断。
  • RFC 5508 - NAT Behavioral Requirements for ICMP (2009),定义了网络地址转换(NAT)设备处理ICMPv4报文的行为要求,以保证NAT环境下ICMP的正确工作。
2. 报文格式
2.1 ICMPv4首部

ICMPv4报文格式由类型、代码和校验和三个固定字段组成,后面紧跟与具体报文类型相关的数据部分

字段说明:

  • IPv4报文首部协议(proto)字段值为1,表示其携带了ICMPv4报文数据。

  • Type(类型,8位)标识ICMPv4报文的类型,不同的类型对应不同的报文格式和用途,如0表示回显应答,8表示回显请求等。

  • Code(代码,8位)与类型字段一起标识ICMPv4报文的具体含义,同一类型的报文可能有多个代码值,表示不同的错误原因或附加信息。

  • Checksum(校验和,16位)用于检测报文在传输过程中是否出现错误,计算时需要将校验和字段置零,然后对整个ICMP报文进行16位二进制反码求和

  • Message Body(消息体,长度可变)携带与具体报文类型相关的数据,如错误信息、回显数据等,不同类型的报文有不同的消息体格式。

2.2 ICMPv4报文类型

常见的ICMPv4报文类型如下:

类型名称RFC文档差错or查询用途描述
0Echo ReplyRFC792查询响应Echo Request,用于确认连通性和RTT测量
3Destination UnreachableRFC792差错通知源主机目标不可达,具体原因在Code字段中说明
4Source QuenchRFC792差错通知源主机降低发送速率,避免拥塞(已废弃)
5RedirectRFC792差错通知源主机有更好的路由,优化路由路径
8Echo RequestRFC792查询请求目标主机回应,用于确认连通性和RTT测量
9Router AdvertisementRFC1256查询路由器定期或应请求发送,公告自身作为默认网关的可用性
10Router SolicitationRFC1256查询主机发送该报文,请求路由器立即发送Router Advertisement
11Time ExceededRFC792差错当TTL耗尽或分片重组超时时,告知源主机
12Parameter ProblemRFC792差错IP首部存在问题导致无法处理时,告知源主机
13TimestampRFC792查询请求目标主机回送时间戳,用于时间同步(已废弃)
14Timestamp ReplyRFC792查询Timestamp查询的应答报文(已废弃)
15Information RequestRFC792查询请求目标主机提供IP地址信息(已废弃)
16Information ReplyRFC792查询Information Request的应答报文(已废弃)
17Address Mask RequestRFC1256查询请求子网掩码信息(已废弃)
18Address Mask ReplyRFC1256查询Address Mask Request的应答报文(已废弃)

类型3、4、5、11、12属于差错报文,用于通知源主机存在的问题。

类型0、8、13、14、15、16属于查询报文,用于诊断连通性、测量时延等。

有些类型如Source Quench、Timestamp等已经被废弃不再使用。

2.3 ICMPv4常见代码

ICMPv4中类型3、5、9、11、12的常见代码号如下:

类型代码名称描述
30Net Unreachable目标网络不可达
31Host Unreachable目标主机不可达
32Protocol Unreachable目标协议不可达
33Port Unreachable目标端口不可达
34Fragmentation Needed and Don’t Fragment was Set需要分片但设置了不分片位
35Source Route Failed源路由失败
36Destination Network Unknown目标网络未知
37Destination Host Unknown目标主机未知
38Source Host Isolated源主机被隔离
39Communication with Destination Network is Administratively Prohibited与目标网络的通信被管理员禁止
310Communication with Destination Host is Administratively Prohibited与目标主机的通信被管理员禁止
311Destination Network Unreachable for Type of Service对于此类服务,目标网络不可达
312Destination Host Unreachable for Type of Service对于此类服务,目标主机不可达
313管理禁止通信被过滤策略禁止的通信
314违反主机优先级src/dest/port不准许的优先级
315优先级终止生效在最小Tos之下(RFC1812)
50Redirect Datagram for the Network对特定网络重定向
51Redirect Datagram for the Host对特定主机重定向
52Redirect Datagram for the Type of Service and Network对特定类型服务和网络重定向
53Redirect Datagram for the Type of Service and Host对特定类型服务和主机重定向
90Normal Router Advertisement正常路由器通告
916Does Not Route Common Traffic不路由普通流量
110Time to Live exceeded in Transit传输过程中超过生存时间
111Fragment Reassembly Time Exceeded分片重组超时
120Pointer indicates the error参数问题,错误由指针指出
121Missing a Required Option缺少必需的选项
122Bad Length长度错误
2.4 ICMPv4差错报文限制

在某些情况下,网络设备不会产生ICMPv4差错报文,以避免网络拥塞、安全问题或无用的错误报告:

  • 广播或组播地址,当IP数据报的目标地址是广播或组播地址时,通常不会产生ICMPv4差错报文,如"目标不可达"或"超时"等。

  • 分片,当接收到IP分片时,如果出现错误(如超时、目标不可达等),通常不会为每个分片生成单独的ICMPv4差错报文,而是等到全部分片到达后再生成一个差错报文。

  • ICMP差错报文,为了避免无限循环,当一个ICMP差错报文触发另一个差错时,通常不会再生成新的ICMP差错报文。

  • 源地址不可达,当源IP地址不可达时(零地址、环回地址、广播地址或组播地址),通常不会生成ICMPv4差错报文,以避免网络拥塞和广播风暴。

  • 作为链路层广播的数据报,避免产生大量的差错报文。

  • 安全策略,根据网络管理员的安全策略,某些类型的ICMPv4报文可能会被禁用或过滤,如ping请求、重定向等。

2.5 ICMPv4目的不可达(类型3)

ICMPv4的目的不可达报文(Destination Unreachable Message)是类型3的差错报文,用于在数据包无法送达目标时,由路由器或主机向源端发送,告知其发生了不可达的情况。

RFC 792报文的格式如下:

			Destination Unreachable Message(RFC 792)
	0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             unused                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Internet Header + 64 bits of Original Data Datagram      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明如下:

  • Type(8位),值为3,表示目的不可达报文。
  • Code(8位),表示不可达的具体原因,取值范围0~15。
  • Checksum(16位),ICMPv4头部和数据部分的校验和。
  • unused(32位),未使用字段,必须置0。
  • Internet Header + 64 bits of Original Data Datagram,数据部分,包含引发差错报文的原始IP数据报的IP头部和至少64位数据。在不超过576字节的情况下,应尽量的多包涵原始数据。

RFC 4884报文格式如下(支持扩展数据结构):

			Destination Unreachable Message(RFC 4884)
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     Type      |     Code      |          Checksum             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     unused    |    Length     |         Next-Hop MTU*         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      Internet Header + leading octets of original datagram    |
  |                                                               |
  |                           //                                  |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |             ICMP扩展头部以及零个或多个关联对象                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type、Code、Checksum、unused字段与原有格式相同。
  • Original IPv4 Header + data,数据部分,包含引发差错报文的原始IP数据报的IP头部和数据。与原有格式不同,该字段长度可变,不再限于64位,至少应包含128字节。
  • Length,指示Original IPv4 Header + data字段的长度,单位为4字节(IPv4和IPv6单位不一样)。
  • 代码为4(报文太大)时,Next-Hop MTU字段用于记录下一跳的MTU,并被PMTUD使用。

当路由器或主机无法转发或处理接收到的数据包时,就会向源端发送一个相应的目的不可达报文。源端收到该报文后,可以根据Code值判断具体的不可达原因,并结合数据部分携带的原始报文信息进行问题的定位和调整。

Code字段表示不可达的具体原因,常见取值如下:

  • Net Unreachable(0),网络不可达。
  • Host Unreachable(1),主机不可达。
  • Protocol Unreachable(2),协议不可达。
  • Port Unreachable(3),端口不可达。
  • Fragmentation Needed and Don’t Fragment was Set(4),需要分片但禁止分片。
  • Source Route Failed(5),源路由失败。
  • Destination Network Unknown(6),目标网络未知。
  • Destination Host Unknown(7),目标主机未知。
  • Source Host Isolated(8),源主机被隔离。
  • Communication with Destination Network Administratively Prohibited(9),目标网络通信被管理员禁止。
  • Communication with Destination Host Administratively Prohibited(10),目标主机通信被管理员禁止。
  • Destination Network Unreachable for Type of Service(11),对于当前服务类型,目标网络不可达。
  • Destination Host Unreachable for Type of Service(12),对于当前服务类型,目标主机不可达。

数据部分包含了引发该差错报文的原始IP数据报的IP头部和前64位数据,用于帮助源端定位和诊断问题。如果原始数据报小于64位,则截断后填充0。

ICMPv4定义了"Packet Too Big"(PTB)报文,用于在网络中发现和调整数据包的大小,以适应不同链路的MTU限制,这种机制称为"Path MTU Discovery"(PMTUD),对于优化网络性能和避免分片非常重要

在ICMPv4中,PTB报文属于目的不可达报文(类型3)的一种特例,使用代码4表示。当一个路由器收到一个数据包,其大小超过了下一跳链路的MTU,且该数据包设置了"Don’t Fragment"(DF)标志时,路由器会丢弃该数据包,并向源主机发送一个PTB报文。

PTB报文的格式与普通的目的不可达报文类似,但在未使用字段中携带了下一跳链路的MTU值。源主机收到PTB报文后,会将该报文中指示的MTU值作为目标地址的Path MTU(PMTU),并据此调整后续数据包的大小。

如果源主机无法缩减数据包大小,则会中止发送并向上层应用报告错误。

2.6 ICMPv4重定向(类型5)

ICMPv4的重定向报文(Redirect Message)是一种特殊的ICMP报文,用于通知主机更优的路由路径。当主机发送数据包时,如果路由器发现主机使用了次优的路由路径,则会向主机发送重定向报文,建议主机更新其路由表,以便后续数据包可以直接发送到更优的下一跳路由器。

						Redirect Message(5)
	0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                 Gateway Internet Address                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Internet Header + 64 bits of Original Data Datagram      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type(8位),值为5,表示重定向报文。
  • Code(8位),表示重定向的具体原因,取值范围0~3。
  • Checksum(16位),ICMP报文的校验和。
  • Gateway Internet Address(32位),建议的更优下一跳路由器的IP地址。
  • Internet Header + 64 bits of Original Data Datagram,触发重定向报文的原始IP数据报的IP头部和前64位数据。

重定向类型(Code):

  • Network Redirect(0),表示对特定网络的重定向。
  • Host Redirect(1),表示对特定主机的重定向。
  • Network Redirect for TOS(2),表示对特定网络和服务类型(TOS)的重定向。
  • Host Redirect for TOS(3),表示对特定主机和服务类型(TOS)的重定向。
2.7 ICMPv4超时(类型11)

ICMPv4的超时报文(Time Exceeded Message)是一种重要的差错报文,用于通知源主机在数据包传输过程中发生了超时。这种超时通常分为两种情况:

  • 传输过程中超过了IP头部中的生存时间(TTL)。
  • 分片重组超时,相当于整个数据报被丢弃。

下面是ICMPv4超时报文的格式:

						Time Exceeded Message(11)
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                             unused                            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Internet Header + 64 bits of Original Data Datagram      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明:

  • Type(8位),值为11,表示超时报文。
  • Code(8位),表示超时的具体原因,取值范围0~1。
  • Checksum(16位),ICMP报文的校验和。
  • unused(32位),未使用字段,置0。
  • Internet Header + 64 bits of Original Data Datagram,触发超时报文的原始IP数据报的IP头部和前64位数据。

超时代码(Code):

  • Time to Live exceeded in Transit(0),表示数据包在传输过程中超过了IP头部中的TTL值。每经过一个路由器,IP头部的TTL值就会减1,当TTL减为0时,路由器会丢弃该数据包,并向源主机发送一个Code 0的超时报文。
  • Fragment Reassembly Time Exceeded(1),表示分片重组超时。当一个数据包被分片传输时,目标主机需要在一定时间内收到所有分片并重组,如果超过了设定的时间阈值,就会触发Code 1的超时报文。

超时报文用于通知源主机在数据包传输过程中发生了异常,帮助源主机诊断和调试网络问题:

  • Code 0的超时报文通常表明网络路径过长或存在路由环路,源主机可以据此调整TTL值或检查路由配置。Code 0的超时报文也被用于traceroute等网络诊断工具,以发现网络路径上的路由器。
  • Code 1的超时报文提示分片重组过程出现了问题,可能是因为网络拥塞、分片丢失或目标主机资源不足等原因。
2.8 ICMPv4参数问题(类型12)

ICMPv4的参数问题报文(Parameter Problem Message)是一种重要的差错报文,用于通知源主机在数据包的首部中发现了错误或不完整的信息。当路由器或主机在处理数据包时检测到头部字段存在问题,无法正确解析或处理时,就会向源主机发送参数问题报文。

					Parameter Problem Message(12)
	0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |     Code      |          Checksum             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Pointer    |                   unused                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Internet Header + 64 bits of Original Data Datagram      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明:

  • Type(8位),值为12,表示参数问题报文。
  • Code(8位),表示错误的具体原因,取值范围0~2。
  • Checksum(16位),ICMP报文的校验和。
  • Pointer(8位),指向数据包首部中发生错误的字节位置。
  • unused(24位),未使用字段,置0。
  • Internet Header + 64 bits of Original Data Datagram,触发参数问题报文的原始IP数据报的IP头部和前64位数据。

错误代码(Code):

  • Pointer indicates the error(0),表示Pointer字段指向了数据包首部中发生错误的具体位置。
  • Missing a Required Option(1),表示数据包缺少了某个必需的选项。
  • Bad Length(2),表示数据包的长度存在问题,可能是总长度与首部长度和数据长度之和不一致,或者超过了网络的MTU限制。

参数问题报文用于通知源主机在发送数据包时出现了首部错误,帮助源主机诊断和调试网络问题

  • Code 0的参数问题报文通常表明数据包的某个首部字段存在无法识别或不合法的值,Pointer字段会指明具体的错误位置,源主机可以据此检查和修正数据包的构造过程。
  • Code 1的参数问题报文提示数据包缺少了某个必需的首部选项,例如安全选项、源路由选项等,源主机需要检查上层协议和应用的设置,确保包含所有必需的选项。
  • Code 2的参数问题报文表示数据包的长度字段存在问题,可能是上层协议计算错误或者数据包在传输过程中被截断,源主机需要检查数据包的封装和传输过程。
2.9 ICMPv4回显请求/应答(类型0/8)

ICMP回显请求和应答是我们日常网络应用中最常见的两种ICMP报文。它们构成了Ping程序的基础,让我们能够方便地检测网络的连通性和延迟。

			  Echo(8) or Echo Reply(0) Message
	0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Identifier          |        Sequence Number        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Data ...
   +-+-+-+-+-

一个完整的ICMP回显请求或应答报文由以下几个字段依次组成:

  • 类型(Type,8位),回显请求的类型值为8,而回显应答的类型值则为0
  • 代码(Code,8位),对于回显请求和应答报文,代码字段的值通常都为0,表示这是一个标准的查询和响应过程。
  • 校验和(Checksum,16位),ICMP报文的前4个字节和数据部分一起被用于计算校验和。
  • 标识符(Identifier)和序号(Sequence Number),这两个字段各占2字节,它们的值由发送方任意指定,但在请求和应答报文中必须保持一致。
  • 数据部分,在回显请求和应答中,这部分内容是完全一样的。数据的具体内容由请求方定义,应答方只需原封不动地返回即可。

最常见的应用莫过于Ping程序了。当我们在命令行中输入"ping 目标IP地址"时,源主机就会构造一系列ICMP回显请求报文,填入适当的标识符和序号,然后连续发送给目标主机。

目标主机收到请求后,会提取报文中的标识符和序号,构造对应的ICMP回显应答报文,再发送回源主机。源主机根据收到的ICMP应答,计算往返时间和丢包率,评估与目标主机之间的网络质量。

另一个常见的应用是traceroute程序,它通过逐步增加IP包的生存时间(TTL),结合ICMP超时错误和到达目标时的ICMP端口不可达错误,一跳一跳地探测到目标主机的网络路径。

2.10 ICMPv4路由器请求和通告(类型9/10)

ICMPv4 路由器请求和通告报文帮助主机自动发现附近的路由器,获取必要的配置信息。

路由器请求报文的ICMP类型值为 9,当一台主机希望自动获取路由器的信息时,它会在本地网络上广播一个路由器请求报文。这个报文的目标地址通常为受限广播地址255.255.255.255或本地网段的广播地址

路由器请求报文的格式非常简洁,除了公共的 ICMP 报头外,没有其他特殊字段:

				ICMP Router Solicitation Message(9)
       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Type      |     Code      |           Checksum            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           Reserved                            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

路由器通告报文的ICMP类型值为10,当路由器收到一个路由器请求报文或者自身的通告时间间隔到期时,它就会主动向本地网络发送一个路由器通告报文。这个报文通常以组播的形式发送,目标地址为 224.0.0.1

				ICMP Router Advertisement Message(10)
       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Type      |     Code      |           Checksum            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   Num Addrs   |Addr Entry Size|           Lifetime            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Router Address[1]                       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      Preference Level[1]                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Router Address[2]                       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      Preference Level[2]                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                               .                               |
      |                               .                               |
      |                               .                               |

相比请求报文,通告报文的内容就丰富多了,除了ICMP报头,它还包含以下重要信息:

  • 地址数(Num Addrs),表示通告报文中包含的路由地址条目数量,每个块包含一个IPv4地址和相应的优先水平(Preference level)。
  • 地址条目大小(Addr Entry Size),说明每个地址条目的大小,以 32 位字为单位。
  • 生存周期(Lifetime),告知主机在收到下一个通告报文之前,本报文中的信息有效的时间,单位为秒。
  • 路由器地址(Router Address),路由器拥有的一个或多个 IP 地址。
  • 优先水平(Preference level),一个32位的有符号二进制补码整数,其值越大代表优先级越高。默认的优先水平是0,特殊值0x80000000表示这个地址不应该作为有效的默认路由。

主机收到路由器通告报文后,会提取出路由器的IP地址,并根据报文中的生存时间设置老化定时器。在定时器到期之前,主机就可以使用通告的路由器地址作为默认网关,将目标不在本地网段的数据报文转发给路由器处理。

3. ICMP攻击
3.1 洪泛攻击

ICMP协议作为网络层的重要协议之一,在网络管理、故障诊断等方面发挥着关键作用。然而,由于其设计的开放性和灵活性,ICMP也常常被恶意利用,成为网络攻击的工具。

(1) ICMP洪泛攻击(ICMP Flood)是一种典型的拒绝服务(DoS)攻击方式。攻击者通过向目标主机或网络发送大量的ICMP请求报文(如Echo请求、时间戳请求等),耗尽目标的网络带宽和系统资源,导致其无法正常提供服务。

攻击者通常采用伪造源IP地址的方式,隐藏自己的真实身份,并利用僵尸网络放大攻击流量。当大量的ICMP请求同时到达目标时,网络设备的处理能力和带宽很快被耗尽,合法用户的请求无法得到及时响应,网络服务质量严重下降。

(2) **ICMP路由重定向攻击(ICMP Redirect)**用于路由器通知主机更优的路由路径。然而,恶意攻击者可以伪造ICMP重定向报文,引诱主机将数据报文发送到错误的路由器或恶意主机,造成数据泄露或中间人攻击。

攻击者通常在与目标主机相同的本地网络内,伪装成合法的路由器,向目标主机发送虚假的ICMP重定向报文。如果主机没有对报文来源进行严格验证,就可能误认为攻击者是可信的路由器,从而将敏感数据发送给攻击者,或者陷入恶意主机设置的"陷阱"。

(3) **ICMP目的不可达攻击(ICMP Destination Unreachable)**用于告知源主机目标主机或端口无法到达。攻击者可以利用这一机制,向目标主机发送伪造的目的不可达报文,导致目标主机错误地中断与合法主机的通信。

例如,攻击者监听到目标主机与某个合法服务器之间的通信后,就伪造一个源IP为该服务器、目标IP为目标主机的ICMP目的不可达报文,并声称服务器的某个端口不可达。目标主机收到报文后,可能会误认为服务器主动断开了连接,从而中断与服务器的通信。当攻击者持续发送这类报文时,目标主机与合法服务器之间的通信就会不断受到干扰。

(4) Ping of Death攻击,早期的一些操作系统和网络设备在处理超大的ICMP回显请求报文时存在缓冲区溢出漏洞。攻击者利用这一漏洞,构造一个超过最大允许长度(65535字节)的ICMP请求报文,在目标主机上引发系统崩溃或重启,造成拒绝服务。

为了防范ICMP报文攻击,网络管理员可以采取以下措施:

  • 在网络边界和主机上启用ICMP报文过滤,仅允许必要的ICMP报文通过。
  • 对ICMP报文进行速率限制,避免少量主机占用过多网络资源。
  • 对ICMP报文的合法性进行验证,丢弃可疑的伪造报文。
  • 及时更新系统和设备,修复已知的ICMP相关漏洞。
  • 部署抗DDoS设备,实时监测和清洗恶意ICMP流量。

ICMP报文攻击是网络安全领域的一大挑战,攻击者利用ICMP的开放性和灵活性,通过多种手段破坏网络通信和服务。







Once Day

也信美人终作土,不堪幽梦太匆匆......

如果这篇文章为您带来了帮助或启发,不妨点个赞👍和关注,再加上一个小小的收藏⭐!

(。◕‿◕。)感谢您的阅读与支持~~~

本文地址:https://www.vps345.com/8540.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 deepseek Ollama 模型联网 API CherryStudio 进程 操作系统 进程控制 Ubuntu ubuntu javascript 前端 chrome edge 英语 数据库 centos oracle 关系型 安全 分布式 ssh 阿里云 网络 网络安全 网络协议 llama 算法 opencv 自然语言处理 神经网络 语言模型 开发环境 笔记 人工智能 深度学习 计算机视觉 卷积神经网络 php 经验分享 harmonyos 华为 开发语言 typescript 计算机网络 python MCP docker java 容器 macos windows conda nginx 负载均衡 数据分析 Dify pip C# MQTTS 双向认证 emqx tcp/ip vscode react.js 前端面试题 node.js 持续部署 jellyfin nas 学习方法 学习 openvpn server openvpn配置教程 centos安装openvpn c++ 并查集 leetcode RTSP xop RTP RTSPServer 推流 视频 jenkins gitee spring boot mysql debian PVE 科技 ai 个人开发 adb android fstab ip协议 高级IO epoll 环境变量 大数据 spark hive json 机器学习 tomcat asm 进程优先级 调度队列 进程切换 eureka numpy YOLO Qwen2.5-coder 离线部署 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 matplotlib fonts-noto-cjk DeepSeek-R1 API接口 redis 串口服务器 cron crontab日志 思科 Hyper-V WinRM TrustedHosts EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 小程序 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 DNS 嵌入式 linux驱动开发 arm开发 嵌入式硬件 ui 华为云 华为od HarmonyOS Next Linux 进程信号 vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 指令 qt QT 5.12.12 QT开发环境 Ubuntu18.04 物联网 mcu iot 信息与通信 运维开发 云原生 windows 服务器安装 github 创意 社区 媒体 集成学习 集成测试 鸿蒙 websocket c# 自动化 spring Flask FastAPI Waitress Gunicorn uWSGI Uvicorn maxkb ARG k8s kubernetes 程序员创富 nlp pycharm flutter iftop 网络流量监控 ue5 vr ip命令 新增网卡 新增IP 启动网卡 多线程 互信 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 像素流送api 像素流送UE4 像素流送卡顿 像素流送并发支持 pytorch transformer kylin 单片机 protobuf 序列化和反序列化 安装 vnc MacOS录屏软件 后端 Docker Hub docker pull 镜像源 daemon.json 面试 性能优化 jdk intellij-idea 架构 rabbitmq mac 游戏程序 ios rust http udp unity WebUI DeepSeek V3 DeepSeek AI大模型 虚拟机 VMware dify efficientVIT YOLOv8替换主干网络 TOLOv8 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK ide CPU 内存 主板 电源 网卡 llm prometheus 监控k8s集群 集群内prometheus VMware安装mocOS macOS系统安装 网络药理学 生信 生物信息学 gromacs 分子动力学模拟 MD 动力学模拟 vmware 卡死 gcc centos 7 burp suite 抓包 产品经理 agi microsoft vim 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 Dell R750XS xcode powerpoint vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 计算机外设 电脑 软件需求 spring cloud 前端框架 kafka 大模型技术 本地部署大模型 dubbo ssl git elasticsearch uni-app 目标检测 java-ee ollama 私有化 本地部署 聚类 fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse ip 数据结构 c语言 链表 开源 实时音视频 实时互动 DevEco Studio HCIE 数通 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 etcd 数据安全 RBAC gnu 智能路由器 外网访问 内网穿透 端口映射 sublime text 编辑器 rust腐蚀 虚拟现实 unix Alexnet threejs 3D apache firewalld 读写锁 Windsurf .net C 进程地址空间 大语言模型 LLMs chatgpt web安全 大模型 centos-root /dev/mapper yum clean all df -h / du -sh 腾讯云 FTP 服务器 监控 自动化运维 中间件 iis yum docker-compose docker compose 多线程服务器 Linux网络编程 live555 rtsp rtp rag ragflow ragflow 源码启动 1024程序员节 Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer jar gradle alias unalias 别名 ue4 着色器 虚幻 mongodb AI编程 目标跟踪 OpenVINO 推理应用 僵尸进程 postgresql cuda cudnn anaconda list 微服务 springcloud KylinV10 麒麟操作系统 Vmware https Reactor 设计模式 C++ svn VMware安装Ubuntu Ubuntu安装k8s bash 硬件工程 ESP32 camera Arduino 电子信息 网易邮箱大师 OpenManus DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 iBMC UltraISO Kali Linux 黑客 渗透测试 信息收集 Hive环境搭建 hive3环境 Hive远程模式 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 CLion 远程连接 IDE ubuntu20.04 ros ros1 Noetic 20.04 apt 安装 压测 ECS 域名服务 DHCP 符号链接 配置 flash-attention 报错 ux grafana 键盘 远程工作 Doris搭建 docker搭建Doris Doris搭建过程 linux搭建Doris Doris搭建详细步骤 Doris部署 Deepseek Deepseek-R1 私有化部署 推理模型 ollama下载加速 devops springboot 设置代理 实用教程 源码剖析 rtsp实现步骤 流媒体开发 burpsuite 安全工具 mac安全工具 burp安装教程 渗透工具 Ubuntu Server Ubuntu 22.04.5 perf linux内核 远程控制 远程看看 远程协助 virtualenv 区块链 AIGC cpu 实时 使用 权限 log4j iperf3 带宽测试 C语言 minicom 串口调试工具 测试工具 fd 文件描述符 安卓模拟器 蓝耘科技 元生代平台工作流 ComfyUI ipython 飞牛nas fnos mybatis 本地环回 bind golang Chatbox YOLOv8 NPU Atlas800 A300I pro asi_bench ffmpeg 音视频 5G 3GPP 卫星通信 统信UOS 麒麟 bonding 链路聚合 迁移指南 mq rocketmq rpc 课程设计 windows日志 文件系统 路径解析 ddos WSL2 Ubuntu22.04 虚拟化 开发人员主页 stm32项目 stm32 Linux的权限 温湿度数据上传到服务器 Arduino HTTP sql selenium axure 富文本编辑器 zotero WebDAV 同步失败 代理模式 webstorm arm WLAN ansible playbook 剧本 安防软件 NFS 监控k8s 监控kubernetes Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 dell服务器 go 工业4.0 缓存 强制清理 强制删除 mac废纸篓 客户端 博客 AI 爬虫 数据集 AI-native gpt Agent LLM CrewAI edge浏览器 jvm rime xml bug bcompare Beyond Compare 基础环境 file server http server web server Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 云桌面 微软 AD域控 证书服务器 虚拟显示器 html KingBase linux安装配置 UOS 统信操作系统 kali 共享文件夹 oceanbase rc.local 开机自启 systemd 系统安全 机器人 linux上传下载 llama3 Chatglm 开源大模型 ping++ RAGFLOW database 深度优先 图论 并集查找 换根法 树上倍增 智能手机 NAS Termux Samba docker run 数据卷挂载 交互模式 Cline 自动化编程 Ubuntu共享文件夹 共享目录 Linux共享文件夹 openwrt 安卓 中兴光猫 换光猫 网络桥接 自己换光猫 ssh漏洞 ssh9.9p2 CVE-2025-23419 ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 系统开发 binder 车载系统 framework 源码环境 .netcore selete ros2 moveit 机器人运动 rancher MQTT协议 消息服务器 代码 fpga开发 嵌入式系统开发 postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 鸿蒙系统 Linux PID 环境配置 通信工程 毕业 wireshark 显示过滤器 ICMP Wireshark安装 网络工程师 网络管理 软考 2024 2024年上半年 下午真题 答案 linux环境变量 IIS服务器 IIS性能 日志监控 银河麒麟服务器操作系统 系统激活 低代码 数据挖掘 网络用户购物行为分析可视化平台 大数据毕业设计 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 多层架构 解耦 visual studio code windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 nftables 防火墙 微信 微信分享 Image wxopensdk 无人机 命令 flask jmeter 软件测试 豆瓣 追剧助手 迅雷 程序 编程 性能分析 express p2p gpu算力 银河麒麟 kylin v10 麒麟 v10 虚拟局域网 gitlab tar LDAP compose aws googlecloud 政务 分布式系统 监控运维 Prometheus Grafana 隐藏文件 隐藏目录 管理器 通配符 hadoop 向日葵 系统架构 软件工程 maven intellij idea 话题通信 服务通信 sqlserver 深度求索 私域 知识库 tcpdump 主从复制 交互 腾讯云大模型知识引擎 AI写作 html5 firefox docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 kamailio sip VoIP 命名管道 客户端与服务端通信 大数据平台 云原生开发 K8S k8s管理系统 数据库系统 pillow 开发 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos TCP WebServer JAVA Java WSL win11 无法解析服务器的名称或地址 远程 执行 sshpass 操作 django web3.py WSL2 上安装 Ubuntu 代码调试 ipdb YOLOv12 ESXi milvus Cursor 视觉检测 程序人生 vSphere vCenter 软件定义数据中心 sddc 模拟实现 VMware创建虚拟机 HiCar CarLife+ CarPlay QT RK3588 cocoapods n8n 工作流 workflow IPMITOOL BMC 硬件管理 opcua opcda KEPServer安装 oneapi pdf 图片增强 增强数据 okhttp open webui sqlite3 SenseVoice minio android studio 办公自动化 自动化生成 pdf教程 rnn sysctl.conf vm.nr_hugepages MQTT 消息队列 Mac内存不够用怎么办 安全威胁分析 adobe 传统数据库升级 银行 fast ecmascript KVM HarmonyOS OpenHarmony 真机调试 ELF加载 Python 网络编程 聊天服务器 套接字 Socket webrtc 服务器扩容没有扩容成功 云服务 微信小程序 可信计算技术 密码学 arcgis sdkman 3d 数学建模 springsecurity6 oauth2 授权服务器 token sas 计算生物学 生物信息 基因组 GPU wsl 版本 图形渲染 Cookie yolov8 群晖 飞牛 asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 系统 黑苹果 VSCode pygame 小游戏 五子棋 移动云 Kali 渗透 视频平台 录像 视频转发 性能测试 视频流 存储 华为证书 HarmonyOS认证 华为证书考试 相机 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 开机自启动 shell visualstudio 银河麒麟操作系统 国产化 kernel k8s二次开发 集群管理 CosyVoice nfs 服务器部署ai模型 国产数据库 瀚高数据库 数据迁移 下载安装 部署 SSL 域名 rsyslog Anolis nginx安装 环境安装 linux插件下载 pyautogui nvidia ShenTong DBeaver 混合开发 JDK vue java-rocketmq mamba Vmamba QQ bot Docker Trae AI 原生集成开发环境 Trae AI 线程 trea idea 驱动开发 嵌入式实习 mysql离线安装 ubuntu22.04 mysql8.0 源码 毕业设计 代理 fork wait waitpid exit onlyoffice su sudo frp 流式接口 URL cd 目录切换 api banner 考研 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 pyqt 在线office 工具 京东云 Kylin-Server 国产操作系统 服务器安装 idm 宝塔 命令行 基础入门 EasyConnect zabbix nextjs react reactjs 黑客技术 DeepSeek r1 Open WebUI miniapp 调试 debug 断点 网络API请求调试方法 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors apt 国内源 网工 python2 ubuntu24.04 搜索引擎 ssrf 失效的访问控制 MI300x 小智 tensorflow Web服务器 多线程下载工具 PYTHON eclipse 热榜 双系统 图像处理 游戏引擎 NLP模型 NLP open Euler dde deepin 策略模式 单例模式 yolov5 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 安全架构 蓝桥杯 浪潮信息 AI服务器 树莓派 VNC 跨域 curl wget xrdp 远程桌面 SRS 流媒体 直播 string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 游戏服务器 TrinityCore 魔兽世界 Unity Dedicated Server Host Client 无头主机 SSL证书 Web应用服务器 CentOS MySql elk xpath定位元素 bat 服务器繁忙 飞牛NAS 飞牛OS MacBook Pro odoo 服务器动作 Server action NPS 雨云服务器 雨云 harmonyOS面试题 cnn 能力提升 面试宝典 技术 IT信息化 邮件APP 免费软件 环境迁移 崖山数据库 YashanDB 大模型部署 离线部署dify Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 Ubuntu 24.04.1 轻量级服务器 redhat linux 命令 sed 命令 文件分享 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 USB转串口 CH340 npm mariadb 相差8小时 UTC 时间 联网 easyconnect 自动化任务管理 netty 职场和发展 代码托管服务 prompt easyui langchain conda配置 conda镜像源 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 直播推流 SSH 服务 SSH Server OpenSSH Server 企业微信 Linux24.04 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 GameFramework HybridCLR Unity编辑器扩展 自动化工具 毕设 统信 UOS1070e 三级等保 服务器审计日志备份 状态管理的 UDP 服务器 Arduino RTOS yum源切换 更换国内yum源 kvm 无桌面 gitea 微信公众平台 risc-v Carla 智能驾驶 推荐算法 SysBench 基准测试 x64 SIGSEGV SSE xmm0 稳定性 看门狗 Typore make命令 makefile文件 硬件架构 计算机 css excel 联想开天P90Z装win10 opengl Invalid Host allowedHosts 文心一言 matlab webdav bootstrap 功能测试 自动化测试 web ci/cd Xinference RAGFlow jupyter llama.cpp samba 服务器时间 镜像 ecm bpm kotlin iphone 免费域名 域名解析 tcp Dell HPE 联想 浪潮 docker命令大全 交叉编译 宕机切换 服务器宕机 其他 DocFlow 压力测试 执法记录仪 智能安全帽 smarteye ubuntu24 vivado24 r语言 数据可视化 MCP server C/S .net mvc断点续传 Minecraft ROS 自动驾驶 DOIT 四博智联 边缘计算 信息可视化 echarts Helm k8s集群 freebsd 矩阵 ebpf uprobe 服务器管理 宝塔面板 配置教程 网站管理 ROS2 VMware Tools vmware tools安装 vmwaretools安装步骤 vmwaretools安装失败 vmware tool安装步骤 vm tools安装步骤 vm tools安装后不能拖 vmware tools安装步骤 thingsboard iDRAC R720xd c 大模型面经 大模型学习 AnythingLLM AnythingLLM安装 Mermaid 可视化图表 串口驱动 CH341 uart 485 zip unzip 软链接 硬链接 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 IIS .net core Hosting Bundle .NET Framework vs2022 代码规范 XFS xfs文件系统损坏 I_O error es RAG 检索增强生成 文档解析 大模型垂直应用 测试用例 磁盘监控 kind 实习 服务器配置 X11 Xming 开机黑屏 医疗APP开发 app开发 qemu libvirt openEuler 浏览器自动化 WebVM 模拟器 教程 网络爬虫 流水线 脚本式流水线 网站搭建 serv00 Ark-TS语言 FunASR ASR Linux 维护模式 微信开放平台 微信公众号配置 远程登录 telnet 宝塔面板无法访问 cmos 硬件 visual studio rdp 实验 王者荣耀 金仓数据库 2025 征文 数据库平替用金仓 Wi-Fi can 线程池 软件构建 xfce jetty undertow grub 版本升级 扩容 java-rabbitmq 毕昇JDK ssh远程登录 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 云电竞 云电脑 todesk virtualbox 重启 排查 系统重启 日志 原因 交换机 设备 PCI-Express 信号处理 k8s集群资源管理 vu大文件秒传跨域报错cors SSH 半虚拟化 硬件虚拟化 Hypervisor Erlang OTP gen_server 热代码交换 事务语义 MNN Qwen HarmonyOS NEXT 原生鸿蒙 视频编解码 micropython esp32 mqtt 输入法 游戏机 网络攻击模型 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 灵办AI hugo 技能大赛 Netty 即时通信 NIO scikit-learn SWAT 配置文件 服务管理 网络共享 gaussdb ruoyi pgpool DeepSeek行业应用 Heroku 网站部署 端口测试 单元测试 田俊楠 ocr etl dity make outlook 本地部署AI大模型 机柜 1U 2U eNSP 网络规划 VLAN 企业网络 图形化界面 思科模拟器 Cisco 换源 Debian nuxt3 saltstack 网页服务器 web服务器 Nginx Qualcomm WoS QNN AppBuilder top Linux top top命令详解 top命令重点 top常用参数 AI作画 next.js 部署next.js 聊天室 searxng W5500 OLED u8g2 TCP服务器 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 export import save load 迁移镜像 人工智能生成内容 wsl2 算力 Jellyfin trae k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm TrueLicense GCC crosstool-ng 实战案例 muduo hibernate 云耀服务器 rustdesk firewall openstack Xen Zoertier 内网组网 cfssl CentOS Stream Docker Compose 社交电子 React Next.js 开源框架 华为认证 拓扑图 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 DIFY 产测工具框架 IMX6ULL 管理框架 vscode 1.86 健康医疗 互联网医院 stable diffusion 鲲鹏 昇腾 npu 直流充电桩 充电桩 IPMI TRAE SEO 程序员 OD机试真题 华为OD机试真题 服务器能耗统计 chfs ubuntu 16.04 Playwright 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? 漏洞 显示管理器 lightdm gdm P2P HDLC 分析解读 同步 备份 建站 nac 802.1 portal 网络穿透 云服务器 火绒安全 IO Nuxt.js Xterminal 信号 HP Anyware 智能音箱 智能家居 ubuntu 18.04 notepad 弹性计算 裸金属服务器 弹性裸金属服务器 RAID RAID技术 磁盘 unity3d AI代码编辑器 CORS lb 协议 XCC Lenovo dns Redis Desktop 大模型入门 强化学习 繁忙 解决办法 替代网站 汇总推荐 AI推理 powerbi 网络结构图 yaml Ultralytics 可视化 MacMini Mac 迷你主机 mini Apple dba 宠物 免费学习 宠物领养 宠物平台 致远OA OA服务器 服务器磁盘扩容 ceph nvm 小艺 Pura X deepseek-r1 大模型本地部署 gpt-3 大模型微调 7z skynet IM即时通讯 剪切板对通 HTML FORMAT 显卡驱动 rclone AList fnOS embedding OpenSSH AutoDL openssl 序列化反序列化 jina 智能电视 业界资讯 IPv4 子网掩码 公网IP 私有IP 模拟退火算法 SSH 密钥生成 SSH 公钥 私钥 生成 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 code-server mosquitto 金融 seatunnel 智慧农业 开源鸿蒙 团队开发 Linux的基础指令 磁盘清理 LORA 跨平台 sqlite MS Materials VR手套 数据手套 动捕手套 动捕数据手套 composer AISphereButler 硅基流动 ChatBox ruby 网页设计 safari Linux权限 权限命令 特殊权限 av1 电视盒子 机顶盒ROM 魔百盒刷机 镜像下载 历史版本 下载 oracle fusion oracle中间件 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 less 大模型教程 GRUB引导 Linux技巧 neo4j 数据仓库 数据库开发 remote-ssh ukui 麒麟kylinos openeuler springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 虚拟机安装 Google pay Apple pay 框架搭建 keepalived 服务器主板 AI芯片 sonoma 自动更新 MAC SecureCRT 回显服务器 UDP的API使用 服务器安全 网络安全策略 防御服务器攻击 安全威胁和解决方案 程序员博客保护 数据保护 安全最佳实践 glibc VPS vite chrome devtools chromedriver c/c++ 串口 vpn ArcTS 登录 ArcUI GridItem RustDesk自建服务器 rustdesk服务器 docker rustdesk arkUI lio-sam SLAM uv big data opensearch helm Node-Red 编程工具 流编程 飞书 wps 孤岛惊魂4 WebRTC uniapp 恒源云 ubuntu24.04.1 生活 用户缓冲区 自学笔记 小米 澎湃OS Android RTMP 应用层 Docker Desktop db 支付 微信支付 开放平台 ArkTs ArkUI 多进程 deployment daemonset statefulset cronjob 鸿蒙开发 移动开发 搭建个人相关服务器 IMM 语法 单一职责原则 端口 查看 ss 信创 信创终端 中科方德 sequoiaDB 授时服务 北斗授时 高效I/O 捆绑 链接 谷歌浏览器 youtube google gmail HistoryServer Spark YARN jobhistory Headless Linux g++ g++13 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 cmake Qwen2.5-VL vllm clickhouse 僵尸世界大战 游戏服务器搭建 运维监控 我的世界服务器搭建 minecraft rpa zookeeper word IMX317 MIPI H265 VCU 错误代码2603 无网络连接 2603 prometheus数据采集 prometheus数据模型 prometheus特点 端口聚合 windows11 regedit 开机启动 Windows ai工具 v10 软件 ldap IDEA PX4 MAVROS 四旋翼无人机 Linux find grep 钉钉 GIS 遥感 WebGIS 服务器部署 本地拉取打包 nosql 大大通 第三代半导体 碳化硅 本地化部署 AzureDataStudio Ardupilot aarch64 编译安装 HPC 架构与原理 deepseak 豆包 KIMI 腾讯元宝 CNNs 图像分类 欧标 OCPP 多个客户端访问 IO多路复用 TCP相关API Isaac Sim 虚拟仿真 抓包工具 System V共享内存 进程通信 内网环境 lua h.264 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 webgl cpp-httplib docker desktop image 玩机技巧 软件分享 软件图标 环境搭建 Maven qt5 客户端开发 网络建设与运维 音乐库 LLM Web APP Streamlit 网卡的名称修改 eth0 ens33 内核 代理服务器 csrutil mac恢复模式进入方法 SIP 恢复模式 MDK 嵌入式开发工具 论文笔记 python3.11 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 极限编程 dash 正则表达式 安装MySQL 移动魔百盒 Reactor反应堆 WINCC 远程服务 远程过程调用 Windows环境 技术共享 sentinel midjourney 企业网络规划 华为eNSP k8s部署 MySQL8.0 高可用集群(1主2从) swoole FTP服务器 网络文件系统 deepseek r1 DevOps 软件交付 数据驱动 应用场景 佛山戴尔服务器维修 佛山三水服务器维修 Docker快速入门 qps 高并发 加解密 Yakit yaklang 查看显卡进程 fuser ArtTS 干货分享 黑客工具 密码爆破 triton 模型分析 线性代数 电商平台 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 whistle ranger MySQL8.0 MobaXterm 文件传输 win服务器架设 windows server vmamba tailscale derp derper 中转 cursor sudo原理 su切换 李心怡 navicat Linux环境 NAT转发 NAT Server 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 perl 状态模式 Attention deep learning Python基础 Python教程 Python技巧 常用命令 文本命令 目录命令 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 影刀 #影刀RPA# H3C mcp服务器 client close docker部署Python Claude VS Code 前后端分离 Mac软件 iNode Macos hexo figma 小智AI服务端 xiaozhi TTS uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 AD 域管理 yashandb 反向代理 DenseNet hosts 个人博客 电视剧收视率分析与可视化平台 lvm 磁盘挂载 磁盘分区 沙盒 增强现实 沉浸式体验 技术实现 案例分析 AR Spring Security 我的世界 我的世界联机 数码 GoogLeNet scapy USB网络共享 ISO镜像作为本地源 游戏开发 嵌入式Linux IPC 桌面环境 虚幻引擎 进程程序替换 execl函数 execv函数 execvp函数 execvpe函数 putenv函数 EMUI 回退 降级 升级 问题解决 阻塞队列 生产者消费者模型 服务器崩坏原因 音乐服务器 Navidrome 音流 多端开发 智慧分发 应用生态 鸿蒙OS diskgenius Sealos 论文阅读 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 ArkTS 移动端开发 浏览器开发 AI浏览器 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 pppoe radius dns是什么 如何设置电脑dns dns应该如何设置 银河麒麟桌面操作系统 Kylin OS xss 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 软件卸载 系统清理 烟花代码 烟花 元旦 性能调优 安全代理 本地知识库部署 DeepSeek R1 模型 知识图谱 免密 公钥 私钥 元服务 应用上架 AI agent LInux 网络搭建 神州数码 神州数码云平台 云平台 copilot 分布式训练 PPI String Cytoscape CytoHubba EVE-NG shell脚本免交互 expect linux免交互 国标28181 视频监控 监控接入 语音广播 流程 SDP kerberos react native Radius 大屏端 qt项目 qt项目实战 qt教程 EMQX 通信协议 多路转接 计算虚拟化 弹性裸金属 deekseek 物联网开发 根服务器 TCP协议 超融合 glm4 抗锯齿 laravel junit Logstash 日志采集 一切皆文件 语音识别 项目部署 匿名管道 北亚数据恢复 oracle数据恢复 需求分析 规格说明书 es6 qt6.3 g726 MVS 海康威视相机 笔灵AI AI工具 HTTP 服务器控制 ESP32 DeepSeek ECT转485串口服务器 ECT转Modbus485协议 ECT转Modbus串口服务器 dock 加速 CDN 备选 网站 调用 示例 proxy模式 AD域 开源软件 wsgiref Web 服务器网关接口 内网渗透 靶机渗透 大模型应用 Apache Beam 批流统一 案例展示 数据分区 容错机制 vasp安装 查询数据库服务IP地址 SQL Server mysql安装报错 windows拒绝安装 VPN wireguard netlink libnl3 Tabs组件 TabContent TabBar TabsController 导航页签栏 滚动导航栏 阿里云ECS wpf 容器技术 计算机科学与技术 底层实现 自定义客户端 SAS 银河麒麟高级服务器 外接硬盘 Kylin flink seleium 华为机试 xshell termius iterm2 做raid 装系统 armbian u-boot 负载测试 达梦 DM8 iTerm2 对比 meld DiffMerge 高德地图 鸿蒙接入高德地图 HarmonyOS5.0 项目部署到linux服务器 项目部署过程 IO模型 ftp CVE-2024-7347 内网服务器 内网代理 内网通信 UEFI Legacy MBR GPT U盘安装操作系统 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 服务网格 istio AI员工 合成模型 扩散模型 图像生成 MacOS tidb GLIBC web3 vscode1.86 1.86版本 ssh远程连接 软负载 AI Agent 字节智能运维 桌面快捷方式 WireGuard 异地组网 retry 重试机制 pyicu nacos lighttpd安装 Ubuntu配置 Windows安装 服务器优化 Office 弹性服务器 端口号 开放端口 访问列表 initramfs Linux内核 Grub 接口优化 js solidworks安装 管道 css3 动静态库 多产物 服务器ssl异常解决 配置原理 GeneCards OMIM TTD 粘包问题 Pyppeteer 解决方案 流量运营 nohup后台启动 网络原理 显示器 fiddler ShapeFile GeoJSON macOS 零售 Unity插件 yum换源 iventoy VmWare OpenEuler VGG网络 卷积层 池化层 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 ufw UDP gunicorn 华为OD 可以组成网络的服务器 带外管理 zerotier env 变量 玩游戏 大模型推理 进程间通信 锁屏不生效 NFC 近场通讯 智能门锁 蓝牙 搜狗输入法 中文输入法 archlinux kde plasma beautifulsoup ftp服务 文件上传 ABAP 全文检索 图搜索算法 ajax 存储维护 NetApp存储 EMC存储 Linux Vim llamafactory 微调 HAProxy 输入系统 openjdk 录音麦克风权限判断检测 录音功能 录音文件mp3播放 小程序实现录音及播放功能 RecorderManager 解决录音报错播放没声音问题 电脑桌面出现linux图标 电脑桌面linux图标删除不了 电脑桌面Liunx图标删不掉 linux图标删不掉 充电桩平台 充电桩开源平台 风扇控制软件 联机 僵尸毁灭工程 游戏联机 开服 西门子PLC 通讯 用户管理 linuxdeployqt 打包部署程序 appimagetool 日志分析 系统取证 数字证书 签署证书 CPU 使用率 系统监控工具 linux 命令 SVN Server tortoise svn 蓝桥杯C++组 ardunio BLE 工具分享 服务器正确解析请求体 autodl ollama api ollama外网访问 信息安全 分子对接 autodock mgltools PDB PubChem 7-zip 大版本升 升级Ubuntu系统 sublime text3 子系统 内存管理 行情服务器 股票交易 速度慢 切换 股票量化接口 股票API接口 机械臂 显卡驱动持久化 GPU持久化 智能合约 哈希算法 电路仿真 multisim 硬件工程师 硬件工程师学习 电路图 电路分析 仪器仪表 umeditor粘贴word ueditor粘贴word ueditor复制word ueditor上传word图片 ueditor导入word ueditor导入pdf ueditor导入ppt SystemV IPv6 IPv6测试 IPv6测速 IPv6检测 IPv6查询 空间 查错 实时内核 servlet Echarts图表 折线图 柱状图 异步动态数据 可视化效果 大模型训练/推理 推理问题 mindie 动态规划 程序化交易 量化交易 高频交易 终端 分布式账本 信任链 共识算法 LVM lvresize 磁盘扩容 pvcreate 安全漏洞 考试 chromium dpi 脚本 智能体开发 IP配置 netplan 终端工具 远程工具 Xshell 打不开xxx软件 无法检查其是否包含恶意软件 autoware c/s AimRT massa sui aptos sei ubuntu安装 linux入门小白 券商 股票交易接口api 类型 特点 金仓数据库概述 金仓数据库的产品优化提案 webview element-ui 上传视频并预览视频 vue上传本地视频及进度条功能 vue2选择视频上传到服务器 upload上传视频组件插件 批量上传视频 限制单个上传视频 区块链项目 PyQt PySide6 Claude Desktop Claude MCP Windows Cli MCP pyside6 界面 resolv.conf 设备树 软件开发 免费 源代码管理 arkTs 跨域请求 Bug解决 Qt platform OpenCV GRE