我正在寻找,双方如何确定将使用哪个比例因子?在 syn 数据包中,我们可以给出一个比例因子,然后当双方具有任何比例因子时,我们可以理解双方可以支持窗口缩放。现在的问题是,如果发送方在 syn(可能是 syn、ack)数据包的缩放选项中将缩放因子设置为 8,而接收方设置为 7,那么在这个 tcp 连接中将使用哪一个?
答案1
TCP 窗口是关于系统在接收数据时可以缓冲多少数据。因此,每一端都说明了它可以接收什么。
请记住,无论谁发起,TCP 连接始终是双向连接。当然,大多数情况下,一个方向发送的数据量远远大于另一个方向发送的数据量,但它仍被视为双向连接。因此双方都被视为发送方和接收方,双方需要指定在接收时可以缓冲多少数据,并传达接收缓冲区的满程度。
答案2
任一 TCP 呈现的值并不重要,重要的是两者上都存在窗口缩放选项。可用窗口始终是发送设备发送窗口或接收设备接收窗口中较小的一个。因此,例如,如果您要发送到的服务器剩余的缓冲区空间有限,它将使用确认来通告它可以接收的窗口大小。然后,发送 TCP 将根据需要后退。TCP 窗口始终根据网络条件根据需要在批量传输中发生变化。窗口缩放值只是基于适配器功能的最大值。
答案3
TCP 采用 AIMD(加法增加和乘法减少)工作;在 TCP 套接字进入已建立状态后,发送方 TCP 将使用其滑动窗口来最小化 1 个 seg。如果 RX TCP 确认了该 seg,则发送方将增加 2 个 seg,如果确认了则窗口为 3,依此类推。如果 seg 丢失且发送方重新传输,则窗口将从 4 减少到 2。比例因子信息在 syn 发送和接收数据包中共享。