Packet Traveling (一) -- OSI模型

packtravseriestitle.gif

翻译并转载于Packet Traveling

Open Systems Interconnect model(OSI Model)解释了所有用于网络间工作的独立功能模块。

它是由七个独立的功能组成以完成计算机到计算机通讯的终极目标。

就像一辆汽车是由独立的功能组成的,这些功能结合起来,以实现汽车前进的最终目标:电池为电子设备供电,交流发电机为电池充电,发动机转动传动轴,传动轴将传动轴的转动传递给车轮,如此循环往复。

每个单独的部件都可以独立更换或工作,只要每个单独的部件都能正常工作,汽车就能前进。

OSI模型分为7个不同的层,每个层执行一个非常特定的功能。当组合在一起时,每个功能有助于使全计算机对计算机的数据通信。

packtravosilayers236x300.png

在本文的其余部分中,我们将研究OSI模型的每一层及其各自的职责。

OSI Layer 1 – 物理层

OSI模型的物理层负责位元的传输,1 s和0 s组成了所有的计算机代码。

这一层表示在两个节点之间承载流量的物理介质。例如你的以太网电缆或串行电缆。但是不要太拘泥于“物理”这个词,这个层是在20世纪70年代命名的,远在无线通信在网络中的概念出现之前。因此,WiFi,尽管它没有一个物理的,有形的存在,也被认为是第一层协议。

简单的说,第一层就是连接两个节点之间携带0和1的任何设别

数据线上数据的实际格式可能因不同传输媒体而异。在以太网中,比特以电脉冲的形式传输。在Wifi的情况下,比特以无线电波的形式传输。在光纤中,比特以光脉冲的形式传输。

除了物理电缆,中继器和集线器也在这一层运行。

中继器简单地将一个信号从一种介质重复到另一种介质,允许一系列电缆被菊串在一起,并增大一个信号以超出单一电缆能力上限。这些通常用于大型WiFi部署,即单个WiFi网络在多个接入点上重复,覆盖更大范围。

集线器就是一个多端口中继器。如果四个设备连接到一个Hub,那么由一个设备发送的任何信息都会重复发送到其他三个设备。

OSI Layer 2 – 数据链路层

OSI模型的数据链路层负责与物理层进行对接。实际上,第2层负责在传输的物理介质上放置1和0,并从传输的物理介质上提取1和0。

将以太网线插入的网卡(NIC)用作第2层功能。它接收来自电线的信号,并将信号传送到电线上。

WiFi网卡以同样的方式工作,接收和发送无线电波,然后被解释为一系列的1和0。

第2层将把这些1 s和0 s分组成块称为帧。

有一个地址系统存在于第二层称为媒体访问控制地址,或MAC地址。MAC地址唯一标识每个网卡。每个网卡都由制造商预先配置了一个MAC地址; 事实上,它有时也被称为烧焦地址(BIA)。

packtravnicsandswitches1024x241.png

除了NIC之外,交换机也在这一层运行。交换机的主要职责是促进网络内的通信(此思想将在本系列后面的文章中进行扩展)。

数据链路层的首要功能是将数据包从一个网卡发送到另一个网卡。或者换句话说,第2层的作用是从一个跳发送数据包到另一个跳。

OSI Layer 3 – 网络层

OSI模型的网络层负责端到端数据包的传递。

它通过使用另一种寻址方案来实现这一点,这种寻址方案可以在逻辑上识别连接到网络中的每个节点。这种寻址方案被称为网络协议地址,或IP地址。

它被认为是逻辑的,因为IP地址不是一台计算机的永久标识。与MAC地址不同的是,MAC地址被认为是一个物理地址,IP地址不会被制造商刻录到任何计算机硬件中。

路由器是在OSI模型的第三层运行的网络设备。路由器的主要职责是促进网络之间的通信。因此,路由器在两个网络之间创建了一个边界。为了与网络中不直接连接的任何设备通信,必须使用路由器。

OSI Layer 2 vs Layer 3

