首先来介绍一下三次握手:
1:服务器必须准备好接受外来的连接,这通过调用socket,bind,和listen函数来完成,称为被动打开
2:客户通过调用connect 进行主动打开,这引起客户TCP发送一个SYN分节。一般情况下,SYN分节不携带数据,它只含有一个IP头部,一个TCP头部,及可能的TCP选项。
3:服务器必须确认客户的SYN,同时自己也得发送一个SYN分节,包含同一连接中发送数据的一个系列号,服务器以单个分节向客户发送SYN和对客户SYN的ACK.
4:客户确认ACK.
下图是从Unix网络编程中截取处理的:
在TCP连接终止,TCP连接时候需要3个分节,而终止连接需要4个分节。
直接看一个图就非常清晰了:
以下是图解: