TCP(Transmission Control Protocol)是⼀种⾯向连接的协议,为了保证数据传输的可靠性,TCP 使⽤了三次握 ⼿和四次挥⼿的过程。
三次握手:
第⼀次握手:客户端向服务器发送 SYN 报文,请求建⽴连接。
第⼆次握手:服务器收到客户端的 SYN 报文,向客户端发送 SYN+ACK 报文,表示可以建⽴连接。
第三次握手:客户端收到服务器的 SYN+ACK 报文,向服务器发送 ACK 报文,表示连接已经建⽴
三次握手的目的是为了确认双⽅的收发能力和同步初始序列号。之所以是三次而不是两次握手的原因是为了防止多次连接请求导致连接混乱。比如客户端发送多次请求,服务端第一次同意连接请求后不知道客户端有没有收到同意的报文,因此只能重复同意,这样过期的请求就会造成请求混乱。如果是四次握手会造成资源浪费,三次握手刚刚好。
四次挥手:
四次挥手的目的是为了保证数据的完整性和可靠性。在关闭连接之前,双方需要通过四次挥手确保所有数据都已经传输完毕。
第⼀次挥手:客户端向服务器发送 FIN 报⽂,请求关闭连接
第⼆次挥手:服务器收到客户端的 FIN 报⽂,向客户端发送 ACK 报⽂,表示收到关闭请求
第三次挥手:服务器向客户端发送 FIN 报⽂,请求关闭连接。
第四次挥手:客户端收到服务器的 FIN 报⽂,向服务器发送 ACK 报⽂,表示收到关闭请求
总结:三次握⼿的本质是确认通信双⽅收发数据的能力,四次挥⼿的⽬的是关闭⼀个连接