今天阅读了TCP中滑动窗口部分的内容,总结如下:
滑动窗口:又叫缓冲区,是两台主机间传送数据时的缓冲区。每台TCP/IP主机支持两个滑动窗口:一个用于接收数据,另一个用于发送数据。
窗口尺寸表示计算机可能缓冲的数据量大小。
为什么要有滑动窗口
a)每次只发送出一个数据包。
b)为什么不一次发送完所有数据包?
在Internet中,可能同时存在着数百万条TCP连接。如果这些连接同时无节制的发送数据包,那么整个网络都会被堵死,没有数据包能到达目的地。
因此TCP需要根据网络状况,每次发送若干数据包。
1、滑动窗口的意义:
因特网中有数以万计的TCP连接,它们需要共享带宽,缓存等网络资源。 TCP希望能最大效率的利用网络资源,并将资源公平的分配到每条TCP连接上,还要尽量保证不让网络超负荷。滑动窗口机制有效的解决了这些问题。
2、滑动窗口的作用:
滑动窗口机制是TCP用来控制发送数据包速率的。 发送方每次只能发送滑动窗口内部的数据包。
3、滑动窗口的运行方式:
每收到一个新的确认(ack),滑动窗口的位置就向右移动一格。
滑动窗口大小,受拥塞窗口(cwnd)和通告窗口(awnd)的制约。swnd = min [ cwnd , awnd ]。
拥塞窗口是为了不造成阻塞,网络对发送方发包数量的限制。
通告窗口是接收方TCP缓存当前的大小。它阻止由于发包数量过多,超出接收方缓存的容量。
滑动窗口设计的原则:
1.滑动窗口过大:带宽利用率较高,容易产生丢包现象的网络,则需要多次发送重复的数据,会造成重传太多,也同样耗费了网络带宽,通信效率严重下降
2.滑动窗口过小:则需要在网络上频繁的传输确认信息,占用了大量的网络带宽;也会造成通信效率下降