网络体系结构模型:4层?5层?还是7层?

经常看到的4层、5层和7层网络体系结构模型分别有什么区别呢?

网络体系结构有两个重要的模型:OSI参考模型(七层模型)和TCP/IP模型(四层模型)。在某些地方还能看到综合OSI模型和TCP/IP的五层因特网协议模型。它们彼此能对应起来,也就是说,这3套模型其实指的是一样的内容,只是划分标准不同。

OSI七层协议模型

OSI模型是标准版组织制定的理论规范,事实上与OSI模型相关的协议没有被任何人用到,但是这个模型本身具有相当普遍的一样,且仍然有效,它对讨论网络体系结构中的每一层功能仍然很重要。

OSI(Open Systems Interconnection)模型的全称是开放系统互联参考模型,它有7层,适用于这7层的基本元素可以简要概括如下:

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

OSI模型本身不是一个网络体系结构,因为它没有定义每一层的服务和所用的协议。它只是指明了每一层应该做什么事情。

每一层的标准并不属于参考模型本身,它们是作为单独的国际标准发布的。

我们从下往上来看每一层:

物理层 Physical Layer

物理层关注在一条通信信道上传输原始比特。即一方发送了比特1,另一方收到的也是比特1。

典型问题包括:用什么电子信号来表示1和0;一个比特持续多少纳秒;传输是否可以在两个方向上同时进行等;

这些问题涉及机械、电子和时序接口,以及物理层一下的物理传输介质等。

数据链路层的主要任务是将一个原始的传输设备转变成一条没有漏检传输错误的线路(物理寻址)。发送方将输入的数据拆分成数据帧(data frame),顺序发送这些数据帧。如果服务是可靠的,则接收方必须确认正确几首到每一帧,即给发送方回复一个确认帧(acknowledgement frame)。

网络层 Network Layer

主要功能是控制子网的运行。关键的设计问题是如何将数据包从源端路由到接收方。

传输层 Transport Layer

传输层接收来自上一层的数据,在必要的时候把这些数据分割成较小的单元,然后将这些数据单元传输给网络层,并且确保这些数据单元正确到达另一端。

传输层还决定了数据传递到会话层的路径。

会话层 Session Layer

会话层允许不同机器上的用户建立会话。会话提供各种服务,包括对话控制(记录该由谁来传递数据)、令牌管理(禁止双方同时执行同一个关键操作),以及同步功能。

表示层 Presentation Layer

表示层关注传递信息的语法和语义,管理这些抽象的数据结构,并允许定义和交换更高层的数据结构。

应用层 Application Layer

应用层包含了用户通常需要的各种各样的协议,比如HTTP。

TCP/IP模型

TCP/IP协议模型则正好相反,它是TCP/IP技术的实际模型,《计算机网络》中这样形容这一模型:“模型本身没有多大用处,但它的协议却已广为流传”。因此四层模型也用来指TCP/IP协议栈,每一层对应不同的网络通信协议。

TCP/IP模型被ARPANET和Internet在全球范围使用。它最初的设计目的是为了以无缝的方式将多个网络连接起来,因此以其中最主要的两个协议命名。

TCP/IP模型包含四层:

链路层描述了链路必须完成什么功能才能满足无连接的互联网络层需求,比如串行线和经典以太链路。

这不是一个真正意义上的层,而是主机与传输线路之间的一个接口。

TCP/IP模型的设计目的包括:

  • 美国国防部担心贵重的主机、路由器和互联网络的网关可能会在片刻间被来自前苏联的攻击而突然崩溃
  • 在损失子网硬件的情况下网络还能继续工作,原有的会话不能被打断

互联网层 Internet Layer

TCP/IP中的互联网层大致对应OSI中的网络层。

互联网层的任务是允许主机将数据包注入到任何网络,并且让这些数据包独立地到底接收方。

互联网层定义了官网的数据包格式和协议,即因特网协议(Internet Protocol, IP),与之相伴的还有一个辅助协议,成为因特网控制报文协议(Internet Control Message Protocol, ICMP)。

传输层 Transport Layer

传输层的设计目的是允许源主机和目标主机上的对等实体进行对话。它定义了两个端对端的传输协议。

  • 传输控制协议(Transport Control Protocol, TCP):它是一个可靠的、面向连接的协议,允许从一台机器发出的字节流正确无误地交付到互联网的另一台机器,
  • 用户数据报协议(User Datagram Protocol, UDP):它是一个不可靠的、无连接协议,适用于那些不想要TCP的有序性或流量控制功能。被广泛用于哪些一次性的基于客户机-服务器类型的”请求-应答“查询应用。

应用层 Application Layer

TCP/IP模型没有会话层和表示层,应用层简单包含了所需的任何会话和表示功能。

应用层包含了所有的高层协议,包括虚拟终端协议(TELNET)、文件传输协议(FTP)、电子邮件协议(SMTP)、域名系统(DNS)和超文本传输协议(HTTP)等。

下图是OSI模型与TCP/IP模型的对比:

Image result for tcp/ip osi

混合模型

因特网协议栈五层模型是OSI和TCP/IP模型的综合。包括物理层、数据链路层、网络层、传输层和应用层。

Image result for osi 5 layer

三个模型的对比如下:

Image result for osi 5 layer tcp/ip

这里附一个网上看到的非常详细的层级与协议图:

20180115133703203

参考:

《计算机网络》第5版,清华大学出版社,Andrew S.Tanenbaum, David J.Wetherall著