ICMP - Linux手册页
Linux程序员手册 第7部分
更新日期: 2017-11-26
名称
icmp-Linux IPv4 ICMP内核模块。
说明
此内核协议模块实现RFC 792中定义的Internet控制消息协议。它用于发信号通知错误情况和进行诊断。用户不会直接与此模块互动;相反,它与内核中的其他协议通信,这些协议将ICMP错误传递给应用程序层。内核ICMP模块还回答ICMP请求。
通过使用协议IPPROTO_ICMP打开原始套接字,用户协议可以接收所有本地套接字的ICMP数据包。有关更多信息,请参见raw(7)。可以使用ICMP_FILTER套接字选项过滤传递到套接字的ICMP数据包的类型。即使传递到用户套接字,ICMP数据包也始终由内核处理。
Linux将ICMP错误数据包的速率限制为到达每个目的地。 ICMP_REDIRECT和ICMP_DEST_UNREACH也受传入数据包的目标路由的限制。
/proc interfaces
ICMP支持一组/ proc接口来配置一些全局IP参数。可以通过在目录/ proc / sys / net / ipv4 /中读取或写入文件来访问参数。这些参数大多数是特定ICMP类型的速率限制。 Linux 2.2使用令牌桶过滤器来限制ICMP。该值是以秒为单位的超时,直到突发后清除令牌桶过滤器为止。 jiffy是与系统有关的单位,在i386上通常为10毫秒,在alpha和ia64上通常为1毫秒。
- icmp_destunreach_rate(Linux 2.2 to 2.4.9)
发送ICMP目标不可达数据包的最大速率。这限制了将数据包发送到任何单个路由或目标的速率。该限制不影响路径MTU发现所需的ICMP_FRAG_NEEDED数据包的发送。
- icmp_echo_ignore_all(since Linux 2.2)
如果该值不为零,则Linux将忽略所有ICMP_ECHO请求。
- icmp_echo_ignore_broadcasts(since Linux 2.2)
如果该值不为零,则Linux将忽略所有发送到广播地址的ICMP_ECHO数据包。
- icmp_echoreply_rate(Linux 2.2 to 2.4.9)
发送ICMP_ECHOREPLY数据包以响应ICMP_ECHOREQUEST数据包的最大速率。
- icmp_errors_use_inbound_ifaddr(Boolean; default: disabled; since Linux 2.6.12)
如果禁用,则使用退出接口的主地址发送ICMP错误消息。
如果启用,将使用接收导致ICMP错误的数据包的接口的主地址发送消息。这是许多网络管理员希望从路由器获得的行为。它可以使调试复杂的网络布局变得更加容易。
请注意,如果所选接口的主地址不存在,则无论该设置如何,都会使用第一个具有一个的非环回接口的主地址。
- icmp_ignore_bogus_error_responses(Boolean; default: disabled; since Linux 2.2)
一些路由器通过向广播帧发送虚假响应来违反RFC1122。通常通过内核警告记录此类违规。如果启用此参数,内核将不会发出此类警告,这将避免日志文件混乱。
- icmp_paramprob_rate(Linux 2.2 to 2.4.9)
发送ICMP_PARAMETERPROB数据包的最大速率。当带有无效IP标头的数据包到达时,将发送这些数据包。
- icmp_ratelimit(integer; default: 1000; since Linux 2.4.10)
将发送与类型icmp_ratemask(请参阅下文)匹配的ICMP数据包的最大速率限制为特定的目标。 0禁用任何限制,否则禁用响应之间的最小间隔(以毫秒为单位)。
- icmp_ratemask(integer; default: see below; since Linux 2.4.10)
受速率限制的ICMP类型的掩码。
有效位:IHGFEDCBA9876543210
默认掩码:0000001100000011000(0x1818)- Bit definitions (see the Linux kernel source file
include/linux/icmp.h):
0 Echo Reply 回复 3 Destination Unreachable * 无法到达目的地* 4 Source Quench * 源骤冷* 5 Redirect 重新导向 8 Echo Request 回声请求 B Time Exceeded * 超过时间* C Parameter Problem * 参数问题* D Timestamp Request 时间戳记请求 E Timestamp Reply 时间戳回复 F Info Request 信息请求 G Info Reply 信息回复 H Address Mask Request 地址掩码请求 I Address Mask Reply 地址掩码回复
标有星号的位默认情况下受速率限制(请参见上面的默认掩码)。
- icmp_timeexceed_rate(Linux 2.2 to 2.4.9)
发送ICMP_TIME_EXCEEDED数据包的最大速率。发送这些数据包是为了防止数据包跨越太多跃点时产生环路。
- ping_group_range(two integers; default: see below; since Linux 2.6.39)
允许创建ICMP Echo套接字的组ID的范围(包括最小和最大组ID)。默认值为" 1 0",这表示不允许任何组创建ICMP Echo套接字。
版本
在2.2中删除了对ICMP_ADDRESS请求的支持。
在Linux 2.2中删除了对ICMP_SOURCE_QUENCH的支持。
备注
由于许多其他实现不支持IPPROTO_ICMP原始套接字,因此在可移植程序中不应依赖此功能。
当Linux不充当路由器时,不发送ICMP_REDIRECT数据包。也仅从路由表中定义的旧网关接受它们,并且重定向路由在一段时间后到期。
ICMP_TIMESTAMP返回的64位时间戳是从1970年1月1日00:00:00 +0000(UTC)以来的毫秒数。
Linux ICMP在内部使用原始套接字发送ICMP。此原始套接字可能出现在netstat(8)输出中,且其inode为零。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。