三次握手过程:
客户端——发送带有SYN标志的数据包——服务端一次握手Client进入syn_sent状态;
服务端——发送带有SYN/ACK标志的数据包——客户端二次握手服务端进入syn_rcvd;
客户端——发送带有ACK标志的数据包——服务端三次握手连接就进入Established状态;
为什么三次:
主要是为了建立可靠的通信信道,保证客户端与服务端同时具备发送、接收数据的能力。
为什么两次不行?
1、防止已失效的请求报文又传送到了服务端,建立了多余的链接,浪费资源。
2、两次握手只能保证单向连接是畅通的。(为了实现可靠数据传输,TCP协议的通信双方,都必须维护一个序列号,以标识发送出去的数据包中,哪些是已经被对方收到的。三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤;如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认)。