ICMP协议详解

  • 1 ICMP概述
  • 2 报文结构及类型
    • 2.1 报文结构
    • 2.2 报文类型
      • 2.2.1 差错报告报文
      • 2.2.2 查询报文
    • 2.3 类型及代码组合一览表
  • 3 用法
    • 3.1 命令
    • 3.2 tracert原理
  • 4 ICMP攻击与抵御方法
    • 4.1 攻击方法
    • 4.2 抵御方法
  • 5 总结
  • 6 参考文献

1 ICMP概述

  1. 定义:ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
  2. 控制消息:是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
  3. 作用:从技术角度来说,ICMP就是一个“错误探测与回报机制”,主要作为:
    1. 网络探测:ping
    2. 路由跟踪:tracert
    3. 错误反馈:不管是什么协议产生的数据帧,只要传输发生错误,就会触发ICMP协议。
  4. 地位:ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP、ARP、RARP及 IGMP共同构成 TCP/IP 模型中的网络层。

2 报文结构及类型

2.1 报文结构

  • ICMP生成的报文主要由ICMP头与数据组成:

    • ICMP头由ICMP类型与代码组成。
    • 数据仅起到填充作用,无实际意义。

2.2 报文类型

2.2.1 差错报告报文

  • 用途:主要用来向IP数据报源主机返回一个差错报告信息,这个错误报告信息产生的原因是路由器或主机不能对当前数据报进行正常的处理,例如无法将数据报递交给有效的协议上层,数据报因为生存时间TTL为0而被删除等。
  • 类型及报文功能
    • 类型3:目标不可达
    • 类型4:源站抑制
    • 类型5:重定向(改变路由)
    • 类型11:数据报超时(由最后一个路由器向源主机发回报文)
    • 类型12:数据报参数错误

2.2.2 查询报文

  • 用途:用于一台主机向另一台主机查询特定的信息,通常查询报文都是成对出现的,即源主机发起一个查询报文,在目的主机收到该报文后,会按照查询报文约定的格式为源主机返回一个应答报文。
  • 类型及报文功能
    • 类型8或0:回送请求或应答
    • 类型10或9:路由器询问和通告
    • 类型13或14:时间戳请求或应答
    • 类型15或16:信息请求或应答
    • 类型17或18:地址掩码请求或应答

2.3 类型及代码组合一览表

TYPE CODE Description Query Error
0 0 Echo Reply——回显应答(Ping应答) x
3 0 Network Unreachable——网络不可达 x
3 1 Host Unreachable——主机不可达 x
3 2 Protocol Unreachable——协议不可达 x
3 3 Port Unreachable——端口不可达 x
3 4 Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特 x
3 5 Source routing failed——源站选路失败 x
3 6 Destination network unknown——目的网络未知 x
3 7 Destination host unknown——目的主机未知 x
3 8 Source host isolated (obsolete)——源主机被隔离(作废不用) x
3 9 Destination network administratively prohibited——目的网络被强制禁止 x
3 10 Destination host administratively prohibited——目的主机被强制禁止 x
3 11 Network unreachable for TOS——由于服务类型TOS,网络不可达 x
3 12 Host unreachable for TOS——由于服务类型TOS,主机不可达 x
3 13 Communication administratively prohibited by filtering——由于过滤,通信被强制禁止 x
3 14 Host precedence violation——主机越权 x
3 15 Precedence cutoff in effect——优先中止生效 x
4 0 Source quench——源端被关闭(基本流控制)
5 0 Redirect for network——对网络重定向
5 1 Redirect for host——对主机重定向
5 2 Redirect for TOS and network——对服务类型和网络重定向
5 3 Redirect for TOS and host——对服务类型和主机重定向
8 0 Echo request——回显请求(Ping请求) x
9 0 Router advertisement——路由器通告
10 0 Route solicitation——路由器请求
11 0 TTL equals 0 during transit——传输期间生存时间为0 x
11 1 TTL equals 0 during reassembly——在数据报组装期间生存时间为0 x
12 0 IP header bad (catchall error)——坏的IP首部(包括各种差错) x
12 1 Required options missing——缺少必需的选项 x
13 0 Timestamp request (obsolete)——时间戳请求(作废不用) x
14 0 Timestamp reply (obsolete)——时间戳应答(作废不用) x
15 0 Information request (obsolete)——信息请求(作废不用) x
16 0 Information reply (obsolete)——信息应答(作废不用) x
17 0 Address mask request——地址掩码请求 x
18 0 Address mask reply——地址掩码应答

3 用法

3.1 命令

ping 10.1.1.1        #探测目标IP地址
ping www.baidu.com  #探测域名,DNS会将域名转成IP
tracert 10.1.1.1    #跟踪报文路径,适用于Windows系统
traceroute 10.1.1.1 #跟踪报文路径,适用于Linus系统

3.2 tracert原理

以tracert www.baidu.com为例,描述命令tracert工作原理:

  1. 主机将 [类型为11、代码、数据] 进行ICMP封装后,生成ICMP报文,再封装IP包头,包头中TTL值为1,再封装帧头帧尾,发送数据帧;
  2. 数据帧到达第一个路由器后,路由器解封装后TTL减1等于0,数据帧丢弃,路由器发回应答信息(含有路由器的IP地址)。
  3. 主机收到信息后,再次生成TTL=2的数据帧,再次发送,这次数据帧可以达到第二个路由器,被第二个路由器丢弃后,收到应答信息(含第二个路由器的IP地址)。
  4. 依次类推,直到数据帧达到www.baidu.com所在IP。

