ICMP(7) | Linux Programmer's Manual | ICMP(7) |
icmp, IPPROTO_ICMP - Linux IPv4 ICMP 核心模块.
本网络核心协议模块实现了基于 RFC792 协议中定义的《互联网控制报文协议》 。它针对网络主机间通讯出错的情况作出回应并给出诊断信息。 用户不能直接使用本模块。相反本模块需与核心中的其他协议进行通讯,而这 些协议将 ICMP 出错信息返回到网络协议的应用层。ICMP 核心模块也回应 ICMP 请求。
如果用 IPPROTP_ICMP 打开原始套接字(raw socket)时, 用户协议有可以收到任意本地套接字 ICMP 包。 IPPROTO_ICMP. 请参阅 raw(7) 传递到套接字的 ICMP 包可以用 ICMP_FILTER 套接字选项进行过滤。核心会处理所有 ICMP 包,包括传递到用户的套接字去的。
Linux 对可以到达每个目标主机出错信息包的比率设立了限制。 ICMP_REDIRECT 及 ICMP_DEST_UNREACH 也受进入包的目标路由的限制。
ICMP 支持通过 sysctl 接口来设置一些全局 IP 参数。对 Sysctl 的访问可以通过读、写 /proc/sys/net/ipv4/* 下的文件通过 sysctl(2) 接口进行. 大多数这些 sysctls 对特定 ICMP 类型的数据包数量进行了限制。 Linux 2.2 使用记号单元过滤器对 ICMP 包进行限制。 此值表示超时错误,以秒计,直到到顶后记号单元过滤器被清除为止。
由于在许多其他实现中不支持 IPPROTO_ICMP 原始套接字(raw socket),可移植程序不能依靠这一特性。
当Linux不作为路由器时,将不被发送 ICMP_REDIRECT 包。内核也只有在路由表中的旧网关和路由重新定向超时时才接受这些包。
ICMP_TIMESTAMP 返回的 64 位毫秒为单位的时间戳是自1970年1月1日以来的时间.
Linux 的 ICMP 在内部使用原始套接字(raw socket)来发送ICMP包。 这个原始套接字可能在 netstat(8) 消息输出中出现,带着一个“zero inode”信息。
在2.2版本中将再不支持 ICMP_ADDRESS 请求。
在2.2版本中将不再支持 ICMP_SOURCE_QUENCH
RFC792 对ICMP协议进行了详细的叙述。
LetBright <letbright@netease.com>
2000/10/30
http://cmpp.linuxforum.net
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
27 Apr 1999 | Linux Man Page |