这是我的问题: 我们希望通过网络发送大小为150,000字节的消息。有四个跳,每个跳长20km,运行速度为100 Mb / s。但是,在发送之前,我们将消息拆分为1500字节的数据包。消息的端到端延迟是什么?使用铜的光速= c = 2 * 10 ^ 8 m / s,并将你的答案四舍五入到最接近的整数毫秒。
到目前为止我所拥有的是48毫秒,我按以下方式计算: 1500字节= 12,000位 12,000比特/(100×10 ^ 6)[100Mb / s] = 0.00012s 20km /(2 * 10 ^ 8)[该等式中的光速] = 1e-7 加起来你每跳得到0.0001201 x 4跳= 0.0004804s - > 48ms舍入到最接近的整数。
显然这不正确,我无法弄清楚我的错误。我的在线课程没有任何帮助,所以我转向SO。如果有人能直接指出我,我会很感激帮助。
答案 0 :(得分:6)
编辑:
我想我终于明白了。网络拓扑如下所示:
var size:Int = Int()
@IBOutlet var questionLabel: UILabel!
@IBOutlet var answerLabel: UILabel!
@IBAction func answerButton(sender: AnyObject) {
}
func getSize() {
self.size = scienceDictionary.count
}
var scienceDictionary = ["What is the chemical process that converts sugar into alcohol?": "Fermentation",
"Where in your body would you find you hippocampus?": "Brain",]
override func viewDidLoad() {
super.viewDidLoad()
print(size)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
让我们首先从源头的角度考虑它。我们正在逐包发送消息。一旦我们将第一个数据包放在线路上,我们就会发送第二个数据包,然后发送第三个数据包等。将所有100个数据包放在线路上需要多长时间?
source - link#1 - router#1 - link#2 - router#2 - link#3 - router#3 - link#4 - dest
端到端延迟是将整个消息从源传输到dest所需的时间。所以现在源只是将#100数据包放在链路#1上,让我们按照最后的数据包生命周期。对于最后一个数据包需要
100 * 1500B * 8(b/B) / 100 Mb/s = 12 ms
因此总共需要0.76 ms的最后一个数据包在它被链接到#1链接之后到达最终目的地。这给了我们最终答案:
20km/(2 * 10^8 m/s) = 0.1 ms - to get to the router#1
1500B * 8(b/B) / 100 Mb/s = 0.12 ms - to put it on the link#2
20km/(2 * 10^8 m/s) = 0.1 ms - to get to the router#2
1500B * 8(b/B) / 100 Mb/s = 0.12 ms - to put it on the link#3
20km/(2 * 10^8 m/s) = 0.1 ms - to get to the router#3
1500B * 8(b/B) / 100 Mb/s = 0.12 ms - to put it on the link#4
20km/(2 * 10^8 m/s) = 0.1 ms - to get to the dest
原始答案:
下面显然是一个正确的答案,但我不明白为什么我们不将总和的第二部分乘以4,毕竟有4个箍。如果有人能解释,我会非常感激。
说明
13毫秒。我们按如下方式计算端到端延迟:
12 ms + 0.76 ms = 12.76 ms ~= 13 ms
答案 1 :(得分:2)
4跳意味着
S->r1->r2->r3->D
No. of packets is =15*10^4 / 1500 = 100 packets
T.D=> 15*10^2*8 / 100* 10^6 (this is for 1 packet) = 0.12ms
P.D=> 20*10^3 / 2* 10^8 = 0.1ms
Total is =>0.1+0.12 = 0.22ms
4 hops takes => 0.22*4=0.88ms
0.88ms is for 1st packet only
第一个数据包需要0.88毫秒才能到达D. 当第一个数据包到达D时,其他数据包必须并行处理。因此,D将从R2开始每0.12 ms收到剩余数据包1个数据包。
所以其他99个数据包占用0.12 * 99 ms //只有传输延迟乘以(N-1)个数据包
答案是=> 0.88 + 0.12 * 99 = 12.76ms
用于计算任何此类问题的公式 - >
总延迟=否。跳数(第一个数据包总延迟)+传输 N - (传输延迟+处理+排队)
OR
(IF处理延迟和排队延迟= 0)
总延迟=否。跳数*(第1包总延迟)+传输延迟*(N-1)
答案 2 :(得分:0)
对于单个位,路由器以存储转发模式工作,即它等待整个数据包到达,然后再转到下一跳。
发送数据包时,在发送单个数据包之前,无需等待所有数据包到达路由器。
Youhe"打包延迟"数据包本身只取决于最慢的链路,数据包的大小和数据包的数量。
答案 3 :(得分:0)
计算一个数据包的时间(p / r + l / c):
单个数据包大小:1500 byte * 8 = 12000 bit
网络速度:100 Megabit * 1 000 000 = 100 000 000 bit / sec
12 000 bit / 100 000 000 bit/sec = 0.00012 sec (0.12 ms)
传播延迟:20 000 / (2 * 10 ^ 8) = 0.0001 sec (0.1 ms)
一跳期间的总延迟:0.12 ms + 0.1 ms = 0.22 ms
4个跃点,total time in ms = 4 * 0.22 ms =
0.88 ms
第二部分只需要计算将其余部分放到链接上所需的时间(记住,在将第二个数据包放到链接上之前,你不是在等待第一个数据包到达目的地)
留下链接= 150 000 byte - 1 500 byte = 148 500byte
的剩余部分
这是(148500 * 8 =) 1 188 000 bit
所以1 188 000 bit / 100 000 000 bit/sec = 0.01188 sec (**11.88ms**)
总计是
11.88 ms + 0.88 ms = 12.76
(13由于四舍五入到最接近的整数ms)
答案 4 :(得分:0)
端到端延迟可以通过将链路数乘以网络中的总延迟来计算。 您可以使用此在线End to End Delay工具。
答案 5 :(得分:0)
我的解释:
第一个问题是说明如果我们不破坏数据包需要花费多长时间
第二个问题是说明分解为较小尺寸的优势
如视频中所述,如果我们不对它进行分解,则传输将需要等待每一跳的完整数据传输。但是,如果我们将其分解,第一个将等待更短的时间(较小的大小),随后的数据包可以加载到网络以简化传输。
答案 6 :(得分:0)
关键是,路由器需要等待直到收到完整的数据包,然后开始将数据包转发到下一个路由器。在第一种情况下,当150,000字节的消息未划分为100个1500字节的数据包时,每个路由器都需要等待(150,000 * 8)/(100 * 10 ^ 6)秒,直到可以开始转发消息。即路由器长时间卡住了。但是,在第二种情况下,如果消息被分割,则每个路由器只需要等待(1500 * 8)/(100 * 10 ^ 6)秒,即可开始转发数据包,这是前一个的1/100。案件。因为在这种情况下,这是一种流水线,所以路由器能够在接收其余消息的同时转发到达的消息部分。在第四个路由器或目的地处,当整个邮件到达时,将计算邮件的总传播时间。在第一种情况下,最后一个路由器正在等待并且什么也不做,因此等待时间仅为(150,000 * 8)/(100 * 10 ^ 6)秒。在第二种情况下,最后一个路由器首先等待(1500 * 8)/(100 * 10 ^ 6)秒,然后,因为它是最后一个路由器,即目的地,所以它不需要转发到达的消息,这是唯一的工作因为它要等到所有消息到达为止。因此,它等待另外99个数据包到达,即((150,000-1500)* 8)/(100 * 10 ^ 6)秒。最后,第一种情况的总延迟为4 *(150,000 * 8)/(100 * 10 ^ 6)+ 4 *(20 * 10 ^ 3)/(2 * 10 ^ 8)= 48 ms,总计第二种情况的延迟为3 *(1500 * 8)/(100 * 10 ^ 6)+(150,000 * 8)/(100 * 10 ^ 6)+ 4 *(20 * 10 ^ 3)/(2 * 10 ^ 8)= 12.76毫秒。请注意,在两种情况下,它们的传播延迟没有区别,区别在于每个路由器的停留时间。