TCP是如何运用窗口进行流量控制

来源:互联网 发布:种常用的排序算法 编辑:程序博客网 时间:2024/05/01 16:17

 什么是窗口,TCP是如何运用窗口进行流量控制的

 

窗口一个既抽象而又具体的名字。窗口就是在TCP传输中使发送方和接受方能够协同运作的一种机制。对于发送方而言,不可在接收方没有缓冲区的时候还继续发送,否则数据不就丢失了吗?而且重发机制会进一步加重网络负担。所以这个时候发送方需要知道接收方的通告窗口是多大。另一方面,发送方自己还有一个拥塞窗口,只要重发了数据,就将此窗口变为1,限制后续发送数据段的大小,然后拥塞窗口在网络正常时又会自动增大。记住,拥塞窗口和通告窗口,这是比较重要的两个窗口哦。

 

说说我的一点看法:    TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口:一个用于接收数据,另一个用于发送数据。TCP使用肯定确认技术,其确认号指的是下一个所期待的字节。    假定发送方设备以每一次三个数据包的方式发送数据,也就是说,窗口大小为3。发送方发送序列号为1、2、3的三个数据包,接收方设备成功接收数据包,用序列号4确认。发送方设备收到确认,继续以窗口大小3发送数据。当接收方设备要求降低或者增大网络流量时,可以对窗口大小进行减小或者增加,本例降低窗口大小为2,每一次发送两个数据包。当接收方设备要求窗口大小为0,表明接收方已经接收了全部数据,或者接收方应用程序没有时间读取数据,要求暂停发送。发送方接收到携带窗口号为0的确认,停止这一方向的数据传输。    滑动窗口机制为端到端设备间的数据传输提供了可靠的流量控制机制。然而,它只能在源端设备和目的端设备起作用,当网络中间设备(例如路由器等)发生拥塞时,滑动窗口机制将不起作用。

 

T C P使用一种窗口(w i n d o w)机制来控制数据流。当一个连接建立时,连接的每一端分配一个缓冲区来保存输入的数据,并将缓冲区的尺寸发送给另一端。当数据到达时,接收方发送确认,其中包含了自己剩余的缓冲区尺寸。剩余的缓冲区空间的大小被称为窗口( w i n d o w) ,指出窗口大小的通知称为窗口通告(window advertisement) 。接收方在发送的每一确认中都含有一个窗口通告。   如果接收方应用程序读数据的速度能够与数据到达的速度一样快,接收方将在每一确认中发送一个正的窗口通告。然而,如果发送方操作的速度快于接收方(由于C P U更快) ,接收到的数据最终将充满接收方的缓冲区,导致接收方通告一个零窗口( zero window) 。发送方收到一个零窗口通告时,必须停止发送,直到接收方重新通告一个正的窗口。  TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。处理过程如下:     (1)TCP连接阶段,双方协商窗口尺寸,同时接收方预留数据缓存区;     (2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认;     (3)发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确认的字节流中的字节数。调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。   TCP的窗口机制和确认保证了数据传输的可靠性和流量控制。 

 

原创粉丝点击