首页 > 其他分享 >Wireshark抓包分析TCP协议:三次握手和四次挥手

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

时间:2022-11-14 15:32:34浏览次数:47  
标签:断开连接 协议 请求 报文 TCP 客户端 抓包 Wireshark


前言

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

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

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

Wireshark抓包分析TCP协议

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

TCP协议的三次握手过程

TCP建立连接需要经历三次握手,具体过程如下:

Wireshark抓包分析TCP协议:三次握手和四次挥手_软件测试


那么,这个过程我们配合抓包工具来看看具体的案例;如下图是访问某个HTTP请求用wireshark抓到的报文,前面的三个报文就是TCP的三次握手过程:SYN包,SYN ACK包,ACK报文。

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


展开看详情:

第一次握手的报文如下:这是客户端发起给服务器的报文,用于请求建立连接。

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


可以看到TCP报文里有一个Flags位:

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

自己的序号(sequence number):0

第二次握手的报文如下:这是服务器回复给客户端的报文,用于确认并同意连接请求。

Wireshark抓包分析TCP协议:三次握手和四次挥手_自动化测试_04


可以看到TCP报文里的Flags位:

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

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

Sequence number:自己的序号;

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

第三次握手:是客户端发给服务器的,是对上一个同意连接请求的确认。

Wireshark抓包分析TCP协议:三次握手和四次挥手_软件测试_05


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

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

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

至此,三次握手完成!接下来就开始发送HTTP的请求了。

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

TCP协议的四次挥手过程

当数据传输结束了,客户端和服务器之间就开始断开连接了。断开连接需要经历四次挥手,具体过程如下:

Wireshark抓包分析TCP协议:三次握手和四次挥手_软件测试_07


同样,我们用wireshark工具来进行详细过程的报文的分析:

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


我们同样展开看下详细的报文内容:

第一次挥手:当数据传输首先结束的端(比如客户端),会率先发起结束断开连接的请求:

Wireshark抓包分析TCP协议:三次握手和四次挥手_软件测试_09


Flags位的 Fin位标记为1,说明这是个一个断开连接的请求的报文。

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

第二次挥手:对上一个断开连接请求的报文进行确认。并同时,停止接受数据。

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


所以,我们能看到这个报文的ACK位标记为1,并且acknowledgment number是对上一个报文的序号+1,表示对上一个报文的确认。

第三次挥手:服务器端也结束数据发送了,所以也会发起一个断开连接的请求。

Wireshark抓包分析TCP协议:三次握手和四次挥手_软件测试_11


这是个服务器发起FIN报文,请求断开连接,同时,服务器也会停止发送数据。

第四次挥手:是客户端对服务器断开连接请求的进行确认。

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


所以这个flags位是ACK位标记为1。此时,客户端也停止接受数据了。

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

最后:【可能给予你助力的视频教程】

Wireshark抓包分析TCP协议:三次握手和四次挥手_软件测试_13

这些资料,对于想从功能测试进阶到自动化测试的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助


标签:断开连接,协议,请求,报文,TCP,客户端,抓包,Wireshark
From: https://blog.51cto.com/u_15061607/5849255

相关文章

  • wireshark数据抓包
    一、软件清单:1、软件清单软件1:PacketSniffer(抓包软件)软件2:TiWsPc(管道软件)(全称:TiWiresharkPacketconverter) 软件3:Wireshark......
  • Hadoop DistCp参数使用
    1、简介DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。它把文件和目录的列表作为map任务的输......
  • 《吐血整理》高级系列教程-吃透Fiddler抓包教程(34)-Fiddler如何抓取微信小程序的包-
    1.简介有些小伙伴或者是童鞋们说小程序抓不到包,该怎么办了???其实苹果手机如果按照宏哥前边的抓取APP包的设置方式设置好了,应该可以轻松就抓到包了。那么安卓手机小程序就比......
  • 抓包整理————ip 协议一[十二]
    前言简单介绍一下ip协议。正文先来看下ip协议在网络层的哪一层:应用层表示层会话层传输层网络层数据链路层物理层ip层就在网络层:其实很好想象哈,就是因为每......
  • TCP/IP模型和五层参考模型
    TCP/IP模型和5层参考模型osi参考模型与tcp、ip参考模型OSI参考模型与TCP/IP参考模型相同点:1、都分层2、基于独立的协议栈的概念3、可以实现异构网络互联OSI参考模型......
  • 第十三章—TCP/IP和网络编程
    第十三章—TCP/IP和网络编程摘要TCP/IP和网络编程,分为两个部分。第一部分TCP/IP协议及其应用,具体包括TCP/IP栈、IP地址、主机名、DNS、IP数据包和路由器;TCP/P网络中......
  • TCP四次挥手会经历这么多状态
    TCP三次握手中讲述了序列号和建立连接,这一篇来说说释放连接。标志位TCP首部中在属性标志位,和建立连接、释放连接有关,位于保留和窗口字段中间,其中三个标识与断开连接有关......
  • Web 性能优化:TCP
    个人博客......
  • 传输层协议之TCP三次握手
    1.TCP协议与UDP协议TCP协议:传输控制协议UDP协议:用户数据报协议1.1TCP协议与UDP协议的区别TCP协议是面向连接的,可靠的,进程到进程通信的协议。TCP提供全双工服务,即数......
  • 抓包整理————tcp 传输数据的基础概念[十一]
    前言简单介绍一下tcp数据传输。正文tcp数据传输是怎么样子的呢?比如我们在代码中写好了,connection去连接。然后我们用write去读取数据,这个时候呢,到底我们的操作系......