DESCRIPTION 描述

本网络核心协议模块实现了基于 RFC792 协议中定义的《互联网控制报文协议》。它针对网络主机间通讯出错的情况作出回应并给出诊断信息。用户不能直接使用本模块。相反本模块需与核心中的其他协议进行通讯,而这些协议将 ICMP 出错信息返回到网络协议的应用层。ICMP 核心模块也回应 ICMP 请求。

如果用 IPPROTP_ICMP 打开原始套接字(raw socket)时,用户协议有可以收到任意本地套接字 ICMP 包。 IPPROTO_ICMP. 请参阅 raw(7) 传递到套接字的 ICMP 包可以用 ICMP_FILTER 套接字选项进行过滤。核心会处理所有 ICMP 包,包括传递到用户的套接字去的。

Linux 对可以到达每个目标主机出错信息包的比率设立了限制。 ICMP_REDIRECTICMP_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”信息。

icmp, IPPROTO_ICMP - Linux IPv4 ICMP 核心模块.的更多相关文章

  1. arp - Linux的ARP核心模块

    描述 这个核心协议模块实现RFC826中定义的 Address Resolution Protocol [译注:即TCP/IP的第三层到第一层的地址转换协议],用于在直接相连的网络中换第二层硬件地址和 ...

  2. Linux学习-核心与核心模块

    谈完了整个开机的流程,您应该会知道,在整个开机的过程当中,是否能够成功的驱动我们主机的硬 件配备, 是核心 (kernel) 的工作!而核心一般都是压缩文件,因此在使用核心之前,就得要将他解 压缩后, ...

  3. Linux学习-额外(单一)核心模块编译

    编译前注意事项 由于我们的核心原本就有提供很多的核心工具给硬件开发商来使用, 而硬件开发商也需要针对核心 所提供的功能来设计他们的驱动程序模块,因此, 我们如果想要自行使用硬件开发商所提供的模块 来进 ...

  4. raw, SOCK_RAW - Linux IPv4 raw socket.

    总 览 #include <sys/socket.h> #include <netinet/in.h> raw_socket = socket(PF_INET, SOCK_RA ...

  5. 云计算:Linux运维核心管理命令详解

    云计算:Linux运维核心管理命令详解 想做好运维工作,人先要学会勤快: 居安而思危,勤记而补拙,方可不断提高: 别人资料不论你用着再如何爽那也是别人的: 自己总结东西是你自身特有的一种思想与理念的展 ...

  6. Nodejs进阶:核心模块net入门与实例讲解

    模块概览 net模块是同样是nodejs的核心模块.在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服务端的通信均依赖于socket(net. ...

  7. 嵌入式linux驱动开发之给linux系统添加温度传感器模块

    忙了几天,终于可以让ds18b20在自己的开发板的linux系统上跑了!虽然ds18b20不是什么新鲜玩意,但是想想知己可以给linux系统添加模块了还是有点小鸡冻呢! 虽然说现在硬件的资源非常丰富而 ...

  8. 嵌入式系统图形库GUI核心模块介绍

    本文转载自:http://blog.csdn.net/xteda/article/details/6575278 (作者 冯青华 信庭嵌入式工作室(www.xteda.com)- CEO Blog:h ...

  9. node八-核心模块、包

    学会查API,远比会几个API更重要. 核心模块意义 -如果只是在服务器运行javascript代码,并没有多大意义,因为无法实现任何功能>读写文件.访问网络 -Node的用处在于它本身还提供可 ...

随机推荐

  1. python利器之切片

     切片 切片的语法表达式为:[start_index : end_index : step],其中: start_index表示起始索引 end_index表示结束索引 step表示步长,步长不能为0 ...

  2. Python对字典分别按键(key)和值(value)进行排序

    使用sorted函数进行排序 sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数;其中iterable表示可以迭代的对象,例 ...

  3. Android Studio在Make Project时下载Grandle特别慢

    SDK下载完成了,建个工程, 又蒙了: Server returned HTTP response code: 502 for URL: https://services.gradle.org/dis ...

  4. self-training and co-training

    半指导学习(Semi-supervised Learning)的概念说起来一点儿也不复杂,即从同时含有标注数据和未标注数据的训练集中学习模型.半指导学习是介于有指导学习与无指导学习之间的一种机器学习方 ...

  5. qrcode-reader——二维码识别

    JavaScript QRCode reader for HTML5 enabled browser 参考资料1:[https://www.npmjs.com/package/qrcode-reade ...

  6. PowerDesigner_15连接Oracle11g,反向工程导出模型图

    1.启动PowerDesigner2.菜单:File->ReverseEngineer->Database出来NewPhysicalDataModel对话框,DBMS选择ORACLEVer ...

  7. Alias sample(别名采样)

    应用场景:加权采样,即按照随机事件出现的概率抽样 具体算法: 举例如上,随机事件出现的概率依次是1/2,1/3,1/12,1/12;记随机事件的个数为N,则所有事件概率乘以N后概率为2,4/3,1/3 ...

  8. 【神经网络与深度学习】Leveldb的一些具体操作说明

    本文转自 http://blog.csdn.net/poweruser5956/article/details/7727325 Leveldb概述 leveldb提供了持久的键值对的存储.key和va ...

  9. Elasticsearch-使用映射来定义各种文档

    ES-使用映射来定义各种文档 每篇文档属于一种类型,而每种类型属于一个索引.从数据的逻辑划分来看,可以认为索引是数据库,而类型是数据库中的表.类型包含了映射中每个字段的定义.映射包括了该类型的文档中可 ...

  10. python 科学计数法转数值

    猜测python应该是有现成的模块可以解决该问题,不过没找到,所以自己简单写了个函数处理: def tranform(inputString): num_value = re.compile('^[0 ...