为智能手机图像发送多少个 IP 数据包?

网络工程 ip
2022-02-22 10:37:37

问题

假设我的图像文件大小为 2 兆字节。它通过 TCP/IP/以太网发送。

我想知道大概发送了多少IP包。

这个例子的目的是为了获得更好的直觉/理解。

计算 1

以太网有效负载:1500 字节

IPv4 标头:20 字节

TCP头:20字节

因此,最大段大小为 1460 (= 1500 - 20 -20) 字节。

IP包数:

2,000,000 字节 / 1,460 字节 = 1,369.86...

因此,发送了 1370 个 IP 数据包。

计算 2

最大可能的 IP 数据包大小为 65,535 字节。如果在以太网报头中使用分段,则 IP 数据包的数量可能会更少。

IP 数据包的替代大小:60,000 字节

2,000,000 / 60,000 = 33.33...

在这种情况下,将发送 34 个数据包。但是,分片会产生计算开销,因为以太网只接受 1,500 字节的有效负载。

问题

我本来预计图像文件的 IP 数据包会更少。

这两种计算哪个更合理?

2个回答

您需要区分 IP 数据包和以太网帧。

我没有检查数学(乍一看听起来不错),但事实是您发送了 34 个大小为 65,535 字节的 IP 数据包(除了最后一个较小的数据包),每个 IP 数据包被分割并发送大约 40帧,以总共 1370 帧结束。

并且如果沿路径遇到较低的 MTU,则每个帧可能会被进一步划分,例如,接收器可能会得到 2740 个帧/片段。

这 2740 个片段被重新组合成 1370 个帧,内容被提取并重新组合成原始的 34 个 IP 数据包。

只有当 MTU 沿路径发生变化时,才会进行分段。使用两个以太网客户端且两者之间没有瓶颈,使用标准的 1500 字节以太网 MTU,从而产生 1460 字节的最大 TCP 有效负载。因此,您的计算 1 是正确的。计算 2 在技术上是可行的,但需要一个无知的源节点。

分片效率低下,可能会对进行分片的路由器造成压力,因此每个人都试图避免它。路径内的碎片(=在中间路由器上)甚至已从 IPv6 中完全删除(通过要求使用路径 MTU 发现)。