结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)

admin 2024年9月1日15:50:52评论156 views字数 2254阅读7分30秒阅读模式

网络安全的基础是网络,若连最基础的网络协议都搞不明白,何谈网络安全。针对核心的TCP协议,本文通过Wireshark工具抓取并分析TCP三次握手和四次挥手的详细过程,包括数据包捕获步骤,以及TCP报文中的关键字段(如源地址、目的地址、SYN、ACK等)的用途,大家读完此文能彻底搞懂TCP的连接释放原理,有任何疑问欢迎评论区留言,知无不答!

1. TCP协议基础知识

1.1. 概念介绍

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是互联网核心协议之一,位于OSI模型的传输层,负责在互联网上的计算机之间提供可靠的数据传输服务

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)
TCP协议在OSI七层网络模型中的位置(第四层)

1.2. TCP协议的工作原理

TCP连接的建立与断开,正常过程至少需要客户端与服务端来回发送7个包(请求)才能完成。其中客户端发送4个(1、3、4、7),服务端发送3个(2,5,6),具体原理参照下图。结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)

1.2.1. 三次握手建立连接

TCP建立连接的过程,包括客户端和服务器总共发送3个包,此过程称为三次握手

  • 第一次握手:客户端发送一个带有SYN标志的TCP段,请求与服务器建立连接。
  • 第二次握手:服务器接收到SYN请求后,发送一个带有SYN和ACK标志的TCP段作为响应。
  • 第三次握手:客户端接收到服务器的SYN+ACK响应后,发送一个带有ACK标志的TCP段,完成连接建立。

三次握手完成后便建立了TCP连接,便可进行数据传输,TCP负责将数据分割为多个段(Segment),并按顺序发送。

1.2.2. 四次挥手断开连接

TCP断开连接的过程,包括客户端和服务器总共发送4个包,此过程称为四次挥手

  • 第一次挥手:客户端发送一个带有FIN标志的TCP段,请求断开连接;
  • 第二次挥手:服务器接收到FIN请求后,发送一个带有ACK标志的TCP段作为响应;
  • 第三次挥手:服务器发送一个带有FIN标志的TCP段,请求断开连接;
  • 第四次挥手:客户端接收到服务器的FIN请求后,发送一个带有ACK标志的TCP段,完成连接断开。

2. 通过Wireshark抓包来详解TCP三握四挥

Wireshark是一款最流行和强大的开源数据包抓包与分析工具,可以截取各种网络数据包,并可以查看网络数据包详细信息。接下来我们就用这款工具来抓取百度网站的数据包。

1)打开Wireshark,开启抓包,然后打开cmd窗口,执行命令curl www.baidu.com访问百度来触发TCP三次握手。

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)

2)在cmd中执行命令ping www.baidu.com 获取百度的IP地址。

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)

3)为避免其他无用的数据包影响分析,可在显示过滤器(display filter)输入过滤条件tcp and ip.addr== 36.155.132.76,过滤TCP协议的数据包。

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)

说明tcp and ip.addr== 36.155.132.76 表示只显示TCP协议且源主机IP或者目的主机IP为36.155.132.76的数据包。

2.1. Wireshark数据包分析

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)
三次握手与四次挥手

1)前三个包完成了三次握手,建立了连接。

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)
  • 第一个包是「第一次握手」:我(192.168.3.25)向百度(36.155.132.76)发送一个 SYN ,表示这是一个「建立连接的请求」;
  • 第二个包是「第二次握手」:百度(36.155.132.76)响应我(192.168.3.25)一个 SYN+ACK ,表示这是一个「接受连接的应答」;
  • 第三个包是「第三次握手」:我(192.168.3.25)向百度(36.155.132.76)发送一个 ACK ,表示这一个「确认请求」。

发送完确认请求后,我开启到百度的单向连接通道,百度收到我的确认请求后,就开启到我这边的单向连接通道,两边通道都开启以后,就可以通信了。

2)最后四个包通过四次挥手断开了连接。

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)
  • 第一个包是「第一次挥手」:我(192.168.3.25)向百度(36.155.132.76)发送一个「FIN+ACK」,表示这是一个「释放连接」的请求;
  • 第二个包是「第二次挥手」:百度(36.155.132.76)向我(192.168.3.25)响应一个「ACK」,表示这是一个「确认请求」,我收到后,就会释放我到百度的单向连接;
  • 第三个包是「第三次挥手」:百度(36.155.132.76)向我(192.168.3.25)发送一个「FIN+ACK」,表示这是一个「释放连接」的请求;
  • 第四个包是「第四次挥手」:我(192.168.3.25)向百度(36.155.132.76)响应一个「ACK」,表示这是一个「确认请求」,百度收到后,就会释放到我这边的单向连接。

双向的连接都释放后,TCP连接就关闭了(对于本例来说就是百度响应结束),此次通信结束。

若想了解更多关于网络协议基础及其工作原理,可以关注下方博主公众号,持续更新。或参阅如下文档

  • 图解TCP/IP-全彩版(第5版).pdf (下载链接:https://url25.ctfile.com/f/1848625-1349828864-466fdc?p=6277,访问密码: 6277)
  • 图解HTTP-彩色版-上野宣.pdf (下载链接:https://url25.ctfile.com/f/1848625-1347530453-282eac?p=6277访问密码: 6277)

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)

结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)

原文始发于微信公众号(全栈安全):结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月1日15:50:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   结合Wireshark抓包实战,图文详解TCP三次握手及四次挥手原理(附下载)https://cn-sec.com/archives/3117793.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息