20210520-TCP滑动窗口

Posted 茴薏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20210520-TCP滑动窗口相关的知识,希望对你有一定的参考价值。

TCP滑动窗口

作用:
1.提供TCP可靠性:对发送的数据进行确认
2.流量控制:窗口大小随链路变化

一、TCP窗口控制
TCP中窗口大小是指tcp协议一次传输多少个数据。因为TCP是一个面向连接的可靠的传输协议,既然是可靠的就需要传输的数据进行确认。TCP窗口机制有两种,一种是固定窗口大小,另一种是滑动窗口。数据在传输时,TCP会对所有数据进行编号,发送方在发送过程中始终保持着一个窗口,只有落在发送窗口内的数据帧才允许被发送;同时接收方也始终保持着一个接受窗口,只有落在窗口内的数据才会被接收。这样通过改变发送窗口和接收窗口的大小就可以实现流量控制。

二、TCP窗口大小
TCP的窗口滑动技术通过动态改变窗口的大小来调节两台主机之间数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口,一个用于接收数据,一个用于发送数据。接收方设备要求窗口大小为0时,表明接收方已经接收了全部数据,或者接收方应用程序没有时间读取数据,要求暂停发送。
TCP在传送数据时,第一次接受方窗口大小是由链路带宽决定的,但是接收方在接收到的数据后,返回ack确认报文,同时也告诉了发送方自己的窗口大小,此时发送方第二次发送数据时,会改变自己的窗口大小和接收方一致。
当窗口过大时,会导致不必要的数据来拥塞我们的链路,但是窗口太小时,会造成很大的延时,比如为1时,发送方每发送一个数据,接收方就会返回一个ack报文,在发送方未接收到接收方的确认报文ack之前不会进行下一次发送。(当链路变好了或者变差了这个窗口还会发生变化,并不是第一次协商好了以后就永远不变了。)【这句话不太理解】

三、窗口滑动

以上是关于20210520-TCP滑动窗口的主要内容,如果未能解决你的问题,请参考以下文章

20210520-TCP滑动窗口

20210520-TCP滑动窗口

[PHP] 基于redis实现滑动窗口式的短信发送接口限流

粘包拆包发生原因滑动窗口MSS/MTU限制Nagle算法

OCR 中的滑动窗口需要大量时间

02滑动窗口