TCP连接的管理
建立连接过程
TCP建立连接的过程如下:
第一步:客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。该报文段中不包含应用层数据。该报文段会将首部中的SYN置为1,这个特殊报文段被称为SYN报文段。
客户会随机地选择一个初始序号(client_isn),并将此编号放置于该起始的TCP SYN报文段的序号字段中。该报文段会被封装在一个IP数据报中,并发送给服务器。
第二步:一旦包含TCP SYN报文段的IP数据报到达服务器主机,服务器会从该数据报中提取出TCP SYN报文段,为该TCP连接分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段。这个允许连接的报文段也不包含应用层数据。
在报文段的首部包含3个重要的信息。首先,SYN比特被置为1。其次,该TCP报文段首部的确认号字段被置为client _ isn + 1。最后,服务器选择自己的初始序号(server_isn),并将其放置到TCP报文段首部的序号字段中。
这个允许连接的报文段实际上表明了: “我收到了你发起建立连接的SYN分组,该分组带有初始序号client_isn。我同意建立该连接。我自己的初始序号是server_isn。该允许连接的报文段被称为SYNACK报文段(SYNACK segment)。
第三步:在收到SYNACK报文段后,客户也要给该连接分配缓存和变量。客户主机则向服务器发送另外一个报文段;这最后一个报文段对服务器的允许连接的报文段进行了确认(该客户通过将值server_isn + 1放置到TCP报文段首部的确认字段中来完成此项工作)。
该三次握手的第三个阶段可以在报文段负载中携带客户到服务器的数据。

总结
也就是说,第一步客户端先发起一个报文段请求,用于表明我想要建立连接,不携带数据。
第二步,服务器收到请求,允许建立连接,分配缓存,然后给客户端通知该消息,也不携带数据。
第三步,客户端收到服务端同意建立连接的请求,然后给服务端回应,我收到了你的同意建立连接。第三步其实是一个确认的消息,只不过可以携带一部分数据。
终止连接的过程
当连接结束后,主机中的“资源”(即缓存和变量)将被释放。
当客户想要关闭连接,它会向服务端发送一个特殊的报文,服务端收到后会给他一个ACK响应。然后服务端发送自己的终止报文段,客户端收到后会给该终止报文段一个确认。之后,两台主机上用于该连接的所有资源都被释放。

参考
《计算机网络:自顶向下方法》