第2层和第3层之间的交互和区别对于理解数据如何在两台计算机之间流动至关重要。例如,如果我们已经在每个网卡上有一个唯一的L2寻址方案(如MAC地址),为什么我们还需要在L3(如IP地址)上使用另一个寻址方案?反之亦然

答案是,两种寻址方案完成不同的功能:

  • 第二层使用MAC地址,负责从一个跳发送到另一个跳的数据包。
  • 第三层使用IP地址,负责端到端的数据包传输。

当计算机有数据要发送时,它将数据封装在一个IP报头中,其中包括通信两端的源IP地址和目的IP地址等信息。

然后,IP头和数据被进一步封装在MAC地址头中,这将包括在通往最终目的地的路径中,当前一跳的源和目的MAC地址等信息。

packtravl2vsl3.gif

注意,在每个路由器之间,MAC地址头被剥离并重新生成,以使其到达下一跳。由第一台计算机生成的IP报头只被最后一台计算机剥离,因此IP报头处理端到端发送,动画中涉及的4个不同的MAC报头每个都处理跳到跳发送。

OSI Layer 4 – 传输层

OSI模型的传输层负责区分网络流。

在用户的电脑上,任何时候都可能有一个网络浏览器打开着,音乐正在播放,或聊天应用程序正在运行。每个应用程序都在从网络上发送和接收数据,所有的数据都以1和0的形式到达计算机的网卡。

必须存在一些东西来区分哪些1和0属于浏览器或流媒体音乐。这个东西是第4层:

packtravlayer41024x555.png

第4层通过使用一个称为端口号的寻址方案来实现这一点。

具体来说,存在两种区分网络流的方法。它们被称为传输控制协议(TCP),或用户数据报协议(UDP)。

TCP和UDP都有65,536个端口号(每个端口号),一个唯一的应用程序流由源端口和目的端口(连同它们的源和目的IP地址)来标识。

TCP和UDP在如何传输数据流方面采用了不同的策略,它们的区别和内部工作原理都非常有趣和重要,但不幸的是,它们不在本系列文章的讨论范围之内。它们将成为未来一篇文章或系列的主题。

综上所述,如果第2层负责跳到跳交付,第3层负责端到端交付,那么可以说第4层负责服务到服务交付。

OSI Layer 5,6,7

OSI模型的会话层、表示层和应用层处理通过网络传输的数据(由1-4层提供便利)显示给最终用户之前的最后步骤。

从纯网络工程的角度来看,第5层、第6层和第7层之间的区别不是特别显著。事实上,著名的网络模型(TCP/IP)模型将这三层整合为同一的一层。

如果您从事软件工程,那么这种区别将变得更加重要。但由于这不是本系列文章的重点,所以我们不会深入讨论这些层之间的差异。

许多网络工程师将这些层简单地称为L5-7或L5+或L7。对于本系列的其余部分,我们将采用同样的方法。

封装和拆装

在我们继续从OSI模型之前,我们需要讨论的最后一个项目是封装和解封装。这些术语指的是数据在发送时如何从上到下,以及在接收时如何从下到上。

当数据从一层传到另一层时,在完整的数据报被转换为1和0并通过网络发送之前,每一层都添加完成其目标所需的信息。例如:

  • 第4层将添加一个TCP报头,其中包括源和目的端口
  • 第三层将添加一个IP报头,其中包括源和目的IP地址
  • 第2层将添加一个以太网报头,其中包括源MAC地址和目的MAC地址

在接收端,每一层从数据中剥离报头,并将其返回堆栈,传递给应用程序层。下面是整个过程:

packtravencapdecap.gif

注意,这只是一个示例。要添加的报头将依赖于底层通信协议。例如,一个UDP报头可能被添加在层4代替,或一个IPv6报头可能被添加在层3。

无论哪种方式,重要的是要理解,当数据通过网络发送时,它会被传递到堆栈下,每一层都添加自己的头文件来帮助它实现目标。在接收端,当数据被发送回应用层时,头信息被逐层剥离。


标题:Packet Traveling (一) -- OSI模型
作者:reyren
地址:https://www.reyren.cn/articles/2021/07/16/1626405694575.html

    0 评论
avatar