因为TCP是双向通信协议,双方既可以是Client也可以是Server。为了好理解TCP的三次握手建连,假设建连发送方为Client,接收方为Server;
首先应该理解的是三次握手是为了建立双向通信;
- 首先Server端是监听状态(Listen):是为了监听Client发送的连接请求报文段。
- Client端,需要发送连接请求报文段(包含了同步位SYN=1)(表示Client端可以向Server端传输字节流数据):此时Client端是同步已发送状态(SYN_SENT)。
- Server端接收到了Client端发送的连接请求报文段,如同意建立连接,需要反馈给Client端一个确认报文段ACK(ACK=1),另外因为是双向通信,所以Server端也要发送一个连接请求报文段SYN给Client端。(表示Server端也可以向Client端传输字节流数据)此时Server端的是同步已接收状态(SYN_RCVD)。
- Client端接收到了Server端发送的连接请求报文段,也需要反馈一个确认报文段ACK(ACK=1)给Server端。此时Client端到Server端的连接已建立,所以Client端此时是ESTABLISHED(已建立连接)状态。
- 最后Server端到Client端的连接也已建立,所以Server端此时是ESTABLISHED(已建立连接)状态。