面试官:你解释一下什么是TCP的固定窗口和滑动窗口

网络 网络管理
TCP 还提供了流量控制机制。 流量控制可以调整给定会话中源和目的之间的数据流速,有助于保持 TCP 传输的可靠性。

固定窗口

TCP 还提供了流量控制机制。 流量控制可以调整给定会话中源和目的之间的数据流速,有助于保持 TCP 传输的可靠性。 流量控制的实施方法包括限制一次可以转发的数据段数量,并要求在发送更多数据段之前确认接收。

要实施流量控制,TCP 要确定的第一件事是目的设备可以接受的数据段数量。 TCP 报头包括一个称为“窗口大小”的 16 位字段。 这是 TCP 会话的目的设备一次可以接受和处理的字节数。 通过源和目标之间的三次握手,会话开始时即可确定初始窗口大小。 一旦同意,源设备必须根据窗口大小限制发送到目的设备的数据段数量。 只有源设备收到数据段已接收的确认之后,才能继续发送更多会话数据。

在接收确认的延迟过程中,发送方不会发送任何额外数据段。 如果网络拥堵,或者接收主机资源紧张,延迟时间可能就更长。 延迟时间越长,该会话过程的有效传输速率越低, 当运行多个会话时,减缓每个会话的数据传输有助于减少网络和目的设备上的资源冲突。

请参看上图中对窗口大小和确认消息的简易展示。 在本例中,TCP 会话的初始窗口大小为 3000 字节。 此会话的发送方在传输 3000 字节后等待这些数据的确认消息,以便继续传输更多数据段。 一旦发送方收到接收方发送的确认消息,它就可以传输另外 3000 字节的数据段。

TCP 使用窗口大小尝试管理传输速率,将其调整为网络和目的设备可以支持的最大速度,同时最大限度减少损失和重新传输。

TCP滑动窗口

我们也可以通过动态窗口大小来控制数据流量。 当网络资源受到限制时,TCP 可以减小窗口的大小,这样,目的主机就需要更加频繁地确认所接收的数据段。 由于源主机需要更加频繁地等待数据确认,这便可以大大降低传输的速率。

接收主机将窗口大小值发送到发送主机,表示其准备接收的字节数。 如果目的主机由于缓冲内存受限需要降低通信速率,那么它向源主机发送的确认信息中可以包含一个较小的窗口大小值。

如图所示,如果接收主机发生拥堵,它可以向发送主机发送指定了较小窗口大小的数据段。 图中显示,其中一个数据段丢失了。 接收方将返回数据段的 TCP 报头中的窗口字段值由 3,000 减为 1,500,即将窗口大小改为 1,500。

在没有数据丢失或资源限制的情况下传输一段时间后,接收方开始增加窗口字段,这样可以减少网络开销,因为必须发送的确认减少。 窗口大小持续增加,直至出现数据丢失,然后窗口大小随之减少。

窗口大小的这种动态增减是 TCP 中的一个持续不断的过程。 在高效网络中,由于不丢失数据,窗口可能会相当大。 在基层基础设施面临压力的网络中,窗口可能会很小。

 

 

责任编辑:赵宁宁 来源: 厦门微思网络
相关推荐

2021-08-28 09:06:11

Dubbo架构服务

2011-01-18 13:45:58

2020-02-28 09:09:51

闭包函数作用域

2023-07-10 07:58:45

2020-07-30 07:58:36

加密算法

2021-11-08 15:59:01

MyBatis关联开发

2023-02-08 08:32:41

轮询锁

2023-08-11 07:44:40

TCP滑动窗口数据

2021-07-28 10:08:19

类加载代码块面试

2023-09-12 14:56:13

MyBatis缓存机制

2022-06-06 15:33:20

线程Java释放锁

2023-02-18 13:34:14

Nacos健康检查机制

2020-07-06 08:00:26

MySQL程序员SQL

2023-01-30 15:39:40

GETHTTP

2021-08-13 07:23:15

架构秒杀系统

2023-11-29 08:00:53

JavaTreeMap底层

2022-06-07 12:03:33

Java内存模型

2024-01-29 10:08:11

零拷贝Zero-copyCPU 拷贝

2023-12-29 13:45:00

2021-09-07 10:44:33

Java 注解开发
点赞
收藏

51CTO技术栈公众号