📅  最后修改于: 2023-12-03 15:10:15.267000             🧑  作者: Mango
这道题是一道典型的计算机网络问题。对程序员来说,掌握好计算机网络原理和相关协议是必须的。
Markdown 格式介绍如下:
在一个无线局域网场景中,我们平均每秒可以传送 100kbit 的数据。某个应用程序需要传送 20 MB 的数据,应用程序的 TCP 网络套接字缓存大小为 200 KB。在传输期间,如果滑动窗口大小为 20 个分组,确认超时时间为 2.5 秒。计算传输时间。
要计算传输时间,需要求出数据传输过程中的数据包大小和传输速率。
首先,我们需要计算出数据包的大小。由于 TCP 协议头部大小为 20 bytes,IP 协议头部大小为 20 bytes,数据链路层协议头部大小为 34 bytes,因此数据包的总大小应该为:
总大小 = 数据大小 + TCP协议头部大小 + IP协议头部大小 + 数据链路层协议头部大小
将 20 MB 进行单位转换,可以得到数据大小为 2010248 kb:
数据大小 = 20*1024*8 kb = 163840 kb
将 TCP 协议头部大小、IP 协议头部大小、数据链路层协议头部大小分别带入公式,可以得到数据包总大小:
总大小 = 数据大小 + 20B + 20B + 34B = 163840*8 + 74B = 1310722B
接着,我们需要计算传输速率。根据题目描述,每秒可以传送 100 kbit 的数据,因此传输速率为:
传输速率 = 100 kbit/s = 12.5 KB/s
最后,我们就可以计算出传输时间了。数据传输过程中需要发送的数据包数量为:
数据包数量 = 数据大小 / (TCP缓存大小 / 滑动窗口大小)
带入数据,可以得到数据包数量为:
数据包数量 = 163840 / (200 KB / 20) = 16384
每个数据包需要等待确认的时间为确认超时时间的一半,即 1.25 秒。因此,传输时间为:
传输时间 = 数据包数量 * (数据包大小 / 传输速率 + 确认超时时间 / 2)
带入数据,可以得到传输时间为:
传输时间 = 16384 * (1310722B / 12.5 KB + 2.5 / 2 s) = 23.523s
因此,传输时间为 23.523 秒。
传输时间为 23.523 秒。