通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?

avatar
作者
筋斗云
阅读量:0

在Bing和CSDN上转了一圈,答案千奇百怪。很多只给计算,不给解释,对新手不太好理解。本答案参考了网上已有的几乎所有答案,补充了一些基本概念和公式,零基础友好,希望对各位有帮助。

概念

首先,一些基本的概念: 

1.通信信道带宽:理论上信道能够达到的最大数据传输速率。比如此处的1Gb/s,意思是该信道一秒内最多可以传送1Gb的数据。(此处取数字信道的带宽定义,因为这里的单位是数字信道的单位,所以模拟信道我们就不用管了。但千万别以为信道带宽只有这一种意思。实际上信道带宽一般分为两种,模拟信号带宽 和 数字信号带宽。参见百度百科:信道带宽

我们题中的信道带宽单位是 Gb/s,显然是指数字信道带宽。数字信道:能传输数字信号的信道称之为数字信道。数字信道的带宽为信道能够达到的最大数据速率。)

2.与带宽对应的概念就是最大吞吐量。前面说了信道带宽是理论上的最大数据传输速率,而吞吐量就是两台主机之间实际的数据传输速率,即实际上单位时间内能传输多少数据。

我们平时买电脑装宽带,或者是手机套餐的带宽有多少Mb/s,运营商告诉我们的就是这里的理论上的带宽。但实际上因为各种物理限制,以及一般显示的是MB/s(理论上的带宽再除以8),所以运行时显示的速度要比运营商告诉我们的小很多。

毕竟,大多数情况下,理想和现实总是有点差距的。。。

3.端到端时延就不说了,别的地方有文章介绍,一搜就知道了。

计算

网上主要有两种计算方式:

方法一(多数情况下采用该答案):

需要用到的公式:

1.最大吞吐量 = 每个窗口的大小*单位时间内(即1s内)能发送的窗口个数。(感觉不如法二好理解)

因为我们前面说了最大吞吐量的概念,即单位时间内能传送的数据量。我们知道,电子设备在互相通信的时候,很多是以电磁波的形式(光速,c)向外发送和接收信息的。每一秒都有无数次的发送和接收,所以要是我们能求出每一次发送的数据量的多少(假设每次发送的数据都是一样大的,即一个窗口大小),以及单位时间内能发送多少次,不就能知道单位时间内一共能发送多少数据吗?

2,用实际的吞吐量 / 带宽,即为信道利用率。

现在窗口大小有了(65532B),我们得知道单位时间(1s)内能发送的窗口个数,显然这个值=1s / 每发送1个窗口所需的时间,算得的就是个数了。所以首先需要求发送一个窗口所需的总时延。

总时延 = 发送时延 + 传播往返时延 (书上有解释这三个“时延”)

发送时延 = 数据长度 / 信道带宽 =  65535*8bit  /  1Gb/s  = 0.52428*10-3s ≈ 0.52ms
传播往返时延 两倍的端到端时延 =2*10=20ms (发送数据和接收确认)

故每发送一个窗口大小的数据需要的总时间为:

👉总时延 = 0.52 + 20 = 20.52 ms

故每秒钟可以产生1000/20.52个窗口,
因此最大数据吞吐量 = 1个窗口的大小 * 每秒可以发送的窗口个数=65535*8*(1000/20.52)= 25549707bit/s ≈ 25.5Mb/s
故信道利用率 = 25.5Mb/s ÷ 1000Mb/s ≈ 2.55%

注释:表示速率时,1Kb/s=10^3b/s,1Mb/s=10^6b/s,1Gb/s=10^9b/s


解析:

信道利用率,实际上即指信道的信息 传输效率,也等于 发送时间/总时间。

回顾求总时延的那一行,我们会发现此时两台主机之间进行信息交换的时候,传播时延远大于发送时延。即绝大部分时间都花在“路”(传播)上了,我们发送数据出去的时间只占总时间的很小一部分。所以信道利用率是不是很低呢,意思是传输效率很低。


可能是因为题目还存在一些争议(见方法二的解法),所以我们学校老师对该题后来进行了一些补充,总之如果是学校一般作业的话,采用上面这个答案基本没有问题。

所作的补充:

吞吐量=发送数据量 / 总时间

而这个公式里的 发送数据量,一般会考虑加入TCP和IP各自首部的20个字节,共40个字节;总时间仍然=发送时间+往返时间(即两倍的端到端延时)

所以如果加上TCP、IP首部的40个字节,我们要算的发送的数据量则为65535+40=65575Byte。结果会有微小的变化,但是如果你们的题目未做更多说明,答案可以直接写上面的,不用修改。

在以上补充完的题设下的方法二。

方法二:

需要的公式:

①最大吞吐量=发送的数据总量(即TCP窗口大小) / 消耗的总时间

②信道利用率 = 最大吞吐量 / 带宽

所以接下来总体的目标就是求  发送的数据量  和  消耗的时间  的问题了。

1.首先,计算数据总量:

L=65535+40=65575Byte

L=65575*8=524600 bit

2.计算消耗的总时间:

发送时延(L/C)=数据长度 / 信道带宽=524600 bit  / 1Gb/s  = 0.52428*10-3s ≈ 0.52ms

往返时延(2*Td) 两倍的端到端时延 =2*10=20ms

总时间=L/C + 2*Td =20.52ms

3.可能达到的最大吞吐量,用公式①:

最大吞吐量 = 524600 bit / 20.52ms = 524600 bit / ( 20.52* 10^-3s)≈ 25.57 Mb/s

4.计算 信道利用率,用公式②:

信道利用率 = 25.57 Mbps / 1Gbps = 25.57×10^6 bps ​/ 10^9bps = 0.02557 ≈ 2.56%

因此,可能达到的最大吞吐量为25.57 Mb/s,信道利用率为2.56%。


补充

  • 窗口大小(Window Size)是TCP协议中用于控制发送端发送数据的参数。
  • 往返时延(Round-Trip Time,RTT)是数据从发送方发送到接收方并返回所需的时间。

以上两种计算方法其实是一样的,只不过理解稍有不同。法一是用窗口个数来计算吞吐量,窗口大小没有包括TCP和IP的首部。而法二的吞吐量则直接由数据量除以时间,把两种方法的公式一展开我们会发现其实是一样的。都是 L / T总,法二的L包括了首部。​​​​​​​

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!