OSI七层模型详解
当网络刚开始出现的时候,只能在同一制造商的计算机产品之间进行通信。
20世纪70年代后期,国际标准化组织(ISO)创建了开放系统互连参考模型(OSI),从而打破了这一壁垒。
OSI参考模型将计算机分为七层,通俗一点来说就是七个步骤,并规定了每个步骤实现的功能。
这样互联网设备的厂家以及软件开发人员就能参照OSI参考模型来设计自己的硬件和软件,不同供应商的网络设备之间就能互相去协同工作。
OSI网络模型是面向网络构建的最基本的网络模型,该模型采用分层的方法来实现数据和网络信息从一台计算机的应用程序——进过网络介质——传送到另一台计算机的应用程序。
OSI参考模型是一张概念上的蓝图,描述了通信是怎样进行的。它解决了实现有效通信所需要的所有过程,并将这些通信过程划分为逻辑上的层。
层可以简单的理解成数据通信需要的步骤。当一个通信系统以这种层的方式进行设计时,就称为是分层的体系结构。
国际标准化组织(ISO)把计算机通信分为七层,从上到下依次为:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。也就是说要实现计算机之间的通信需要这七方面的工作。
一到四层被认为是,这些层与数据传输密切相关。五到七层为高层,包含应用程序级的数据,每一层负责一项具体的工作,然后把数据传送到下一层。
在通信主机上 完成的功能 |
应用层 |
提供用户接口,特制能够发起网络通信的应用程序,比如客户端程序:QQ,微信,服务器程序:web服务器、邮件服务器等 |
表示层 | 使用何种编码方式。比如要传输的数据使用ASCII码,Unicode编码还是二进制文件,是否要加密和压缩,。发送端和接收端必须使用相同的编码方式,才能正常显示,否则就会乱码。 | |
会话层 | 通信的应用程序之间建立、维护和释放面向用户的连接。通信的应用程序之间建立对话,需要传输层建立一个或者多个连接。 | |
传输层 | 负责在通信的两个计算机之间建立连接,实现可靠的或不可靠的数据通信,能够实现发送端和接收端的丢包重传,流量控制。 | |
在网络设备间 完成的功能 |
网络层 | 路由器查看数据包目标ip地址,根据路由表为数据包选择路径。路由表中的条目可以人工添加(静态路由),也可以动态生成(动态路由)。 |
数据链路层 | 不同的网络类型,发送数据的机制不同,数据链路层就是将数据包封装成能够在不同网络传输的帧。能够进行差错检查,但不纠错,检测出错误丢掉该帧。 | |
物理层 | 该层规定了网络设备的接口标准,电压标准。尽可能的通过频分复用、时分复用技术在通信链路上更快的传输数据。 |
下面以计算机A访问网站为例讲解计算机通信的过程,进一步了解OSI参考模型。
1.应用层(用户接口,发起数据请求,比如QQ)
应用层发起数据通信请求。计算机打开网页输入网址访问网站的网页,网站的web服务器接收到客户的请求,把网页传送给计算机A的浏览器,web服务和浏览器就工作在应用层。
我们可以这样理解引用层,那些能够发起计算机通信的应用程序(服务端和客户端)都属于应用层。比如QQ聊天软件、暴风影音在线看电影、各种浏览器访问网站,这些都算是应用层。
2.表示层(使用何种编码方式、加密、压缩)
网页中的内容和文字要进行传输,必须转换数字信息,这就需要对传输的文字进行编码,这是表示层要解决的问题。
这个转换过程需要有字符集,所谓字符集就是字符的集合,且给每一个字符一个编码,通常一个字符集要用到一个国家或一个民族要用到的全部字符。
比如ASCII字符集,包含了键盘上的全部字符、数字、符号以及控制字符,对于英文来说这些字符就够用了。但对于中国的汉字,若给每一个汉字一个编码,这就要一个庞大的字符集,同时支持汉字和英文的字符集有TUTF-8、GBK等,繁体汉字字符集有BIG5。
发送端和接收端必须使用相同的编码,否则就会出现乱码,这就是计算机通信表示层出现了错误。
有些文件内容不是字符,而是图片文件和程序文件,这些文件就不需要字符集进行编码,可以直接以二进制的方式传输。
有些应用程序需要考虑应用传输的安全性,比如QQ聊天的内容,就需要在传输之前加密,对方QQ收到之后再解密,这也属于表示层的功能。
有些应用程序传输之前为了节省带宽,需要进行压缩再传输,比如QQ视频聊天,摄像头捕获的视频经过压缩后传输给对方,对方收到后解压看到视频,这样就减少了视频聊天占用的网络带宽,应用程序实现这个功能也属于表示层功能。这种压缩不是人为的,而是软件开发者为了软件的性能帮我们已经设置好的。
3.会话层(建立和维持会话功能)
计算机A的浏览器访问网站,需要浏览器和web服务器上的进程建立会话,建立和维持会话的功能称为会话层。
它提供包括访问验证和会话管理在内的建立和维护应用之间的通信的机制。
4.传输层(在两台计算机上建立连接、可靠传输、流量控制)
网站需要通过网络传输到计算机A,网页也需要进行处理依次发送给计算机,计算机收到分段放入缓存,这个过程由传输层完成,传输层能够实现可靠传输和流量控制。
计算机A收到发送过来的分段后,将分段放入缓存,若收到编号连续的第1、第2、第3个数据段,就会给网站发送一个确认数据包,告诉网站发送第4个数据片段,这是网站就可以将缓存中的第1、第2、第3个数据段删除,接着发送后面的数据段,将网页内的内容放到缓存准备发送。
若网站连续收到第1、第2、第3、第4个数据段,但传输过程中丢了第3个数据段,计算机收到第1、第2、第4个数据段,计算机会给网站发送一个确认数据包,告诉网站发送第3个数据段以后的数据段,可见网络虽然不可靠,但传输层能够可靠地传输数据。
传输层也能控制发送端和接收端的流量控制功能,比如发送端发的快,接收端缓存满了,就会通知发送端减慢发送数据。
5.网络层(路由器选择转发路径)
当然网站和计算机A之间,发送数据离不开网络。路由器是专门负责在不同网络转发数据包的,为数据包选择转发路径。
为数据包选择转发路径的功能有网络层完成,因此路由器工作在网络层。
6.数据链路层(将数据包封装成不同的帧,协议不同)
数据链路层就是将数据包封装成能够在不同链路传输的帧。数据包在传递过程中要经过不同的网络,比如集线器或交换机组件的网络就是以太网,以太网通过载波侦听多路网络协议(CSMA/CD),路由器和路由器之间的连接是点到点的链路,点到点链路可以使用PPP协议或帧中继协议。数据包要想在不同类型的链路传输需要封装不同的帧格式。比如以太网的帧,要加上目标MAC地址和源MAC地址,而点到点的帧就不用添加MAC地址。
7.物理层(物理设备的标准)
物理层规定了网络设备的接口标准、电压标准,要是不定义这些标准,各个厂家生产的网络设备就不能连接在一起,跟不可能互相兼容。
物理层也包括通信技术,那些专门研究通信的人就要想办法让物理线路(铜线或光纤)通过频分复用技术或编码技术更快的传输数据。
最后再来说一说每层的岗位职能。
程序员:(应用层、表示层、会话层)
开发网络程序,负责解决应用层、表示层和会话层的问题,只关心应用程序之间如何通信、通信是否加密或压缩,避免出现乱码。不会关心网络问题。
网络工程师:(网络层、数据链路层)
负责配置网络中的路由器,为数据包选择我转发路径,还需要配置交换机,交换机是数据链路层的设备。
通信工程师:(物理层)
如何在线路上更快的无差错的传输信号。