TCP连接的建立和中止
理解TCP连接的建立和中止,有助于我们理解connect
、accept
和close
这3个函数。
TCP连接的建立
- 服务器准备好接受外来的连接。这通常通过调用
socket
、bind
和listen
这3个函数来完成,我们称之为被动打开(passive open)。 - 客户通过
connect
发起主动打开(active open)。这导致TCP客户发送一个SYN分节,它告诉服务器客户将在(待建立)的连接中发送的数据的初始序列号。通常SYN不携带数据,其所在IP数据包只有一个IP首部、一个TCP首部及可能有的TCP选项。 - 服务器必须确认(ACK)客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器在单个分节中发送SYN和对客户SYN的ACK(确认)。
- 客服必须确认服务器的SYN。
这种交换至少需要3个分组,因此成为TCP的三路握手(three-way handshake)。