Tcp是什么意思(Tcp是什么)

在之前的文章中,我们详细介绍了 UDP 协议,它主要用于支持多媒体应用,UDP 的主要缺点在于无法保证数据的顺序性和可靠性。
对于大多数 Internet 应用来说,它们更需要可靠的、按顺序传输的特性,TCP 协议便应运而生,成为 Internet 世界的主力军。

TCP 是什么?

传输控制协议(TCP, Transmission Control Protocol),是专门设计用于在互联网上提供可靠的端到端字节流传输的协议。
每台支持 TCP 的计算机都有一个 TCP 传输实体,这个实体可以是一个库过程、一个用户进程,或者是内核的一部分。
当数据报到达另一台计算机时,它们被传递给 TCP 传输实体,TCP 传输实体则会重构出原始的字节流。TCP 通过序号、确认和重传机制来确保数据的可靠传输,同时还具备流量控制和拥塞控制等功能,使得它成为互联网上应用最广泛的传输协议之一。
TCP 服务模型
TCP 服务模型通过在发送端和接收端创建套接字(socket)端点来实现,每个套接字都具有一个编号地址,由主机的 IP 地址和本地主机的 16 位数值组成。
要使用TCP服务,必须明确地在一台计算机的套接字和另一台计算机的套接字之间建立连接。
一个套接字可以同时用于多个连接,也可以同时用于两个或多个连接,每个连接可以通过两端的套接字标识符来识别,这种模型提供了灵活性和可扩展性,使得 TCP 能够有效地管理多个连接,从而满足不同应用程序的需求。
TCP 建立连接
TCP 建立连接时采用三次握手的方式。
首先,某一端(通常是服务器端)必须先执行 LISTEN「监听」和 ACCEPT「接受」操作,并被动地等待连接请求,这个时候可以选择只接受来自特定源的请求,也可以不限制。

另一端(通常是客户端)执行 CONNECT「连接」操作,同时指定要连接的 IP 地址和端口、愿意接受的最大 TCP 段长度以及其他可选参数。CONNECT 操作发送一个带有 SYN 标志置位、ACK 标志置为关闭的 TCP 段,然后等待服务器响应。
当该段到达接收方时,接收方的 TCP 实体会检查目标端口是否有进程在执行 LISTEN 操作。如果有进程在监听该端口,则 TCP 实体将入栈的 TCP 段交给该进程处理。该进程可以选择接受或拒绝连接请求,如果接受,则返回一个确认段。
如果没有进程在 LISTEN ,则发送一个带有 RST 标志的应答报文,拒绝连接请求。
TCP 连接释放
为了释放一个 TCP 连接,任何一方都可以发送一个带有设置了 FIN 标志位的 TCP 段,这表示该方向上已经没有数据要发送了。
当 FIN 段被另一方确认后,该方向上的连接就会被关闭,不再发送任何数据。
然而,另一个方向上可能仍在继续发送数据流。只有当两个方向上的连接都关闭后,连接才算彻底释放。
通常情况下,释放一个连接需要 4 个 TCP 段,即每个方向上一个 FIN 和一个 ACK。
这个过程有点像电话通话过程中,双方说完再见之后同时挂断电话。TCP 连接的两端也可以同时发送 FIN 段,这两个段按照常规的方式被单独确认,然后连接被关闭。
TCP 的窗口探测
假设接收端有 4KB 的缓冲区,如果发送端传送了 2KB 的数据段,该数据已经被正确的接收,那么接收端将确认该数据段,并相应地调整窗口大小。

接收端的缓冲区还剩下 2KB 空间,那么它会将下一个期望字节开始窗口设置为 2KB。
然后,如果发送端再次传输了 2KB 的数据,虽然这段数据也被确认了,但接收端的窗口大小变为 0,因此发送端不得不停止发送,等待接收端的应用程序从缓冲区中取走一些数据。
一旦接收端有了足够的空间,它会通知发送端可以发送更多数据,这样发送端才能继续发送数据。
当窗口大小变为 0 时,发送端不能再发送数据段了,但可以发送一个只有 1 字节的段,这被称为窗口探测,窗口探测的目的是强制接收端重新通知发送端下一个期望的字节和窗口大小。
发送端并不会立即发送接收到的数据,接收端也不会立即发送确认段。例如,当第一块 2KB 的数据到达时,TCP 知道接收端有 4KB 的窗口空间,因此可以缓存这些数据,直到另一块 2KB 的数据到达,然后发送一个包含 4KB 有效载荷的段。
TCP利用这种自由度来优化传输性能。
TCP 计时器管理
TCP 使用计时器管理重传机制。当 TCP 实体发送一个段时,会同时启动一个计时器。如果在计时器超时之前收到了对该段的确认,则计时器会停止。但如果在确认到来之前计时器超时了,说明该段丢失了,需要进行重传。
那么问题就来了,超时间隔应该设置多长?
确定超时时间的关键是权衡。如果超时时间设置得太短,会导致大量不必要的重传,增加网络负载。而如果设置得太长,一旦数据包丢失,由于重传延迟过长,会影响性能。
解决方案是采用动态算法。TCP 维护一个变量称为「平滑的往返时间」,它代表了当前到达接收端的往返时间的最佳估计。
当 TCP 发送一个段后,启动计时器。计时器有两个作用:一是观察确认段返回的时间,二是如果确认时间太长,则触发重传。
如果在计时器超时之前收到了确认,TCP 会测量这次确认所花的时间,并根据算法重新计算超时时间。这种动态调整能够更好地适应网络性能的变化,提高 TCP 的性能。
TCP 拥塞控制
TCP 拥塞控制是一种网络管理机制,用于检测并应对网络拥塞。当路由器上的队列变得非常长时,表明网络可能出现拥塞,网络层会试图通过丢弃数据包来管理拥塞。
TCP 维护一个窗口,表示发送端可以给接收端发送数据的大小,这个窗口的大小除以连接的往返时间得到相应的速率。
除了拥塞窗口外,还有一个流量控制窗口,表示接收端可以缓冲的字节数。TCP跟踪这两个窗口中可能发送的字节数,并选择其中最小的作为发送的限制。
如果拥塞窗口或流量控制窗口暂时满了,TCP 会停止发送数据。例如,如果接收端请求发送 64KB 的数据,但发送端知道超过 32KB 数据会导致网络拥塞,那么它只会发送 32KB。
另一方面,如果发送端知道网络可以轻松处理高达 128KB 的数据,那么它会按要求发送 64KB 数据。这样,TCP通过控制发送的数据量来避免网络拥塞。

内容优化:ChatGPT
图片来源:Pixabay
内容来源:《计算机网络》

原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34529.html

(0)
小道研究的头像小道研究
上一篇 2024年4月10日
下一篇 2024年4月10日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注