在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包括了首部。