美文网首页
TCP终止连接(TCP四次挥手)

TCP终止连接(TCP四次挥手)

作者: 吴业鹏 | 来源:发表于2018-04-25 00:05 被阅读0次

TCP建立一个连接需要3个分节,终止一个连接需要4个分节。
(1)某个应用进程首先调用close,我们称该端执行主动关闭(active close)。该 端的TCP于是发送一个FIN分节,表示数据发送完毕。
(2)接收到这个FIN的对端执行被动关闭(passive close)。这个FIN由TCP确认。它的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程(放在已排队等候该应用进程接收的任何其他数据之后),因为FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
(3)一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(4)接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
既然每个方向都需要一个FIN和一个ACK,因此通常需要四个分节。我们使用限定词“通常”是因为:某些情况下步骤1的FIN随数据一起发送;另外,步骤2和步骤3发送的分节都出自执行被动关闭那一端,有可能被合并成一个分节。


TCP连接关闭时的分组交换.png

类似SYN,一个FIN也占据一个字节的序列号空间。因此,每个FIN的ACK确认号就是这个FIN的序列号加1.
在步骤2于步骤3之间,从执行被动关闭一端到执行主动关闭一端流动数据是可能的。这称为半关闭(half-close)
当套接字被关闭时,其所在端TCP各自发送了一个FIN。我们在图中指出,这是由应用进程调用close而发生的,不过需认识到,当一个Unix进程无论自愿地(调用exit或从main函数返回)还是非自愿地(收到一个终止本进程的信号)终止时,所有打开的描述符都被关闭,这也导致仍然打开的任何TCP连接也发生一个FIN。
上图展示了客户执行主动关闭的情形,不过我们指出,无论是客户还是服务器,任何一端都可以执行主动关闭。通常情况是客户执行主动关闭,但是某些协议(譬如值得注意的HTTP/1.0)却由服务器执行主动关闭。

相关文章

  • 网络资料总结3

    传输层相关 一 TCP 1.1 TCP状态 TCP连接的建立和终止 理解TCP的三次握手,四次挥手TCP 为什么是...

  • 二十(8)、TCP协议的四次挥手 ------ 2020-04-

    1、TCP连接的四次挥手 2、TCP连接的长连接

  • 四次挥手

    四次挥手,别名连接终止协议。其性质为终止协议。 TCP共有6个标志位,分别是: SYN(synchronous),...

  • TCP终止连接(TCP四次挥手)

    TCP建立一个连接需要3个分节,终止一个连接需要4个分节。(1)某个应用进程首先调用close,我们称该端执行主动...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • 了解TCP/IP协议

    TCP/IP 三次握手四次挥手 1. TCP 基本认识 2. TCP 连接建立 3. TCP 连接断开 4. so...

  • 三次握手和四次挥手

    三次握手是TCP建立连接时进行的,四次挥手是TCP断开连接是进行的,要弄明白三次握手和四次挥手,需要了解TCP的协...

  • TCP 三次握手 四次挥手

    一. TCP 三次握手 一. TCP 四次挥手 断开一个tcp连接则需要“四次挥手”: 客户端-发送一个FIN,用...

  • TCP四次挥手

    TCP 建立一个连接需 3 次握手,而终止一个连接则需要四次挥手。四次挥手的整个过程是这样的: 首先,一方应用程序...

  • TCP的三次握手和四次挥手

    TCP的三次握手和四次挥手 TCP/IP是面向连接的协议。运输连接是用来发送TCP报文的。TCP的运输连接又三个过...

网友评论

      本文标题:TCP终止连接(TCP四次挥手)

      本文链接:https://www.haomeiwen.com/subject/jsnslftx.html