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。此时,客户端也停止接受数据了。

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


          【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通


二、接口自动化项目实战  

三、Web自动化项目实战


四、App自动化项目实战 

五、一线大厂简历


六、测试开发DevOps体系 

七、常用自动化测试工具


八、JMeter性能测试 

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

                                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值