4 ICMP攻击与抵御方法

4.1 攻击方法

  • 死亡之Ping:可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”攻击。“Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。(操作系统已经取消了发送ICMP数据包的大小的限制,解决了这个漏洞)
  • ICMP风暴:此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。

4.2 抵御方法

  • 死亡之Ping:对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。
  • 设置ICMP数据包处理规则:方法也有两种,一种是在操作系统上设置包过滤,另一种是在主机上安装防火墙。

5 总结

  1. 了解ICMP的含义及作用;
  2. 掌握ICMP报文结构;
  3. 了解ICMP报文类型以及类型代码一览表;
  4. 理解tracert命令工作原理;
  5. 了解ICMP协议的攻防方法。

6 参考文献

  1. 《ICMP协议》
  2. 《ICMP百科》

第16节 ICMP协议详解相关推荐

  1. 【重识云原生】第四章云网络4.8.2.2节——OpenFlow协议详解

    2 OpenFlow协议详解 2.1 OpenFlow协议简介 OpenFlow协议是基于网络中"流"的概念设计的南向接口协议.在OpenFlow引入了"流"的 ...

  2. ICMP协议 详解,ICMP协议的功能及实现原理,ICMP协议报文类型。

    「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<计算机网络零基础快速入门> ICM ...

  3. 4、以太网基础知识——ICMP协议详解

    返回总目录 上一篇 下一篇 ICMP协议是一个网络层协议.  一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通:但是IP协议并不提供可靠传输.如果丢包了,IP协议并不能通知传输层是 ...

  4. IP协议详解---Linux学习笔记

    网络层概述: IP服务的特点: IP协议为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通讯双方不同步传输状态的信息,因此所有IP数据报发送.传输.接收都是相互独立的,没有上下文关系.这样同 ...

  5. 网络层协议详解(主要是IP协议、ICMP协议和ARP协议)

    网络层协议详解(主要是IP协议.ICMP协议和ARP协议) 一.网络层的功能 定义了基于IP协议的逻辑地址: 连接不同的媒介类型: 选择数据通过网络的最佳路径. 二.IP数据包格式 第一层 版本:该字 ...

  6. http发送16进制报文_阿里云物联网平台使用心得(25)MQTT协议详解UNSUBSCRIBE报文...

    题目 大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖.超子今天给大家介绍一下UNSUBSCRIBE报文. UNSUBSCRIBE报文 从上图中可知,UNSUBSCRI ...

  7. TCP/IP协议详解卷一:Chapter21 笔记

    TCP/IP协议详解卷一:Chapter21 笔记 Chapter 21 TCP的超时与重传 21.3 往返时间测量 21.5 拥塞举例 21.6 拥塞避免算法 21.7 快速重传与快速恢复算法 21 ...

  8. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  9. 网络-IP协议详解(报文格式、分类、NAT、子网、CIDR、抓包分析)

    目录 简介 报文格式 IPv4地址 分类 网络地址转换NAT 子网划分与子网掩码 CIDR 实战 参考 简介 IP(网际互连协议,Internet Protocol)是TCP/IP协议族中最为核心的协 ...

  10. IP协议详解及IPv4与IPv6协议的区别

    IP协议是在TCP/IP协议模型中的重要组成部分,目前我们使用最多的是IPv4协议,IPv6协议的用户量也在慢慢增加,苹果在几年之前就已经开始支持IPv6协议了.我们先来了解一下IPv4和IPv6协议 ...

最新文章

  1. Docker 入门系列(6)- Docker 互联
  2. 基于场效应管2N3819制作非接触电压检测 - 购买到假货了
  3. hdu4642博弈(矩阵)
  4. ERP实施成功与否,企业文化是致命因素?
  5. SQL 基础之用户角色日常操作(十六)
  6. 解决Com调用AutoCAD被呼叫方拒绝接收呼叫
  7. 提高Python程序运行效率三种模式第一种:多进程multiprocessing模块
  8. 死磕 Redis,我有这么几招
  9. Python应用实战-用Python爬取数据分析岗位信息并可视化分析
  10. vs2010 EF4.0 访问mysql
  11. java 指针 引用_java中的引用与c中的指针
  12. 搭建SSM框架的配置文件
  13. XML+Application来编写计数器(二)
  14. 用贪心算法求解最小生成树
  15. 智能开关如何实现双控
  16. 梦工厂将在红帽峰会畅谈云计算心得
  17. highcharts多坐标轴混合图
  18. 解决umi 不是内部或外部命令,也不是可运行程序问题
  19. java程序员必读书籍
  20. c++ string容器

热门文章

  1. 网络游戏营销植入案例
  2. centos7 rpm安装时报警 Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
  3. JDBC中connection.isClosed 和 connection.isValid的区别
  4. ACE认证考试—阿里云产品概念深化学习
  5. 浅析VO、DTO、DO、PO的概念、区别和用处
  6. 【亲自实践能够下载的谷歌地图切片url地址】谷歌地图数据下载的尝试以及Python爬虫实现
  7. 在哪里可以搜索英文文献?
  8. 如何在word 里插入代码?
  9. 汇聚内容页关键词优化的小窍门
  10. 智能优化算法课程设计