OSI(WHY-WHAT-HOW)
---阿J
本文不是一篇专门用于详细解析OSI模型的,而只是从一个大观的,概况的角度去切入这个模型,对于它的内在原理运作不会深入.
WHY:
 
不管学什么知识点,我们都首先要知道一点的是:这个东西是为解决什么样的问题而来的,这是任何技术的源头,虽然这对于我们在了解它的具体技术细节的时候是无伤大雅的,但它给我们的不仅是一个引导性的思维,也是我们遇到问题时能及时解决问题的思维源头。今天讲的是OSI七层模型,这个即将贯穿我们整个网络生涯的工具确实值得我们从它的最根本的源头去说起。
当我们去电脑城装机的时候,我们首先是先写配置单,例如CPU是用英特尔的还是AMD的,主板是要华硕的还是用技嘉的,电源机箱又是要谁的等等;这些组件的配置我们可以根据我们的各种需求来写:要来运行一些大型的设计3D软件的还是只需要用于日常办公的,不同的需求我们可以随意的组装不同的配置----这个时候,我们有没有曾经想过这个问题:这么多家厂商,这么多种型号,这么多的配置组件,它们是怎样来协调起来的呢?这是一个非常基本的问题,如果各个厂家各自研发自己的产品,那么可以想象一下,市场上各自为营,也就不可能有我们现在这样的DIY电脑组装了。这个时候便需要有一些标准,一些规范来对市场上的产品进行制作的规范,所以就出现了不同组件的一些标准协会—主要负责制定各个产品的框架,接着这些厂家便在这样一个大框架下制作自己的产品;最终,我们便可以看到,当我们的配置单中即使有不同的厂家,但不管我们怎样去DIY,最终我们还是可以顺利的组装成一台电脑,为我们服务。
这样之后,我们可以把这个思维原封不动的放到网络领域上来,对于PC市场是这样,对于网络市场也是这样,例如思科,华为,中兴等网络服务提供商,他们也是需要一个框架来对他们的产品进行规范和约束,OSI模型便是这样一个工具!
 
WHAT:
 
起源:
OSI模型是由国际标准化组织ISO于1984年开发出来的一个开放系统互连模型。
OSI七层:
在这个模型中有七层,从上到下分为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。每一层有不同的功能,负责不同的任务,并且有各自所属的协议。下面从几个方面简要概述每一层—
应用层:
1. 功能:运行于OSI第七层,用于为不同的应用程序提供一个平台,这个平台有这些应用程序所需要的协议和服务。
2. 应用层程序:有时也把运行于应用层的程序称作用户的服务进程,也是用户最关心的以及看到的最直观的东西:http,telnet,ftp,tftp……等等应用程序。
表示层:
1. 功能:运行于OSI第六层,定于信息是如何呈现给用户的;也提供加密保护的功能(一般不太常用)
2. 标准:音频、视频、图像等等的标准格式:MP3 AVI WMV JPEG等等这些
会话层:
1. 功能:运行于OSI第五层,负责启动连接的建立的终止并且从一个连接接受数据并转发到正确的本地应用程序---但实际的技术细节是由下面的传输层来完成的;可以这样说,会话层在于法律而传输层在于执行法律。
2. 协议:RPC---远程过程调用 NFS---网络文件系统
传输层:
1. 功能:负责建立可靠或不可靠的连接;对数据进行分段;建立多路复用;流控制
2. 协议:TCP UDP
网络层:
1. 功能:定义用于第三层的逻辑地址;可以依据逻辑地址建立逻辑拓扑以及高拓展性的立体网络;基于逻辑地址为用户传递数据;可以连接不同类型的数据链路层类型网络—如以太网,令牌网等待
2. 协议:IP
数据链路层:
1. 功能:提供物理地址或者硬件地址;定义封装的帧类型;提供面向连接和物无连接服务;把帧类型的数据转换成比特流传递给物理层
2. 协议:PPP HDLC 
物理层:
1. 功能:定义各种物理设备的标准—如接口类型,电缆类型,针脚排列等待;针对不同的介质类型对比特流进行编码,转换成物理表示方法,如电信号,光纤的光信号,无线电波等待
2. 协议标准:电缆类型—3类,5类,超5类;接口---DB8 DB25 RJ45 等等
 
