ICMP协议(Internet Control Message Protocol)
互联网控制报文协议,所谓控制,就是通过下发指令来感知和控制网络环境,所以它一定是配合一个无法感知网络环境的协议来工作的,这个协议就是IP(包括IPV4和IPV6)
ICMP协议全称Internet控制报文协议,是一个网络层的一个重要协议,一个新搭建好的网络,往往需要先进行一个简单地测试,;来验证网络是否畅通,但是IP协议并不提供可靠传输,如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因,因此我们需要ICMP协议来完成
用来在网络设备间传递各种差错和控制信息
俩个重要应用,在Windows系统和RGOS中进场会使用到
ICMP协议的主要功能:
确认IP包是否成功到达目标地址
通知在发送过程中IP包被丢弃的原因
ICMP的报文格式
ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面,一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少8字节)和ICMP报文(属于ICMP报文的数据部分)
常见的ICMP报文可以分为俩大类,即差错报文和查询报文
差错报文:目的站不可达、数据报超时,主要用于诊断网络故障,比如传输报文被丢弃的原因等
常见ICMP查询报文:回送请求或回答、时间戳请求或回答、路由器询问和通告、信息请求或回答、地址掩码请求或回答,用的较多的是回送请求或回答、时间戳请求或回答,主要用于信息的查询和采集,比如采集传输路径上的每个路由器都是谁,本次传输的报文是否达到目的地等
以前他们主要在主机启动时使用,通过使用这三种查询报文,主机能确定自身在网络环境中IP地址、地址掩码、路由器状况等信息,现在,DHCP协议已经能够完全实现这些功能,此外,在互联网中的俩台主机能够使用时间戳请求或回答报文来确定数据报在彼此之间往返需要的时间
为什么需要ICMP?
IP协议是一个不可靠协议,如果IP包在传输过程中,比如checksum对不上,拥塞,超时等,那么IP包是会直接被丢弃的,之后也不会有进一步的努力来修正
这是IP协议的一个设计准则,就是尽量让IP保持简单的形态,只负责有效率的数据传输,而更多的质量控制交给高层的协议去处理(比如tcp)
通过ICMP协议,当IP包发生错误的时候,上层发送IP包的主机或路由器并不知道下层发生了错误,这个时候,下层的主机或路由器就可以通过发送ICMP包,将错误信息汇报给上层,从而让上层的主机或路由器进行调整
ICMP报文格式
类型:占1个字节,表示较大范围类型分类的ICMP报文
代码:占一个字节,表示较小范围类型分类的ICMP保温牛奶
校验和checksum:占2个字节,ICMP checknum的计算方法类似于IP checknum,但是不同的是IP只校验头部,ICMP校验头部+数据部分
ICMP报文类型
类型表:
| 类型 | 内容 | 种类 | 解释 |
|---|---|---|---|
| 0 | 应答 | R | ping应答 |
| 3 | 目的不可达 | E | 很多细分,如主机/协议等 |
| 4 | 源端抑制 | E | 表示拥塞 |
| 5 | 重定向 | E | 表示最优的路由路径 |
| 8 | 请求 | R | ping请求 |
| 9 | 路由器通告 | R | 告知路由器地址 |
| 10 | 路由器请求 | R | 请求路由器通告 |
| 11 | 超时 | E | TTL = 0 |
| 12 | 参数问题 | E | 有问题的报文 |
R表示查询报文,E表示差错报文
类型细分表
| 类型 | 代码 | 内容 | 解释 |
|---|---|---|---|
| 3 | 0 | 网络不可达 | 没有路由到目的地 |
| 3 | 1 | 主机不可达 | 已知但不可达的主机 |
| 3 | 2 | 协议不可达 | 未知的协议 |
| 3 | 3 | 端口不可达 | 未知的端口 |
| 3 | 4 | 要分片但设置了不分片位 | 路由器MYU限制需分片但无法分片 |
| 3 | 5 | 源路由失败 | 中间跳不可达 |
| 3 | 13 | 管理禁止通信 | 被过滤策略禁止的通信 |
| 3 | 14 | 违反主机优先级 | src/dst/port不准许的优先级 |
| 3 | 15 | 优先级终止生效 | 在最小Tos之下 |
| 5 | 1 | 主机重定向数据报 | 指示一个可选的路由器/主机 |
| 11 | 0 | 在传输期间时间超时 | 跳数限制/TTL超时 |
| 11 | 1 | 分片重组时间超时 | 重组计时器超时之前,有分片未到达 |
| 12 | 0 | 指针指示差错 | 字节偏移指示第一个问题字段 |
| 12 | 2 | 错误的长度 | 数据包有无效的Total Length字段 |
有哪些命令就体现了ICMP
ICMP 的这些包的类型,用户可以充分用来诊断网络的故障情况。
因此诞生了一些利用 ICMP 协议的网络诊断工具,其中比较知名的就是 ping 和 traceroute。这两工具分别利用两种类型的 ICMP 报文:
ping 使用查询类型报文
traceroute 使用差错类型报文
ICMP攻击以及欺骗技术
基于ICMP的攻击可以分为两大类:一是ICMP攻击导致拒绝服务(DoS);另外一个是基于重定向(redirect)的路由欺骗技术。
服务拒绝攻击是最容易实施的攻击行为,目前,基于ICMP的攻击绝大部分都可以归类为拒绝服务攻击,其又可以分成3个小类:
针对带宽的DoS攻击
针对连接的DoS攻击
基于重定向(redirect)的路由欺骗技术
ICMP协议(Internet Control Message Protocol)的更多相关文章
- ICMP(Internet Control Message Protocol)网际控制报文协议初识
ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...
- TCP/IP协议(8): ICMP(Internet Control Message Protocol) 协议 ——诊断和控制 IP 协议层
TCP/IP协议(8): ICMP(Internet Control Message Protocol) 协议 --诊断和控制 IP 协议层 关于网际控制报文协议(Internet Control M ...
- UNIX网络编程——利用ARP和ICMP协议解释ping命令
一.MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit) ...
- 利用ARP和ICMP协议解释ping命令
一.MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit).如果IP ...
- 计算机网络-网络层(6)ICMP协议
互联网控制报文协议(ICMP,Internet Control Message Protocol),被主机和路由器用来彼此沟通网络层的信息 ICMP报文是承载在IP分组中的,即lCMP报文是作为IP有 ...
- TCP/IP详解学习笔记(5)-- ICMP:internet 控制报文协议
1.概述 ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制 ...
- ICMP:internet 控制报文协议
ICMP:internet 控制报文协议 1.概述 ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个 ...
- TCP/IP详解 卷一(第六章 ICMP:Internet控制报文协议)
ICMP是(Internet Control Message Protocol)Internet控制报文协议. 用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可 ...
- [协议]ICMP协议剖析
1.ICMP简介 ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议. ICMP的协议号为1. ICMP报文就像是IP报文的小弟,总顶着IP报文的名头 ...
- ICMP协议
1. ICMP简介: ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制报文协议,协议号为1,网络层协议. 它是TCP/IP协议族的一个子协议,用于在IP主机 ...
随机推荐
- L1-2、Prompt 的基础结构拆解
--写得"清楚",AI才"聪明" Prompt 不只是"让 AI 帮我做事"的指令,它是一种对任务的精准建模,写得越准.越具体,AI 表现就 ...
- @FeignClient注解配置局部超时时间、OkHttp长连接和SocketTimeoutException异常解决办法
问题描述:open feign配置OKhttp调用远程API,连续调用次数较少时,一切正常,次数非常多时(例如,连续请求600次)就抛出java.net.SocketTimeoutException: ...
- 浅析领域驱动模型VO、DTO、BO、PO 等的概念、区别及其用法
摘要:浅析POJO.DTO.DO.VO.BO.PO和Entity等的概念.区别及其用法. 名词解释 领域模型中的实体类分为四种模型:VO.DTO.DO和PO,各种实体类用于不同业务层次间的交互,并 ...
- docker部署mysql5.7后登录时出现Access denied for user 'root'@'localhost' (using password: YES)的解决方法
1.先进去容器中安装vim工具 docker exec -it mysql bash apt-get update apt-get -y install vim 2.修改/etc/mysql/conf ...
- HarmonyOS运动开发:精准估算室内运动的距离、速度与步幅
前言 在室内运动场景中,由于缺乏 GPS 信号,传统的基于卫星定位的运动数据追踪方法无法使用.因此,如何准确估算室内运动的距离.速度和步幅,成为了运动应用开发中的一个重要挑战.本文将结合鸿蒙(Harm ...
- Openstack平台虚拟机疏散失败提示(pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')问题
一.问题的表象 过程:创建完windowserver2012r2版本虚拟机,挂载cinder卷,写入一定的数据 问题:关闭虚拟机所在的宿主机,执行疏散操作,虚拟机疏散失败 二.问题日志 迁移的目的服务 ...
- LeetCode 914卡盘分组
看了官方题解如下: class Solution { public boolean hasGroupsSizeX(int[] deck) { int N = deck.length; int[] co ...
- Eplan教程:供电回路、柜内照明、风机空调
欢迎大家来到"Eplan带你做项目"第四个过程.在第三个过程中,Eplan带你进入了机械设计中的流体工程设计,向大家介绍了Eplan中怎样进行流体工程设计. 在本次过程中,Epla ...
- Fluent Reader - 现代化的桌面RSS阅读器
项目标题与描述 Fluent Reader 是一款现代化的桌面 RSS 阅读器应用,采用 Fluent Design 设计语言,支持全黑暗模式.该项目基于 Electron 构建,提供了跨平台的 RS ...
- 字典树Trie详解
哈喽大家好,我是 doooge ,今天给大家带来 Trie 的详解. \[\Huge \texttt{字典树 Trie 详解} \] 1.Trie是什么? Trie 也叫字典树,前缀树,其本质就是一棵 ...