在当今这个时代,人们的通信交流、信息获取都几乎很难离得开互联网,大家使用不同品牌、不同操作系统、甚至是不同种类的设备就可以进行相互沟通,这些大大小小的设备是如何达成默契,使得通信双方的数据能够得以传输和接收呢?答案就在于网络中所使用的这些设备在设计制造时都遵循了同一种规则,也就是我们下边要谈及的OSI参考模型。
我们可以将网络通信的过程类比作道路交通,出行的人们目的地不同,要做的事不同,所乘坐的车也是产自不同厂商、型号大小各异,但是要想顺利达到目的地,不管什么样的车都必须要遵守统一的交通规则。与此相似,在互联网通信中,同样也需要有一套大家都来遵循的规则,用以规定数据信息的格式,以及如何发送和接收这些信息。网络设备所共同遵循的这套规则我们也称其为网络协议。
要制定出一个单一的网络协议来解决网络通信中的所有问题,势必会使该协议会非常庞杂,而且要参照该协议来设计网络产品时,也需要按协议考虑到方方面面的细节,这无疑为设备的设计、开发设置了障碍。为了让事情变的简单,网络设计者将通信过程划分为几个不同的阶段,将一个大问题分作几个相对较小的问题,因而也就产生了分层的概念。
正是基于这样的思路,国际标准化组织(International Organization for Standardization,ISO)制定出了开放式的计算机网络层次结构模型,也就是开放系统互联参考模型OSI(Open System Interconnection),来描绘信息如何从一台网络设备传递到另一台网络设备。这个体系结构是一个七层模型,它作为制定网络通信标准的概念性框架,利用它,厂商可以针对单一目的设计出符合OSI某层描述的应用程序或硬件设备。不同厂商的同类产品可以相互兼容,并且可以与上下层的设备进行数据的交互,用户也不必全部依赖于某一厂商的产品。
如上图我们看到的,OSI参考模型共为七层,从上至下是:应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层。数据链路层又可分为LLC逻辑链路子层以及MAC介质访问控制子层。
当网络中的两台计算机要进行通信时,数据由发送端的应用层向下,逐层传送,而且每一层都为原始数据添加报头(有的层除增加报头外,还需要添加报尾),这也称为数据封装的过程。当封装好的数据到达物理层后,就会根据连接两台设备所使用的物理介质类型,将数据帧的各个比特转换为电压、光源、无线电波等物理层信号,通过中间网络设备,发送端的数据会被送达接收端的物理层。
在接收端,数据的还原需要进行一个封装的反过程,从物理层向上直到应用层,随着数据逐层向上传递,协议数据单元的报头及报尾被一层层剥离。最终实现了数据从发送端到接收端的传递。
应用层
作为OSI参考模型的第7层,它主要的作用是为用户或应用程序提供网络访问的接口。应用层可以为用户提供多种网络服务,每种网络服务都对应一个独立的网络访问端口。这些服务包含了大家非常熟悉的telnet、WWW、POP3及SMTP、FTP等应用。
表示层
顾名思义,表示层是用来定义文本、图形、视频等同以什么样的格式进行编码和传输,我们所熟悉的很多文件格式,如JPEG、GIF、AVI、ASCII都是由表示层来实现编码的,另外数据的加解密及压缩也是由该层来处理。
会话层
会话层的主要作用是负责网络连接的建立、维持和终止。会话层还通过使用服务等级(class of service,CoS)机制,来为某些流量或连接类型提供更高的传输优先级。
传输层
传输层位于OSI的会话层及网络层之间,是用于具体负责连接的建立、维持和终止的一层。它的作用除了实现连接管理之外,还要在连接上提供可靠或不可靠的数据传输,此外它还采用多路复用来实现同一台网络设备上多个应用程序同时发送和接收数据。采用缓冲机制来防止在通信过程中出现数据溢出和数据拥塞。
TCP是传输层提供可靠连接的常用协议,而UDP则是一种不可靠的连接,但它却往往可以提供更高的数据传输率。
网络层
网络层所实现的功能主要有以下方面,首先是来定义第3层的逻辑地址,也就是我们常说的IP地址。另外就是基于逻辑地址寻找到达目的设备的路径,路由器就是工作于网络层上的网络设备。
数据链路层
数据链路层通过使用MAC地址对网络设备的物理位置进行标识,使数据能够准确的送达目的网络设备。此外它还负责定义如何在数据链路层帧中封装网络层协议,并提供网络连接服务。
物理层
物理层处于OSI参考模型的最底层,它负责提供网络连接的物理技术细节,比如网络设备上使用的接口类型、电缆类型、电缆的针脚排列等,并且对数据链路层传送来的数据进行信号编码,实现这些编码的发送和接收。如我们提到的RJ45、DB9以及光纤等就都属于物理层的范畴。