软件测试|TCP三次握手四次挥手
TCP为什么要进行三次握手和四次挥手呢?
在这个三次握手的过程中对应的消息内容是怎样进行传递的呢?
在四次挥手的过程中,是怎样告知对方断开连接的呢?
概念
三次握手
在说对应概念之前,我们先来了解一个场景:
场景
无论是工作还是没有工作的小伙伴,肯定都见过或经历过表白事件。那如果想要进行一次表白或者求婚,我们需要怎么做?
无论是表白、求婚都需要有对应的人,当然不只能有这个人,还需要和这个人建立一个连接。
不能说你自己把自己关在屋子里面自言自语的说,你能嫁给我吗?对方都没有听到你说的话,怎么会做出反应呢?
所以,最好是两个人面对面,才可以让对方听到到自己要说的话。约出来,面对面,就开始进行表白:
当然这种关系都是双方是能面对面找到对方的,即都是保持双方畅通的。
对应为TCP协议的三次握手如下图:
(1)第一次握手
Client请求与Server端建立连接。
这里只是尝试的请求建立连接,A到B的连接是否建立成功不知道
(2)第二次握手
Server
在收到 Client
的请求后,响应ACK 报文
并分配资源。
这里B给A的ACK报文就表示
Server
同意Client
跟它建立连接。
SYN表示Server
也想尝试 Client
建立连接,此时Server
到 Client
的连接是否建立还不确定。
(3)第三次握手
Client
给Server
发送ACK响应。在Server
收到 Client
的响应之后,此时双方的连接正式建立。
四次挥手
在说对应挥手概念之前,我们先来了解一个场景:
场景
还是和上面场景有关,结婚了然后在一起共同生活了一段时间后,发现双方不合适,需要离婚,要离开对方,就是挥手告别。那这个时候要经历的场景是什么呢?
对应为TCP协议的四次挥手如下图:
(1)第一次挥手
客户端发送FIN给服务端,尝试请求断开单方的连接。
此时单方连接断开与否还不能确定,要等服务端确认,因此此时的客户端处于FIN_WAIT1状态。
(2)第二次挥手
服务端收到断开请求后,服务端向客户端发送ACK回应,表示能断开了。
此时只是客户端到服务端连接断开,处于半断开状态。
服务端状态为:CLOSE_WAIT
(3)第三次挥手
服务端给客户端发送FIN请求,此时服务端处于最后一次确认状态(LAST_ACK状态)。
此时还是没有断开连接,还得等待客户端回应。
(4)第四次挥手
客户端给服务端发送ACK回应。服务端收到之后,此时连接真正断开。
疑问点
- 为什么不是两次握手?为什么要三次?
因为真正连接的建立是要双方都建立到对方的连接。
如果只有两次握手,只能保证A到B的连接建立,但是B到A连接还未确认,所以第三次握手的主要作用就是A给B发送数据,如果没有第三次握手,A就不会发送数据,此时B的状态一直为等待,造成的现象就是浪费资源。
- 为什么要进行四次挥手?为什么三次不行?
因为在挥手过程中会传递相关数据。其中,ACK报文是用来的应答的,SYN报文是用来同步的。
在B收到A的FIN请求后,不会立即关闭SOCKET,会先发送一个ACK作为回应。所以A需要等B的数据发送完成之后,B会再给A发送一个FIN请求告诉A已经结束了,此时B发送给A的两次请求不能合并,所以必须是四次挥手。
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023