最全Wireshark网络抓包分析_wireshark抓包数据怎么看,想给金三银四找工作的程序员几点建议

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

| OP | 16比特 | 操作类型: 1 ARP请求 2 ARP应答 3 RARP请求 4 RARP应答 |
| Ethernet Address of sender | 48比特 | 发送方以太网地址。这个字段和ARP报文首部的源以太网地址字段是重复信息。 |
| IP Address of sender | 32比特 | 发送方的IP地址。 |
| Ethernet Address of destination | 48比特 | 接收方的以太网地址。发送ARP请求时,该处填充值为0x00.00.00.00.00.00。 |
| IP Address of destination | 32比特 | 接收方的IP地址。 |

3.3 抓包分析

3.3.1 先arp -d把arp表清空。

arp -a查看ARP表已被清空。抓192.168.240.130的ip

3.3.2 过滤ARP协议的数据包

显示过滤器中输入:arp,过滤ARP协议的数据包。

3.3.3 Ping 目标IP

第一个包是ARP请求包,第二个包是ARP响应包。

3.3.4 第一个数据包请求分析

目标地址(Destination字段)是 Broadcast,就是广播的意思

第一处:ARP后面的括号里是 request,说明这是个请求包

第二处:源IP、源MAC、目标IP都有值,目标MAC却全是0,意思就是告诉他们:我不知道这个IP的MAC地址。

3.3.5 第二个数据包应答分析

第一处:ARP后面的括号里是 reply,说明这是个响应包

第二处:源IP、源MAC、目标IP、目标MAC都有值,接收方可以从这里获取IP对应的MAC地址。

3.3.6 arp -a 查看ARP表

ARP的学习能力:解析成功的MAC地址会被临时缓存,以节约资源。

3.3.7 再次访问Ping 目标IP

第二次访问,ARP表中已经缓存了MAC地址,所以这次ARP请求不再广播,而是直接从ARP表中获取。

4. ICMP抓包分析

4.1 ICMP介绍

ICMP(Internet Control Message Protocol)网际报文控制协议,用于传输错误报告控制信息,对网络安全有极其重要的意义。

例如请求的服务不可用、主机或路由不可达,ICMP协议依靠IP协议来完成任务,是IP协议的一个集成部分。

通常不被用户网络程序直接使用,多用于ping和tracert等这样的诊断程序。

4.2 报文格式

ICMP协议是IP的一个组成部分,负责传递 。

字段长度含义
Type1字节消息类型: 0:回显应答报文 8:请求回显报文
Code1字节消息代码,此处值为0。
Checksum2字节检验和。
Identifier2字节标识符,发送端标示此发送的报文
Sequence Number2字节序列号,发送端发送的报文的顺序号。每发送一次顺序号就加1。
Data可变选项数据,是一个可变长的字段,其中包含要返回给发送者的数据。回显应答通常返回与所收到的数据完全相同的数据。

4.3 抓包分析

ping是用来测试网络连通性的命令。

一旦发出ping命令,主机会发出连续的测试数据包到网络中,在通常的情况下,主机会收到回应数据包,ping采用的是ICMP协议。

4.3.1 确定目标地址

选择192.168.240.130作为目标地址。

4.3.2 第一个数据包进行分析

报文由IP首部和ICMP报文组成。

4.3.3 第二个数据包进行分析

4.3.4 错误诊断

“Type:0,Code:0”表示报文类型为诊断报文类型请正常的包。ICMP提供多种类型的消息为源端节点提供网络额故障信息反馈,报文类型可归纳如下:

ICMP消息类型代码对应表

类型Type代码Code描述
00回显应答(ping应答)
30网络不可达
31主机不可达
32协议不可达
33端口不可达
34需要进行分片但设置不分片比特
35源站选路失败
36目的网络不认识
37目的主机不认识
38源主机被隔离(作废不用)
39目的网络被强制禁止
310目的主机被强制禁止
311由于TOS,网络不可达
312由于TOS,主机不可达
313由于过滤,通信被强制禁止
314主机越权
315优先权中止生效
40源端被关闭
50对网络重定向
51对主机重定向
52对服务类型和网络重定向
53对服务类型和主机重定向
80请求回显(ping请求)
90路由器通告
100路由器请求告
110传输期间生存时间为0
111在数据报组装期间生存时间为0
120坏的IP首部
121缺少必须的选项
130时间戳请求(作废不用)
140时间戳应答(作废不用)
150信息请求(作废不用)
160信息应答(作废不用)
170地址掩码请求
180地址掩码应答

