在讨论OSI参考模型之前,让我们思考一个问题:对于一个非常复杂的问题我们一般是如何解决的呢?答案是分层哈。例如图书馆里有一万本书,我们要从里面找一本,是直接在这1万本书当中一本一本地查找吗?那效率肯定是非常低的哈。如果把这一万本书先按照类别分类放于不同的书架上,然后为每一个类别建立索引,再将不同类别的书按照出版社或出版时间分成更小的类别,如此一来是不是能极大提高搜索效率呢?答案是肯定的哈!又比如我们的国家、公司都是按照分层这种思想来实现管理的。同样的道理,分层这种思想在我们计算机和网络中随处可见。例如我们的操作系统对文件系统的管理、windows系统中域的管理都是基于此思想的具体实现。因此计算机网络中引入了一个非常重要的分层方法,那就是OSI/RM网际互联模型。
OSI模型的创建是为了帮助供应商根据协议来构建可互操作的网络设备和软件,以便不同供应商的网络设备能够互相协同工作。它是面向网络构建的最基本的层次结构模型,该模型采用分层的方法来实现数据和网络信息从一台计算机的应用程序,经过网络介质,传送到另一台计算机应用程序。
下面我们就具体来讨论下OSI/RM。
一、OSI/RM基础:
OSI/RM:开放式系统互联参考模型,说明了信息在网络中是如何传输的,以及各层在网络中的功能和他们的概念框架。
在OSI参考模型中,计算机之间的信息传送问题被分为7个较小而且更容易管理的问题,每个小问题都由模型中的一个层来解决。模型中的每一层都解决一个不同的问题。整个OSI/RM模型共分7层,从下往上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。如下图所示:
1、通信子网和资源子网:
OSI/RM中不仅包括了广域网中不同局域网间通信的功能层次(上面五层),也给出了局域网内部通信所必需的两个层次(最下面两层)。另外, OSI/RM低四层定义了如何进行端到端的数据传输,也就是定义了如何通过网卡、物理电缆、交换机和路由器进行数据传输,因此1~4层被称为通信子网;而高三层定义了终端系统的应用程序和用户如何彼此通信,也即定义了如何重建从发送方到目的方的应用程序数据流,故5~7层被称为资源子网。
2、OSI/RM的7层网络结构:
每一层的功能和对应的网络应用可以用如下所示的表格来总结:
层次 | 代表功能 | 模拟描述 | PDU类型(单位) | 典型应用 |
应用层 | 与用户应用进程的接口 | 做什么? | DATA | 网页浏览(HTTP)、收发电子邮件 |
表示层 | 数据格式的转换 | 对方看起来像什么? | DATA | 网页浏览时的乱码问题、加密、解密 |
会话层 | 会话管理和数据传输的同步 | 该谁讲话?从哪开始讲起? | DATA | 是双工还是半双工工作、操作系统、应用程序访问调度 |
传输层 | 端到端的可靠数据传输 | 对方在哪儿? | 数据报文(Segment) | TCP、UDP |
网络层 | 分组传送、路由选择和流量控制 | 走哪条路可以到达对方? | 数据分组(Packet) | 路由器 |
数据链路层 | 相邻节点间的无差错地传送帧 | 每一步该怎么走? | 数据帧(Frame) | 交换机 |
物理层 | 在物理媒体上透明传送位流 | 怎样利用物理媒体? | 比特流(bit) | 集线器、双绞线、光纤 |
3、OSI参考模型的对等通信原理:
网络上所有的通信都是从源端传送到目的端的,发送端的数据是从上层向下层传输的,而接收端的数据则是从下层向上层传输的,这就是OSI的基本通信流程。
虽然整个通信过程必须经过一个自上而下(发送方),或自下而上(接收方)的数据传输过程,但通信必须在双方对等层次进行。这样一来,对用户来说这种数据通信看起来就好像是同另外那台计算机相关联的同等层次直接进行的,而对同一主机内的相邻层次之间的通信是透明的,两台计算机的通信看起来就像在通信的双方对应层之间就建立了一种逻辑的、虚拟的通信,如下图所示:
需要注意的是,在OSI网络模型中,除了最底层之外,没有其他层能够把信息直接传递到另外一台计算机上与之对应的层上去。在OSI的对等通信原理中所讲的“对等”只是一个最终结果,并非实际的通信过程。主机与主机之间不可能实现数据链路层以上层次之间的实际直接通信。在每一层软件都会根据一套相应的协议来实现网络功能。
4、数据的封装和解封:
举一个例子:我们平时都收发过电子邮件哈,那大家知道收发邮件时数据是如何传输的吗?
在邮件发送过程中,邮件数据最开始是从电子邮件软件通过应用层进行数据封装,然后一级级往下传输,每一层都会附加上一个报头、报尾信息(就相当于每一层在数据包前面附加的小格)。而在接收端,则每一层都会分解出原来附加的报头、报尾信息,直到最后还原出发送端发出的数据包。
下面是具体的通信步骤:
(1)创建数据(应用层、表示层、会话层)
当用户发送一个电子邮件信息时,它的字母或数字字符被转换成可以通过互联网传输的数据。
(2)为端到端的传输将数据打包(传输层)
通过对数据打包来实现互联网的传输。通过使用分段,传输功能确保在两端的信息主机的电子邮件系统之间进行可靠的通信。
(3)在报头上附加网络地址(网络层)
数据被放置在一个分组或数据报中,其中包含了带有源和目的的逻辑地址(如IP地址)的网络报头。这些地址有助于网络设备在动态选定的路径上发送这些分组。
(4)附加本地地址(MAC地址)到数据链路报头(数据链路层)
每一个网络设备必须将分组放置在帧中。该帧的报头包括在路径中下一台直接相连设备的物理地址(如MAC地址)
(5)为进行传输而转换为比特(物理层)
帧必须被转换成一种1和0的模式(高低电平信号),才能在介质上(通常为线缆)进行传输。这个过程被称为封装。
当远程设备顺序接收到一串比特时,它会把它们传送给数据链路层以组装为帧。当数据链路层收到该帧时,它会执行以下工作:
(1)读取物理地址和由直接相连的对等数据链路层所提供的控制信息
(2)从该帧剥离该控制信息并由此创建一个数据报;
(3)遵照在帧的控制部分中出现的内容而把数据报向上传送到网络层
之后网络层、传输层等高层每一层都会剥离相应的报头和报尾信息,把数据还原。这个过程被称为解封。
数据的通信流程可以用下图来描述:
5、OSI参考模型与TCP/IP协议栈的对比:
TCP/IP协议体系结构共划分为四层,从高到低分别是:应用层(Apllication Layer)、传输层(Transport Layer)、网际互连层(Internet Layer,也有称“互联网层”)和网络访问层(Network Access Layer,也有称“网络接入层”,也有称“网络接口”层,或者“主机-网络层”的)。
OSI参考模型与TCP/IP协议栈的对比主要体现在以下两点:
(1)在分层结构上,OSI参考模型与TCP/IP协议都采用了分层结构,都是基于独立的协议栈的概念。
(2)OSI参考模型只给出了计算机网络的一些原则性的说明,并不是一个具体的网络。而TCP/IP协议最早在计算机系统中实现,在Linux、windows平台中都有稳定的实现。所以可以把TCP/IP协议看成是OSI参考模型的具体实现。
TCP/IP协议与OSI的关系可以用下图来说明:
二、OSI参考模型与排错:
OSI参考模型中底层为上层提供服务,因此排错也应该从底层到高层依次排错。
举一个例子:
有一天你到女朋友家去玩,突然你女朋友说她的电脑打不开网页了,该如何排错呢?
(1)物理层检查:首先检查网线是否与网卡连接好了,网卡是否正常工作。
打开电脑的网络连接,如果出现了红叉,则说明网线没有连接好,属于物理层故障。如下图所示:
如果没有出现红叉,也不一定连接正常,双击打开“本地连接 状态”对话框,查看“发送”和“收到”的数据包,其中任何一个为0都不能正常通信,如下图所示:
如果有一个为0,可以检查网卡和网线的接触是否有问题,用压线钳重新压一下水晶头试试。
如果重新做了网线的水晶头,“发送”或“收到”的数据包仍然为0,则可以试试先卸载网卡驱动,再重新加载驱动,一般来讲就能解决网卡驱动引起的网络故障。
(2)数据链路层排错:
ping网关,如果时断时通,有可能是网络堵塞,也有可能是MAC地址冲突;
(3)网络层排错:
首先看看IP地址是否配置正确,是否与其他IP地址有冲突,如果IP地址和网关配置错误也同样不能上网,如下图所示:
(4)表示层故障:
如果ping任何一个远程网络(如ping www.sina.com)能通,那就说明网络连接已经没有任何问题了,IE浏览器也能打开看到网页了,但此时发现网页中全是乱码,这就是表示层的故障了哈。如下图所示:
在IE中查看编码发现,默认选择的是日语(你女朋友在日资企业工作哈,汗一个?),把它改回中文就可以了哈。
(5)应用层故障:
查看IE设置,如果IE安全级别设置的高,有些网页的功能则不能正常运行。如果设置了一个错误的代理服务器或安装了错误的IE插件也会造成网页打不开的现象。
三、Cisco组网三层模型:
Cisco的层次模型可以用来帮助设计、实现和维护可扩展、可靠、性能价格比高的层次化的互联网络,Cisco定义了3个层次,每一层都有特定的功能:
接入层 Layer 2 Switching,最终用户被许可接入网络的点
汇聚层 Layer 3 Switching,接入层设备的汇聚点
核心层 Layer 2/Layer 3 Switching 高速交换背板,不进行任何过滤,因为会影响转发速度
这种三层的组网模型也体现了分层的思想哈!
好了,这次博文的内容基本就是这些,欢迎各位拍砖!