# OSI参考模型

# 简介

OSI模型基于国际标准化组织(ISO, International Standards Organization)的提案,作为各层协议迈向国际化标准的第一步。
OSI(Open Systems Interconnection)参考模型,即开放系统互联参考模型,它涉及如何连接开放系统,即那些为了与其他系统通信而开放的系统。

# 基本原则

OSI模型有7层,对应于这7层的基本原则简要概括如下:

  1. 应该在需要一个不同抽象体的地方创建一层。
  2. 每一层都应该执行一个明确定义的功能。
  3. 每一层功能的选择应该向国际标准化协议的目标看齐。
  4. 层与层边界的选择应该使跨越接口的信息流最小。
  5. 层数应该足够多,保证不同的功能不会被混杂在同一层中,但同时层数又不能太多,以免体系结构变得过于庞大。

# 组成

从下至上的七层依次为:

  1. 物理层(physical layer)
  2. 数据链路层(data link layer)
  3. 网络层(network layer)
  4. 传输层(transport layer)
  5. 会话层(session layer)
  6. 表示层(presentation layer)
  7. 应用层(application layer)

# 分层详解

# 物理层

顾名思义物理层关注在一条通信信道上传输原始比特。设计问题要保证传输比特1、0的正确性。典型问题包括用什么电子信号来表示1和0、一个比特持续多少纳秒、传输是否可以在两个方向上同时进行、初始连接如何建立、双方结束之后如何撤销连接、网络连接器有多少针以及每一针的用途是什么等。主要涉及机械、电子和时序接口,以及物理层之下的物理传输介质等。

# 数据链路层

数据链路层主要任务是将一个原始的传输设施转变成一条没有漏检传输错误的线路。做法是江镇似的错误掩盖起来,使得网络层看不到。为此,发送放将输入的数据拆分成数据帧,然后顺序发送这些数据帧。一个数据帧通常为几百个或者几千个字节长。接收方必须确认正确收到的每一帧,即给发送方发回一个确认帧。 数据链路层另一个问题(大多数高层都存在)是如何避免一个快速发送方用数据“淹没”一个慢速接收方,所以通常需要一种流量调节机制来让发送方知道接收方何时可以接收更多数据。
广播式网络的数据链路层还有另一个问题:如何控制对共享信道的访问。数据链路层的一个特殊子层,即介质访问控制子层,就是专门处理这个问题的。

# 网络层

网络层的主要功能是控制子网的运行。一个关键的设计问题是如何将数据包从源端路由到接收方。路由可以使静态的,也可以是高度动态的。
处理拥塞也是网络层的责任,一般要和高层协议结合起来综合处理拥塞才高效。延迟、传输时间、抖动等服务质量也是网络层的问题。
网络层也要解决很多数据包从一个网络传输到另一个网络时出现的问题。比如两个网络寻址方案不同、数据包过大、两个网络协议不同等等。网络层通过解决这些问题从而允许异构网络互相连接成为互联网络。
广播式网络中由于路由较简单,因此网络层可能比较单薄甚至不存在。

# 传输层

传输层的基本功能是接收来自上一层的数据。必要时将数据进行分割处理再传输到网络层。工作必须高效并上下隔离,对上面各层透明。
传输层还决定会话层,因而是实际的最终网络用户提供那些类型的服务。
传输层是真正的端到端的层,它自始至终将数据从源端携带到接收方。换句话说,源机器上的一个程序利用报文头和控制信息与目标机器上的一个类似程序进行会话,在下面的各层,每个协议涉及一台机器与它的直接邻居,而不涉及最终的源机器和目标机器,即源机器和目标机器可能被多个中间路由器隔离了。
由此可见,第1~3层(物理层为第一层)是链式连接的,而第4~7层是端到端的。

# 会话层

会话层允许不同机器上的用户建立会话。会话通常提供各种服务,包括对话控制(记录该由谁来传递数据)、令牌管理(禁止双方同时执行同一个关键操作),以及同步功能(在一个长传输过程中设置一些断点,以便在系统崩溃之后还能恢复到崩溃前的状态继续运行)。

# 表示层

表示层以下各层最关注的是如何传递数据位,而表示层关注的是所传递信息的语法和语义。为不同计算机的不同内部数据表示法抽象定义出一种数据结构,以便数据间交换。表示层管理这些抽象的数据结构,并允许定义和交换更高层的数据结构(比如银行账户记录)。

# 应用层

应用层包含了用户通常需要的各种各样的协议。例如超文本传输协议(HTTP,HyperText Transfer Protocol),它是万维网的基础。还有一些其他的应用协议,用于如文件传输、电子邮件及网络新闻等。