现在的位置: 首页 > 综合 > 正文

TCP连接的建立和终止

2017年12月01日 ⁄ 综合 ⁄ 共 701字 ⁄ 字号 评论关闭

TCP连接的建立和终止(引自UNIX网络编程第1卷)

 

一、TCP连接建立三路握手

下述步骤建立一个TCP连接:

1. 服务器必须准备好接受外来的连接。这通过调用socket、bind和listen函数来完成,称为被动打开;

2. 客户通过调用connect进行主动打开。这引起客户TCP发送一个SYN分节(表示同步),它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号。一般情况下SYN分节不携带数据,它只含有一个IP头部、一个TCP头部及可能有的TCP选项。

3. 服务器必须确认客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器以单个分节向客户发送SYN和对客户SYN的ACK。

4. 客户必须确认服务器的SYN。

 

                                        TCP的三路握手

 

 

二、TCP连接终止

TCP用三个分节建立一个连接,终止一个连接则需四个分节。

1. 某个应用进程首先调用close,我们称这一端执行主动关闭。这一端的TCP于是发送一个FIN分节,表示数据发送完毕。

2. 接收到FIN的另一端执行被动关闭。这个FIN由TCP确认。它的接收也作为文件结束符传递给接收方应用进程,因为FIN的接收意味着应用进程在相应连接上再也接收不到额外数据。

3. 一段时间后,接收到文件结束符的应用进程将调用close关闭它的套接口。这导致它的TCP也发送一个FIN。

4. 接收到这个FIN的原发送方TCP(即执行主动关闭的那一端)对它进行确认。

 

                                     TCP连接终止

抱歉!评论已关闭.