ping:icmp类型详解

https://forum.huawei.com/enterprise/zh/thread-260997.html
https://zhuanlan.zhihu.com/p/109355299

https://blog.csdn.net/yytian/article/details/4950631

https://support.huawei.com/enterprise/zh/knowledge/EKB1000008773

https://dlutter.com/2020/02/20/NetworkKnowleges1/

那么ICMP有什么作用呢?

我们数据在网络中传输中,会封装成IP数据包,而IP协议的特点是面向无连接,且不可靠的,可靠性由上层来保证。IP协议所要做的就是尽最大努力把数据传输到目的地,如果当在路由器的转发中出错了而不能到达目的地时,IP协议对错误不进行任何报告和纠正,此时主机就不知道路由器那边有什么问题。而ICMP协议正好解决了这个问题。

ICMP主要有两种功能。

Ping:一般用于勘测到达目的网络的连通性

Tracert:用于确定ip数据包访问目标所采取的路径

一、Ping

我们知道有时候我们用电脑去ping一个ip地址,去测试一下对这个ip地址之间的连通性,那么ping是如何进行测试的呢?

Ping的工作过程

①首先ping命令会先发送一个 ICMP Echo Request(请求包)给对端
②对端接收到之后, 会返回一个ICMP Echo Reply(应答包)
③若没有返回,就是超时了,会认为指定的网络地址不存在。

举个例子

image

Pc1 ping PC2,我们在电脑上输入ping 192.168.1.2之后都发生了什么呢?

① Ping 命令会构建一个 固定格式的 ICMP 请求数据包(Echo Request)

② ICMP 协议将这个数据包,连同去往的地址,一起 交给IP 层协议

③ IP协议将本机作为源地址,去往的地址为目的,加上一些其他的控制信息,交给数据链路层协议

④数据链层封装源目MAC地址交给物理层

⑤物理层将其转换成二进制比特流发出

⑥目的主机将比特流转换为数据,收到Echo Request包开始拆包

⑦拆开最外层帧头,发现目的地址与自己相同,继续拆包

⑧继续拆开ip包头,发现协议号为(1),交给ICMP去处理

⑨ ICMP收到之后进行响应,回复Echo reply

我们在电脑上去ping一个地址的时候,不仅能够看到网络是否能够通讯,还能够看到为什么不能进行通讯,比如请求超时,目的不可达,请求被拒绝等等,那么我们的电脑是如何知道这些原因的呢?我们来看一下ping包长什么样子。

ICMP报文格式

image

1、ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和

2、ICMP所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。其它字段都ICMP报文类型不同而不同。

3、8位类型和8位代码字段一起决定了ICMP报文的类型

常用:

类型0,代码0:表示回显应答(ping应答)

类型8,代码0:表示回显请求(ping请求)。
类型11,代码0:超时

类型3,代码0:网络不可达

类型3,代码1:主机不可达

类型5,代码0:重定向

以上是ping如何去测试数据连通性,以及如何响应不通的原因,那么tracert是如何确定ip数据包访问目标所采取的路径呢?

二、Tracert

Tracert工作原理:

1.首先tracert送出3个TTL是1的IP 数据包到目的地,当路径上的第一个路由器收到这个数据包时,它将TTL减1,此时TTL等于0.

2. 所以该路由器会将此数据包丢掉,并送回一个ICMP time exceeded消息(TTL超时消息),里面包括发IP包的源地址,IP包的所有内容及路由器的IP地址

3. tracert 收到这个消息后,便知道这个路由器存在于这个路径上,接着tracert 再送出另一个TTL是2 的数据包,发现第2 个路由器.....以此类推

4. 当数据包到达目的地后,该主机则不会送回ICMP time exceeded消息

5. 一旦到达目的地,由于tracert通过UDP数据包向不常见端口(30000以上)发送数据包,因此会收到「ICMP port unreachable」消息,故可判断到达目的地。

Tracert每次发送三个数据包的原因是为了避免有时候网络不稳定而造成的丢包,所以发送三个,为了保证数据包能够正常到达。

#############################################################################
引言
ICMP消息最初开发出来是为了管理IP网络,经常被网络管理员用作网络故障诊断工具。然而,如今ICMP消息被滥用,甚至被用作网络攻击。出于网络安全考虑或其他需要,需要执行一定的过滤策略让它变得安全一些。大部分ICMP需要被丢弃,也有小部分ICMP消息对于网络正常工作是很关键的,必须被允许通过。

