曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3868|回复: 0
打印 上一主题 下一主题

TCP 连接的终止

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-12-19 18:20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
建立一个 TCP 连接需要 3 次握手 ,而终止一个连接通常需要 4 个步骤,其过程如下图所示:



在关闭过程中,主要通过设置并发送 FIN  标志来标识一个连接的结束。上图中,不管是 Host A 还是 Host B ,先发送了 FIN 给对方的一端称之为主动关闭(active close)。

如上图,Host A 设置 FIN 和 ACK 标志后并将该包发送给 Host B 告诉它将关闭此次的连接,Host B 对 Host A 响应于一个 ACK 包然后还传送了它自己的的 FIN/ACK 包,最后 Host A xiangying于 Host B 一个 ACK 。

虽然像上面通常需要经过 4 个步骤,但不一定每种情形都会这样。比如有些情况下第一个步骤是随数据一起发送的;另外,Host B 回应 Host A 这两个步骤也可能合二为一,下面通过用 wireshark 来捕捉一次 SSH 的结束连接过程可以观察到这种情形。

在服务器端启动 wireshark 之前,可以先设置过滤条件为 port 22 表示只监听 22 端口,然后再启动 wireshark ,接着打开 SSH 客户端连接服务器,登入后再执行一次 exit 命令退出客户端,接着停止 wireshark ,观察捕捉最后几条数据便可看到上面描述的过程,如下所示(这里假设客户机 IP 是 192.168.1.100,服务器 IP 是192.168.1.104):

1. 客户机发送 FIN/ACK 给服务器表示要终止此次连接:

注意,此时客户机发来的序列号为 2689 (相对值),应答号为 4266(相对值)。

2. 服务器相应并发送 FIN/ACK 给客户机:

服务器相应客户机时,将客户机的序列号加 1 后(2690) 作为对客户机的响应值,而发送的序列号正是客户机发来的应答号(4266)。

3. 客户机相应服务器,连接正式结束:

最后客户机响应服务器时将服务器发来的序列号加1后(4267)作为响应号发送给服务器,而服务器先前发来的响应号作为自己的序列号(2690)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-5 01:41 , Processed in 0.079597 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表