第一次握手:请求与服务器建立新的连接,并会设置一个初始随机序列数
第二次握手:在接受到客户端想要建立新的联系的请求后,发送一个带有SYN或ACK (同步或确认)标志的报文段进行回复。该报文段包含服务器的初始序列号(Seq)和一个确认序列号(Ack)字段,该字段的值为客户端的初始序列号加1。
第三次握手:客户端在接收到服务器的响应后,发送一个带有ACK标志的报文段给服务器,确认收到了服务器的响应。该报文段的确认序列号(Ack)字段的值为服务器的初始序列号加1。这样客户端和服务器都相互确认了对方的序列号和自己的序列号,进而就可以建立连接
4次断开
第一次断开:客户端进程发出断开连接指令,这将导致客户端的TCP程序创建一个特殊的TCP报文段,发送到服务器。这个报文段的FIN(终止)字段被置为1,表示这是一条断开连接的报文。
第二次断开:服务器接收到客户端发来的断开连接报文,向客户端回送这个报文的确认报文(ACK字段为1),告诉服务器已经接收到FIN报文,并允许断开连接。
第三次断开:服务器发送完确认报文后,服务器的TCP程序创建一条自己的断开连接报文,此报文的FIN字段被置为1,然后发往客户端。
第四次断开:客户端接收到服务器发来的FIN报文段,则产生一条确认报文(ACK为1),发送给服务器,告知服务器已经接收到了它的断开报文。服务器收到这条ACK报文段后,释放TCP连接相关的资源(缓存和变量),客户端在等待一段时间后(半分钟、一分钟或两分钟),也释放处于客户端的缓存和变量