OSI优点:
现在我们便对0SI模型的各个层的功能有个大概的认识,那么,我们现在也可以总结一下OSI的几个优点:
1. 提高了各个厂商之间设备的互操作性
2. 可以将很多复杂的网络技术问题分层次的研究,以简化问题;特别用于故障排除的时候,可以说是一把利刃!
3. 模块化的思想和设计可以帮助不同的厂商设计不同层次的网络设备.
 
当然,OSI模型唯一的缺点便是:分太多层了!例如应用层,表示层和会话层完全可以集成在一个应用层里面;所以OSI模型成为一个公认的参考模型,而事实标准模型则是更加简洁的TCP/IP模型(注意,不是TCP/IP协议栈).
 
HOW:
现在我们对OSI模型有一个总的概况了,那么它是怎样进行运作的呢?
要了解OSI模型的运作模式需要从数据包在这个模型下的封装和解封装过程作为切入点,然后剖析数据在这个OSI协议栈的上下传送---或者称为”纵向传输”.
我们先来看几张截图:
 

OSI 

 
     

OSI 

 

OSI

上面的几张图其实便包含了整个OSI模型的各层之间的数据封装以及交互作用.层与层之间都有一个接口/端口---用于打开到上一层的交互捷径.一般封装的过程是添加一个报头,具体是什么就不讲了;这里强调一下,第二层还多了一个报尾出来,这个报尾FCS---字段校验和序列是通过CRC算法计算出来的,它的功能是类似一些散列函数的作用,双方各自对数据进行CRC计算,然后把算出来的FCS加到数据尾部,若双方的FCS都相同的话,就说明传递的过程中数据是没有损坏的.
这里我有必要说明这里提出两种“思维”方法:
纵向思维:主要运用在我们学习OSI各层封装和解封装的过程;以及后续我们在故障排除过程中都会用到的一种思维,它是从底层的分组封装和解封装到上层的应用的一条主线思维;当然,我们有必要把它的定义模糊化一点,因为这种思维不仅仅用于此!
横向思维:主要运用在数据的传递过程!这里便会涉及到网络中的各种网络设备---路由器,交换机,集线器/中继器等等;横向思维中最重要的是理解数据在网络中是通过什么方式在各种介质中传递的,以及通过一些策略之类的方法对数据传递的路径进行最优化等等之类的问题。
可以这样说,这两种思维已经建立起了计算机网络的整个框架,它们是日后学习不同技术时一个底层思维,也是对各种网络技术的高度概括。
我们也可以理解,对于横向思维中其实是为了纵向思维而服务的,举一个例子,对于两台图片中的两个终端设备,如果它们只是通过一根网线便连接起来的话,那么,这里面就只有一个纵向的思维了,只有封装和解封装的知识在这里;可是用户这是有了一个要求而且实际也便是这样:即用户的物理距离不是拉一个网线便能解决的,有可能在地球的东西半球,那么这个时候便需要一种解决方案来满足我们的实际需求,所以中间变出现了路由器,交换机,集线器等等—这些便是我们需要这些的横向方法----它们便是专注于为用户终端传递数据而服务的----而最好的服务质量是:把整个数据传递的过程透明化,对于通信终端的用户来说,这个传递的过程对他们是没有意义的!他们要的是显示在他们面前的用户数据---而这如果从最狭隘的思维去说的话,就是在OSI中的上三层数据或者更准确的说:是TCP/IP的应用层用户数据!----所以我们可以把以后学习网络技术是的数据归类为两大类即可:一种是用户数据—在一台终端PC上刚从一个应用程序或者软件生成数据,没有加入任何的报头或者报尾---也就是说,加入这些报头报尾只是为了达到一个目的,依据这些报头报尾的指示把这个用户数据安全的并且完整的交换到另一个目的终端;另外一种数据我们可以叫做设备数据---这是诸如路由器,交换机等网络设备为了实现一些功能,例如路由协议和生成树协议等等;这些功能的实现需要设备之间自己进行交换—这些过程是与用户数据无关的,但它们的目的都一样,通过设备数据的交换,可以对整个网络的拓扑更加了解然后更好的为用户数据的传递实现高质量的服务。
 
Ø 总结:
对于OSI七层模型中的HOW这一节,是学不完的,它可以包含所有的网络技术,这里只是通过一个总的概况来说明而已。所以说,所有网络技术的起点便是OSI七层模型,它是一个标准,一个规范,更是一把利刃!