关闭

第二章 传输层:TCP、UDP和SCTP(2)—TCP连接的建立和终止

140人阅读 评论(0) 收藏 举报
分类:

1. 三次握手

建立一个TCP连接时会发生下述情形

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

(2) 客户通过调用connect发起主动打开。这导致客户TCP发送一个SYN(同步)分节,它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号。通常SYN分节不携带数据,其所在IP数据报只包含一个IP首部、一个TCP首部及可能有的TCP选项。

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

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


2. TCP连接终止

TCP终止一个连接需要4个分节

(1) 某个应用进程首先调用close,该端的TCP于是发送一个FIN分节,表示数据发送完毕。

(2) 接收到这个FIN的对端执行被动关闭。这个FIN由TCP确认。它的接收也作为一个文件结束符传递给接收端应用进程(放在已排队等候该应用进程接收的任何其他数据之后),因为FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。

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

(4) 接收这个最终FIN的原发送端TCP(执行主动关闭的那一端)确认这个FIN


3. TCP状态转换图




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11840次
    • 积分:439
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:25篇
    • 译文:0篇
    • 评论:0条