关于 OSI 模型,我有一些不明白的地方。
据我所知,有时信息需要分解成更小的信息。
我的问题是——假设传输层可以处理大小为 1.5KB 的数据,而网络层可以处理大小为 500B 的数据。
信息将在哪一层被划分成更小的部分——传输层是否会为网络层进行划分,或者网络层是否需要进行划分。
关于 OSI 模型,我有一些不明白的地方。
据我所知,有时信息需要分解成更小的信息。
我的问题是——假设传输层可以处理大小为 1.5KB 的数据,而网络层可以处理大小为 500B 的数据。
信息将在哪一层被划分成更小的部分——传输层是否会为网络层进行划分,或者网络层是否需要进行划分。
当一个层的数据块大于底层可以处理的数据时,它需要将其分解。在实践中,主要的机制是 TCP 传输层协议 (L4) 的分段,以及 IP 网络层协议 (L3) 的分段(如果不起作用)。其他流行的协议,如以太网 (L2) 或 UDP (L4) 不支持这种机制。
OSI 是一个理论模型。在实践中,IP(在网络层)可以对下面的链路层来说太大的数据包进行分段。当前链路层可以传输的最大可能的数据包大小称为最大传输单元(MTU)。1500 字节是标准以太网上 IP 的 MTU,但 IPv4 理论上可以在最小片段大小为 68 字节的任何网络上运行。所有节点都需要支持 IPv4 的最小数据包大小为 576 字节。IPv6 的最小 MTU/片段大小为 1280 字节。
IPv4 可能会遇到 MTU 沿路径减小的情况,需要网关进行分段。IPv6 一般使用Path MTU Discovery作为全连接路径;碎片只能发生在源主机中。
优选地,传输层(在网络层之上)管理数据分块。最突出的是,TCP 根据网络层的 MTU 大小(使用最大分段大小,直接从 MTU 导出)对数据进行分段,依此类推。因此,TCP 不会尝试发送不适合 L2 帧的段。
其他传输层协议的处理方式不同,并且一些协议无法处理分块(例如 UDP),因此它们依赖于应用层的正确处理,或者如果需要,依赖于 IP 分段。