Wireshark抓包分析TCP的建立与断开过程

本文通过Wireshark工具详细解析了TCP连接的建立过程,包括三次握手和四次断开连接的具体步骤,并提供抓包验证方法。此外,还介绍了如何按源IP、目标IP和直接按IP进行过滤。

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



Wireshark抓包分析TCP的建立与断开过程

一、TCP建立连接

TCP建立连接

说明:在此图中HostA充当客户端角色,HostB充当服务器角色。

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN,ACK。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

第一次握手:建立连接时,HostA发送SYN包(SEQ=a)到HostB,并进入SYN_SEND状态,等待HostB确认。

第二次握手:HostB收到SYN包后,必须确认HostA的SYN(ACK=a+1),同时自己也送一个SYN包(SEQ=b),即SYN+ACK包,此时HostB进入SYN_RECV状态。

第三次握手:HostA收到HostB的SYN+ACK包,向HostB发送确认包ACK(ACK=b+1),此包发送完毕,HostA和HostB进入入Established状态,完成三次握手。

抓包验证:

第一次握手

01.SYN

第二次握手

02.ACK+SYN

第三次握手

03.ACK

二、TCP断开连接

TCP断开连接

当数据传输完毕后,需要经过四次握手来断开TCP连接,其步骤如下:

  1. HostA要终止连接,发送序列号为p的段,FIN置位,同时确认此前收到的段;
  2. HostB收到HostA发送的段后,发送ACK段,确认号为p+1,同时关闭连接。
  3. 同时HostB发送序列号为q的段,FIN置位,通知连接关闭;
  4. HostA收到HostB发送的段后,发送ACK段,确认号为q+1,同时关闭连接。

抓包验证:

第一次握手:

04.FIN

第二、三次握手:

05.ACK+FIN

第四次握手:

06.ACK

实验完毕!!!!!!!!!!!!!

  1. /--------------------------------------------------------------------------/

需求描述,按源IP、目标IP和直接按IP进行过滤方法如下:

(1)源IP:(以192.168.0.105为源IP举例,见图1.1)

表达式:ip.src==192.168.0.105,也可ip.srceq192.168.0.105

含义:筛选出源IP是192.168.0.105的数据包。

图1.1按源IP过滤

(2)目标IP:(以119.147.74.18为目的IP举例,见图1.2)

表达式:ip.dst==119.147.74.18,也可ip.dsteq119.147.74.18

含义:筛选出目标IP是119.147.74.18的数据包。

图1.2按目标IP过滤

(3)直接按IP过滤:(以202.105.182.132为举例IP,见图1.3)

表达式:ip.addr==202.105.182.132,也可ip.addreq202.105.182.132

含义:筛选出与202.105.182.132相关的数据包。


<think>好的,我现在需要帮助用户了解如何使用Wireshark演示分析TCP三次握手四次挥手的过程。首先,用户的问题集中在Wireshark的具体操作步骤以及如何解读捕获的数据包。我需要先回顾相关知识,确保自己正确理解每个步骤,然后再组织回答。 首先,用户提到了系统级指令,需要生成相关问题,并且回答中要引用提供的参考资料。我需要确认引用是否正确标注,同时确保回答结构清晰,符合用户的要求。 接下来,我应该分步骤说明如何使用Wireshark进行抓包分析。首先,启动Wireshark并选择正确的网络接口,这一步需要注意用户可能需要帮助确定哪个接口是活动的。然后设置过滤器,特别是使用tcp过滤器,可能还需要提到如何过滤特定的端口或IP,但用户的问题比较基础,可能不需要太复杂的过滤。 在三次握手的部分,需要详细说明SYN、SYN-ACK、ACK三个步骤,对应到Wireshark中的包序号,并引用提供的资料中的信息,例如引用[1][2]。同时,要指出三次握手后连接建立,数据传输开始,这时可以引用引用[2]中的内容。 关于四次挥手,需要解释FINACK的发送顺序,为什么需要四次,这里可以引用引用[1]中的内容,说明不能合并FINACK的情况。同时,引用[3]提到任何一方都可以发起挥手,这也是需要注意的点。 在操作步骤中,可能需要提醒用户注意事项,比如权限问题,或者确保有网络活动。此外,过滤器的使用是关键,用户可能需要知道如何正确应用过滤器来仅显示相关的TCP包。 生成的问题部分需要围绕用户可能感兴趣的扩展内容,比如为什么三次握手是三次,四次挥手为什么是四次,以及Wireshark的其他过滤技巧。这些问题应该自然地从回答中引出,帮助用户进一步学习。 最后,检查引用是否正确标注,确保每个引用对应到正确的知识点,并且没有遗漏。例如,引用[1]提到FINACK不能一起发送,引用[2]说明握手时不携带数据,引用[3]提到四次挥手可以由任一方发起。 现在需要将这些思考整理成一个结构化的回答,确保每个步骤清晰,引用正确,并且语言自然流畅,符合中文表达习惯。同时,生成的相关问题要覆盖用户可能感兴趣的后续内容,帮助他们深入学习。</think>### Wireshark演示TCP三次握手四次挥手过程分析 #### 一、抓包环境准备 1. **启动Wireshark**:选择正在使用的网络接口(如Wi-Fi或以太网) 2. **设置过滤器**:在过滤栏输入`tcp`,仅显示TCP协议数据包 3. **触发连接**:访问网页(如`http://example.com`)或使用`telnet`建立TCP连接 #### 二、三次握手分析连接建立) 1. **第一次握手(SYN)** - 客户端发送`SYN=1, Seq=X` - 特征:Flags字段显示`[SYN]`,Sequence number为随机数 2. **第二次握手(SYN+ACK)** - 服务端回应`SYN=1, ACK=1, Seq=Y, Ack=X+1` - 特征:同时包含`[SYN, ACK]`标志[^1] 3. **第三次握手(ACK)** - 客户端确认`ACK=1, Seq=X+1, Ack=Y+1` - 此时TCP连接正式建立,开始传输数据[^2] 示例抓包显示: ``` 1. 0.000 Client → Server SYN 2. 0.012 Server → Client SYN, ACK 3. 0.023 Client → Server ACK ``` #### 三、四次挥手分析连接断开) 1. **第一次挥手(FIN)** - 主动方发送`FIN=1, Seq=A` - 特征:Flags字段显示`[FIN, ACK]` 2. **第二次挥手(ACK)** - 被动方回应`ACK=1, Ack=A+1` 3. **第三次挥手(FIN)** - 被动方发送`FIN=1, Seq=B` 4. **第四次挥手(ACK)** - 主动方确认`ACK=1, Ack=B+1` - 完整过程需两个双向往返,因此需要四次交互[^3] 典型抓包序列: ``` 4. 5.000 Client → Server FIN, ACK 5. 5.005 Server → Client ACK 6. 5.010 Server → Client FIN, ACK 7. 5.015 Client → Server ACK ``` #### 四、关键参数解析 | 字段 | 说明 | 示例值 | |------------|-------------------------|-------------| | Sequence | 数据包序号 | 0x7d8f3a2b | | Acknowledgment | 确认号 | 0x7d8f3a2c | | Flags | 控制标志组合 | [SYN], [ACK]| #### 五、操作注意事项 1. 使用`tcp.stream eq <编号>`可追踪完整会话 2. 右键数据包选择"Follow > TCP Stream"查看完整会话内容 3. 注意观察`Time since previous frame`分析交互时序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值