OSI 模型并非 100% 符合。它是理解和组织创建网络、网络间甚至 Internet 所需的各种功能的指南。
所以并不是所有的东西都完美地落在一个 OSI 层中。但是,了解每一层的主要目的将有助于将不同的协议分类为不同的层。
第 1 层主要负责提供一种机制或介质,将位(1 和 0)从一个设备移动到另一个设备。双绞线、串行电缆、光纤都被认为是第 1 层技术。
Wifi 虽然没有物理介质,但也被认为是第 1 层技术,因为它能够将 1 和 0 从一个设备移动到下一个设备。
有趣的是,您可以将两个罐头之间的字符串视为第 1 层“技术”,因为它能够将 1 和 0 从一个设备移动到另一个设备。
第 2 层与我喜欢称之为Hop to Hop 的交付有关。它负责将 1 和 0 放在正在使用的任何 L1 技术上,并从正在使用的任何 L1 技术中检索 1 和 0。
网络接口卡 (NIC) 是第 2 层技术的一个示例。
为了促进“跳到跳”交付,第 2 层使用 MAC 地址——它有效地标识了特定设备的 NIC。
第 3 层负责我喜欢称之为端到端的交付。这就是 IP 等协议存在的地方。
在 Internet 任一端的两个端点之间,数据包可能必须通过 10 或 100 个 NIC。第 2 层会将它从一个 NIC 获取到下一个。但第 3 层将决定最终目的地在哪里。
第 2 层和第 3 层协同工作,通过端点之间的每个单独的“NIC 到 NIC”跃点将数据从一个端点移动到另一个端点。
第 4 层负责隔离网络流。L1 携带的所有 1 和 0 到达您 PC 上的同一个 NIC。有些东西必须区分哪些 1 和 0 属于您的 Internet 浏览器、您的音乐流应用程序、您的聊天程序、或操作系统更新,或从 Internet 发送或接收数据的大量其他应用程序。
第 5、6 和 7 层都融合在一起。我在 reddit 上写了一个关于这些层的初始意图的潜在示例,但我明白这主要是一个示例,而不是对其实际工作方式的描述:
L5 - 会话 - 这可能类似于 HTTP cookie,使单个浏览器会话与下一个会话保持不同。这是一种在同一 L4 TCP/UDP 连接中识别和跟踪不同位集的方法。
L6 - 演示 - 位显示为 1 和 0。需要确定如何解释这些 1 和 0。例如,是否应该将位分组为 8 组并根据 ASCII 转换为字母。或者应该将这些位转换为大数并用于解密内容。
L7 - 应用 - 现在 L6 已经把这些位变成了字母,我们需要把这些字母变成有意义的东西。例如,字母 GET /index.html HTTP/1.1 表示 HTTP 应用程序中的某些内容,它们是从服务器获取 index.html 页面的命令。
来源
给定每一层的简要描述,然后您可以应用该知识来确定特定协议在哪个层上运行。例如...
- HTTP 不是在线路上移动 1 和 0 的功能。
- HTTP 不是一种将 1 和 0 置于/断开电线的函数
- HTTP 不是支持端到端数据交付的功能
- HTTP 不是将所有数据流与线路隔离的功能。
因此,可以将 HTTP 视为 L5/L6/L7 协议。我见过这缩写为 L5 协议,或 L5+,或 L7。这一切都意味着同样的事情。
但同样,OSI 模型并不完美,一切都不会完全符合特定层。例如...
- ICMP 不是在线路上移动 1 和 0 的功能。
- ICMP 不是将 1 和 0 置于/断开电线的功能
- ICMP 不是支持端到端数据交付的功能
- ICMP 不是将所有数据流与线路隔离的功能。
尽管如此,ICMP 仍被视为 L3 协议,主要是因为它的主要用途 (ping) 测试数据包是否可以从 Internet 的一端到达另一端。AKA,它主要与端到端交付相关。
至于您列出的其余协议,这是它们通常与以下相关联的地方:
- L3 - OSPF、ICMP、BGP、RIP
- L4 - TCP、UDP
- L5/L6/L7 - HTTP
DHCP 是一个棘手的问题。一方面,它主要关注为终端主机提供 IP 地址,但另一方面,它的通信不是通过 IP 进行的。就个人而言,尽管如此,我还是喜欢将 DHCP 视为 L3 协议。
ARP也是另一个经常被争论的棘手问题。它在没有 IP (L3) 标头的情况下进行通信,但其目的是将 IP 地址解析为 MAC 地址——并且仅由 L3 设备使用。它有时被认为是两层,或在两层之间。或者有时简单地标识为 L2 协议。
你在辩论中的位置并不重要,只要你理解双方的观点。
希望这将帮助您区分或将协议放置在特定层中。再次记住,它永远不会完美运行。OSI 模型是一个概念模型,而不是每个人都严格遵守的明确标准。