TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。
TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)
目录
三次握手
第一次握手
客户端给服务器发送一个SYN段,该段中也包含客户端的初始序列号。即A向B发SYN(同步请求)。
第二次握手
Server 收到数据包后由标志位 SYN=1 知道 Client 请求建立连接, Server 将标志位 SYN 和 ACK 都置为 1,ack=J+1, 随机产生一个值 seq=K, 并将该数据包发送给 Client 以确认连接请求, Server 进入 SYN_RCVD 状态
第三次握手
Client收到确认后若ACK为1,则将该数据包发送给Server,Server检查ACK为1则连接建立成功,Client与Server进入ESTABLISHED状态完成三次握手,可以传输数据
四次断开
第一次挥手
TCP client发送一个FIN ,用来关闭到服务端的连接,client进入FIN_WAIT_1状态
client进程发出连接释放报文,并且停止发送数据。释放报文首部,FIN=1,其序列号为seq=x
第二次挥手
TCP server 收到FIN 后,发送一个ACK 确认,server进入CLOSE_WAIT状态,客户端收到ACK后会进入FIN_WAIT_2状态
这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受
第三次挥手
TCP server 发送一个FIN,用来关闭server到client的连接,server进入LAST_ACK状态。
服务器将最后的数据发送完毕
第四次挥手
TCP client收到FIN后,client进入TIME_WAIT状态,接着发送一个ACK给server,server进入CLOSED状态