概述
一、形象理解OSI七层协议
1、物理层
通过硬件设备将模拟信号转换为数字信号,于是有了0/1数据流,叫做比特流。
科学家要解决的第一个问题是,两个硬件之间怎么通信。具体就是一台发些比特流,然后另一台能收到。于是,科学家发明了物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
2、数据链路层
可以发比特流但是没有格式,于是就有了”帧”。采用了一种”帧”的数据块进行传输,为了确保数据通信的准确,实现数据有效的差错控制,加入了检错等功能。
现在通过电线我能发数据流了,但是,我还希望通过无线电波,通过其它介质来传输。然后我还要保证传输过去的比特流是正确的,要有纠错功能。于是,发明了数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
3、网络层
前两层都是在于可以发数据,以及发的数据是否正确,然而如果连着两台电脑还行,多台电脑而又只想让其中一台可以通信,则需要路由。选择性的发,那每台电脑就得有自己的身份,于是出现了IP协议等。
传输层只是解决了打包的问题。但是如果我有多台计算机,怎么找到我要发的那台?或者,A要给F发信息,中间要经过B,C,D,E,但是中间还有好多节点如K.J.Z.Y。我怎么选择最佳路径?这就是路由要做的事。于是,发明了网络层。即路由器,交换机那些具有寻址功能的设备所实现的功能。这一层定义的是IP地址,通过IP地址寻址。所以产生了IP协议。
4、传输层
比特流传输的过程不可能会一直顺畅,偶尔出现中断很正常,如果人为制定出单位,分成一个个的信息段,从中又衍生了报文,结合上面几层,我们就可以有目标的发生正确数据给某台计算机了,传输层有两个重要的协议:TCP和UDP。TCP效率低但是发送包会校验是否完整,UDP效率高但是不管别人能否完整收到。
现在我能发正确的发比特流数据到另一台计算机了,但是当我发大量数据时候,可能需要好长时间,例如一个视频格式的,网络会中断好多次(事实上,即使有了物理层和数据链路层,网络还是经常中断,只是中断的时间是毫秒级别的)。那么,我还须要保证传输大量文件时的准确性。于是,我要对发出去的数据进行封装。就像发快递一样,一个个地发。于是,先发明了传输层。
例如TCP,是用于发大量数据的,我发了1万个包出去,另一台电脑就要告诉我是否接受到了1万个包,如果缺了3个包,就告诉我是第1001,234,8888个包丢了,那我再发一次。这样,就能保证对方把这个视频完整接收了。
例如UDP,是用于发送少量数据的。我发20个包出去,一般不会丢包,所以,我不管你收到多少个。在多人互动游戏,也经常用UDP协议,因为一般都是简单的信息,而且有广播的需求。如果用TCP,效率就很低,因为它会不停地告诉主机我收到了20个包,或者我收到了18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,还不如用UDP,主机发出去就算了,丢几个包你就卡一下,算了,下次再发包你再更新。
5、会话层
计算机收到了发送的数据,但是有那么多进程,具体哪个进程需要用到这个数据,则把他输送到那个进程。例如:如果80端口要用,所以系统内数据通信,将接收端口数据送至需求端口。
现在我们已经保证给正确的计算机,发送正确的封装过后的信息了。但是用户级别的体验好不好?难道我每次都要调用TCP去打包,然后调用IP协议去找路由,自己去发?当然不行,所以我们要建立一个自动收发包,自动寻址的功能。于是,发明了会话层。会话层的作用就是建立和管理应用程序之间的通信。
6、表示层
现在正确接收到了需要的数据,但是因为数据在传输过程中可能基于安全性,或者是算法上的压缩,还有就是网络类型不同。那就得有一个沟通的桥梁来整理整理,还原出原本应该有的表示,类似于一个拆快递的过程。
现在我能保证应用程序自动收发包和寻址了。但是我要用Linux给window发包,两个系统语法不一致,就像安装包一样,exe是不能在linux下用的,shell在window下也是不能直接运行的。于是需要表示层(presentation),帮我们解决不同系统之间的通信语法问题。
7、应用层
是其他层对用户的已经封装好的接口,提供多种服务,用户只需操作应用层就可以得到服务内容,这样封装可以让更多的人能使用它。包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。
OK,现在所有必要条件都准备好了,我们可以写个android程序,web程序去实现需求。
二、层次结构
1、整体架构
2、不同协议之间的对应关系
三、OSI设计的目的
OSI模型的设计目的是成为一个所有销售商都能实现的开放网路模型,来克服使用众多私有网络模型所带来的困难和低效性。OSI是在一个备受尊敬的国际标准团体的参与下完成的,这个组织就是ISO(国际标准化组织)。什么是OSI,OSI是Open System Interconnection 的缩写,意为开放式系统互联参考模型。在OSI出现之前,计算机网络中存在众多的体系结构,其中以IBM公司的SNA(系统网络体系结构)和DEC公司的DNA(Digital Network Architecture)数字网络体系结构最为著名。为了解决不同体系结构的网络的互联问题,国际标准化组织ISO(注意不要与OSI搞混)于1981年制定了开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)。这个模型把网络通信的工作分为7层,它们由低到高分别是物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presentation Layer)和应用层(Application Layer)。第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持,而网络通信则可以自上而下(在发送端)或者自下而上(在接收端)双向进行。当然并不是每一通信都需要经过OSI的全部七层,有的甚至只需要双方对应的某一层即可。物理接口之间的转接,以及中继器与中继器之间的连接就只需在物理层中进行即可;而路由器与路由器之间的连接则只需经过网络层以下的三层即可。总的来说,双方的通信是在对等层次上进行的,不能在不对称层次上进行通信。
OSI划分层次的原则
网络中各结点都有相同的层次
不同结点相同层次具有相同的功能
同一结点相邻层间通过接口通信
每一层可以使用下层提供的服务,并向上层提供服务
不同结点的同等层间通过协议来实现对等层间的通信
四、OSI的优点
- 人们可以很容易的讨论和学习协议的规范细节。
- 层间的标准接口方便了工程模块化。
- 创建了一个更好的互连环境。
- 降低了复杂度,使程序更容易修改,产品开发的速度更快。
- 每层利用紧邻的下层服务,更容易记住个层的功能。
- OSI是一个定义良好的协议规范集,并有许多可选部分完成类似的任务。
- 它定义了开放系统的层次结构、层次之间的相互关系以及各层所包括的可能的任务。是作为一个框架来协调和组织各层所提供的服务。
- OSI参考模型并没有提供一个可以实现的方法,而是描述了一些概念,用来协调进程间通信标准的制定。即OSI参考模型并不是一个标准,而是一个在制定标准时所使用的概念性框架。
任何问题,只需在此文章的评论处留言即可,我将尽力解答,不要试图采用其它的联系方式,我一概不理会。
原创性文章,转载请注明出处CSDN:http://blog.csdn.net/qingwufeiyang12346。
最后
以上就是沉默小蝴蝶为你收集整理的计算机网络与无线通信系统学习7:OSI网络协议的全部内容,希望文章能够帮你解决计算机网络与无线通信系统学习7:OSI网络协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复