三次握手的原因:信道的不可靠,防止已经失效的连接请求报文段又传到服务端,而产生错误。按理来说,3次连接是让数据安全传输的理论最小值,而过多握手就会浪费资源。
第一次握手:A发送一个(SYN)到B,这意味着A想要和B建立连接。如果只有一次握手,那么A不知道B是否已经收到自己发送的(SYN)。
第一次握手:B收到A的请求后,响应一个确定(SYN+ACK)到A,这意味着B告诉A收到了(SYN),双方可以建立连接。如果只有二次握手,B不知道A是否已经收到的确定消息,因为这个消息可能由于某些原因丢掉了。
第三次握手:A如果收到了B的确认消息之后,再发出一个确认(ACK)消息,这是要告诉B,这边也是通的,然后A和B就可以建立连接相互通信。
通过三次握手确定双方都是通的,已经可以安全建立连接,实现数据交互。