传输控制协议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