如果数据层以 1500 字节帧传输,我想知道接收器的上层如何处理如此巨大的传入数据帧。
1500 字节是一个合理的 MTU(最大传输单元),它是数据链路协议有效载荷的大小。请记住,并非所有帧都是该大小,它只是帧有效负载的最大大小。有很多很多东西的有效载荷要小得多。例如,VoIP 的负载非常小,通常小于各种协议的开销。
帧和数据包一直丢失或丢弃,通常是故意的(参见 RED,随机早期检测)。数据单元越大,丢失帧或数据包时丢失的数据就越多,而对于可靠的协议,例如 TCP,必须重新发送的数据越多。
此外,对帧或数据包大小进行合理限制可以防止一台主机垄断网络。主持人必须轮流。
例如:如果互联网速度为 100 Mbps,则上层必须处理 104857600 字节/秒或 104857600/1500 = 69905 帧/秒。网络层也需要重新组装这些帧。网络层如何能够处理这样的规模。
你的说法有几个问题。
首先,100 Mbps 是每秒 12,500,000 字节。要计算每秒的帧数,您必须考虑数据链路开销。对于以太网,您有 7 个八位字节的 Preabmle、一个 1 个八位字节的 SoF、一个 14 个八位字节的帧头、有效负载(46 到 1500 个八位字节)、一个四字节的 CRC,然后是一个 12 八位字节的包间间隙。以太网开销为 38 个八位字节,不包括有效负载。到现在每秒有多少帧,您需要知道每个帧的有效负载大小,但您似乎错误地假设每个帧有效负载是最大 1500 个八位字节,这是不正确的。对于最大帧大小,您每秒可以获得超过 8,000 帧。
接下来,网络层不会重新组装帧有效载荷。帧的有效载荷是一个网络层数据包。网络数据包的有效载荷是传输层数据单元(TCP 段、UDP 数据报等)。传输协议的有效负载是应用程序数据(请记住,OSI 模型只是一个模型,操作系统没有实现单独的会话层和表示层;只有应用程序层)。传输协议的有效载荷呈现给应用进程,它可以是应用数据或应用层协议,例如HTTP。
带宽(在您的示例中为 100 Mbps)是主机将位序列化到线路上的速度。这是 NIC 硬件和它使用的物理/数据链路协议的功能。
这将意味着接收器上的大量碎片和重新组装。
数据包分片基本上已经过时了。它仍然是 IPv4 的一部分,但在 IPv6 中已经消除了路径中的分片,并且智能业务不允许由于分片攻击而导致 IPv4 数据包分片。如果报文头中没有设置DF位,IPv4报文可能会被分片,路径中的MTU会比原来的MTU小。例如,由于隧道开销,隧道将具有较小的 MTU。如果设置了 DF 位,那么对于下一条链路上的 MTU 而言,数据包太大,则丢弃该数据包。数据包分段在路由器上是非常耗费资源的,并且必须执行一组步骤来对数据包进行分段。
您可能会将 IPv4 数据包分段和重组与 TCP 分段混淆,这是完全不同的东西。