TCP/IP详解 卷1 第二十章 TCP的成块数据流 (2)

拥塞窗口(congestion window):当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。每收到一个ack,拥塞窗口就增加一个报文段(慢启动以报文段大小为单位进行增加)。

发送方取拥塞窗口与通告窗口中的最小值作为发送上限。

 

拥塞窗口是发送方用的流量控制,而通告窗口则的接收方用的流量控制。

最开始为1,确认一个后变成了2,就可以发送两个报文段了,当这两个被确认以后拥塞窗口就变成了4。这是一种指数增加的关系

当到达互联网的极限时,中间路由器开始丢弃分组,这就通知发送方它的拥塞窗口开的过大。

 

20.7 成块数据的吞吐量

通常发送一个分组的时间取决于两个因素:

1)  传播延时:由光的有限速率、传输设备的等待时间引起(这个一般是固定的)

2)  媒体速率的发送延时:媒体每秒可传输的比特数。(取决与 分组的大小。)

假设A发数据给B,拥塞窗口慢慢增大,到最后,发送方和接收方的之间的管道被填满。此时无论拥塞窗口和通过窗口是多少,它都不能再容纳更多的数据。每当接收方在某一时间单位从网络上移去一个报文段,发送方就再发送一个报文段到网络上。但是不管有多少报文段填充了这个管道,返回路径上总是有相同数目的ack,这就是连接的理想稳定状态。

 

20.7.1 带宽时延乘积

如何设置窗口大小呢。下面是计算公式: 带宽 * RTT ,括号里面是单位。

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 )

一般称之为带宽时延乘积。这个值依赖于网络速度和两端的RTT。

比如:一条穿越美国(RTT约为60ms)的T1电话线路(1544000 b/s)的带宽时延乘积为11580字节。1544000 * 0.06 / 8 就是字节了。

 所以增加RTT和增加带宽都可以使管道容量增加。

 

20.7.2 拥塞

发送拥塞的两种情况:

1)  数据到达一个大的管道并向一个较小的管道发送时便会发送拥塞。

2)  当多个输入流到达一个路由器,而路由器的输出流小于这些输入流的总和时也会发送拥塞

 

20.8 紧急方式

urgent mode:它使一端可以告诉另一端有些具有某种方式的“紧急数据”已经放置在普通的数据流中。另一端被通知这个紧急数据已被放置在普通数据流中,由接收方决定如何处理。

 

如何发送紧急数据:设置TCP首部中的两个字段来发出紧急数据。URG置为1,并且从一个16bit的紧急指针被置为一个正的偏移量,该偏移量必须与TCP首部中的序号字段相加,以便得出紧急数据的最后一个字节的序号。

 

TCP本身对紧急数据知之甚少,没有办法指明紧急数据从数据流的何处开始。TCP通过连接传送的唯一信息就是紧急方式已经开始(URG置为1)和指向紧急数据最后一个字节的指针。其他的事情留给应用程序去处理。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzzdj.html