互联网OSI七层模型详细解析(一)

互联网行业的总体目标是允许两个主机之间共享数据。在网络还没这么发达的时候,如果你想把数据从一台主机传输到另一台主机上,就必须借助外部设备将其从一台主机拷贝到另一台主机。而当下连网的方式允许主机通过网络自动共享数据来帮我们实现数据的自动化传输。要做到这一点,这些主机必须遵循一组规则。

这与语言规则相类似,比如英语有自己的一套规则,法语也有自己的一套规则,两个讲英语的人必须遵守这套规则才能更好的交流。网络也有自己的一套规则。网络规则被分为7个层次,这些层被称为OSI七层模型。

OSI七层模型各层功能及协议

首先,我们将人体各大系统的构成与网络七层模型做一个类比。人体是由各种系统组成的,骨骼系统、呼吸系统、神经系统、心血管系统、肌肉系统等,如果这些系统都能正常工作,那么人体的目标就达标了,这意味着我们拥有着健康的体魄。网络连接的方式也相同,OSI参考模型的每一层都有一个特定的功能,如果所有这七个功能都顺利实现了,那么联网的目标也就完成了,也就是说主机之间可以共享数据。这篇文章的目的是帮助我们了解OSI模型每一层的作用,了解它们如何为联网的总体目标做出贡献,即允许不同主机之间的数据共享。

  • OSI物理层的设备

我们从OSI模型的第一层开始说起,即物理层。计算机上的数据是以比特的形式存在的,即1和0。这些主机与其它主机共享数据所需要的首要条件是,必须将这些1和0从这台计算机传输到下一台计算机,这就是OSI物理层协议。物理层的目标是传输比特,任何有助于将1和0从这台计算机传输到另一台计算机的设备都被认为是物理层技术。

例如,电缆都属于物理层设备的范畴,所有这些电缆的作用是从一端接收比特并将其传输到另一端。不过OSI模型早在无线互联网通信的概念被认可之前就已经存在了。因此Wi-fi被认为是一种物理层技术,因为Wi-fi的存在只是为了将1和0从一台计算机传输到下一台计算机。现在我们知道,这些电缆或Wi-fi不仅位于物理层,还有一些设备也位于物理层。其中一种设备被称为中继器(Repeaters)。在网络基础知识(二)中,我们了解到中继器的作用只是将信号从一端延长到另一端。在某种程度上,我们可以说中继器实际上只不过是帮你延长网络传输距离的设备。因此,中继器被视为第一层设备,这意味着像集线器(Hub)这样的多端口中继器也将被视为物理层设备。

  • OSI数据链路层的设备

OSI模型的第二层为数据链路层,它会与物理层交互,这种交互实际上是将比特放在网线上,并从网线中检索比特,这意味着这条网线与电脑连接的任一设备都被视为第二层上的设备,也就是说与物理层网线实际相连的是这台计算机的NIC(Network Interface Card)或网络接口卡,因此NIC被视为是数据链路层上的设备。无线网链接卡也被认为是第二层协议上的设备,因为它与Wi-fi无线电波相互作用。   

现在的NIC和Wi-fi链接卡看起来不再是这样了,但曾经有一段时间,你必须购买单独的卡,并将其安装到计算机中才能访问网络或Wi-fi。如今,Wi-fi网卡可以放在你的智能手机或手表里。数据链路层的主要目标是实现中继式传输(hop to hop delivery,指的是路由传送封包的协定),数据链路层的工作原理是从某个特定的NIC中获取1和0,并将其传输到另一个NIC。为了实现这一目标,第二层将使用一种特定的寻址方式,该寻址方式被称为MAC地址。MAC地址是48位,通常表示为12个十六进制数。这里有三个MAC地址的例子,其实它们都是完全相同的MAC地址。唯一不同的是在Windows机器上的显示方式通常是在十六进制数字之间使用短划线(94-65-9C-3B-8A-E5) 。Linux机器通常会使用冒号来表示MAC地址(94:65;9C: 3B: 8A: 5E), Cisco 路由器和交换机通常使用中间有点的四个十六进制数(9465.9C3B.8A5E)来表示。

无论采用哪种方式表达MAC地址,转换成48位的仍然只有12个十六进制。它的工作方式是每个NIC都有一个唯一的MAC地址。无论是windows系统还是Liunx系统,它们的MAC地址都将允许数据从一个NIC传输到下一个NIC。我们已经确定NIC是位于OSI模型第二层,其实还有另一类型的设备也位于第二层,那就是交换机。之前我们讨论过交换机是提供网络内部通信的设备,这意味着这两个主机(a1和e8)是通过交换机连接来实现它们之间的传输的。

此外,交换机允许我们将许多设备连接在同一个网络系统上,例如:如果下图的a1a1想要和b4b4通信(a1a1和b4b4都是MAC地址的前四位,此处用作代指),交换机将在内部连接这些线路,以便数据可以从左一的NIC传输到左二的NIC上,因此交换机也被视为数据链路层设备,因为它帮助了a1和b4之间的数据传输。

