ISO的OSI七层网络协议模型

在网络的大环境中扮演者重要的角色的是网络协议,在这里简单的介绍一下关于ISO七层网络协议模型,当然还有TCP/IP四层网络协议,这里不再赘述。

目的

在互联网中有千千万万的主机,也有千千万万应用程序,如果不同的主机不同的应用程序不遵守一个规则,就没法交流,那么也就不能称之为互联网了,这时候网络协议的重要性就体现出来了,我们都遵循同样的协议,这样主机和应用程序之间的交流就没有问题了。

实现

在网络协议实现的过程中将不同的功能抽象出来,单独实现,只需要提供接口为其它的功能提供服务,具体实现是对其它的服务透明的;这样的好处是每一个服务实现起来只完成特定的功能,实现起来简单;另外在维护的过程中如果出错也更容易定位并发现问题,所以ISO在定制网络协议的时候定义了OSI(Open System Interconnection)协议模型,该模型共分七层,从下至上一次是: 1,物理层; 2,数据链路层; 3,网络层; 4,传输层; 5,会话层; 6,表示层; 7,应用层。下面简单的介绍每层完成的功能。

1,物理层(Physical Layer)

为数据链路层提供了一个数据传输的物理媒体,在其上传送比特流,该层数据的单位是比特(bit)。另外该层规定了激活,维持,关闭通信端点之间的机械特性,电气特性,功能特性以及过程特性。

该层在不可靠的物理介质上提供可靠的传输,负责在网络节点之间的线路上通过检测,流量控制和重发等手段,无差错的传送数据,该层数据的单位是帧(frame),所以每一帧数据必须同时带有同步,地址,差错控制以及流量控制等控制信息;总结起来是: 物理寻址,数据成帧,流量控制,数据检错,重发等。

3,网络层(Network Layer)

为了将数据从源端系统发送到目的端系统,网络层的主要任务是完成网络寻址,对子网间的数据包进行路由选择,使得分组数据包,该层数据的单位是数据包(packet), 能够准确无误的按照地址找到目的地,并将数据交付给上层协议;另外还可以实现拥塞控制,网际互连等功能。

4,传输层(Transport Layer)

该层是端到端的一个层次,主要负责将上层数据分段并提供端到端的,可靠的或不可靠的传输,传输的单位是报文(segment),该层是网络协议分层中最关键的一层,还要处理端到端的差错控制和流量控制问题。

5,会话层(Session Layer)

该层主要对传输的报文提供同步管理的服务,在两个不同的主机的互相通信的应用进程之间进行会话的管理,例如确定是半双工还是全双工等;此外还利用在数据中添加校验点来实现数据的同步。

6,表示层(Presentation Layer)

该层主要的作用是把数据进行转换,保证一个主机的应用程序数据可以被另一个主机的一个应用程序所理解,即把不同计算机中内部的不同表示形式转换成网络通信协议中的标准形式。主要包括数据的加密(解密),压缩(还原),格式转换等。

7,应用层(Application Layer)

该层直接面向用户,主要任务是为操作系统和用户之间提供应用接口。

数据传输过程

发送数据

  • 在OSI参考模型中,当一台主机需要传送数据(DATA)时,数据首先通过应用层的接口进入应用层,在应用层数据被加上应用层报头(Application Header, AH),形成应用层协议数据单元(Protocol Data Unit, PDU),然后提交到下一层,表示层;
  • 表示层并不关心上层(应用层)的数据格式,而是把整个应用层提交的过来的数据进行整体的封装,添加报文头部(Presentation Header, PH),然后提交到下一层,会话层;
  • 同样的,会话层,传输层,网络层,数据链路层都分别把上层提交过来的数据加上自己的报头,分别是: 会话层报头(Session Header, SH),传输层报头(Transport Header, TH), 网络层报头(Network Header, NH),数据链路层报头(Data link Header, DH), 然后提交到下一层。

    其中数据链路层还会加上数据链路层报尾(Data link Termination, DT)最终形成一帧数据,在物理层上进行传送。

接收数据

  • 当一帧数据通过物理层传送到目标主机的物理层上时,该主机的物理层把它递交给上层, 数据链路层。数据链路层负责去掉数据的帧头部(DH)和尾部(DT), 同时进行数据校验,如果需要的话会发送反馈给源端主机,如果校验没有出错,则递交到上层,网络层。
  • 同样的,网络层,传输层,会话层,表示层,应用层也要做相应的动作,并执行对应层的功能,最终原始数据递交到目标主机的具体的应用程序中。

后记

当然对于不同的设备,它工作在不同的协议层面上,比如路由器是工作在网络层,交换机是工作在数据链路层,集线器是工作在物理层等等。同时在数据的传输过程中不像这里说的那么简单,这里只是简答的介绍,实际上远比这里介绍的复杂,有兴趣的可以查阅相关资料进行详细的了解,相信会有很大的收获的。


* 如有疑问欢迎批评指正,谢谢! *