TCP/IP协议学习记录之十九:TCP的成块数据流

       TCP使用窗口滑动协议来控制流量,该协议允许发送方在停止并等待确认前可以连续发送多个分组,由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输;虽然并不确认任何新数据,但是在此过程中要增加窗口的右边沿;

滑动窗口

     

           接收方通告的窗口称为提出的窗口(o ff e r e dw i n d o w),它覆盖了从第 4字节到第 9字节的区域,表明接收方已经确认了包括第 3字节在内的数据,且通告窗口大小为 6。我们知道窗口大小是与确认序号相对应的。发送方计算它的可用窗口,该窗口表明多少数据可以立即被发送。

      当接收方确认数据后,这个滑动窗口不时地向右移动。窗口两个边沿的相对运动增加或减少了窗口的大小。我们使用三个术语来描述窗口左右边沿的运动:

1) 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。
2) 当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了 T C P的接收缓存时。
3) 当右边沿向左移动时,我们称之为窗口收缩。
如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据.

 

 1) 发送方不必发送一个全窗口大小的数据。
2) 来自接收方的一个报文段确认数据并把窗口向右边滑动。这是因为窗口的大小是相对于确认序号的。
3) 正如从报文段 7到报文段 8中变化的那样,窗口的大小可以减小,但是窗口的右边沿却不能够向左移动。
4) 接收方在发送一个 A C K前不必等待窗口被填满。在前面我们看到许多实现每收到两个报文段就会发送一个 A C K。

窗口大小

     由接收方提供的窗口的大小通常可以由接收进程控制,这将影响 T C P的性能。

PUSH标志

    发送方使用该标志通知接收方将所收到的数据全部提交给接收进程。
    当服务器的 T C P接收到一个设置了P U S H标志的报文段时,它需要立即将这些数据递交给服务器进程而不能等待判断是否还会有额外的数据到达。


慢启动

       发送方一开始便向网络发送多个报文段,直至达到接收方通告的窗口大小为止。当发送方和接收方处于同一个局域网时,这种方式是可以的。但是如果在发送方和接收方之间存在多个路由器和速率较慢的链路时,就有可能出现一些问题。一些中间路由器必须缓存分组,并有可能耗尽存储器的空间。

      T C P需要支持一种被称为“慢启动 (slow start)”的算法。该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。

    慢启动为发送方的T C P增加了另一个窗口:拥塞窗口 (congestion window),记为c w n d。当与另一个网络的主机建立 T C P连接时,拥塞窗口被初始化为 1个报文段(即另一端通告的报文段大小)。每收到一个 A C K,拥塞窗口就增加一个报文段(c w n d以字节为单位,但是慢启动以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。
      发送方开始时发送一个报文段,然后等待 A C K。当收到该A C K时,拥塞窗口从1增加为2,即可以发送两个报文段。当收到这两个报文段的 A C K时,拥塞窗口就增加为 4。这是一种指数增加的关系。

成块数据的吞吐量

(吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量)

 

       在时间3 1及其后续时间,发送方和接收方之间的管道 ( p i p e )被填满。此时不论拥塞窗口和通告窗口是多少,它都不能再容纳更多的数据。每当接收方在某一个时间单位从网络上移去一个报文段,发送方就再发送一个报文段到网络上。但是不管有多少报文段填充了这个管道,返回路径上总是具有相同数目的 A C K。这就是连接的理想稳定状态。
 带宽时延乘积

通道的容量为:
           c a p a c i t y (bit) = b a n d w i d t h (b/s) × ro u n d-trip time ( s )
一般称之为带宽时延乘积。ro u n d-trip time就是RTT;

拥塞:

        当数据到达一个大的管道(如一个快速局域网)并向一个较小的管道(如一个较慢的广域网)发送时便会发生拥塞。当多个输入流到达一个路由器,而路由器的输出流小于这些输入流的总和时也会发生拥塞。

紧急方式 

    T C P提供了“紧急方式 ( u rgent mode) ”,它使一端可以告诉另一端有些具有某种方式的“紧急数据”已经放置在普通的数据流中。另一端被通知这个紧急数据已被放置在普通数据流中,由接收方决定如何处理。
    T C P本身对紧急数据知之甚少。没有办法指明紧急数据从数据流的何处开始。 T C P通过连接传送的唯一信息就是紧急方式已经开始(T C P首部中的 U R G比特)和指向紧急数据最后一个字节的指针。

猜你喜欢

转载自blog.csdn.net/cxy19931018/article/details/81363035