为什么要三次握手

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001

三次握手是TCP协议用于建立连接的过程,其目的是确保客户端和服务器双方都能够正常发送和接收数据。下面详细解释一下为什么要进行三次握手:

1. 确保双方都能正常通信

  • 第一次握手:客户端向服务器发送一个SYN包,表示客户端请求建立连接。

  • 第二次握手:服务器收到客户端的SYN包后,回应一个SYN+ACK包,表示服务器接受客户端的请求,并准备好建立连接。

  • 第三次握手:客户端收到服务器的SYN+ACK包后,再发送一个ACK包,表示客户端也接受服务器的请求,连接建立成功。

2. 防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误

  • 如果只有两次握手,客户端发送的连接请求在网络中滞留,服务器收到后建立连接并发送了应答,但客户端并没有收到应答,此时客户端会重新发送连接请求,导致服务器上出现多余的连接请求。

3. 防止网络中的延迟数据包导致错误

  • 如果只有两次握手,客户端发送的连接请求在网络中滞留,服务器收到后建立连接并发送了应答,但客户端并没有收到应答,此时客户端会重新发送连接请求,导致服务器上出现多余的连接请求。

因此,通过三次握手,可以确保双方都能正常通信,避免已失效的连接请求报文段突然又传送到了服务端,以及防止网络中的延迟数据包导致错误。

最后更新于