网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式

news2024/12/23 18:24:34

网络抓包分析,IP数据报,MAC帧,ICMP报,ARP报格式以及不同网络通信的过程。

  • 网络抓包工具 wireshark
  • 以太网v2MAC帧
  • IP数据报格式
  • ICMP报文格式
  • ARP协议及ARP报文格式
  • 抓包分析
    • IP数据报抓包分析
    • icmp数据报的抓包分析
    • ARP数据报的抓包分析

网络抓包工具 wireshark

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。


在这里插入图片描述


软件界面如下图:


在这里插入图片描述


以太网v2MAC帧


在这里插入图片描述


MAC帧的帧头包括三个字段。前两个字段分别为6字节长的目的地址字段和源地址字段,目的地址字段包含目的MAC地址信息,源地址字段包含源MAC地址信息。第三个字段为2字节的类型字段,里面包含的信息用来标志上一层使用的是什么协议,以便接收端把收到的MAC帧的数据部分上交给上一层的这个协议。例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报。

MAC帧的数据部分只有一个字段,其长度在46到1500字节之间,包含的信息是网络层传下来的数据。MAC帧的帧尾也只有一个字段,为4字节长,包含的信息是帧校验序列FCS(使用CRC校验)。

IP数据报格式


在这里插入图片描述


  1. 版本(4位):该字段定义IP协议版本,负责向处理机所运行的IP软件指明此IP数据报是哪个版本,所有字段都要按照此版本的协议来解释。如果计算机使用其他版本,则丢弃数据报。
  2. 首部长度(4位):该字段定义数据报协议头长度,表示协议头部具有32位字长的数量。协议头最小值为5,最大值为15
  3. 服务(8位):该字段定义上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。前3位成为优先位,后面4位成为服务类型,最后1位没有定义。这些8位字段用于分配优先级、延迟、吞吐量以及可靠性。
  4. 总长度(16位):该字段定义整个IP数据报的字节长度,包括协议头部和数据。其最大值为65535字节。以太网协议对能够封装在一个帧中的数据有最小值和最大值的限制(46~1500个字节)。
  5. 标识(16位):该字段包含一个整数,用于识别当前数据报。当数据报分段时,标识字段的值被复制到所有的分段之中。该字段由发送端分配帮助接收端集中数据报分段。
  6. 标志(3位):该字段由3位字段构成,其中最低位(MF)控制分段,存在下一个分段置为1,否则置0代表该分段是最后一个分段。中间位(DF)指出数据报是否可进行分段,如果为1则机器不能将该数据报进行分段。第三位即最高位保留不使用,值为0。
  7. 分段偏移(13位):该字段指出分段数据在源数据报中的相对位置,支持目标IP适当重建源数据。
  8. 生存时间(8位):该字段是一种计数器,在丢弃数据报的每个点值依次减1直至减少为0。这样确保数据报拥有有限的环路过程(即TTL),限制了数据报的寿命。
  9. 协议(8位):该字段指出在IP处理过程完成之后,有哪种上层协议接收导入数据报。这个字段的值对接收方的网络层了解数据属于哪个协议很有帮助。
  10. 首部校验和(16位):该字段帮助确保IP协议头的完整性。由于某些协议头字段的改变,这就需要对每个点重新计算和检验。计算过程是先将校验和字段置为0,然后将整个头部每16位划分为一部分,将个部分相加,再将计算结果取反码,插入到校验和字段中
  11. 源地址(32位)源主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间必须保持不变。
  12. 目的地址(32位)目标主机IP地址,该字段在IPv4数据报从源主机到目的主机传输期间同样必须保持不变

ICMP报文格式

ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议(ICMP输入网络层的协议),用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

在这里插入图片描述

ICMP类型

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

ARP协议及ARP报文格式

ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
在这里插入图片描述

硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;
协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);
硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
发送方硬件地址(0-3字节):源主机硬件地址的前4个字节;
发送方硬件地址(4-5字节):源主机硬件地址的后2个字节;
发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
目标IP地址(0-3字节):目的主机的IP地址。

抓包分析

IP数据报抓包分析

打开wireshark软件,然后选择可以正常上网的网卡,然后进行抓包(右键 start capture)即可。


在这里插入图片描述


此时已经抓到了一些数据报,可以开始分析了


在这里插入图片描述


在分析之前,我们还需要做一件小事情,查看一下自己主机的ip信息和mac信息 win+r cmd 进入到控制命令台,然后输入ipconfig/all查看自己的网络配置信息.


在这里插入图片描述

在这里插入图片描述


然后我的wifi网络信息是:

IPv4 地址 : 192.168.122.114(首选)
子网掩码 : 255.255.255.0
物理地址(MAC地址): 4C-D5-77-A3-8E-A9
DNS 服务器 : 192.168.122.55


在这里插入图片描述


分析,此IP数据报的信息(恰好是tcp的数据报),我们知道网络是协议层层封装,所以应该是mac数据链路层->网络层ip->运输层tcp/udp->更高层次协议封装。

