TCP使用三次握手(Three-Way Handshake)的过程是为了确保双方建立起可靠的通信连接,并在连接的建立过程中协商必要的参数。两次握手是不够的,原因主要有以下几点:
防止已失效的连接请求被接受: 假设有A和B两台主机,A向B发送了一个连接请求,但由于某些原因导致连接建立失败,B并没有收到A的确认。如果只有两次握手,A认为连接已经建立,而B并不知道,这时B向A发送数据时,A会误以为这是一个正常的连接。通过第三次握手,B可以向A发送确认,确保A收到并确认连接。
防止重复的连接请求被执行: 如果只有两次握手,A向B发送连接请求,B收到后建立连接,然后断开连接。此时A再次向B发送相同的连接请求,B可能会误以为是上一个连接请求的重发,而建立连接。通过第三次握手,B可以知道这是一个新的连接请求。
确保双方都能够正常接收和发送数据: 三次握手过程中,双方都能够测试对方的接收和发送能力,确保连接的正常建立。在第三次握手时,双方已经明确表示接收和发送数据的准备就绪。
三次握手的具体流程如下:
通过这个三次握手过程,双方建立了连接,并确认了彼此的接收和发送能力,确保了连接的可靠性。两次握手的话,在第一次握手完成后,服务端不知道客户端是否能够正常接收数据,也无法得知客户端是否真的请求建立连接,因此三次握手是为了确保连接的安全可靠性。