ICMP - Linux手册页

时间:2019-08-20 18:01:54  来源:igfitidea点击:

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):
0Echo Reply回复
3Destination Unreachable *无法到达目的地*
4Source Quench *源骤冷*
5Redirect重新导向
8Echo Request回声请求
BTime Exceeded *超过时间*
CParameter Problem *参数问题*
DTimestamp Request时间戳记请求
ETimestamp Reply时间戳回复
FInfo Request信息请求
GInfo Reply信息回复
HAddress Mask Request地址掩码请求
IAddress 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为零。

另外参见

ip(7),rdisc(8)

RFC 792对ICMP协议的描述。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/