使用Wireshark抓包分析TCP协议

本文详细介绍了Wireshark在数据包分析中的应用,重点讲解了TCP的三次握手和四次挥手过程。通过实例展示了如何使用Wireshark观察TCP连接的建立和关闭,以及在数据传输中如何确保可靠性。内容包括数据链路层、网络层和传输层的关键字段解析,以及TCP序列号和确认应答在保证数据传输可靠性中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wireshark数据包详细栏每个字段对应的分层。

1、分层介绍

1.1、数据链路层

我们点开这个字段,从该字段中可以看到相邻两个设备的MAC地址

1.2、网络层

本层主要负责将TCP层传输下来的数据加上目标地址和源地址。

1.3、传输层

这一层用到了TCP协议

tcp包头

每个字段对应的TCP包头

2、TCP握手过程分析

TCP三次握手示意图

第一次握手:客户端向服务器发送一个SYN段(表示发起连接请求),并且包含客户端的一个初始序列号seq=0

第二次握手:服务端返回一个ACK(对客户端连接请求的应答)+SYN(表示服务端发起连接请求),并且包含服务端的一个初始序列号seq=0,同时返回一个确认号ack=1

第三次握手:客户端给服务端返回一个ACK(对服务端连接请求的应答),并更新自己的序列号seq=1,返回一个确认号ack=1

Wireshark分析握手过程

这是我发起连接请求后抓到的数据包

第一次握手

可以看到,客户端发起一个SYN请求,初始序列号为0

 

 第二次握手

服务端返回SYN+ACK,并且包含服务端的一个初始序列号seq=0,同时返回一个确认号ack=1

 

 第三次握手

客户端返回一个ACK,并且返回一个确认号ack=1,并且将自己的序列号seq更新为1

 到此,TCP三次握手就结束了。客户端与服务端之间已经成功建立起连接。

3、TCP数据传输过程分析

        我们常说TCP是可靠性的传输协议,那么它是如何实现可靠性的数据传输呢,就是通过序列号和确认应答提高可靠性。

        我们从客户端往服务端发送了两次数据,第一次发送了一个字符串"hello",第二次发送了一个字符串"word"。首先客户端发送“hello”时,初始序列号seq为1,服务端接收到数据后,会给一个应答,表示我已经收到了消息,并且这个应答号ack = seq + “接收到的数据长度”,客户端再继续发送时,序列号更新为服务端的应答号的值。

        下面我们就抓包看下这个过程。

        客户端分别向服务器发送了两次消息,第一次发送了一个字符串“hello”,第二次发送了字符串"word"。

        我先从客户端往服务器发送一个字符串 "hello",我们可以看下,大小为6个字节。

        可以看下初始序列号seq为1

         然后看下服务器返回了什么,服务器作了一个应答ack=7,表示接受到了客户端的信息

再看下第二次发送字符串"word"的情况,序列号seq更新为上一次服务端的应答号ack,变为7

 看下服务端的应答,确认号ack为12

 4、TCP四次挥手分析

        TCP四次挥手示意图

 第一次挥手:客户端发起一个FIN,表示客户端希望断开连接。

 第二次挥手:服务端返回一个ACK,表示对客户端断开请求的应答。

 第三次挥手:服务端发起一个FIN,表示服务端希望断开连接。

 第四次挥手:客户端返回一个ACK,表示对服务端断开请求的应答。

         理论上挥手是需要四次的,但抓包分析时,只抓到了三次挥手过程,第二次挥手和第三次挥手合并为一次了。

 第一次挥手

        客户端发起一个FIN请求(表示客户端希望断开连接),序列号seq=12,应答号ack=23。注意这里的应答是上一次数据通信过程中的应答。

第二次,第三次挥手

        服务端返回一个ACK(表示对客户端断开请求的应答) + FIN(表示服务端希望发起断开请求),应答号ack=13,序列号seq=23

 第四次挥手

         客户端返回一个ACK(表示对服务端断开请求的应答),应答号ack=24,序列号seq=13

### 使用 Wireshark 分析 TCP 协议特性的方法 #### 一、启动Wireshark并选择网络接口 为了开始捕获流量,需先打开Wireshark软件,在界面下方有一系列网卡名称列表。点击想要监听的网卡对应的按钮即可开启实时抓包工作。 #### 二、设置过滤条件以便专注于TCP流 由于网络上存在大量不同类型的协议报文,因此建议通过应用显示过滤器`tcp`来限定只查看TCP相关的数据帧[^2]。这有助于减少干扰信息,使关注点集中在目标对象之上。 #### 三、观察三次握手过程中的细节特征 当新的TCP连接被初始化时,会发生著名的“三次握手”。在这个过程中可以注意到如下特点: - 客户端向服务器发送SYN(同步序号)分组; - 服务器回应带有自己初始序列号以及对前一步骤中收到的数据进行了确认的SYN/ACK消息; - 最终由客户端发出仅含ACK标志位置1的数据段完成整个流程,并且此时双方都准备好交换有效载荷了[^3]。 ```bash # 这里提供了一个简单的命令行方式启动Wireshark进行特定端口上的TCP会话捕捉 tshark -f "tcp port 80" ``` #### 四、深入研究TCP头部字段含义及其作用 除了上述基本交互模式外,还应该熟悉其他重要组成部分如源地址、目的地址、端口号等基本信息;更重要的是理解那些可选参数所代表的意义,比如窗口大小缩放因子、时间戳选项等等,这些都会影响到性能表现和安全性方面的问题[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大草原的小灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值