魏蓝

以梦为马

导航

详解OSI分层结构

1.网络出现之始,计算机产品之间无法直接通信,只有同一制造商的产品才能进行通信。于是,后来国际标准化组织(ISO组织)为此提出了开放系统互连(OSI)模型,呼吁各产品都按此模型来进行通信。

OSI参考模型将通信过程分为7大层,如图所示。从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,每一层负责一项或一类具体的工作,然后将数据传递给下一层。其中1至4层是底层,5到7层是高层。其实OSI的7层就是分为7个步骤,并指定了每个层次应该实现的功能,如此一来,网络设备各厂家、软件开发人员就能根据这些层次设计出能够和他人正常通信的软件、硬件。

 

 OSI分层模型非常重要,无论是对于物理层还是软件层,都需要理解各层功能,这样以后在理解软件各种功能的时候就能总结出一些规则,事实上OSI分层模型就是定义这些规则的,只不过在不了解它的时候不会考虑到OSI上去。

另外,OSI模型只是定义了几乎所有通信各层的规则,但并非所有通信协议都符合OSI模型。了解这一点,预防钻牛角尖。

 

2.1)应用层

应用层是常见的一些服务应用程序(比如apache httpd服务、ftp软件、QQ软件、网易云音乐软件)的数据起始或终止点,它们产生的数据就是应用层数据,它们接收到的数据也是在应用层接收的。

应用层是OSI最高层,所以离物理硬件层次最远,也是最接近用户的层次,所以一般用户所能看到的层,如点击下一曲音乐时,音乐软件立即在应用层产生请求数据,经过OSI各层,最终发送过去。

2)表示层

表示层(Presentation Layer)是应用层的下一层,应用层的数据会首先经过表示层。

在表示层,将为应用层产生的数据提供能数据转换类的服务,也是数据如何展现、如何表示的功能。如格式转换、编码转换、数据压缩(如图片压缩、视频压缩、文本压缩都在这一层)、数据加密与解密等。

3)会话层

跨主机的两个计算机之间的应用程序要进行通信,需要建立会话。会话层虽然不参与具体的数据传输,但它却对数据传输进行管理。会话层在两个互相通信的应用进程之间建立、组织和协调其交互活动。

4)传输层

传输层的基本功能就是接收上一层数据,并在必要的时候将数据分割成更小的数据单元,然后把这些数据单元传递给网络层。它是第一个端对端的传输控制层:通过指定端口找到对方主机上的对应服务程序。

在传输层有两种协议:UDP和TCP协议。当数据到了传输层后,将被封装成数据报或数据段。如果是采用UDP协议传输数据,则数据被封装成数据报。如果采用TCP协议传输数据,则数据被封装为数据段。

5)网络层

经过传输层封装后得到的数据报或者数据段要通过网络传输出去,必须指定数据的目标IP地址。

所以,在网络层会为数据段或数据报继续封装,加上源目标和目标IP地址。加上了目标IP地址之后,数据段或数据报就成为数据包。

因为数据包有了IP地址,根据路由规则,可以知道将这个数据包怎么传递出去,以及怎么找到目标主机。另一方面,数据包中还有源IP地址,使得对方主机回应的时候,可以将对方产生的数据根据这个源IP路由回来,使得自己能够收到对方的响应数据。

6)链路层

当封装IP地址的数据包到达数据链路层之后,将继续封装得到数据帧:将源MAC地址和目标MSC地址加入数据包中,得到的就是数据帧。

因为链路层比较接近物理层,所以这次封装会根据物理物理链路上的设备来决定封装成何种格式的数据帧。

如果是计算机与路由器或交换机之间的数据,那么处在以太网的局域网环境下,那么需要将MAC封装成以太网帧。

如果是路由器与路由器之间,这两个端点之间的链路没有其他中间物理设备,所以无需加入物理层地址,而是使用PPP点到点协议,所以,路由器与路由器之间的数据帧是PPP协议帧。

计算机封装的数据帧中有了目标MAC地址,就能知道这个数据帧下一跳要给局域网内谁的,是给交换机还是本地路由器,但最终要出去还是会经过本地路由器,路由器将解封数据帧,修改源MAC地址为自己的MAC地址,目标MAC地址为路由器的下一跳的目标MAC地址。就这样不断修改目标MAC和源MAC,数据能够到达最终目标主机上,也能最终得到响应数据。

7)物理层

数据最终是通过网卡出去的,数据帧将进入最后一层物理层。在物理层,网卡会将数字信号转变为电信号传递给网线(或其他数据传输介质),物理层处理后得到的数据是二进制数据,也称为bit位数据。

而在网络上传输的很多bit数据就称为bit流。

 

3.数据封装和解除封装

应用层产生的数据,会经过一层层的处理和封装,然后通过网络传输出去。最终到达目标主机后,目标主机会将数据一层层的解除封装,最终在应用层得到最后的数据。

数据封装的一个简单示意图:

 

 数据解除封装的一个简单示意图:

 

 所以,当数据封装完成的时候,它包含了源和目标MAC、源和目标IP、源和目标端口、被表示层处理过的的真实数据。

在解封数据的时候,将从外层一层层的向里面解封,最终得到最内部的数据部分。

当然,有些时候只会解封到某个层次就再次封装。例如,路由器要根据IP对数据进行路由,它必须要解封到IP层,也就是解封到第三层,然后路由决策之后,路由器再对数据进行封装,并传输出去。再例如,交换机只能解封到数据链路层,它可以识别数据中的MAC地址,而不会去识别网络层的IP地址,所以通常都说交换机工作在第二层模型,当然,也有比较高级的三层交换机,它可以接触封装到IP层并识别IP,而且还会根据IP进行路由。

posted on 2022-02-18 23:56  魏蓝  阅读(1280)  评论(0编辑  收藏  举报