5. UDP抓包分析

5.1 udp介绍

UDP(User Datagram Protocol)用户数据报协议,提供面向事务的简单不可靠信息传送服务。

  1. 将网络数据流压缩成数据包的形式。每一个数据包的前8个字节保存包头信息,剩余的包含具体的传输数据。
  2. 虽然UDP是不可靠的传输协议,但它是分发信息的理想协议,例如在屏幕上报告股票市场、显示航空信息;
  3. 在路由信息协议RIP(Routing Information Protocol)中修改路由表、QQ聊天、迅雷、网络电话等。
  4. TCP的效率不一定比UDP低,只要窗口足够大,TCP也可以不受往返时间的约束而源源不断地传数据。

1)UDP的优势

  1. UDP 协议的头长度不到TCP头的一半,所以同样大小的包里UDP携带的净数据比TCP包多。

  2. 没有Seq和Ack等概念,省去了建立连接的开销,DNS解析就使用UDP协议。

2)UDP的劣势

  1. 超过MTU的时候,发送方的网络层负责分片,接收方收到分片后再组装起来,这个过程会消耗资源,降低性能。

  2. 没有重传机制,丢包由应用层处理,某个写操作有6个包,当有一个丢失的时候,就要将6个包重新发送。

  1. 分片机制存在弱点,接收方是根据包中的“More fragments”的flag来判断是否包已接收完,1表示还有分片,0表示最后一个分片,可以组装了。

如果持续发送flag为1的UDP,接收方无法组装,就有可能耗尽内存。

5.2 UDP协议的数据格式(传输层) – 8byte

字段长度描述
Source Port2字节标识哪个应用程序发送(发送进程)。
Destination Port2字节标识哪个应用程序接收(接收进程)。
Length2字节UDP首部加上UDP数据的字节数,最小为8。
Checksum2字节覆盖UDP首部和UDP数据,是可选的。
data octets变长UDP负载,可选的。

5.3 抓包分析

5.3.1 捕获到UDP数据包

5.3.2 物理层

表示这是第1262帧数据报的详细信息。其中包的大小为2528个字节

5.3.3 数据链路层

表示以太网帧头部信息。源MAC和目标MAC地址

5.3.4网络层

5.3.5 传输层

5.3.6 数据区

6. TCP抓包分析

6.1 tcp介绍

TCP(Transmission Control Protocol)传输控制协议,一种面向连接、可靠、基于IP的传输层协议,主要目的是为数据提供可靠的端到端传输。

在OSI模型的第四层工作,能够处理数据的顺序和错误恢复,最终保证数据能够到达其应到达的地方。

6.1.1 标志位

SYN: 同步,在建立连接时用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。

FIN: 终止,FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。

ACK: 确认,ACK = 1时代表这是一个确认的TCP包,取值0则不是确认包。

DUP ACK:重复,重复确认报文,有重复报文,一般是是丢包或延迟引起的,从这个报文看应该是丢包了。

URG:紧急,当URG=1时,表示报文段中有紧急数据,应尽快传送

PSH:推送,当发送端PSH=1时,接收端尽快的交付给应用进程

RST:复位,当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接

6.1.2 端口

客户端与不同服务器建立连接时,源端口和目标端口可不同。

6.1.3 TCP三次握手

6.1.4 TCP四次挥手

TCP四次断开,例如关闭页面的时候就会断开连接

6.1.5 TCP概念

1. 发送窗口

无法简单的看出发送窗口的大小,发送窗口会由网络因素决定。发送窗口定义了一次发的字节,而MSS定义了这些字节通过多少个包发送。

2. 拥塞窗口(cwnd)

描述源端在拥塞控制情况下一次最多能发送的数据包的数量。

