ICMP
Section: Linux Programmer's Manual (7)
Updated: 27 Apr 1999
Index
NAME 名称
icmp, IPPROTO_ICMP - Linux IPv4 ICMP 核心模块.
DESCRIPTION 描述
本网络核心协议模块实现了基于 RFC792 协议中定义的《互联网控制报文协议》
。它针对网络主机间通讯出错的情况作出回应并给出诊断信息。
用户不能直接使用本模块。相反本模块需与核心中的其他协议进行通讯,而这
些协议将 ICMP 出错信息返回到网络协议的应用层。ICMP 核心模块也回应 ICMP 请求。
如果用 IPPROTP_ICMP 打开原始套接字(raw socket)时,
用户协议有可以收到任意本地套接字 ICMP 包。
IPPROTO_ICMP.
请参阅
raw(7)
传递到套接字的 ICMP 包可以用
ICMP_FILTER
套接字选项进行过滤。核心会处理所有 ICMP 包,包括传递到用户的套接字去的。
Linux 对可以到达每个目标主机出错信息包的比率设立了限制。
ICMP_REDIRECT
及
ICMP_DEST_UNREACH
也受进入包的目标路由的限制。
SYSCTLS
ICMP 支持通过 sysctl 接口来设置一些全局 IP 参数。对 Sysctl 的访问可以通过读、写
/proc/sys/net/ipv4/*
下的文件通过
sysctl(2)
接口进行. 大多数这些 sysctls 对特定 ICMP 类型的数据包数量进行了限制。
Linux 2.2 使用记号单元过滤器对 ICMP 包进行限制。
此值表示超时错误,以秒计,直到到顶后记号单元过滤器被清除为止。
- icmp_destunreach_rate
-
发送目的地不可到达 ICMP 消息包的最大数据包比率。这限制了发送到任意一个
路由或目的地的数据包的比率。
这个限制不影响发送用来发现数据链路最大传送单位(MTU)的
ICMP_FRAG_NEEDED包
数据包。
- icmp_echo_ignore_all
-
如果该值不为零,Linux将忽略所有的
ICMP_ECHO
请求。
- icmp_echo_ignore_broadcasts
-
如果该值不为零,Linux将忽略所有发送到广播地址的
ICMP_ECHO
数据包。
- icmp_echoreply_rate
-
发送响应
ICMP_ECHOREQUEST
请求的
ICMP_ECHOREPLY
数据包比率的最大值。
- icmp_paramprob_rate
-
发送
ICMP_PARAMETERPROB
数据包比率的最大值。当一个具有非法 IP 报头数据包到达时将发送这些包。
- icmp_timeexceed_rate
-
发送
ICMP_TIME_EXCEEDED
包比率的最大值。当一个数据包通过太多网段时,这些包用作防止路由回环。
NOTES
由于在许多其他实现中不支持
IPPROTO_ICMP
原始套接字(raw socket),可移植程序不能依靠这一特性。
当Linux不作为路由器时,将不被发送
ICMP_REDIRECT
包。内核也只有在路由表中的旧网关和路由重新定向超时时才接受这些包。
ICMP_TIMESTAMP
返回的 64 位毫秒为单位的时间戳是自1970年1月1日以来的时间.
Linux 的 ICMP 在内部使用原始套接字(raw socket)来发送ICMP包。
这个原始套接字可能在
netstat(8)
消息输出中出现,带着一个“zero inode”信息。
VERSIONS
在2.2版本中将再不支持
ICMP_ADDRESS
请求。
在2.2版本中将不再支持
ICMP_SOURCE_QUENCH