ACK(acknowledge) 确认序号
SYS(Synchronize) 同步序号
FIN (finish)发送端完成发送任务
连接的三次握手
为了建立一个TCP连接需要经过三次握手;
第一次;请求端发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。
第二次;服务端发送返回报文段SYN作为应答,序号为服务端初始序号(ISN)并将确认序号字段(ACK字段置1,表示序号有效)序号设置为客户端初始序号+1
第三次;客户端返回确认序号(ACK字段置1,表示序号有效),确认序号必须是服务端序号+1,以作为对服务器的SYN报文进行确认。
三次握手图如下所示:
TCP的三次握手
在建立TCP连接时双方没有交换任何数据建立一个连接需要三次握手,而终止一个连接要经历过4次握手。
第一次;当一方完成数据发送任务后就能发送一个FIN(FIN字段置1)和序号来终止这个方向上的链接。收到一个FIN只意味着在这一方向上没有数据流动。一个TCP连接在收到一个FIN后很可能仍然能发送数据,这对半关闭的应用来说是可能的。
第二次;当一服务器收到一个FIN时它返回一个ACK(ACK字段置1),确认序号为收到的序列号+1(和SYN一样一个ACK也占用一个序号),同时服务器还应向应用程序传送一个文件结束符,接着这个服务器就关闭它的连接,导致它的服务端发送一个FIN(第三次)。
第四次;客户端发回一个确认(ACK字段置1),并将确认序号设置为第三次的序号+1。
下图中显示了终止一个连接的典型握手顺序,我们省略了序号。在这个图中,发送FIN将导致应用程序关闭它们的连接,这些FIN的ACK是由TCP软件自动产生的。
终止时的四次握手