2.3 - 网络协议 - ICMP协议工作原理,报文格式,抓包实战

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

ICMP协议

  • 1、ICMP协议工作原理
  • 2、ICMP协议报文格式
  • 3、ICMP协议报文类型
  • 4、ICMP协议抓包分析

ICMP(Internet Control Message Protocol)是「控制报文协议」,是IP协议的一个组成部分,负责在主机和路由器之间「传递控制信息」(不传递用户数据),比如网络通不通,主机是否可达等。

1、ICMP协议工作原理

ICMP的功能是「检错」而不是纠错。

它将出错的报文返回给发送方的设备,发送方根据ICMP报文确定「错误类型」,从而更好的重发错误的数据包。

pingtracert 命令就是利用ICMP协议来实现的

  • ping 127.0.0.1:检查网络连通性,ping的过程就是ICMP协议的工作过程。如果对方禁用了ICMP协议,就会Ping不通,但这并不代表网络不通。
  • tracert 127.0.0.1:路由跟踪,显示数据包到达目标主机经过的设备和消耗时间。

2、ICMP协议报文格式

ICMP是IP协议的一部分,因此,ICMP协议的报文包含在IP数据报的数据部分:
在这里插入图片描述
我们结合数据包解释一下每个字段的作用

在这里插入图片描述

  • Type:类型【4位】,标明ICMP报文的作用及格式。
  • Code:代码【4位】,标明报文的类型。
  • Checksum:校验和【8位】,检验报文是否有误。
  • Identifier:标识符【取决于类型】,确定是否是同一次请求响应。
  • Sequence number:序列号【取决于类型】,表示数据包在传输过程中的顺序。

3、ICMP协议报文类型

ICMP协议主要通过 Type Code 的组合,来表示报文的「类型」

比如正常的请求响应:发送方 Type=8 的报文,途中没有异常,接收方就返回 Type=0 的报文

在这里插入图片描述

如果端口不可达,接收方就返回 Type=3,Code=3

在这里插入图片描述
常见的ICMP响应类型:

  • 网络连通:Type=0Code=0
  • 网络不可达:Type=3Code=0
  • 主机不可达:Type=3Code=1
  • 协议不可达:Type=3Code=2
  • 端口不可达:Type=3Code=3

完整的ICMP类型:

TYPECODEDescription
00Echo Reply——回显应答(Ping应答)
30Network Unreachable——网络不可达
31Host Unreachable——主机不可达
32Protocol Unreachable——协议不可达
33Port Unreachable——端口不可达
34Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特
35Source routing failed——源站选路失败
36Destination network unknown——目的网络未知
37Destination host unknown——目的主机未知
38Source host isolated (obsolete)——源主机被隔离(作废不用)
39Destination network administratively prohibited——目的网络被强制禁止
310Destination host administratively prohibited——目的主机被强制禁止
311Network unreachable for TOS——由于服务类型TOS,网络不可达
312Host unreachable for TOS——由于服务类型TOS,主机不可达
313Communication administratively prohibited by filtering——由于过滤,通信被强制禁止
314Host precedence violation——主机越权
315Precedence cutoff in effect——优先中止生效
40Source quench——源端被关闭(基本流控制)
50Redirect for network——对网络重定向
51Redirect for host——对主机重定向
52Redirect for TOS and network——对服务类型和网络重定向
53Redirect for TOS and host——对服务类型和主机重定向
80Echo request——回显请求(Ping请求)
90Router advertisement——路由器通告
100Route solicitation——路由器请求
110TTL equals 0 during transit——传输期间生存时间为0
111TTL equals 0 during reassembly——在数据报组装期间生存时间为0
120IP header bad (catchall error)——坏的IP首部(包括各种差错)
121Required options missing——缺少必需的选项
130Timestamp request (obsolete)——时间戳请求(作废不用)
14Timestamp reply (obsolete)——时间戳应答(作废不用)
150Information request (obsolete)——信息请求(作废不用)
160Information reply (obsolete)——信息应答(作废不用)
170Address mask request——地址掩码请求
180Address mask reply——地址掩码应答

4、ICMP协议抓包分析

Wireshark开启抓包,cmd 执行 ping 192.168.2.1 -n 1,ping一次我的网关。

在这里插入图片描述

Wireshark 过滤 icmp,第一个是ICMP请求包,第二个是ICMP响应包。

在这里插入图片描述

1)先看第一个包,重点看我圈中的字段:

  • Type=8Code=0,表示这是一个回显请求Echo (ping) request
    在这里插入图片描述
  • Checksum Status = Good,表示校验状态是良好的,报文无误
    在这里插入图片描述

2)再看第二个包,重点看我圈中的字段

  • Type=0Code=0,表示这是一个回显应答Echo (ping) Reply
    在这里插入图片描述
  • Response time只出现ICMP响应包,Ping命令返回的响应时间,就是从这里获取的
    在这里插入图片描述
  • Data表示数据包的大小,Ping命令返回的字节,就是从这里获取的
    在这里插入图片描述

3)IdentifierSequence number 这四个字段用来对应请求和响应的关系。

  • 请求和响应中,这四个字段都是一样的,用来标识这次请求。比如我给你发个1,你给我回个1,我就知道我们俩是同一个请求;如果你给我回个2,我就知道我们不是同一个请求,你是回给别人的,你不是会给我的。

在这里插入图片描述

日常使用,主要看TypeCode 这两个字段,知道ICMP的报文类型即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/123294.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

el-date-picker精确到分钟