本章介绍常见的ICMP消息名及对应的消息类型和消息码,常被用作网络攻击的有哪些ICMP消息,以及如何通过ACL防止这类攻击。

ICMP消息名及其对应的消息类型和消息码
华为支持通过高级ACL过滤出消息类型值在0255范围内,消息码在0255范围内的ICMP消息。为了直观,可以用消息名替代消息类型和消息码表示消息类型。

ICMP消息名助记符 消息含义 对应的消息类型值 对应的消息码
Echo 回显请求消息 8 0
Echo-reply 回显应答消息 0 0
Net-unreachable 网络不可达 3 0
Host-unreachable 主机不可达 3 1
Protocol-unreachable 协议不可达 3 2
Port-unreachable 端口不可达 3 3
Fragmentneed-DFset 需要进行分片但设置了不分片比特位 3 4
Source-route-failed 源路由选路失败 3 5
Source-quench 源端被关闭(网络流控) 4 0
Net-redirect 对网络重定向 5 0
Host-redirect 对主机重定向 5 1
Net-tos-redirect 对服务类型和网络重定向 5 2
Host-tos-redirect 对服务类型和主机重定向 5 3
TTL-exceeded 传输期间生存时间为0 11 0
Reassembly-timeout 数据重组期间生存时间为0 11 1
Parameter-problem 参数存在问题 12 0
Timestamp-request 时间戳请求 13 0
Timestamp-reply 时间戳响应 14 0
Information-request 信息请求 15 0
Information-reply 信息应答 16 0
Echo和Echo reply
ICMP Echo和Echo reply类型消息在Dos攻击中经常被用到。攻击者向目标设备长时间、连续、大量地发送ICMP echo,对方收到后会回应一个echo-reply。大量的ICMP数据包会形成“ICMP风暴”或称为“ICMP洪流”,使得目标设备耗费大量的CPU资源,疲于奔命。这种攻击被称为拒绝服务(DoS)攻击。

但这两类消息也是很重要的,例如网络管理员经常用于检测网络可达性的ping命令。Ping的原理就是ICMP Echo报文的发送和Echo reply报文的回复。因此,需要确保有限数量的这些消息通过ACL。此时,可配置ACL规则控制Echo和Echo reply消息的传播范围,并对ICMP包进行带宽限制(或限制ICMP包的数量),控制其在一定的范围内。

Redirect
基于重定向(redirect)的路由欺骗技术:攻击者通过模拟路由器地址,发送ICMP REDIRECT报文给目标主机,主机的缺省网关可能被改变,被置为攻击者的地址,导致信息流全部丢失或者都经过攻击者能控制的网关,从而形成攻击和***。

避免ICMP重定向欺骗的最简单方法是将设备配置成不处理ICMP重定向消息。

Unreachable
攻击者模拟给特定路由器持续发送网络上某主机/端口/网段不可达的ICMP报文,通过路由器将无法访问这个主机/端口/网段,仿佛这个主机/端口/网段被从网络上“摘除”一样。

避免ICMP不可达攻击的最简单方法是将设备配置成不处理ICMP不可达消息。

TTL-exceeded
源端发送IP报文时,TTL被设置为某个值。在网络传输过程中,每经过一跳,TTL减1。如果某个网络节点收到TTL=0的数据包时,会丢弃该数据包并回应ICMP的TTL-Exceeded消息给源端。

攻击者通过发送大量数据包,这些数据包的TTL在目标设备将被减为0,使得目标设备疲于回应ICMP的TTL-Exceeded消息给源端,最终导致目标设备瘫痪。

Request
一般黑客在入侵之前,要先对目标主机进行详尽的分析,找出主机可以利用的安全漏洞或弱点,然后乘虚而入。利用ICMP各类Request消息可以搜集目标主机的信息。

例如,入侵者对某一个IP地址,或网段范围内执行一轮自动Ping(发送ICMP Echo Request报文),以确定目标系统是否存在。

再如,入侵者向目的系统发送Timestamp-request报文,请求返回目的系统的日期和时间。可以获得目标系统所在的时区。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342