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

简介: 本文详细介绍了如何使用网络抓包工具Wireshark进行网络抓包分析,包括以太网v2 MAC帧、IP数据报、ICMP报文和ARP报文的格式,以及不同网络通信的过程。文章通过抓包分析展示了IP数据报、ICMP数据报和ARP数据报的具体信息,包括MAC地址、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类型

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 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——地址掩码应答

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服务器地址

相关文章
|
10天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
6天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2506 14
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
6天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1519 14
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
8天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
531 13
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19282 30
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18836 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17524 13
Apache Paimon V0.9最新进展
|
8天前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
458 48
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
1天前
|
云安全 存储 运维
叮咚!您有一份六大必做安全操作清单,请查收
云安全态势管理(CSPM)开启免费试用
355 4
叮咚!您有一份六大必做安全操作清单,请查收
|
2天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。