TCP 连接管理
每个 TCP 连接都有三个阶段:连接建立、数据传送和连接释放。TCP 连接的两个端点是套接字。
连接建立
客户机的 TCP 首先向服务器的 TCP 发送一个连接请求报文段,其中不含应用层数据。首部的 SYN 被置为1,客户机会随机选择一个起始序号x。
服务器的 TCP 收到请求报文段后,同意则为该连接分配 TCP 缓存和变量,并发回确认。确认报文段中 SYN 和 ACK 都被置为1,确认号字段值为x+1,随机产生一个起始序号值为y。
客户机收到确认报文段后,分配缓存和变量,并发回确认。报文段的 ACK 置为1,序号字段为x+1,确认号字段为y+1。
连接释放
客户机打算关闭连接,就向 TCP 发送连接释放报文段,并停止再发送数据。报文段的 FIN 置1,序号字段为已传送过的数据的最后一个字节的序号加1。
服务器收到连接释放报文段后发回确认。确认号字段为u+1,序号字段为已传送过的数据的最后一个字节的序号加1。此时,从客户机到服务器方向的连接就释放了,TCP 处于半关闭状态。
若服务器也打算关闭连接,就发出 FIN 为1的连接释放报文段。
客户机收到连接释放报文段后,必须发出确认。确认报文段中 ACK 置1,序号字段为u+1。