TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立连接。
建立TCP连接
三次握手:TCP的连接建立是一个三次握手的过程,目的是通信双方确认开始序列,以便后续通信的有序进行。 1.连接请求:连接开始时,客户端(Client)发送SYN包,并包含了一个初始的seq=a的值,客户端(Client)进入SYN-SENT状态,等待服务端(Server)确认。2.请求确认:服务端(Server)收到数据包后知道客户端(Client)请求建立连接,将回复一个SYN包,并包含了对上一个a包的回应信息ACK,ACK=a+1。然后还包含了一个随机的自己初始seq=b,服务端进入SYN_RCVD状态。 3.连接确认:客户端(Client)收到确认SYN包后,检查ACK是否为a+1,如果正确将回复发送一个ACK包,其中包含了一个ACK=b+1,和一个seq=a+1,服务端(Server)检查ACK是否为b+1,如果正确则建立连接,Client和Server进入ESTABLISHED状态,完成三次握手,Client和Server之间开始传输数据。
断开TCP连接
四次断开:即终止TCP连接,需要Client端和Server端总共发送4个包已确认连接的断开 1.Client发送一个FIN并包含一个随机的seq=a,主动关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 2.Server收到FIN后,发送一个ACK并包含一个seq=a+1给Client,Server进入CLOSE_WAIT状态。 3.Server发送一个FIN并包含一个随机的seq=b和一个ACK=a+1,用来关闭Server到Client的数据传输,Server进入LAST_ACK状态。 4.Client收到FIN后,Clinet进入TIME_WAIT状态,接着发送一个ACK并包含一个seq=b+1给Server,Server收到ACK包后进入CLOSED状态,完成四次断开
|