三次握手过程:
第一次握手:A发送SYN=1(同步序列编号)、seq=x(来自A的数据包序列);表示请求与B建立连接。
第二次握手:B接收到了来自A发送的信息,返回SYN=1、ACK=1、seq=y、ack=x+1;表示A你的请求我已经收到了(ACK=1),现在我申请与你建立连接(SYN=1),下次你给我返回序列号为x+1的数据包吧(ack=x+1),同时把这次连接加入服务器的为连接队列。第二次握手保证了:从B的角度,A的发送是没通信问题的。
第三次握手:A收到了来自B的信息,返回了ACK=1、seq=x+1、ack=y+1;表示B你的请求我已经收到了,现在给你继续传输数据(seq=x+1),你下次也继续给我传输数据包(ack=y+1)。从A接收到B信息的一刻起,以A的角度:B的接收是没问题的,B的发送也是没问题的。B收到了A的信息后,知道了以下事实:A的接收是没问题的。
于是在第三次握手后,TCP连接建立,把这次连接从未连接队列移除。
由此可知,三次握手是为了保证:A和B的接收和发送都没问题。因为TCP是安全的传输协议,必须保证两者的通信是畅通的。