美文网首页网络基础
TCP连接的建立与释放

TCP连接的建立与释放

作者: Jewel591 | 来源:发表于2018-03-26 22:43 被阅读3次

一、TCP连接的建立

TCP 是面向连接的,在传输 TCP 报文段之前先要创建连接,发起连接的一方被称为客户端,而响应连接请求的一方被称为服务端,而这个创建连接的过程被称为三次握手

  1. 客户端发出请求连接报文段,其中报头控制位SYN=X

  2. 服务端收到请求报文段后,向客户端发送确认报文段。确认报文段的首部中ACK=X+1,同时在同一个包中包含自己的SYN=Y

  3. 客户端收到服务端的确认报文段后,还要给服务端发送一个确认报文段。这个报文段中ACK=Y+1

至此 TCP 连接已经建立,客户端进入 ESTABLISHED(已建立连接)状态,当服务端收到确认后,也进入ESTABLISHED状态,它们之间便可以正式传输数据了。

二、TCP连接的释放

当传输数据结束后,通信双方都可以释放连接,由于TCP连接是全双工的,因此每个方向都必须单独进行关闭,这个释放连接过程被称为四次挥手 :

  1. 此时 TCP 连接两端都还处于 ESTABLISHED 状态,客户端停止发送数据,并发出一个 FIN 报文段。

  2. 服务端回复确认报文段,确认号 ack=FIN+1。现在 TCP 连接处于半开半闭状态,服务端如果继续发送数据,客户端依然接收(因为只关闭了一个方向:客户端到服务端)。

  3. 服务端发送完数据后,发出 FIN 报文段,然后进入 LAST-ACK(最后确认)状态。

  4. 客户端回复确认确认报文段,ACK=FIN+1,然后进入 TIME-WAIT(时间等待)状态。

注意此时连接还没有释放,需要时间等待状态结束后(4 分钟) 连接两端才会 CLOSED。设置时间等待是因为,有可能最后一个确认报文丢失而需要重传。

三、为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACKSYNACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

相关文章

  • 理解TCP和UDP

    一、TCP端口 二、TCP报文结构 三、TCP连接的建立和释放 TCP的整个交互过程可总结为:先建立连接、然后传输...

  • TCP连接的建立与释放

    一、TCP连接的建立 TCP 是面向连接的,在传输 TCP 报文段之前先要创建连接,发起连接的一方被称为客户端,而...

  • 🌐 TCP连接的建立与释放

    计算机网络分层结构: 7层OSI参考模型(法定标准) 4层TCP/IP参考模型(事实标准) 标准化工作 计算机网络...

  • TCP 的三次握手和四次挥手,了解泛洪攻击么

    引言 TCP 建立连接与断开连接的过程 TCP 泛洪攻击(TCP 建立连接过程中的攻击手段)与防护 TCP 建立连...

  • TCP/IP协议--TCP三次握手建立连接

    TCP连接 TCP是面向连接的协议,它基于传输连接来传送TCP报文段 TCP传输连接的建立和释放是每一次面向连接的...

  • TCP三次握手四次挥手详解

    TCP的运输连接管理 TCP是面向连接的协议。运输连接是用来传送TCP报文的。TCP运输连接的建立和释放是每一次面...

  • TCP 与 UDP

    TCP 与 UDP(主要说TCP)TCP/UDP端口号TCP/UDP端口号TCP连接的建立TCP连接的建立发送se...

  • 简述TCP连接的建立与释放(三次握手、四次挥手)

    在介绍TCP连接的建立与释放之前,先回顾一下相关知识。 TCP是面向连接的运输层协议,它提供可靠交付的、全双工的、...

  • UDP

    UDP 和 TCP 的不同 TCP 在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或...

  • TCP(一) 建立连接 & 连接释放

    TCP是一个面向连接的服务,建立连接需要经过三次握手,释放连接需要经过四次挥手。 三次握手 客户端与服务器交互需要...

网友评论

    本文标题:TCP连接的建立与释放

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