Wireshark抓包分析TCP协议:三次握手和四次挥手

news/2024/5/17 19:25:16 标签: 软件测试, wireshark, TCP, 测试工程师, 测试员

01、前言

面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程,为什么总喜欢问这个问题呢?

其实我们平时使用的很多协议都是应用层协议,比如HTTP协议,https协议,DNS协议,FTP协议等;而应用层协议都是要基于传输层的两个协议之上的,也就是TCP协议和UDP协议。我们在使用应用层协议遇到一些问题需要去分析定位的时候,会需要涉及到底层协议的连接问题上。所以,作为测试掌握这两个底层协议的工作原理是非常有必要的!

UDP协议作为一个不可靠的传输层协议,工作过程相对比较简单!所以我们就重点来大家讲一下TCP协议。

02、Wireshark抓包分析TCP协议

为了更好的学习和理解TCP协议的连接和断开连接的过程,我们来引入一个非常适合用来学习网络协议的抓包工具Wireshark。这个抓包工具可以详细看到每一层网络报文的详细信息。

03、TCP协议的三次握手过程

TCP建立连接需要经历三次握手,具体过程如下:
在这里插入图片描述
那么,这个过程我们配合抓包工具来看看具体的案例;如下图是访问某个HTTP请求用wireshark抓到的报文,前面的三个报文就是TCP的三次握手过程:SYN包,SYN ACK包,ACK报文。
在这里插入图片描述
展开看详情:

第一次握手的报文如下:这是客户端发起给服务器的报文,用于请求建立连接。
在这里插入图片描述
可以看到TCP报文里有一个Flags位:

当Syn位标记为1的时候,表示这个报文是一个请求链接的报文;

自己的序号(sequence number):0

第二次握手的报文如下:这是服务器回复给客户端的报文,用于确认并同意连接请求。
在这里插入图片描述
可以看到TCP报文里的Flags位:

Syn位也标记为1,表示这个报文是一个同意建立链接的报文;

ACK位也标记为1,表示是一个对上一个报文的确认报文;

Sequence number:自己的序号;

acknowledgment number:表示对上一个请求报文的确认号,所以是在上一个报文的序号+1

第三次握手:是客户端发给服务器的,是对上一个同意连接请求的确认。
在这里插入图片描述
Flags里的ACK位标记为1,表示是一个对上一个报文的确认报文;

Sequence number:自己的序号,在上一个报文的基础上+1;

acknowledgment number:表示对上一个请求报文的确认号,在上一个报文序号的基础上+1.

至此,三次握手完成!接下来就开始发送HTTP的请求了。
在这里插入图片描述
04、TCP协议的四次挥手过程

当数据传输结束了,客户端和服务器之间就开始断开连接了。断开连接需要经历四次挥手,具体过程如下:
在这里插入图片描述
同样,我们用wireshark工具来进行详细过程的报文的分析:
在这里插入图片描述
我们同样展开看下详细的报文内容:

第一次挥手:当数据传输首先结束的端(比如客户端),会率先发起结束断开连接的请求:
在这里插入图片描述
Flags位的 Fin位标记为1,说明这是个一个断开连接的请求的报文。

这时候我们发送这个请求的端已经停止发送数据了!但是还可以接受数据。

第二次挥手:对上一个断开连接请求的报文进行确认。并同时,停止接受数据。
在这里插入图片描述
所以,我们能看到这个报文的ACK位标记为1,并且acknowledgment number是对上一个报文的序号+1,表示对上一个报文的确认。

第三次挥手:服务器端也结束数据发送了,所以也会发起一个断开连接的请求。
在这里插入图片描述
这是个服务器发起FIN报文,请求断开连接,同时,服务器也会停止发送数据。

第四次挥手:是客户端对服务器断开连接请求的进行确认。
在这里插入图片描述
所以这个flags位是ACK位标记为1。此时,客户端也停止接受数据了。

至此,服务器和客户端都停止发送和接受数据了!四次挥手就完成了。

学习安排上!

感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几个月时间整理的非常全面的,希望也能帮助到有需要的你!
在这里插入图片描述
这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流,同时我也把上面花几个月整理的资料放里边了,赶快加入吧。

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。


http://www.niftyadmin.cn/n/4863.html

相关文章

特征值求导推导

设矩阵AAA的第iii大特征值为λi\lambda_iλi​, 对应特征向量viv_ivi​,AAHAA^HAAH 求: ∇Aλi∂λi∂A∗\nabla_A\lambda_i\frac{\partial \lambda_i}{\partial A^*}∇A​λi​∂A∗∂λi​​ 目标: 写出 dλitr(BdAH)d\lambda_…

大三Web课程设计——悬崖上的波妞(4页) HTML+CSS(可以很好的应付老师的作业)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

NoSQL之Redis配置与优化

目录 一、缓存概念 1.1系统缓存 1.2缓存保存位置及分层结构 DNS缓存 应用层缓存 数据层缓存 硬件缓存 二、关系数据库和非关系数据库 2.1什么是关系型数据库 2.2 什么是非关系型数据库 2.3 非关系型数据库的产生背景 2.4 关系型数据库和非关系型数据库区别 2.5 总…

MES适合哪些行业?可以实现哪些具体功能?

MES作为一种面向企业工厂生产加工的软件,为企业制造做出了巨大的贡献。虽然MES很实用很简单,但是也凸显了一个问题,哪些行业适合使用MES,哪些不适合。我们来看看MES适合哪些行业。 MES应用行业 连续型和非连续型生产技术企业&am…

皮卡丘python turtle海龟绘图源代码

皮卡丘python turtle海龟绘图源代码 本文目录: 一、皮卡丘python turtle海龟成品效果图 二、皮卡丘背景介绍 三、皮卡丘卡角色形象 四、愿你拥有一只皮卡丘 五、Python 海龟画图主要方法 (1)海龟画图的主要步骤 (2&#x…

机器学习实操1

目录 分析用户的购物习惯,预测消费者将购买哪些产品,探究用户对物品类别的喜好细分降维 大致操作 具体操作 完整代码 运行期间出现的错误 invalid argument 分析用户的购物习惯,预测消费者将购买哪些产品,探究用户对物品类别…

支撑向量机

1、支持向量机算法原理 支持向量机(Support Vetor Machine,SVM)由Vapnik等人于1995年首先提出,在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并推广到人脸识别、行人检测和文本分类等其他机器学习问题中…

【Qt】桌面应用开发教程——布局|按钮组|容器|常用控件|消息事件机制

文章目录3、布局3.1 系统提供的布局控件3.2 利用widget做布局3.3 利用表单做布局4、按钮组5、项目构建组6、容器7、常用控件7.1 QLabel控件使用7.1.1 显示文字 (普通文本、html)7.1.2 显示图片7.1.3 显示动画7.2 QLineEdit7.2.1 设置/获取内容7.2.2 设置…