我们如何假设哪个网络协议在哪个 OSI 层工作?

网络工程 bgp dhcp 协议理论 奥西 撕裂
2021-07-29 07:59:27

很长一段时间,我都有这样一个愚蠢的问题:我们怎么能说某些网络协议工作在 OSI 模型的 X 层?

例如,在OSI的L7工作的HTTP,OSPF是L3,ICMP是L4,TCP和UDP是L4。

谁能建议我如何轻松理解?

因为我们可以说 BGP 是一个路由协议,但它使用 TCP 作为 L4 作为传输协议。那么,BGP 是 L3 还是 L4?

RIP 是 L3 协议,但它使用 UDP 进行传输。

DHCP 同时使用 UDP 和 BOOTP 报头,那么 DHCP 工作在哪一层呢?

请给我你的建议,以便更好地理解。

4个回答

除了其他人所说的关于每层提供的服务之外,不同的层通常在它们封装在数据包中的距离方面也有所不同(以及它们在每个发送器/接收器沿途执行的顺序)。例如,一个常见的场景是应用层(HTTP 第 7 层)标头和数据在其开头添加了传输层(TCP - 第 4 层)位,在开头添加了 IP(第 3 层)位,它具有添加到其中的以太网(第 2 层)数据。完整的消息如下所示:

[以太网位[IP位[TCP位[HTTP位[应用有效负载]]]]]

这是有道理的,因为低层功能需要最后在发送方执行,首先在接收方执行。在每一跳,网络设备(主机、路由器、交换机)将首先查看较低(外)层,并且仅在必要时向内移动。

这可能不是 100% 正确,但这是我喜欢的另一种思考方式。

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 模型是一个概念模型,而不是每个人都严格遵守的明确标准。

OSI 模型只是一个模型,是众多模型中的一个,它反映了一种理想。现实世界并不完全适合这些模型,而且对于哪些协议在 OSI 模型的哪些层中运行存在很多争议。

操作系统从未真正采用 OSI 模型。应用程序程序员倾向于将第 5、6 和 7 层合并到应用程序中,因为操作系统不提供单独的服务。如果您考虑一下,Web 浏览器应用程序使用所有这三个层:会话、表示和应用程序。

说到路由协议,可以区分路由部分和通信部分。路由发生在第 3 层,因为数据包基于第 3 层协议(IPv4、IPX、IPv6 等)地址进行交换。不同路由器上的路由协议实例之间的通信在概念上可以是应用程序到应用程序的功能。BGP 为此使用 TCP,但其他路由协议使用其他协议进行通信。您可以说 BGP 在第 3 层路由并使用第 4 层传输前缀。

套件内的协议被定义为具有特定目的,以使设计和操作更容易。

协议栈内的这些协议基于媒体类型(位、帧、数据包、段等)或传输(TCP 或 UDP)或所需应用程序的类型(这取决于软件实现,但它可能需要使用额外的套件,如 IPsec )。

如果知道协议符合特定层的目的,我们总是可以知道哪个协议在哪个层上工作。

例如,TCP 工作在传输层,因为尽管它补充了 IP 的功能,但它提供了一种在两个主机之间传输的方法。

希望有帮助:)