一般来说,与你通信的互联网并不一定都是在同一网段上。也就是说主机之间的通信通常需要多个跳跃点(multi hops),这意味着我们需要跨越多个路由器才能将数据传送到目标主机。如下图所示:

而这些路由器中的每一个都会使用一个NIC来连接到一条线路上,也就是说每个NIC都有自己的MAC地址,数据链路层负责从第一个MAC地址(a1a1)获取数据并将其传递到下一个MAC地址(b2b2),然后从第一个NIC(Router1/b3b3端口)传递到下个NIC,依次传递给最后一个NIC。正如图中所示,数据链路层都在处理数据的逐段传递,那么是什么负责确保数据从一个端点(a1a1)传到另一个端点(e8e8)呢。这就引出了OSI模型第三层-网络层。

  • OSI网络层的设备

OSI模型网络层的目标是实现端到端的传输。为了实现这一目标,第三层将使用自己的寻址方式,即IP地址。之前我们有对IP地址做过解释,说IP地址是32位,表示为4个八位字节,每个八位字节可以是0-255。每个主机都将通过其IP地址进行标识,这些IP地址将允许数据从a1a1一直传输到e8e8。现在,正如我们从下图所看到的,帮助从端到端传输数据的是路由器。因此路由器被认为是位于OSI模型的第三层。主机也被认为是位于OSI模型的第3层,但实际上任何含有IP地址的设备都可以被认为是位于OSI模型的第3层。

说到这儿你可能就要问了,既然我们已经有了第3层的IP地址,为什么还需要MAC地址,或者你会这么想,我们已经有第2层的MAC地址,为什么还要IP寻址方式呢。这个问题将有助于揭示数据包是如何在互联网上移动的。之所以有两种不同的寻址方式是因为每种寻址方式都有不同的用途。

我们假设a1主机有一些数据需要发送到e8主机上,当然,这些数据只是一堆1和0,OSI第二层(数据链路层)和第三层(网络层)并不知道这些数据包含了什么,实际上它们只是一组任意组合的1和0需要送到e8主机而已。由于a1计算机知道数据需要送达到e8端,它将给数据添加一些第三层信息。第三层信息包括源IP地址和目的地IP地址。

但现在该计算机(a1)知道第一步是将添加好的第三层信息(IP地址)传输到第一个路由器b2,该路由器会提示计算机(a1)将第二层(数据链路层)信息添加到里面,第二层信息包含了计算机(a1) NIC的源MAC地址和第一路由器NIC的目的地MAC地址,这就是由a1计算机发送到第一路由器的信息。一旦该信息到达第一路由器,我们就可以去掉第二层的信息(MAC地址)。

这个过程将从中间的路由器上继续进行,通过添加第二层信息(MAC地址)来完成这个跳跃,直至序列中的最后一个路由器d7添加完最后的第二层header(报头),数据包就完成了从d7端的NIC到主机e8的NIC的传输工作。一旦数据包到达最终主机e8时,第二层报头就可以被移除了。数据链路层报头的目的仅仅是将封装好的数据从一个结点带到下一个结点。另外第三层报头也可以移除了,因为网络层报头的用途是将数据从a1端传输到e8端。最后,经过多个跳跃点(multi hops)数据包最终被传输到了计算机e8,数据也将由e8主机处理,这就是为什么我们需要IP地址和MAC地址的原因,因为它们具有不同的功能。数据链路层完成的是点到点的传输,只负责直接相连的两个结点之间的通信,如图中的主机a1和Router1,Router1和Router 2;而网络层完成的是端到端的传输,即a1到e8的传输。

我们一直将IP地址和MAC地址作为独立的函数在讨论,事实上它们的确是独立的,但有一个协议可以将它们联系在一起,这个协议被称为地址解析协议(ARP),它能把一个网络层的IP地址链接到数据链路层的MAC地址上。ARP协议对于理解数据如何在网络中移动是至关重要的。

在本节中,我们讨论了OSI模型第一层、第二层和第三层,以及每一层的主要任务以及相关的设备,及其它们是如何帮助数据在网络中传输的。尤其详述了第二层和第三层之间是如何协同工作,及它们在从一端发送数据到另一端获取数据时所需的许多不同路由之间的数据移动路径。在下节中,我们将继续讨论传输层协议。

Author: Maha

我是Wintesting中国站的 Maha,目前职位是市场营销&内容经理,负责CN Wintetsing网站内容的设计、编写与发布,同时还监管国内市场营销工作。与此同时,我也是一名IT培训教员,我的教育背景和所从事的行业都是与IT工程师行业及信息通信技术相关。此外,除了编写中英双语的新兴技术文稿外,我还是一名IT翻译工作者,累积翻译字数逾近10万,涉及的领域有大数据、人工智能、IoT、机器学习、云计算、AR&VR、计算机网络技术、计算机网络安全技术、应用程序测试、软件测试、系统测试、网络测试及IT基础设施等。如果你需要相关领域的内容编写或翻译工作请联系我。