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. 选题 Scrum立会报告+燃尽图 05

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8749 一.小组情况组长:贺敬文组员:彭思雨 王志文 位军营 杨萍队名:胜 ...

  2. LeetCode 39. 组合总和(Combination Sum)

    题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限 ...

  3. jenkins部署java项目

    #########################################jenkins部署#################################3 一.jenkins是什么? J ...

  4. python异常处理--try except else raise finally

    转载自https://www.cnblogs.com/bokeyuan11/p/9146607.html 写程序时遇到异常情况,程序可能无法正常运行.此时就需要引入异常处理 1.try ...exce ...

  5. python之注释的分类

    <1> 单行注释 以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用 # 我是注释,可以在里写一些功能说明之类的哦 print('hello world') < ...

  6. golang开发问题

    开发问题: How to find out which types implement which interface in Golang? How do you quickly find the i ...

  7. bulk_create(lst) 批量创建数据

    # 批量创建数据 # Create your views here. from django.db import models from django.shortcuts import HttpRes ...

  8. React之js实现跳转路由

    1.新增知识 /* 实现js跳转路由:https://reacttraining.com/react-router/web/example/auth-workflow 1.要引入Redirect im ...

  9. delphi数组如何初始化

    https://wenda.so.com/q/1535561587217078delphi数组如何初始化rosegirl09112级分类:其他被浏览44次2018.07.01检举满意答案 csx330 ...

  10. centos7成功部署OpenLDAP

    目录 一.部署OpenLDAP. 1 1.安装openLDAP. 1 2.设置openldap管理员密码... 1 3.更改openldap配置... 2 4.更改监控认证配置... 2 5.设置DB ...