TCP滑动窗口是一种流量控制机制,它允许发送方在等待确认时继续发送数据,同时根据网络状况调整发送速率,以优化网络利用率和传输效率。
TCP连接的每一端都有一个接收窗口和发送窗口
接收窗口:接收端指定的能够接收的数据量,通过TCP报文头的窗口字段指定。
发送窗口:发送端指定的允许发送但未被确认的数据量。窗口大小就是指无需等待确认应答,而可以继续发送数据的最大值。
滑动窗口原理
发送方维护一个发送窗口,它是一个动态调整的窗口范围,可以包含多个TCP报文段。
接收方维护一个接收窗口,指示发送端可以发送多少字节的数据而不会导致溢出。
窗口大小由哪一方决定?
三次握手的第二次和第三次发ACK包的时候,会第一次交换窗口大小,通常窗口大小是由接收方的窗口大小来决定的。发送方发送数据大小不能超过接收方的窗口大小,否则接收方就无法正常接收到数据。
滑动窗口的操作
发送方根据接收方发来的确认信息和窗口大小来调整发送窗口的大小。
如果接收窗口大小为零,发送方不能发送数据,必须等待接收方扩大窗口。
发送方每发送一个报文段,会启动一个定时器来跟踪未收到确认的报文段,当定时器超时时,发送方会重传相应的报文段。
优势和作用
流量控制
所谓流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的ACK中会包含自己的接收窗口的大小,并利用大小来控制发送方的数据发送,通过动态调整发送窗口大小,确保发送方不会发送超过接收方处理能力的数据量。
效率优化
允许发送方在等待确认时继续发送数据,从而充分利用网络带宽,提高传输效率。
可靠性
发送方根据接收方的窗口大小和确认信息来管理重传,保证数据的可靠传输。
例子
首先在三次握手的时候接收方通过ACK包携带窗口大小信息给发送方,发送方根据接受方接收窗口大小设置自己的发送窗口的大小,此时接收方的窗口大小是360字节,发送方的发送窗口也是360字节。
发送方发送140字节的数据,自己的发送窗口变为220(360-140)字节,接收方收到数据后,应用程序读取了40字节,还有100字节一直占用着缓冲区,于是接收窗口收缩到了260(360-100)字节,并在发送ACK确认信息时,通告窗口大小给发送方,发送方接收到接收方的窗口通告,更新发送窗口为260。
标签:计算机网络,窗口,字节,TCP,发送,---,大小,发送窗口,接收 From: https://blog.csdn.net/weixin_63162063/article/details/140397722