在发送方维护一个虚拟的拥塞窗口,并利用各种算法使它尽可能接近真实的拥塞点。

网络对发送窗口的限制,就是通过拥塞窗口实现的。

3. 在途字节数(bytes in flight)

已经发送出去,但尚未被确认的字节数。

在途字节数 = Seq + Len - Ack

其中Seq和Len来自上一个数据发送方的包,而Ack来自上一个数据接收方的包。

4. 拥塞点(congestion point)

发生拥塞时候的在途字节数就是该时刻的网络拥塞点。

先从Wireshark中找到一连串重传包中的第一个,再根据该Seq找到原始包最后计算该原始包发送时刻的在途字节数。

5. 慢启动

RFC建议初始拥塞窗口发送2、3、或4个MSS,如果发出去的包都能得到确认,则表明还没到拥塞点,可以收到n个确认增加n个MSS

6. 拥塞避免

慢启动持续一段时间后,拥塞窗口达到一个较大的值,就得放慢RFC建议在每个往返时间增加1个MSS,比如发了16个MSS全部确认,那么就增加到17个MSS

7. 超时重传

发出去的包在等待一段时间(RTO)后,没有收到确认,就只能重传了

8. 快速重传(Fast Retransmit)

不以时间驱动,而以数据驱动重传。如果包没有连续到达,就ACK最后那个可能被丢了的包,如果发送方连续收到3次相同的ACK,就重传。

9. SACK(Selective Acknowledgment)

选择性确认重传,ACK还是Fast Retransmit的ACK,SACK则是汇报收到的数据,在发送端就可以根据回传的SACK来知道哪些数据到了,哪些没有到。

10. 延迟确认(Delayed ACK)

如果收到一个包后暂时没什么数据发给对方,那就延迟一段时间再确认。假如这段时间恰好有数据要发送,那数据和确认信息可以在一个包中发送。

11. LSO

LSO拯救CPU而出的创意,为了缓解CPU的压力,把它的一部分工作外包给了网卡,比如TCP的分段。

启用LSO之后,TCP层就可以把大于MSS的数据块直接传给网卡,让网卡负责分段。

比如“Seq=348586,Len=2776”,被网卡分为“Seq=348586,Len=1388”和“Seq=349974,Len=1388”两个包。

在发送端抓包相当于站在CPU角度,只看到一个分段前的大包,而接收端就可以看到两个包。

所以才会出现只见重传包,不见原始包的情况。

12. Nagle算法

在发出去的数据还没有被确认之前,假如又有小数据生成,那就把小数据收集起来,凑满一个MSS或等收到确认后再发送。

13. Vegas算法

通过监控网络状态来调整发包速度。

当网络状态良好时,数据包的RTT比较稳定,这时可以增大拥塞窗口;

当网络开始繁忙时,数据包开始排队,RTT就会变大,这时就减小拥塞窗口。

6.1.6 选项字段

PTR(Pointer Record):指针记录,PTR记录解析IP地址到域名

TTL(Time to live)

存活时间,限制数据包在网络中存在的时间,防止数据包不断的在IP互联网络上循环,初始值一般为64,每经过一个路由减去1。

通过TTL过滤运营商劫持包,假的包是抢先应答的,所以和真实包的TTL可能不同(例如ip.ttl == 54)

Seq:数据段的序号,当接收端收到乱序的包,就能根据此序号重新排序,当前Seq等上一个Seq号与长度相加获取到

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

6.1.6 选项字段

PTR(Pointer Record):指针记录,PTR记录解析IP地址到域名

TTL(Time to live)

存活时间,限制数据包在网络中存在的时间,防止数据包不断的在IP互联网络上循环,初始值一般为64,每经过一个路由减去1。

通过TTL过滤运营商劫持包,假的包是抢先应答的,所以和真实包的TTL可能不同(例如ip.ttl == 54)

Seq:数据段的序号,当接收端收到乱序的包,就能根据此序号重新排序,当前Seq等上一个Seq号与长度相加获取到

