其他分享
首页 > 其他分享> > 传输控制协议TCP三次握手和四次挥手

传输控制协议TCP三次握手和四次挥手

作者:互联网

三次握手:

第一次握手:客户端向服务器发送一个SYN报文请求连接通信

第二次握手:服务端收到客户端的请求后向客户端发送一个SYN ACK报文确认请求连接通信

第三次握手:客户端收到服务端的ACK报文后也向服务器发送一个ACK报文

就好像打电话:

“喂,你听得到吗?”

“我听得到呀,你听得到我吗?”

“我能听到你,今天 balabala……”

为什么要三次握手,而不是一次、俩次?

如果是一次握手,客户端向服务器发送SYN报文请求通信,然后不管服务器收没收到就balabala的发送数据,万一服务器没收到呢,客户端一直会重复发送

如果是二次握手,客户端向服务器发送SYN报文请求通信,此时如果网络拥塞,客户端发送的连接请求迟迟到不了服务端,客户端便超时重发请求,然后服务端正确接收并确认应答,双方便开始通信,通信结束后释放连接。此时,刚刚那个失效的连接请求才抵达服务端,由于只有两次握手,服务端收到请求就会进入ESTABLISHED状态,等待发送数据或主动发送数据。但此时的客户端早已进入CLOSED状态,服务端将会一直等待下去,这样浪费服务端连接资源。

 

四次挥手:

第一次挥手,客户端向服务器发送FIN报文

第二次挥手,服务端向客户端发送一个ACK报文,此时客户端仍然可以接受服务器发送过来的数据

第三次挥手,服务器向客户端发送一个FIN报文

第四次挥手,客户端向服务器发送ACK报文

客户端向服务器发送ACK报文后并没有直接进入CLOSE状态,而是等待一段时间后才关闭。因为如果ACK报文丢失那么服务器端会重新发送FIN报文,如果此时客户端已经关闭了那服务器会一直发送请求,这样子就会造成资源浪费。

标签:ACK,传输控制协议,报文,TCP,四次,服务器发送,握手,服务端,客户端
来源: https://blog.csdn.net/qq_39027256/article/details/94589275