我的上一篇文章《Linux编程之PING的实现》里使用ICMP协议实现了PING的程序,ICMP除了实现这么一个PING程序,还有哪些不为人知或者好玩的用途?...这里我将介绍ICMP另一个很有名的黑科技:ICMP洪水攻击。...ICMP洪水攻击属于大名鼎鼎的DOS(Denial of Service)攻击的一种,一种是黑客们喜欢的攻击手段,这里本着加深自己对ICMP的理解的目的,也试着基于ICMP写一段ICMP的洪水攻击小程序...要实现ICMP的洪水攻击,需要以下三项的知识储备: DOS攻击原理 ICMP的深入理解 原始套接字的编程技巧 一、ICMP洪水攻击原理 ICMP洪水攻击是在ping的基础上形成的,但是ping程序很少能造成目的及宕机的问题...ICMP应答包,造成来自四面八方的洪水淹没目的主机的现象。
前言:昨天有个同学碰到发送udp包时收到destination unreachable的icmp包问题,本文简单介绍一下linux5.9中icmp包的处理流程。...icmp包结构如下。 ? 收到icmp包的处理流程 我们从收到ip包开始分析。...所以会执行icmp对应的handler。那么对应的是哪个函数呢?我们看看inet_protos是什么。...下面我们看看icmp的函数集。...我看看icmp_pointers的定义。
ICMP ICMP用来传递差错控制,查询等信息。 ICMP Echo消息常用于诊断源和目的之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。...当网络设备无法保证访问目标网络时,会自动发送ICMP目的不可达报文到发送端设备 type表示ICMP消息类型,code表示同一消息类型中的不同信息。 ICMP的一个典型应用是ping。...用户可以在ping命令中指定不同参数,如ICMP报文长度、发送ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行ping测试。...如果不指定源IP地址,将采用出接口的IP地址作为ICMP echo-request报文发送的源地址。 2、-c count指定发送ICMP echo-request报文次数。...缺省值是255 4、-t timeout指定发送完ICMP echo-request后,等待ICMP echo-replay的超时时间。 Tracert ICMP的另一个典型应用是Tracert。
ICMP协议的作用:ICMP协议是IP协议的一个辅助,它可以传递差错报文以及其他信息 Ping用到的是ICMP协议,不是端口。...我们可以用tcpdump来抓取icmp的数据包就可以看到整个数据的本来面目了。 1.ICMP协议: ICMP经常被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。...ICMP数据报的数据发送前需要两级封装:首先添加ICMP报头形成ICMP报文,再添加IP报头形成IP数据报。因此我们还需知道IP报文的格式。...Exploring TCP Connection Time_Wait in Linux 8.ping执行打印的信息 输出字节数,是64;输出目的主机的IP地址,是通过DNS协议解析来的;输出icmp_seq...Linux Tcpdump: Filter ipv6 ntp ping packets ————————————————
ICMP 是干啥用的 它到底是用来干啥的呢?为啥叫控制报文协议,控制的是什么? ICMP 分为查询报文和差错报文两大类。...ICMP 协议说明 虽然工作在网络层,看上去和 IP 协议是并列的,但是 ICMP 报文要附加 IP 头,一般被 IP 层或者更高层的协议(例如TCP或UDP)使用。...下面这张图是 ICMP 的分类,包括查询报文和差错报文,需要原始 Excel 的同学可以回复 ICMP获取源文件。...查询报文 将 ICMP 用作查询报文的场景比较少,用作查询报文的意思就像是使用 ARP 协议或者 TCP 协议这种,是我们主动发起的,只不过选了 ICMP 协议。...总结 1、 ICMP 在网络层,但要加上 IP 首部; 2、ICMP 分为查询报文和差错报文,主要用到的还是差错报文; 3、ICMP 的差错报文就好像一个只通知坏消息的信息,当数据报在网络中出现问题的时候
ICMP有多种类型的报文,同一类型的报文会有多个不同的Code。 ping、tracert 等命令的内部就是用的 icmp 协议。 ?...timeout (此时发送arp请求包,请求目标ip的mac地址) ICMP重定向 ICMP重定向报文是ICMP控制报文中的一种。...一个完整ICMP数据包的封装与解封装 ? 在数据包的传送过程中,目标ip和源ip是一直不变的。...源ip: 11.11.11.11 目标mac: MAC-AR4-0/0/1 源MAC: MAC-PC2 ICMP攻击 ICMP泛洪攻击是最常用的DOS(拒绝服务攻击)之一,顾名思义,就是对目标主机发送洪水般的...--flood 攻击模式,尽可能快的发送报文 -1 发送icmp报文 --ran-source 发送报文时,源IP为随机的IP地址 --icmptype 3 表示ICMP报文类型为目的不可达 --icmpcode
如下图所示,ICMP包有一个8字节长的包头,其中前4个字节是固定的格式,包含8位类型字段,8位代码字段和16位的校验和;后4个字节根据ICMP包的类型而取不同的值。...我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。...ICMP的作用与特点 ICMP的特点: ICMP本身是网络层的一个协议; ICMP差错报告采用路由器-源主机的模式,路由器在发现数据报传输出现错误时只向源主机报告差错原因; ICMP并不能保证所有的IP...Exploring ICMP Port Number with Example ICMP差错报文 报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点: ICMP差错报文都是由路由器发送到源主机的...当路由器发送一份参数错误等的ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的头部和其数据区的前8个字节(64位)。
ping使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。...同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。...即先由IP地址,在网络层传输,然后再根据mac地址由数据链路层传送到目的主机 三、ICMP协议: ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。...在Unix/Linux,序列号从0开始计数,依次递增。而Windows ping程序的ICMP序列号是没有规律。...6)注意不产生ICMP数据报:a.对于已携带ICMP差错报文的数据报,B.对于分片的数据报,如果不是第一片C.具有多播地址的数据报 D.具有特殊地址的(127.0.0.0)数据报 (2)查询报文 1)回送请求与回答
大家好,又见面了,我是你们的朋友全栈君。...http://blog.chinaunix.net/uid-20644632-id-4115863.html 使用snmptrap发送SNMP trap 2014-02-21 13:55:33 分类: LINUX...等工具可以实现trap的发送和接收,下面是具体做法。...为了简单,我们没有指定收到trap后对应的处理程序。...查看snmptrapd的log信息,可以看到我们发送的trap: 2014-01-14 17:08:13 localhost [UDP: [127.0.0.1]:59609->[127.0.0.1]
第21章 TCP的超时与重传 21.10 ICMP的差错 让我们来看一下 T C P是怎样处理一个给定的连接返回的 I C M P的差错。...当前基于伯克利的实现记录发生的 I C M P差错,如果连接超时, I C M P差错被转换为一个更合适的的差错码而不是“连接超时”。...早期的B S D实现在任何时候收到一个主机不可达或网络不可达的I C M P差错时会不正确的放弃连接。...这正是我们所希望的:从 s l i p来的I P数据报发往路由器b s d i(这是一个指向s u n的默认路由器),并到达检测到链路中断的 s u n。...然而,我们所观察到的现象是 s o c k程序在最终放弃时打印出来的差错信息:“没有到达主机的路由”。这与U n i x的I C M P主机不可达的差错类似(图 6 - 1 2)。
1、ICMP简介 ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议。 ICMP的协议号为1。...ICMP报文就像是IP报文的小弟,总顶着IP报文的名头出来混。因为ICMP报文是在IP报文内部的,如图: ? 图:IP数据报 2、ICMP类型 ICMP报文主要有两大功能:查询报文和差错报文。...同理,当路由器收到一个无法传递下去的IP报文时,会发送ICMP目的不可达报文(Type为3)给IP报文的源发送方。报文中的Code就表示发送失败的原因。...并向源发送方发一个ICMP源冷却报文(Type为4),告诉对方:“嘿,我这里客满了,你迟点再来。”...当路由收到IP数据报,发现数据报的目的地址在路由表上没有,它就会发ICMP重定向报文(Type为5)给源发送方,提醒它想要发送的地址不在,去其他地方找找吧。
#ctfhub 杂项 --icmp 技能树–流量分析–icmp–data 1.过滤icmp包 从上面那个包开始有“{‘,到第二张的包后又有...”}“,猜测可能是”{“ 到”}“之间相对应的位置的字母可能就是flag 3.记录 {c87eb99796406ac0b} 再加上ctfhub,flag为”ctfhub{c87eb99796406ac0b
ICMP协议详解 ICMP协议是一个网络层协议。 一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。...如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。 所以我们就需要一种协议来完成这样的功能–ICMP协议。 ICMP协议的功能 ICMP协议的功能主要有: 1....ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6 ICMP的报文格式 ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。...一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。...它与类型字段一起共同标识了ICMP报文的详细类型 校验和 这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错(其计算方法与在我们介绍IP报头中的校验和计算方法是一样的
下面是几种常见的ICMP报文: 1.响应请求 我们日常使用最多的ping,就是响应请求(Type=8)和应答(Code=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(...例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。...——————————–种类————————————- ICMP报文格式 ICMP虽然是网络层的协议,但要将ICMP报文放入IP中发送。...ICMP报文的公共头标由1字节的类型(type)、1字节的 代码(code)和2字节的校验和(checksum)组成。 类型域和代码域用来标识各种ICMP报文。...类型域表示ICMP报文的类型,目前已定义了14 种,从类型值来看ICMP报文可分为二大类。
大家好,又见面了,我是你们的朋友全栈君。 目录 什么是ICMP协议? ICMP出现的原因 那么我们详细介绍一下ICMP协议?...ICMP实现之ping命令 ICMP实现之traceroute命令 ICMP实现之端口扫描 ICMP和安全的关系 为什么停止方便的ICMP? ICMP攻击 抵御方法 什么是ICMP协议?...ICMP协议提供的诊断报文类型 已经定义的ICMP消息类型大约有10多种,每种ICMP数据类型都被封装在一个IP数据包中。主要的ICMP消息类型包括以下几种。...ICMP和安全的关系 为什么停止方便的ICMP? 为什么有停止ICMP 使用的设定项目呢?理由只有一个,那就是确保安全。虽然ICMP 是非常便利的协议,但黑客在尝试非法访问的时候会被恶意利用。...由于ICMP 被恶意使用而遭受损害的用户正在不断增加之中,因此有了限制ICMP 使用的意见。 ICMP攻击 ICMP协议对于网络安全具有极其重要的意义。
ICMP隧道小记 一般的通信协议里,如果两台设备之间需要进行通信,肯定是需要开放端口的,但是ICMP协议不需要。...安装Python-impacket库: apt-get install python-impacket 如果出现下图的情况,更新一下服务器中的包即可 如果还是不可以的话,就只能用pip了 pip2...install impacket step 3 配置 因为icmpsh工具要代替系统本身的ping命令的应答程序,所以需要输入如下命令来关闭本地系统的ICMP答应(如果要恢复系统答应,则设置为0),否则...Shell的运行会不稳定。...sysctl -w net.ipv4.icmp_echo_ignore_all=1 隧道利用完记得换回来1改成0就好 step 4 Run .
分析: 代码:linux-4.0.4/net/ipv4/icmp.c 1,在分析icmp之前,先分析一下:linux-4.0.4/net/ipv4/af_inet.c ?...icmp协议的handler是icmp_rcv: ? 2,icmp_echo icmp_rcv收到icmp request,回复icmp reply。 ?...或者找到ICMP_ECHO的handler,改成icmp_discard,再或者,在int icmp_rcv(struct sk_buff *skb)收到IP层传递过来包的时候,直接drop。...6,使用iptables iptables,一个运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的流动与转送。...在大部分的Linux系统上面,iptables是使用/usr/sbin/iptables来操作,文件则放置在手册页(Man page)底下,可以通过 man iptables 指令获取。
下面是一些基础的关于icmp协议的知识。 3.ICMP报文类型 ICMP 报文大致可分为两类:差错报文、查询报文。...3.1 ICMP 差错报文的类型分析: 1、ICMP 目标不可达消息:IP 路由器无法将 IP 数据报发送给目的地址时,会给发送端主机返回一个目标不可达 ICMP 消息,并在这个消息中显示不可达的具体原因...ICMP 回显请求和 ICMP 回显应答报文是配合工作的。当源主机向目标主机发送了 ICMP 回显请求数据包后,它期待着目标主机的回答。...目标主机在收到一个 ICMP 回显请求数据包后,它会交换源、目的主机的地址,然后将收到的 ICMP 回显请求数据包中的数据部分原封不动地封装在自己的 ICMP 回显应答数据包中,然后发回给发送 ICMP...5.不产生ICMP的情况: 1.ICMP差错报文不会产生ICMP差错报文(出IMCP查询报文)(防止IMCP的无限产生和传送) 2.目的地址是广播地址或多播地址的IP数据报。
ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。...当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示。 各字段说明 类型:占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。...第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。 代码:占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。...校验和:这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的。...标识:占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。
icmp-ptunnelwget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gzapt install -y byaccapt install
领取专属 10元无门槛券
手把手带您无忧上云