在CS模式的TCP连接建立过程中,客户端与服务器端流程如下:
客户端流程:发送请求->接收服务器端确认->发送对服务器端确认的确认。
服务器端流程:接收客户端的连接建立请求->发送确认->接收客户端发送的对确认的确认。
1、刚开始客户端和服务端都处于CLOSED状态,服务端开始监听某个端口,进入LISTEN状态。
2、客户端发送连接请求报文,其中包含SYN=1,ACK=0,初始序列号x,进入SYN-SENT状态。
3、服务器端接受请求报文后,向客户端发送确认报文,其中包含SYN=1,ACK=1,确认号x+1,自己的初始序列号y,之后服务器会进入SYN-RCVD状态。
4、客户端收到 服务器端的确认报文后,会发送一个确认报文给服务器,表明已经接收到服务器发送的确认报文。该报文中包含ACK=1,确认号y+1,序列号x+1。同时客户端会进入ESTABLISHED状态。
5、服务器收到上述报文后会进入ESTABLISHED状态。此时客户端与服务器的TCP连接建立完成。
为什么TCP连接不是两次握手?即为什么客户端最后会向服务器发