一、观察图中的数据,首先,前14个字节应该为mac的头部:

1. 4c d5 77 a3 8e a9 为我的wifi网卡的源mac地址.
2. e2 02 f5 b1 d1 c7 应该为网关的mac地址信息即目的mac.
3. 接下来是 0800 即 mac地址格式中的类型字段,表明当前接收的数据是ip数据报.

二、前14个字节,为mac帧的头部信息,所以从第15个字节开始,里面封装的应该是ip数据报

然后在ip数据报的格式中的话,我们首要的任务是找到其中的目的IP和源IP,经过上面的IP数据报格式得知,IP数据报首部每行4个字节。

  1. 对应的协议字段应该为第10个字节,即比特流中的第24个字节,对应下图的06,即此ip数据报的协议是tcp
  2. 源IP地址和目的IP地址,应该分别对应的其中第四行(第13-16字节)和第五行(第17-20字节)即比特流中的第27字节开始为源IP地址,第31字节开始为目的IP地址
  3. 源IP地址为75 a1 c0 ef (十六进制) 即 117.161.192.239(十进制)
  4. 目的IP地址为: c0 a8 7a 72 (十六进制)即 192.168.122.114 (十进制)。

在这里插入图片描述


icmp数据报的抓包分析

我们知道icmp最常用的场景就是ping命令和traceroute命令。

所以首先,重新开启wireshark抓包工具,然后在cmd中输入ping命令,比如ping 192.168.122.144(这里我ping的是自己的网关)。


在这里插入图片描述

在过滤器一栏中输入icmp,进行对不同协议的数据报进行过滤

在这里插入图片描述


因为icmp属于ip的一个子协议,然后的话上面也说了它的数据报格式,所以它是封装在ip数据报的数据部分中,即对应比特流中的mac 14字节的首部,ip地址20字节的首部地址,第35字节开始到第38字节结束为对应的icmp数据报的首部(4字节)。

03 03 73 7e 即为icmp的数据报首部。

  1. 第一个 03 为icmp的首部类型,对应十进制的3表示 Network Unreachable——网络不可达
  2. 第二个 03 为icmp的首部代码,对应十进制的3表示 Port Unreachable——端口不可达
  3. 73 7e 为icmp的首部校验和

在这里插入图片描述


ARP数据报的抓包分析

首先,查看一下本机的arp高速缓存表,使用命令arp -a.


在这里插入图片描述


同样,在过滤器中输入arp进行过滤查看,我们随便挑一条来分析下


在这里插入图片描述


先瞅一眼,mac帧的类型为 0806 即 封装的数据是arp的数据报

然后arp协议是封装在mac帧内部的,所以我们从比特流中的第15个字节开始看

  1. 00 01 对应的前两个字节硬件类型 ,十进制1代表以太网
  2. 08 00 两个字节对应协议类型0x0800即为ip协议
  3. 06 对应硬件长度
  4. 04 对应协议长度为4
  5. 00 02 对应操作类型 对应的十进制2表示arp响应。(ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4)
  6. 4c d5 77 a3 8e a9 就是完整的源mac地址
  7. c0 a8 7a 72 对应完整的源IP地址 192.168.122.144 我的wifi网卡的ip地址
  8. e2 02 f5 b1 d1 c7 对应完整的目的MAC地址
  9. c0 a8 7a 37 就是目的IP地址 192.168.122.55 我的DNS服务器地址

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下Release版本Qt程序生成日志和dump文件(用于程序异常崩溃检测)

文章目录 前言一、基于qInstallMessageHandler生成输出日志二、基于qBreakpad生成dump文件三、基于DbgHelp和SetUnhandledExceptionFilter生成dump文件四、示例完整代码五、下载链接总结 前言 在实际项目开发时,一般打包发布给客户的程序是release版本Qt程序&#…

Spark大数据处理学习笔记(2.2)搭建Spark Standalone集群

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/DrziJ】 文章目录 一、在master虚拟机上安装配置Spark1.1 将spark安装包上传到master虚拟机1.2 将spark安装包解压到指定目录1.3 配置spark环境变量1.4 编辑spark环境配置文件1.5 创建slaves文件&…

Unity记录3.3-地图-柏林噪声生成 2D 地图

文章首发及后续更新:https://mwhls.top/4486.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 汇总:Unity 记录 摘要:柏林噪声生成…

再学C语言51:C库中的字符串函数(3)

一、strcpy()函数 功能&#xff1a;复制字符串&#xff0c;在字符串中的作用等价于赋值运算符 示例代码&#xff1a; /* test of strcpy() function */ #include <stdio.h> #include <string.h>int main(void) {char arr1[] "Easy doesnt enter into grow…

基于html+css的图片展示19

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

【AI生产力工具】Midjourney:为创意人士提供创造性灵感和支持的工具

文章目录 一、Midjourney是什么&#xff1f;二、Midjourney的优势三、Midjourney的应用四、结语 在现代社会&#xff0c;创意和创新成为越来越重要的能力。然而&#xff0c;创意灵感的获取却不是一件容易的事情&#xff0c;这就需要我们使用一些辅助工具来帮助我们发现和实现创…