[外链图片转存中…(img-c6G1cqJU-1715819648092)]
[外链图片转存中…(img-PuSf6lmu-1715819648092)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Wireshark 是一款网络封包分析工具,它可以帮助我们捕获并分析网络中的数据包。ICMP 报文是 Internet Control Message Protocol 的缩写,它是 TCP/IP 协议族中的一种辅助协议,主要用于网络连通性检测和错误报告。 在 Wireshark分析 ICMP 报文时,可以通过过滤器将 ICMP 报文筛选出来,例如输入 "icmp" 作为过滤器。然后就可以看到所有 ICMP 报文的详细信息,包括类型、代码、校验和等。我们可以通过这些信息来分析网络中 ICMP 报文的情况。 ### 回答2: Wireshark是一个免费的网络协议分析器,可用于分析网络数据包。其中,ICMP是Internet控制消息协议,可用于向网络上的主机发送诊断消息。在Wireshark中,我们可以使用ICMP过滤器查看和分析收发的ICMP报文。 首先,我们需要打开Wireshark并选择需要进行分析网络接口。在捕获过程中,我们可以使用过滤器过滤掉非ICMP报文,这将使我们的数据集更加清晰。这可以通过在Filter框中输入“icmp”来实现。当我们应用这个过滤器时,Wireshark只会显示接收和发送的ICMP报文。 在分析ICMP报文时,我们需要关注报文的头部。ICMP报文头分为两部分:类型和代码。类型指示了报文的类型(如回显请求或报文失效),而代码则给出了类型的详细信息。例如,回显请求报文的类型是8,代码为0。 除了报文头外,我们还可以分析每个ICMP报文的负载。负载是报文中附加的数据,如 ICMP ECHO-REQUEST报文的标识符和序列号。这些值可以用于分析收到的回显应答报文是否是对应的回显请求报文的响应。 最后,我们可以使用Wireshark的统计功能来分析收到和发送的ICMP报文。从这些统计信息中,我们可以看出网络上的ICMP报文流量,还可以使用此信息来确定网络的运行状况。 总之,Wireshark是一种有用的工具,可用于分析各种网络协议,包括ICMP。使用Wireshark,我们可以分析ICMP报文的头部和负载,并使用统计信息了解ICMP报文流量。 ### 回答3: Wireshark ICMP报文分析 Wireshark是一款常用的网络协议分析工具,它可以通过抓包的方式捕获网络数据流,并对各种协议进行分析。在Wireshark中,使用者可以对捕获的数据进行过滤和搜索,以及对各种协议包进行解析。 ICMP是Internet控制信息协议的缩写,它是TCP/IP协议中的重要协议之一。ICMP报文用于在IP网络中传输诸如状态、错误和控制信息等数据。在Wireshark中,使用者可以通过过滤器对ICMP报文进行筛选和分析,获得有用的网络信息。 ICMP报文格式 ICMP报文包括报文类型、代码和数据三个部分,其中报文类型和代码均为8位二进制数,数据部分为可变长。 ICMP报文类型分为两类:错误报文和询问报文,其中错误报文包括目的不可达、时间超过等报文;询问报文包括请求回显和回显应答报文。 ICMP报文分析 通过Wireshark捕获到ICMP报文后,我们可以对其进行分析并获取有用的网络信息。我们可以选择过滤器icmp进行过滤,仅显示ICMP报文。 对于ICMP报文的分析,我们需要关注以下几个方面: 1. 报文类型和代码 在ICMP报文中,报文类型和代码表示了该报文所传递的信息。我们需要根据不同的报文类型和代码来分析该报文的含义和作用。 2. IP地址和MAC地址 在ICMP报文中,源地址和目的地址字段表示了该报文的发送者和接收者。我们可以根据这两个字段来确定网络中的设备和它们之间的通信方式。 3. 报文的数据部分 在ICMP报文的数据部分中,包含了很多有用的网络信息,例如Ping命令所发送的信息等。我们可以对数据部分进行解析以获取更多的网络信息。 ICMP报文分析的应用 ICMP报文分析可以应用于网络管理、故障诊断、安全监控等领域。例如,通过分析ICMP错误报文可以诊断和解决网络中出现的问题;通过分析ICMP询问报文可以检测网络中的设备是否正常工作等。此外,ICMP报文分析还可以帮助网络管理员检测和防范网络安全威胁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值