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

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

1. TCP协议基础知识

1.1. 概念介绍

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

TCP协议在OSI七层网络模型中的位置(第四层)

1.2. TCP协议的工作原理

TCP连接的建立与断开,正常过程至少需要客户端与服务端来回发送7个包(请求)才能完成。其中客户端发送4个(1、3、4、7),服务端发送3个(2,5,6),具体原理参照下图。
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三次握手。

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

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

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

2.1. Wireshark数据包分析

三次握手与四次挥手

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

  • 第一个包是「第一次握手」:我(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)最后四个包,通过四次挥手断开了连接。

  • 第一个包是「第一次挥手」:我(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 (访问密码: 6277)
  • 图解HTTP-彩色版-上野宣.pdf (访问密码: 6277)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/413912.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析处理库(pandas)

目录 数据预处理 数据读取 DataFrame结构 数据索引 创建DataFrame Series操作 数据分析 统计分析 pivot数据透视表 groupby操作 常用函数操作 Merge操作 排序操作 缺失值处理 apply自定义函数 时间操作 绘图操作 大数据处理技巧 数值类型转换 属性类型转换…

MediaGo下载器:专业级功能,轻松应对各种下载需求!

前言 在科技的浪潮中有这样一句名言,深刻地揭示了创新的力量:“创新是引领发展的第一动力。”正是这股不竭的动力,推动了无数软硬件产品的诞生与迭代,为我们带来了前所未有的便捷与体验。今天,我们要探讨的正是这样一…

C++ | Leetcode C++题解之第384题打乱数组

题目&#xff1a; 题解&#xff1a; class Solution { public:Solution(vector<int>& nums) {this->nums nums;this->original.resize(nums.size());copy(nums.begin(), nums.end(), original.begin());}vector<int> reset() {copy(original.begin(), …

重新修改 Qt 项目的 Kit 配置

要重新修改 Qt 项目的 Kit 配置&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 打开 Qt Creator 首先&#xff0c;启动 Qt Creator&#xff0c;确保你的项目已经打开。 2. 进入项目设置 在 Qt Creator 中&#xff0c;点击菜单栏的 “Projects” 标签&#xff08;通…

Java并发编程面试必备:如何创建线程池、线程池拒绝策略

一、线程池 1. 线程池使用 1.1 如何配置线程池大小 如何配置线程池大小要看业务系统执行的任务更多的是计算密集型任务&#xff0c;还是I/O密集型任务。大家可以从这两个方面来回答面试官。 &#xff08;1&#xff09;如果是计算密集型任务&#xff0c;通常情况下&#xff…

中仕公考怎么样?公务员考试什么时候补录?

公务员考试补录的时间和方法通常因地区和职位的不同有所区别&#xff0c;一般来说&#xff0c;这一过程会在面试、体检和考核环节完成后启动。 如果在招录过程中出现职位空缺或者并未全部招满的情况&#xff0c;就会进行补录。用人单位会通过其官方或公告形式公布相关信息&…

关于武汉芯景科技有限公司的实时时钟芯片XJ8337开发指南(兼容DS1337)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.时钟功能 2.闹钟功能&#xff08;两个闹钟&#xff09; 3.振荡器停止控制 4.频率输出&#xff08;1HZ、1.096KHZ、8.192KHZ、32.768KHZ&#xff09; 5.振荡器停止检测 6.闹钟中断标志 四、程序代…

短时傅里叶变换(Short-Time Fourier Transform, STFT),语音识别

高能预警&#xff01;&#xff01;&#xff01; .wav文件为笔者亲自一展歌喉录制的噪声&#xff0c;在家中播放&#xff0c;可驱赶耗子&#xff0c;蟑螂 介绍 短时傅里叶变换&#xff08;Short-Time Fourier Transform, STFT&#xff09;是一种时频分析方法&#xff0c;用于…

如何在银河麒麟操作系统中为文件加锁与解锁

如何在银河麒麟操作系统中为文件加锁与解锁 1、加锁2、解锁 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、加锁 若要为文件加锁&#xff0c;防止被修改或删除&#xff0c;可以使用chattr命令并加上i选项。这需要root权限。 命令&…

华为OD机试真题 - 多段数据压缩(Java/Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Java/Python/JS/C/C++)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX…

网络基础+Socket

目录 下图为数据分用的过程 认识IP地址 认识MAC地址 认识端口号 网络字节序 sockaddr结构 Makefile新写法 下图为数据分用的过程 认识IP地址 IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4 IP地址是在IP协议中, 用来…

js实现3d拖拽环绕旋转

js实现拖动节点围绕圆心转动 1.使用transform属性&#xff0c;将圆环放倒展示为椭圆 圆环上有不同的色彩&#xff0c;在转动的同时&#xff0c;需要让圆环也转动&#xff0c;所以圆环不能是椭圆&#xff0c;而是圆形&#xff0c;这样在转动的时候&#xff0c;改变rotate&…

开源 AI 智能名片 S2B2C 商城小程序在现代商业中的创新与启示

摘要&#xff1a;本文通过分析一种以 9.9 元裙子为代表的独特商业模式&#xff0c;探讨了其背后的现金流、产品和渠道组合策略&#xff0c;以及开源 AI 智能名片 S2B2C 商城小程序在其中可能发挥的作用和带来的启示。 一、引言 在当今竞争激烈的商业环境中&#xff0c;企业不断…

认知杂谈41

今天分享 有人说的一段争议性的话 I I 贫富根源在观念 I 你知道不&#xff1f;穷人穷啊&#xff0c;好多时候是因为他们自己还有家里好几代人呢&#xff0c;都陷在一种不对的想法里出不来&#xff0c;还觉得这样挺好&#xff0c;就一直这么过下去了。可富人的那些想法呢&am…

3127.构造相同颜色的正方形

1.题目描述 给你一个二维 3 x 3 的矩阵 grid &#xff0c;每个格子都是一个字符&#xff0c;要么是 B &#xff0c;要么是 W 。字符 W 表示白色&#xff0c;字符 B 表示黑色。 你的任务是改变 至多一个 格子的颜色&#xff0c;使得矩阵中存在一个 2 x 2 颜色完全相同的正方形。…

YOLO实践

一. 环境安装 参考视频 Pytorch环境安装细节 pytorch安装&#xff1a;一个单独的环境中&#xff0c;能使用pip就尽量使用pip&#xff0c;实在有问题的情况&#xff0c;例如没有合适的编译好的系统版本的安装包&#xff0c;再使用conda进行安装&#xff0c;不要来回混淆CUDA是…

数据结构---顺序表---单链表

目录 一、什么是程序&#xff1f; 程序 数据结构 算法 二、一个程序是否优秀的两个标准 2.1.时间复杂度 2.2.空间复杂度 三、数据结构 3.1.数据结构间的关系 1.逻辑结构 1&#xff09;线性关系 2&#xff09;非线性关系 2.存储结构 1&#xff09;顺序存储结构 …

exit_hook和setcontext

文章目录 exit_hook概述例题:思路:利用:setcontextglibc-2.27以及 之前glibc-2.29以及之后:exit_hook 概述 大佬文章:exit_hook在pwn题中的应用 - 不会修电脑 - 博客园 (cnblogs.com) exit_hook :是程序在执行exit函数时,会去该位置拿一个函数指针,进而执行的一段程序…

【单片机开发】IAP技术详解及应用

【前言】 在单片机开发过程中&#xff0c;程序的烧录是一个至关重要的环节。随着技术的不断演进&#xff0c;单片机烧录方式也日益多样化。 【单片机开发】单片机的烧录方式详解&#xff08;ICP、IAP、ISP&#xff09;-CSDN博客文章浏览阅读775次&#xff0c;点赞14次&#x…

低空经济概念火爆:无人机飞手人才培养先行

随着科技的飞速发展&#xff0c;低空经济作为新兴的经济形态&#xff0c;正以前所未有的速度崛起&#xff0c;成为推动产业升级和经济发展的新引擎。无人机作为低空经济的重要组成部分&#xff0c;其应用领域已从最初的军事侦察、航拍扩展到农业植保、物流配送、环境监测、应急…