TCP三次握手过程
做的俩件事:
- 同步通信双方的初始序列号
- 协商TCP通信参数
客户端发送请求之前会创建一个结构(保存连接使用的端口,目的端口,目的ip,序列号,应答号,自己窗口大小,对方窗口大小,缓冲区...)
然后发送SYN报文(SYN报文+seq=x)发送之后客户端进入SYN-SENT状态
服务器端开始会处在Listen状态,当接收到报文时会在本地创建一个数据结构(保存连接使用的端口,目的端口,目的ip,序列号,应答号,自己窗口大小,对方窗口大小,缓冲区...)然后响应客户端发送SYN+seq=y和ACK+ackx+1
//y就是服务器端自己的序列号,x+1是告诉客户端我响应的是你给我发送x的那个请求
然后进入SYN_RCVD状态(特别短暂)客户端收到SYN和ACK之后进入ESTABLISHED状态(这时服务器端进入SYN-RECEIVED状态)
客户端收到SYN和ACK之后会响应服务器端,发送ACK+ack=y+1
//这是客户端告诉服务器端,服务器你给我的SYN和ACK我收到了,
服务器端收到客户端响应的ACK报文之后进入ESTABLISHED状态