1-19
长度为 100 字节的应用层数据交给传输层传送,需加上 20 字节的 TCP 首部。再交给 网络层传送,需加上 20 字节的IP 首部。最后交给数据链路层的以太网传送,加上首部和尾部工 18 字节。试求数据的传输效率。
数据的传输效率是指发送的应用层数据除以所发送的总数据(即应用数据加上各种首部和尾部的额外开销)。
若应用层数据长度为 1000 字节,数据的传输效率是多少
首先,我们计算发送的总数据大小。根据给定的情况,应用层数据为 100 字节,TCP 首部为 20 字节,IP 首部为 20 字节,数据链路层首部和尾部为 18 字节。
总数据大小 = 应用层数据 + TCP 首部 + IP 首部 + 数据链路层首部和尾部
总数据大小 = 100字节 + 20字节 + 20字节 + 18字节 = 158字节
然后,我们计算数据的传输效率。传输效率是指发送的应用层数据除以所发送的总数据。
数据传输效率 = 应用层数据 / 总数据大小
数据传输效率 = 100字节 / 158字节 ≈ 0.6329
所以,数据的传输效率为约 0.6329 或约 63.29%。
若应用层数据长度为 1000 字节,按照相同的公式计算:
总数据大小 = 应用层数据 + TCP 首部 + IP 首部 + 数据链路层首部和尾部
总数据大小 = 1000字节 + 20字节 + 20字节 + 18字节 = 1058字节
数据传输效率 = 应用层数据 / 总数据大小
数据传输效率 = 1000字节 / 1058字节 ≈ 0.9452
所以,当应用层数据长度为 1000 字节时,数据的传输效率约为 0.9452 或约为 94.52%。
解:(1)100/(100+20+20+18)=63.3%
(2)1000/(1000+20+20+18)=94.5% 请你举一个简单的代码示例。
以下是一个简单的代码示例,计算并输出数据的传输效率:
def calculate_transmission_efficiency(app_data_size, headers_size):
total_data_size = app_data_size + headers_size
efficiency = app_data_size / total_data_size * 100
return efficiency
# 示例1
app_data_size1 = 100
headers_size1 = 20 + 20 + 18
efficiency1 = calculate_transmission_efficiency(app_data_size1, headers_size1)
print(f"传输效率为: {efficiency1:.1f}%")
# 示例2
app_data_size2 = 1000
headers_size2 = 20 + 20 + 18
efficiency2 = calculate_transmission_efficiency(app_data_size2, headers_size2)
print(f"传输效率为: {efficiency2:.1f}%")
输出结果:
传输效率为:63.3%
传输效率为:94.5%
这个示例中,calculate_transmission_efficiency 函数接受应用层数据大小和各种头部大小作为参数,计算传输效率并返回结果。然后,在示例1和示例2中,我们分别调用该函数,传入相应的数据大小和头部大小,计算并打印出传输效率的百分比结果。
# 长度为 100 字节的应用层数据交给传输层传送,
# 需加上 20 字节的 TCP 首部。再交给 网络层传送,需加上 20 字节的 IP 首部。
# 最后交给数据链路层的以太网传送,加上 首部和 尾部工 18 字节。
# 试求数据的传输效率。
# 数据的传输效率是指发送的应用层数据除以所发送的总数据
# (即应用数据加上各种首部和尾部的额外开销)。
# 若应用层数据长度为 1000 字节,数据的传输效率是多少
# 写计算效率的代码
def calculate_efficiency(app_data,header_end_consume):
total_data = app_data+header_end_consume
efficiency = app_data/total_data * 100
# 先定义应用层数据的长度,以及总数据的大小
# 示例一
app_data=100
header_end_consume=20+20+18
efficiency_1=calculate_efficiency(app_data,header_end_consume)
print(efficiency_1)
print(f'应用层数据为100时,数据的传输效率为{efficiency_1}')
这段代码的运行结果为什么为none呢?
这段代码的运行结果为None是因为你在`calculate_efficiency`函数中没有返回计算结果。修改一下代码,将计算结果返回即可。修改后的代码如下:
```python
def calculate_efficiency(app_data, header_end_consume):
total_data = app_data + header_end_consume
efficiency = app_data / total_data * 100
return efficiency
# 示例一
app_data = 100
header_end_consume = 20 + 20 + 18
efficiency_1 = calculate_efficiency(app_data, header_end_consume)
print(f'应用层数据为100时,数据的传输效率为{efficiency_1:.2f}%')
```
这样就可以正确计算并输出传输效率了。
注意,我还对输出的结果进行了格式化处理,保留了小数点后两位,以更好地表示传输效率的百分比结果。
# 长度为 100 字节的应用层数据交给传输层传送,
# 需加上 20 字节的 TCP 首部。再交给 网络层传送,需加上 20 字节的 IP 首部。
# 最后交给数据链路层的以太网传送,加上 首部和 尾部工 18 字节。
# 试求数据的传输效率。
# 数据的传输效率是指发送的应用层数据除以所发送的总数据
# (即应用数据加上各种首部和尾部的额外开销)。
# 若应用层数据长度为 1000 字节,数据的传输效率是多少
# 写计算效率的代码
def calculate_efficiency(app_data,header_end_consume):
total_data = app_data+header_end_consume
# 注意下面的这个efficiency这个结果是在0后面的,并且还有很多数字
# 我们将它计算出来之后只需要保留三位小数,因为是百分数形式
efficiency = app_data/total_data *100
return efficiency
# 先定义应用层数据的长度,以及总数据的大小
# 示例一
app_data=100
header_end_consume=20+20+18
efficiency_1=calculate_efficiency(app_data,header_end_consume)
print(f'应用层数据为100时,数据的传输效率为{efficiency_1:.1f}%')
# 示例二
app_data=1000
header_end_consume=58
efficiency_2=calculate_efficiency(app_data,header_end_consume)
print(f'应用层数据为1000时,数据的传输效率为{efficiency_2:.1f}%')