TCP为什么进行三次握手?为什么两次、四次握手不可以?
TCP 三次握手的过程掌握最重要的两点就是客户端和服务端状态的变化,另一个是三次握手过程标志信息的变化,那么掌握 TCP 的三次握手就简单多了。下面就以动画形式进行拆解三次握手过程。
初始状态:客户端处于 closed(关闭)
状态,服务器处于 listen(监听)
状态。
第一次握手:客户端发送请求报文将 SYN = 1
同步***和初始化***seq = x
发送给服务端,发送完之后客户端处于SYN_Send
状态。
第二次握手:服务端受到 SYN
请求报文之后,如果同意连接,会以自己的同步***SYN(服务端) = 1
、初始化*** seq = y
和确认***(期望下次收到的数据包)ack = x+ 1
以及确认号ACK = 1
报文作为应答,服务器为SYN_Receive
状态。
第三次握手: 客户端接收到服务端的 SYN + ACK
之后,知道可以下次可以发送了下一序列的数据包了,然后发送同步*** ack = y + 1
和数据包的*** seq = x + 1
以及确认号ACK = 1
确认包作为应答,客户端转为established
状态。