1、介绍
TCP(网络传输控制协议),是一种面向链接的、可靠的、基于字节流的传输层通信协议。
在数据传输前建立连接的工作需要经历三次握手,数据传输后断开连接要经历四次挥手。
2、TCP标志位
TCP共有6个标志位,分别是:
(1)SYN(建立连接)
(2)ACK(确认)
(3)PSH(传输)
(4)FIN(结束)
(5)RST(重置)
(6)URG(紧急)
3、三次握手过程
(1)Client向Server发送一个连接请求,将数据包中标志位SYN=1,发送序号SEQ=x,同时Client进入SYS_SEND状态。(SYN发送状态)
(2)Server收到数据包后,根据收到的SYN=1知道了Client请求建立连接,Server将标志位SYN和ACK都置为1,确认需要ACK=x+1,随机产生一个发送序号SEQ=y,将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。(SYN收到状态)
(3)Client收到Server发来的数据包,检查确认序号是否是x+1,标志位ACK是否为1,如果正确,则将标志位ACK置为1,确认序号ACK=y+1,并将数据包发送给Server,Server检查确认序号ACK是否为y+1,标志位ACK是否为1,如果正确则连接建立成功,Client和Server进入EstabLished状态。(已建立的状态)
4、四次挥手过程
(1)假设现在Client想要断开连接,则向Server发送一个数据包,其中标志位FIN=1,ACK=1,发送序号SEQ=x,确认序号ACK=y,Client进入FIN_WAIT状态。
(2)Server收到Client发送的FIN=1,知道了Client想要断开连接,则向Client发送一个确认包,其中标志位ACK=1,发送序号SEQ=y,确认序号ACK=x+1,Server进入Close_WAIT状态。
(3)这时Server也要断开连接,此时向Client发送一个数据包,其中标志位FIN=1,发送序号SEQ=y+1,Server进入Last_ACK状态。
(4)Client收到了Server的断开请求后,Client进入Time_Wait状态,接着发送一个确认包,标志位ACK=1,发送序号SEQ=x+1,确认序号ACK=y+2,Server收到后确认信息进入Closed。Client等待2MSL(报文段最大生存时间)秒后发现没有回复则也变为Closed状态。