OSI 模型和网络协议的关系

网络工程 奥西
2022-03-06 18:22:39

当大多数网络学生第一次了解 OSI 模型时,他们会花费大量时间试图找出特定协议适合模型的哪一层。我们在这个论坛上收到了很多关于 OSI 层的问题,它们通常是这样的:

  • IS-IS 在哪个 OSI 层运行?
  • HTML 是表示还是应用程序协议?
  • VPN 隧道是第 2 层还是第 3 层?

学生(或专业人士)应该如何理解 OSI 模型和他/她使用的协议之间的关系?

4个回答

需要记住关于 OSI 模型的两个重要事实:

  1. 这是一个概念模型。这意味着它描述了一组理想化的、抽象的、理论的网络功能。它没有描述某人实际建造的任何东西(至少没有描述今天使用的任何东西)。

  2. 它不是唯一的模型。还有其他模型,最著名的是 TCP/IP 协议套件(RFC-1122 和 RFC-1123),它更接近当前使用的模型。

一点历史:您可能都听说过早期的分组网络,包括互联网的前身 ARPANET。除了美国国防部创建网络协议的努力外,其他几个团体和公司也参与其中。每个小组都在全新的分组交换领域开发自己的协议。IBM 和电话公司正在开发自己的标准。在法国,研究人员正在开展他们自己的名为 Cyclades 的网络项目。

OSI 模型的工作始于 1970 年代后期,主要是对 IBM、NCR、Burroughs、霍尼韦尔(和其他)等大公司及其专有协议和硬件的影响力日益增长的反应。它背后的想法是创建一个开放标准,提供不同制造商之间的互操作性。但由于 ISO 模型是国际化的,它有许多相互竞争的政治、文化和技术利益。达成共识并发布标准花了六年多的时间。

与此同时,TCP/IP模型也得到了发展。它简单、易于实施,最重要的是,它是免费的。您必须购买 OSI 标准规范才能为其创建软件。所有的注意力和开发工作都集中在 TCP/IP 上。结果,OSI 模型作为一组协议从未在商业上取得成功,而 TCP/IP 成为 Internet 的标准。

关键是,今天使用的所有协议都是 TCP/IP 套件;RIP、OSPF 和 BGP 等路由协议;和主机操作系统协议,如 Windows SMB 和 Unix RPC,是在没有考虑 OSI 模型的情况下开发的。它们有时与它有些相似,但在开发过程中从未遵循 OSI 标准。因此,试图将这些协议融入 OSI 是一件愚蠢的事。他们只是不完全适合。

这并不意味着模型没有价值。学习它仍然是一个好主意,这样您就可以理解一般概念。OSI 层的概念与网络术语如此交织,以至于我们在日常网络语音中谈论第 1 层、第 2 层和第 3 层。第 1 层、第 2 层和第 3 层的定义,如果您稍稍眯一下,就已经达成了相当好的共识。仅出于这个原因,就值得了解。

了解 OSI(或任何其他)模型最重要的事情是:

  • 我们可以将协议分成几层
  • 层提供封装
  • 层提供抽象
  • 层将功能与其他层分离

将协议划分为层允许我们分别讨论它们的不同方面。它使协议更容易理解和更容易排除故障。我们可以轻松地隔离特定功能,并将它们与其他协议的类似功能组合在一起。

每个“功能”(广义地说)都封装了它上面的层。网络层封装了它上面的层。数据链路层封装了网络层,以此类推。

层抽象了它下面的层。您的网络浏览器不需要知道您在网络层使用的是 TCP/IP 还是其他东西(好像还有其他东西一样)。对于您的浏览器,较低的层只提供数据流。该流如何设法显示在浏览器中是隐藏的。TCP/IP 不知道(或关心)您使用的是以太网、电缆调制解调器、T1 线路还是卫星。它只是处理数据包。想象一下,设计一个必须处理所有这些问题的应用程序是多么困难。这些层抽象了较低的层,因此软件设计和操作变得更加简单。

解耦:理论上,您可以在同一层用一种特定技术替代另一种技术。只要该层以相同的方式与上一层和下一层通信,它的实现方式就无关紧要了。例如,我们可以删除非常著名的第 3 层协议 IP 版本 4,并将其替换为 IP 版本 6。其他一切都应该完全相同。对于您的浏览器或电缆调制解调器,它应该没有什么区别。

TCP/IP 模型是 TCP/IP 协议套件的基础(惊喜!)。它只有四层,传输之上的一切都只是“应用程序”。它更易于理解,并且可以避免诸如“这个会话层还是表示层?”之类的无休止的问题。但它也只是一个模型,有些东西也不适合它,比如隧道协议(GRE、MPLS、IPSec 等等)。

最终,这些模型是一种表示不可见的抽象概念(如地址、数据包和位)的方式。只要您牢记这一点,OSI 或 TCP/IP 模型就可用于理解网络。

这里有些混乱。仅仅因为一个函数似乎不适合一个层并不意味着它不适合。OSI 是灵活的,允许将实际实现映射到模型上的对象和子层。一个层的某些功能也可以在其他层复制。处理也不必在应用层发生。最后,OSI 不仅仅是一个模型,它是由一些制造商完整实施的。我参与了 DEC 项目。实用性意味着今天只使用 OSI 的某些部分。

所有 IGP(内部网关协议)路由协议都在第 3 层工作。外部 BGP 在第 4 层工作,而内部在第 3 层工作。

物理层 - 处理硬件网络设备,即笔记本电脑、手机、台式机。已知第 1 层是一个冲突域,即第 1 层 PDU(协议数据单元是比特)。

数据/链路层 - 该层涉及第 2 层交换机、广播域、VLAN、STP、VTP。这一层的协议数据单元称为帧。

网络层 - 这是发生路由的时候,大多数路由协议都在这一层工作。这也称为 IP 层,VLAN 通信的地方。该层的 PDU 称为数据包。

传输层 - 传输层处理 TCP 和 UDP 端口,这是来自第 3 层的数据包被发送到其目标端口的地方。重要的是要记住 TCP 是面向连接的协议,而 UDP 是面向无连接的协议(无保证的数据传输)。这一层的 PDU 是数据报。

会话层 - 会话层是从第 3 层解封装数据包的地方。该层处理多种服务器端编程语言,您可以在其中创建基于软件的应用程序并将它们转换为 ->

表示层 - 该层是关于您在 Web 浏览器上看到的客户端代码,或者当您右键单击并查看源代码时,这些主要是 HTM/CSS/Javascript 代码,可让您查看您的 ->

应用层 - 这是 GUI(图形用户界面)将 HTML/CSS 代码从第 6 层转换到该层的地方。您在 Web 浏览器上看到的是前端 GUI。第 5、6、7 层 PDU 称为消息。

我希望这些回答所有与 OSI 相关的问题。

IS-IS 在哪个 OSI 层运行?- 第 3 层
HTML 是表示还是应用程序协议?- 介绍
VPN 隧道是第 2 层还是第 3 层?-> L2TP 是第 2 层 -> VPN 隧道通常在第 3 层工作,例如 IPSEC。

HTTP(不是 HTML)同时具有表示层和应用层。VPN 隧道将覆盖层添加到现有堆栈:它可以是第 2 层或第 3 层,具体取决于它们的类型。然后您将能够在数据包中两次看到此添加的层。