照片尺寸怎么修改,3大工具推荐

照片尺寸怎么修改&#xff1f;对于许多人来说&#xff0c;调整图片的尺寸可能是一个日常任务&#xff0c;无论是个人或者工作上都可能会遇到这个需求。适当地调整图片的尺寸可以让图片更具专业性和美观性&#xff0c;而且能够减小文件大小&#xff0c;提高图片的加载速度。在电…

2023年4月北京/西安/郑州/深圳CDGA/CDGP数据治理认证考试报名

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

如何用 Leangoo领歌做迭代规划及迭代执行。

迭代是敏捷开发的核心&#xff0c;正确的迭代可以帮助敏捷团队提高工作交付速度&#xff0c;今天&#xff0c;我们深度看下如何用Leangoo领歌敏捷工具进行迭代规划和迭代执行&#xff0c;高效落地 Scrum。 1、确定迭代需要做的需求 在需求看板中&#xff0c;将已经梳理好的用…

C++ -3- 类和对象 (中) | 构造函数与析构函数(一)

文章目录 1.类的6个默认成员函数2.构造函数3.析构函数构造函数与析构函数应用场景缺省值初始化 1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自…

网络安全必学渗透测试流程

这个靶场是一个对渗透新手很友好的靶场。而且&#xff0c;该靶场包含了渗透测试的信息收集&#xff0c;漏洞利用和权限提升的全过程&#xff0c;对新手理解渗透测试的流程有很好的帮助。 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmHundred 靶场基本情…

关系数据库(查询优化)

选择操作的实现select * from student where Sno201212128; 简单的全表扫描法优点&#xff1a;对于小表简单有效 缺点&#xff1a;对于大表顺序扫描浪费时间效率低下索引扫描方法 连接操作的实现 连接操作是查询处理中最耗时的操作之一 select *from student,sc where s…

云上数据变革:Databend Cloud 正式发布

2023 年 4 月 20 日&#xff0c;Databend Cloud 经历了近两年的打磨终于发布了&#xff01;&#x1f389; 此次发布会由北京数变科技有限公司【Databend Labs】联合阿里云共同举办。Databend Cloud 借助于云原生数仓 Databend 实现了云简单易用的大数据分析场景。 以下内容来…

Python语言中的注释方法应用

Python语言中的注释方法 在Python编程中&#xff0c;与其他编程语言一样&#xff0c;有良好的注释部分&#xff0c;会让你的程序在后续的改进或优化中&#xff0c;变得便利。同时&#xff0c;给自己培养了良好的编程习惯。 在Python语言中&#xff0c;有两种注释方法。 1.单行…

报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果?

导读 语言模型给我们的生产生活带来了极大便利&#xff0c;但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。 在3月9日智源Live第33期活动「DetectGPT&#xff1a;判断文本是否为机器生成的工具」中&#xff0c;主讲人Eric为我…

API Testing 一个基于 YAML 文件的开源接口测试工具

API Testing 一个基于 YAML 文件的开源接口测试工具&#xff0c;同时支持运行在本地、服务端。 在选择工具时&#xff0c;可以从很多方面进行考量、对比&#xff0c;以下几点是该工具的特色或者优点&#xff1a; 开源与否&#xff0c;atest 采用 MIT 开源协议&#xff0c;是最流…

传智教育“大同互联网职业技术学院”奠基仪式盛大举行,开拓高等职业教育发展新版图

2023年4月20日&#xff0c;大同市“数字经济职业教育发展论坛暨大同互联网职业技术学院奠基仪式”在大同隆重举行。论坛由中共大同市委、大同市人民政府主办&#xff0c;大同市教育局、传智教育承办&#xff0c;并全程在多平台进行线上直播。 大同市委副书记、市长张强&#x…

学生成绩管理系统winform+SqlServer

主要技术&#xff1a; 基于C#winform架构和sql server数据库 功能模块&#xff1a; 学生选课&#xff0c; 可以查询个学期各科成绩 查看或者选择选课信息 显示当前课表&#xff0c;管理员后台管理 开设课程 课程查询&#xff08;上课时间和地点&#xff09; 录入该课程下的…

【Java】jieba结巴分词器自定义分词词典 超详细完整版

发现一款很轻量好用的分词器->结巴分词器 分享给大家 不仅可以对常规语句分词&#xff0c;还可以自定义分词内容&#xff0c;很强大&#xff01;&#xff01; 源码地址&#x1f449;&#xff1a;https://github.com/huaban/jieba-analysis 简单使用 如果是常规的语句&#…

transformer与vit

transformer结构&#xff0c;位置编码复现 https://wandb.ai/authors/One-Shot-3D-Photography/reports/-Transformer—Vmlldzo0MDIwMjc 训练部分 https://nlp.seas.harvard.edu/2018/04/03/attention.html#training transform训练代码从0构建 https://blog.csdn.net/BXD1…