用户名  找回密码
 立即注册
查看: 469|回复: 0

[后端] WireShark过滤 - WireShark实现TCP三次握手和四次挥手

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-6-5 13:12:36 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-6-9 13:58 编辑

1. 引言

Wireshark是一款功能强大的网络协议分析工具,被广泛用于网络故障排查、分析和教育。了解和分析TCP协议的三次握手和四次挥手是网络通信的基础。本文将详细讲解如何使用Wireshark来捕获和过滤TCP三次握手和四次挥手的过程,帮助读者掌握网络协议分析的技巧。

1.1 TCP协议简介

TCP(Transmission Control Protocol)是面向连接的传输层协议,提供可靠的、顺序的数据传输服务。TCP连接的建立和终止分别通过三次握手和四次挥手来实现,这两个过程是保证数据传输可靠性的关键。

2. Wireshark安装与基本操作

在开始捕获和分析TCP连接之前,需要安装并熟悉Wireshark的基本操作。

2.1 安装Wireshark

Wireshark可以在多个操作系统上运行,包括windows、macOS和linux。以下是安装步骤:

(1) 访问Wireshark官网(https://www.wireshark.org/),下载适用于操作系统的安装包。
(2) 根据操作系统的提示进行安装。

2.2 捕获网络数据包

启动Wireshark后,需要选择网络接口并开始捕获数据包:

(1) 打开Wireshark,选择一个网络接口。
(2) 点击开始捕获按钮(绿色鲨鱼鳍图标)。
(3) 捕获完毕后,点击停止捕获按钮(红色方块图标)。

3. 捕获和过滤TCP三次握手

TCP三次握手是建立TCP连接的过程,包含SYN、SYN-ACK和ACK三个阶段。

3.1 捕获TCP三次握手

为了捕获TCP三次握手,需要在Wireshark中进行相关操作:

(1) 启动Wireshark并开始捕获数据包。
(2) 在应用程序中发起一个TCP连接(如通过浏览器访问网页或使用`telnet`命令)。
(3) 停止数据包捕获。

3.2 过滤TCP三次握手

使用Wireshark的过滤器可以更容易地找到三次握手的过程:

(1) 在过滤器输入框中输入以下过滤表达式:
  1. tcp.flags.syn == 1 and tcp.flags.ack == 0
复制代码


(2) 观察过滤结果,找到第一个SYN数据包。
(3) 修改过滤表达式,以捕获SYN-ACK数据包:
  1. tcp.flags.syn == 1 and tcp.flags.ack == 1
复制代码


(4) 找到第二个SYN-ACK数据包。
(5) 最后修改过滤表达式,以捕获ACK数据包:
  1. tcp.flags.ack == 1 and tcp.flags.syn == 0
复制代码


通过这三个过滤步骤,可以完整捕获TCP三次握手的过程。

4. 捕获和过滤TCP四次挥手

TCP四次挥手是终止TCP连接的过程,包含FIN、FIN-ACK、FIN和ACK四个阶段。

4.1 捕获TCP四次挥手

为了捕获TCP四次挥手,需要在Wireshark中进行相关操作:

(1) 启动Wireshark并开始捕获数据包。
(2) 在应用程序中终止一个TCP连接(如关闭浏览器网页或使用`telnet`命令退出)。
(3) 停止数据包捕获。

4.2 过滤TCP四次挥手

使用Wireshark的过滤器可以更容易地找到四次挥手的过程:

(1) 在过滤器输入框中输入以下过滤表达式:
  1. tcp.flags.fin == 1
复制代码


(2) 观察过滤结果,找到第一个FIN数据包。
(3) 修改过滤表达式,以捕获FIN-ACK数据包:
  1. tcp.flags.fin == 1 and tcp.flags.ack == 1
复制代码


(4) 找到第二个FIN-ACK数据包。
(5) 找到第三个FIN数据包(通常可以与第一个FIN数据包的会话ID匹配)。
(6) 最后修改过滤表达式,以捕获最终的ACK数据包:
  1. tcp.flags.ack == 1 and tcp.flags.fin == 0
复制代码

通过这几个过滤步骤,可以完整捕获TCP四次挥手的过程。

5. 示例分析

以下是一个具体的示例分析,演示如何在Wireshark中捕获和过滤TCP三次握手和四次挥手。

5.1 三次握手示例

(1) 启动Wireshark,开始捕获数据包。
(2) 在命令行中使用`telnet`命令连接到远程服务器
  1. telnet example.com 80
复制代码


(3) 停止数据包捕获。
(4) 使用以下过滤表达式捕获三次握手:
  1. tcp.flags.syn == 1 and tcp.flags.ack == 0
  2. tcp.flags.syn == 1 and tcp.flags.ack == 1
  3. tcp.flags.ack == 1 and tcp.flags.syn == 0
复制代码


5.2 四次挥手示例

(1) 启动Wireshark,开始捕获数据包。
(2) 关闭`telnet`连接:
  1. exit
复制代码


(3) 停止数据包捕获。
(4) 使用以下过滤表达式捕获四次挥手:
  1. tcp.flags.fin == 1
  2. tcp.flags.fin == 1 and tcp.flags.ack == 1
  3. tcp.flags.ack == 1 and tcp.flags.fin == 0
复制代码


6. 结论

通过本文的讲解,我们详细介绍了如何使用Wireshark捕获和过滤TCP三次握手和四次挥手的过程。这些基本技能对于网络协议分析和故障排查至关重要。希望本文能帮助读者熟练掌握Wireshark的使用,提高网络分析和调试的效率。



/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & Linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-7 18:38 , Processed in 0.056563 second(s), 23 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表