0 效果 1 代码 使用format、value-format属性格式化即可 :clearable“false” // 取消删除图标 注意: format:“yyyy-MM-dd HH:mm” 小时默认是从00:00开始 format:“yyyy-MM-dd hh:mm” 小时默认是从12:00开始

【爬虫】Java爬虫爬取某招聘网站招聘信息

目录 前言 一、爬虫程序的基本架构 二、如何获取目标网站的页面内容 三、解析HTML页面,提取所需信息 四、代理IP的使用 五、完整代码 总结 前言 随着互联网的普及,越来越多的人开始关注网络上的招聘信息,而传统的求职方式愈发显得不够…

docker部署mysql

docker部署mysql Docker部署MySQL配置远程登录持久化数据创建容器时配置挂载卷后置配置挂载卷 Docker卸载MySQL部署特定版本mysql【出现1251错误】远程连接docker容器中的mysql8.0数据库时出现连接不上 Docker部署MySQL 要使用Docker部署MySQL,你可以使用官方的MyS…

伊朗黑客对以色列科技和教育领域发起破坏性网络攻击

导语 近期,以色列的高等教育和科技领域遭受了一系列破坏性的网络攻击。这些攻击始于2023年1月,旨在部署以前未记录的数据清除恶意软件。在最近的攻击中,攻击者试图窃取个人身份信息和知识产权等敏感数据。本文将介绍这些攻击的具体细节&#…

Go语言开发环境安装,hello world!

1. Go开发包SDK https://golang.google.cn/dl/(国内也可以安装) 根据自己电脑下载对应的安装包,我懒下载了msi安装 然后一路点确定安装Go 2.安装GoLand https://www.jetbrains.com/go/download/#sectionwindows 下载安装包 一路确定安装完…

大数据疫情分析及可视化系统 计算机竞赛

文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据疫…

Linux 安装 Nginx 并配置为系统服务(超详细)

目录 前言安装 Nginx安装依赖项下载Nginx解压Nginx编译和安装防火墙设置启动Nginx 配置 Nginx 为系统服务配置 Nginx 服务文件启动 Nginx 服务设置开机自启动检查 Nginx 状态停止 Nginx 服务重启 Nginx 服务 卸载 Nginx结语 前言 Nginx是一款卓越的高性能Web服务器&#xff0c…

STM32 IIC 实验

1. 可以选择I2C1,也可以选择I2C2,或者同时选择,同时运行 配置时钟信号 为节约空间,选择这两个,然后选择GENERATE CODE 二、HAL_I2C_Mem_Write I2C_HandleTypeDef *hi2c:I2C设备句柄 uint16_t DevAddress&am…

算法进阶指南图论 道路与航线

其实再次看这题的时候。想法就是和强连通分量有关,我们很容易发现,题目中所说的双向边,就构成了一个强连通分量,而所谓的单向边,则相当于把强连通分量进行缩点,然后整个图成为了一个DAG,众所周知…

new Vue() 发生了什么

目录 前言: 原理: 代码: 用法: 总结: 相关资料: 前言: 在Vue.js中,当你创建一个新的Vue实例时,通过 new Vue() 发生了一系列重要的操作,包括Vue实例的初始化、数据绑定、模板编译等。这个过程是Vue应用的核心,本文将深入探…

可恶的 TCP 加速

中午有朋友给我发来一个图片,早期 TCP 规范起草人,david reed 老爷子气坏了: 互联网本是一个以合作而共赢的网络,结果被一群损人不利己的自私的家伙以无知的方式将这基本原则破坏掉了。 我没有能力如此言简意赅且优雅地喷(jerks…

【赠书第2期】嵌入式虚拟化技术与应用

文章目录 前言 1 背景概述 2 专家推荐 3 本书适合谁? 4 内容简介 5 书籍目录 6 权威作者团队 7 粉丝福利 前言 随着物联网设备的爆炸式增长和万物互联应用的快速发展,虚拟化技术在嵌入式系统上受到了业界越来越多的关注、重视和实际应用。嵌入式…

第八章《搞懂算法:逻辑回归是怎么回事》笔记

8.1 如何理解逻辑回归 逻辑回归根据给定的自变量数据集来估计事件的发生概率,由于结果是一个概率,因此因变量的范围在 0 和 1 之间。 逻辑回归的与线性回归一样,也是以线性函数为基础的;而与线性回归不同的是,逻辑回…

【广州华锐互动】VR影视制片虚拟仿真教学系统

随着虚拟现实(VR)技术的不断发展,VR在影视制片教学中的应用场景也变得越来越丰富。本文将介绍VR在影视制片教学中的常见应用场景及其意义,并通过案例分析来更好地展示其应用前景。 在影视制片教学中,VR可以提供一种沉浸式的制作体验。其中&am…

Unity 3D 调整cube的颜色

1.选中Assets后,右键->Create->Material 2.调整Material的颜色,然后将Material拖到对应的cube上

微头条项目实战:通过postman测试登录验证请求

1、CrosFilter package com.csdn.headline.filters; import jakarta.servlet.*; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public class CrosFilter implements Filter {/*** 过滤器方法,用于处理HTTP请求* param servletReq…

【Orangepi Zero2 全志H616】驱动舵机控制 、Linux定时器(signal、setitimer)

一、SG90舵机开发 舵机基本介绍 二、Linux定时器 signal 函数setitimer 函数原型signal、setitimer函数API调用 三、舵机 软件PWM实现 一、SG90舵机开发 舵机基本介绍 如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控…

python爬虫(数据获取——双R)

静态资源加载 静态资源给了请求头和url即可 动态资源加载 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 } url "https://www.xinpianchang.com/api/xpc/comments/article…