1.2.1 计算机网络分层结构
1. 为什么要分层
两个系统中实体间的通信是一个很复杂的过程,为了降低协议设计和调试过程的复杂性,也为了便于对网络进行研究、实现和维护,促进标准化工作,通常对计算机网络的体系结构以分层的方式进行建模。
对于发送文件前要完成的工作:
- 发起通信的计算机必须将数据通信的通路进行激活。
- 要告诉网络如何识别目的主机。
- 发起通信的计算机要查明目的主机是否开机,并且与网络连接正常。
- 发起通信的计算机要弄清楚,对方计算机中文件管理程序是否已经做好准备工作。
- 确保差错和意外可以解决。
2. 分层的基本原则
我们把计算机网络的各层及其协议的集合称为网络的体系结构(Architecture)。 换言之,计算机网络的体系结构就是这个计算机网络及其所应完成的功能的精确定义,它是计算机网络中的层次、各层的协议及层间接口的集合。需要强调的是,这些功能究竟是用何种硬件或软件完成的,则是一个遵循这种体系结构的实现(Implementation)问题。体系结构是抽象的,而实现是具体的,是真正在运行的计算机硬件和软件。
计算机网络的体系结构通常都具有可分层的特性,它将复杂的大系统分成若干较容易实现的层次。分层的基本原则如下:
- 每层都实现一种相对独立的功能,降低大系统的复杂度。
- 各层之间界面自然清晰,易于理解,相互交流尽可能少。
- 各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术来实现。
- 保持下层对上层的独立性,上层单向使用下层提供的服务。
- 整个分层结构应能促进标准化工作。
由于分层后各层之间相对独立,灵活性好,因而分层的体系结构易于更新(替换单个模块),易于调试,易于交流,易于抽象,易于标准化。但层次越多,有些功能在不同层中难免重复出现,产生额外的开销,导致整体运行效率越低。层次越少,就会使每层的协议太复杂。因此,在分层时应考虑层次的清晰程度与运行效率间的折中、层次数量的折中。
3. 计算机网络层次结构
依据一定的规则,将分层后的网络从低层到高层依次称为第 1 层、第 2 层 … 第 n 层,通常还为每层取一个特定的名称,如第1层的名称为物理层。
在计算机网络的分层结构中,第 n 层中的活动元素通常称为n层实体。具体来说,实体指任何可发送或接收信息的硬件或软件进程,通常是一个特定的软件模块。不同机器上的同一层称为对等层,同一层的实体称为对等实体。n 层实体实现的服务为 n+1 层所利用。在这种情况下,n 层被称为服务提供者,n+1 层则服务于用户。
每一层还有自己传送的数据单位,其名称、大小、含义也各有不同。
在计算机网络体系结构的各个层次中,每个报文都分为两部分:一是数据部分, 即 SDU;二是控制信息部分,即 PCI,它们共同组成 PDU。
- 服务数据单元(SDU):为完成用户所要求的功能而应传送的数据。第 n 层的服务数据单元记为n-SDU。
- 协议控制信息(PCI):控制协议操作的信息。第 n 层的协议控制信息记为 n-PCI。
- 协议数据单元(PDU):对等层次之间传送的数据单位称为该层的 PDU。第 n 层的协议数据单元记为n-PDU。在实际的网络中,每层的协议数据单元都有一个通俗的名称,如物理层的 PDU 称为比特,链路层的 PDU 称为帧,网络层的 PDU 称为分组,传输层的 PDU 称为报文。
在各层间传输数据时,把从第 n+1 层收到的 PDU 作为第 n 层的 SDU,加上第 n 层的 PCI,就变成了第 n 层的 PDU,交给第 n-1 层后作为 SDU 发送,接收方接收时做相反的处理,因此可知三者的关系为 n-SDU + n-PCI= n-PDU= (n-1)-SDU,其变换过程如图 1.5 所示。
具体地,层次结构的含义包括以下几方面:
- 第 n 层的实体不仅要使用第 n-1 层的服务来实现自身定义的功能,还要向第 n+1 层提供本层的服务,该服务是第 n 层及其下面各层提供的服务总和。
- 最低层只提供服务,是整个层次结构的基础;中间各层既是下一层的服务使用者,又是上一层的服务提供者;最高层面向用户提供服务。
- 上一层只能通过相邻层间的接口使用下一层的服务,而不能调用其他层的服务;下一层所提供服务的实现细节对上一层透明。
- 两台主机通信时,对等层在逻辑上有一条直接信道,表现为不经过下层就把信息传送到对方。
4. 概念总结
- 网络体系结构是从功能上描述计算机网络结构。
- 计算机网络体系结构简称网络体系结构是分层结构。
- 每层遵循某个/些网络协议以完成本层功能。
- 计算机网络体系结构是计算机网络的各层及其协议的集合。
- 第 n 层在向 n+1 层提供服务时,此服务不仅包含第 n 层本身的功能,还包含由下层服务提供的功能。
- 仅仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽。
- 体系结构是抽象的,而实现是指能运行的一些软件和硬件。
1.2.2 计算机网络协议、接口、服务的概念
1. 协议
协议,就是规则的集合。在网络中要做到有条不紊地交换数据,就必须遵循一些事先约定好的规则。这些规则明确规定了所交换的数据的格式及有关的同步问题。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议( Network Protocol ),它是控制两个(或多个)对等实体进行通信的规则的集合,是水平的。不对等实体之间是没有协议的,比如用 TCP/IP 协议栈通信的两个结点,结点A的传输层和结点 B 的传输层之间存在协议,但结点A的传输层和结点B的网络层之间不存在协议。网络协议也简称为协议。
协议由语法、语义和同步三部分组成:
- 语法:规定了传输数据的格式;
- 语义:规定了所要完成的功能,即需要发出何种控制信息、完成何种动作及做出何种应答;
- 同步:规定了执行各种操作的条件、时序关系等,即事件实现顺序的详细说明。
一个完整的协议通常应具有线路管理(建立、释放连接)、差错控制、数据转换等功能。
2. 接口
接口是同一结点内相邻两层间交换信息的连接点,是一个系统内部的规定。每层只能为紧邻的层次之间定义接口,不能跨层定义接口。在典型的接口上,同一结点相邻两层的实体通过服务访问点(Service Access Point,SAP)进行交互。服务是通过 SAP 提供给上层使用的,第 n 层的 SAP 就是第 n+1 层可以访问第 n 层服务的地方(上层使用下层服务的入口,下层为上层提供的接口)。每个 SAP 都有一个能够标识它的地址。SAP 是一个抽象的概念,它实际上是一个逻辑接口(类似于邮政信箱),但和通常所说的两个设备之间的硬件接口是很不一样的。
3. 服务
服务是指下层为紧邻的上层提供的功能调用(单向),它是垂直的。对等实体在协议的控制下,使得本层能为上一层提供服务,但要实现本层协议还需要使用下一层所提供的服务。
上层使用下层所提供的服务时必须与下层交换一些命令,这些命令在 OSI 中称为服务原语。
OSI 将原语划分为 4 类:
- 请求(Request):由服务用户发往服务提供者,请求完成某项工作。
- 指示(Indication):由服务提供者发往服务用户,指示用户做某件事情。
- 响应(Response):由服务用户发往服务提供者,作为对指示的响应。
- 证实(Confirmation):由服务提供者发往服务用户,作为对请求的证实。
这 4 类原语用于不同的功能,如建立连接、传输数据和断开连接等。有应答服务包括全部 4 类原语,而无应答服务则只有请求和指示两类原语。
一定要注意,协议和服务在概念上是不一样的:
- 首先,只有本层协议的实现才能保证向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议,即下面的协议对上层的服务用户是透明的。
- 其次,协议是“水平的”,即协议是控制对等实体之间通信的规则。但服务是“垂直的”,即服务是由下层通过层间接口向上层提供的。
- 另外,并非在一层内完成的全部功能都称为服务,只有那些能够被高一层实体“看得见”的功能才称为服务。
协议、接口、服务三者之间的关系如图 1.7 所示。
计算机网络提供的服务可按以下三种方式分类。
面向连接服务与无连接服务
在面向连接服务中,通信前双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后释放连接和所占用的资源。因此这种服务可以分为连接建立、数据传输和连接释放三个阶段。例如 TCP 就是一种面向连接服务的协议。
在无连接服务中,通信前双方不需要先建立连接,需要发送数据时可直接发送,把每个带有目的地址的包(报文分组)传送到线路上,由系统选定路线进行传输。这是一种不可靠的服务。这种服务常被描述为“尽最大努力交付”(Best-Effort-Delivery),它并不保证通信的可靠性。例如 IP、UDP 就是一种无连接服务的协议。
可靠服务和不可靠服务
可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。不可靠服务是指网络只是尽量正确、可靠地传送,而不能保证数据正确、可靠地传送到目的地,是一种尽力而为的服务。
对于提供不可靠服务的网络,其网络的正确性、可靠性要由应用或用户来保障。例如,用户收到信息后要判断信息的正确性,如果不正确,那么用户要把出错信息报告给信息的发送者,以便发送者采取纠正措施。通过用户的这些措施,可以把不可靠的服务变成可靠的服务。
注意:在一层内完成的全部功能并非都称之为服务,只有那些能够被高一层实体“看得见”的功能才能称为服务。
有应答服务和无应答服务
有应答服务是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现。所发送的应答既可以是肯定应答,也可以是否定应答,通常在接收到的数据有错误时发送否定应答。例如,文件传输服务就是一种有应答服务。
无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现。例如,对于 WWW 服务,客户端收到服务器发送的页面文件后不给出应答。
1.2.3 ISO/OSI 参考模型
国际标准化组织(ISO)提出的网络体系结构模型,称为开放系统互连参考模型(OSI/ RM),通常简称为 OSI 参考模型。OSI 有 7 层,自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- 高三层统称为资源子网,它相当于计算机系统,完成数据的处理等功能。
- 传输层承上启下。
- 低三层统称为通信子网,它是为了联网而附加的通信设备,完成数据的传输功能;
OSI 的层次结构如下图所示。
下面详述 OSI 参考模型各层的功能。
应用层(Application Layer)
应用层是 OSI 模型的最高层,是用户与网络的界面。应用层为特定类型的网络应用提供访问 OSI 环境的手段。因为用户的实际应用多种多样,这就要求应用层采用不同的应用协议来解决不同类型的应用要求,因此应用层是最复杂的一层,使用的协议也最多。典型的协议有用于文件传:送的 FTP、用于电子邮件的 SMTP、用于万维网的 HTTP 等。
表示层(Presentation Layer)
表示层主要处理在两个通信系统中交换信息的表示方式。不同机器采用的编码和表示方法不同,使用的数据结构也不同。为了使不同表示方法的数据和信息之间能互相交换,表示层采用抽象的标准方法定义数据结构,并采用标准的编码形式。数据压缩、加密和解密也是表示层可提供的数据表示变换功能。
功能一:数据格式变换
功能二:数据加密解密
功能三:数据压缩和恢复
会话层(Session Layer)
会话层允许不同主机上的各个进程之间进行会话。会话层利用传输层提供的端到端的服务,向表示层提供它的增值服务。这种服务主要为表示层实体或用户进程建立连接并在连接上有序地传输数据,这就是会话,也称建立同步(SYN)。
会话层负责管理主机间的会话进程,包括建立、管理及终止进程间的会话。会话层可以使用校验点使通信会话在通信失效时从校验点继续恢复通信,实现数据同步。
功能一:建立、管理、终止会话
功能二:使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步。
传输层(Transport Layer)
传输层也称运输层,传输单位是报文段(TCP) 或用户数据报(UDP),传输层负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务。
数据链路层提供的是点到点的通信,传输层提供的是端到端的通信,两者不同。
通俗地说,点到点可以理解为主机到主机之间的通信,一个点是指一个硬件地址或IP地址,网络中参与通信的主机是通过硬件地址或IP地址标识的;端到端的通信是指运行在不同主机内的两个进程之间的通信,一个进程由一个端口来标识,所以称端到端通信。
使用传输层的服务,高层用户可以直接进行端到端的数据传输,从而忽略通信子网的存在。通过传输层的屏蔽,高层用户看不到子网的交替和变化。由于一台主机可同时运行多个进程,因此传输层具有复用和分用的功能。复用是指多个应用层进程可同时使用下面传输层的服务,分用是指传输层把收到的信息分别交付给上面应用层中相应的进程。
传输层的协议有 TCP、UDP。
功能一:可靠传输、不可靠传输
功能二:差错控制
功能三:流量控制
功能四:复用分用
网络层(Network Layer)
主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。(分组是对数据报进行分割后的结果)
它关心的是通信子网的运行控制,主要任务是把网络层的协议数据单元(分组)从源端传到目的端,为分组交换网上的不同主机提供通信服务。关键问题是对分组进行路由选择,并实现流量控制、拥塞控制、差错控制和网际互联等功能。
如图 1.10 所示,结点 A 向结点 B 传输一个分组时,既可经过边 a、c、g,也可经过边 b、h,有很多条可以选择的路由,而网络层的作用就是根据网络的情况,利用相应的路由算法计算出一条合适的路径,使这个分组可以顺利到达结点B。
流量控制与数据链路层的流量控制含义一样,都是协调 A 的发送速率和 B 的接收速率。
差错控制是通信两结点之间约定的特定检错规则,如奇偶校验码,接收方根据这个规则检查接收到的分组是否出现差错,如果出现了差错,那么能纠错就纠错,不能纠错就丢弃,确保向上层提交的数据都是无误的。
如果图 1.9 中的结点都处于来不及接收分组而要丢弃大量分组的情况,那么网络就处于拥塞状态,拥塞状态使得网络中的两个结点无法正常通信。网络层要采取一定的措施来缓解这种拥塞,这就是拥塞控制。
因特网是一个很大的互联网,它由大量异构网络通过路由器(Router)相互连接起来。因特网的主要网络层协议是无连接的网际协议(Internet Protocol,IP)和许多路由选择协议,因此因特网的网络层也称网际层或IP层。
注意,网络层中的“网络”一词并不是我们通常谈及的具体网络,而是在计算机网络体系结构中使用的专有名词。
网络层的协议有 IP、IPX、ICMP、IGMP、ARP、 RARP 和 OSPF 等。
功能一:路由选择
功能二:流量控制
功能三:差错控制
功能四:拥塞控制
数据链路层(Data Link Layer)
数据链路层的传输单位是帧,任务是将网络层传来的IP数据报组装成帧。数据链路层的功能可以概括为成帧、差错控制、流量控制和传输管理等。
由于外界噪声的干扰,原始的物理连接在传输比特流时可能发生错误。如图 1.8 所示,左边结点想向右边结点传输数字 0,于是发出了信号A;但传输过程中受到干扰,信号 A 变成了信号 B,而信号 B 又刚好代表 1,右边结点接收到信号 B 时,就会误以为左边结点传送了数字 1,从而发生差错。两个结点之间如果规定了数据链路层协议,那么就可以检测出这些差错,然后把收到的错误信息丢弃,这就是差错控制功能。
如图 1.8 所示,在两个相邻结点之间传送数据时,由于两个结点性能的不同,可能结点A发送数据的速率会比结点 B 接收数据的速率快,如果不加控制,那么结点B就会丢弃很多来不及接收的正确数据,造成传输线路效率的下降。流量控制可以协调两个结点的速率,使结点A发送数据的速率刚好是结点B可以接收的速率。
广播式网络在数据链路层还要处理新的问题,即如何控制对共享信道的访问。数据链路层的一个特殊的子层一介质访问子层,就是专门处理这个问题的。
典型的数据链路层协议有 SDLC、HDLC、PPP、STP 和帧中继等。
功能一:成帧(定义帧的开始和结束)
功能二:差错控制(帧错、位错)
功能三:流量控制
功能四:访问(接入)控制 控制对信道的访问
物理层(Physical Layer)
物理层的传输单位是比特,任务是透明的传输比特流,功能是在物理媒体上为数据端设备透明地传输原始比特流。
透明传输:指不管所传数据是什么样的比特组合都应当能够在链路上传送。
物理层主要定义数据终端设备(DTE)和数据通信设备(DCE)的物理与逻辑连接方法,所以物理层协议也称物理层接口标准。由于在通信技术的早期阶段,通信规则称为规程(Procedure),因此物理层协议也称物理层规程。
物理层接口标准很多,如 EIA-232C、EIA/TIA RS-449、CCITT 的 X.21 等。在计算机网络的复习过程中,不要忽略对各层传输协议的记忆,到了后期,读者对链路层、网络层、传输层和应用层的协议会比较熟悉,但往往容易忽视物理层的协议。
物理层主要研究以下内容:
- 通信链路与通信结点的连接需要一些电路接口,物理层规定了这些接口的一些参数,如机械形状和尺寸、交换电路的数量和排列等,例如,笔记本电脑上的网线接口,就是物理层规定的内容之一。
- 物理层也规定了通信链路上传输的信号的意义和电气特征。例如物理层规定信号 A 代表数字 0,那么当结点要传输数字 0 时,就会发出信号 A,当结点接收到信号 A 时,就知道自己接收到的实际上是数字 0。
注意,传输信息所利用的一些物理媒体,如双绞线、光缆、无线信道等,并不在物理层协议之内而在物理层协议下面。因此,有人把物理媒体当作第 0 层。
功能一:定义接口特性
功能二:定义传输模式(单工、半双工、双工)
功能三:定义传输速率
功能四:比特同步
功能五:比特编码
TCP/IP 模型与 OSI 参考模型的比较
OSI 参考模型与 TCP/IP 参考模型相同点:
- 二者都采取分层的体系结构,将庞大且复杂的问题划分为若干较容易处理的、范围较小的问题,而且分层的功能也大体相似。
- 二者都是基于独立的协议栈的概念。
- 二者都可以解决异构网络的互联,实现世界上不同厂家生产的计算机之间的通信。
OSI 参考模型与 TCP/IP 参考模型不同点:
- OSI 参考模型的最大贡献就是精确定义了三个主要概念:服务、协议和接口,这与现代的面向对象程序设计思想非常吻合。而 TCP/IP 模型在这三个概念上却没有明确区分,不符合软件工程的思想。
- OSI 参考模型产生在协议发明之前,没有偏向于任何特定的协议,通用性良好。但设计者在协议方面没有太多经验,不知道把哪些功能放到哪一层更好。TCP/IP 模型正好相反,首先出现的是协议,模型实际上是对已有协议的描述,因此不会出现协议不能匹配模型的情况,但该模型不适合于任何其他非 TCP/IP 的协议栈。
- TCP/IP 模型在设计之初就考虑到了多种异构网的互联问题,并将网际协议(IP)作为一个单独的重要层次。OSI 参考模型最初只考虑到用一种标准的公用数据网将各种不同的系统互联。OSI 参考模型认识到网际协议 IP 的重要性后,只好在网络层中划分出一个子层来完成类似于 TCP/IP 模型中的 IP 的功能。
- OSI 参考模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信。而 TCP/IP 模型认为可靠性是端到端的问题,因此它在网际层仅有一种无连接的通信模式,但传输层支持无连接和面向连接两种模式。这个不同点常常作为考查点。
面向连接分为三个阶段,第一是建立连接,在此阶段,发出一个建立连接的请求。只有在连接成功建立之后,才能开始数据传输,这是第二阶段。接着,当数据传输完毕,必须释放连接。而面向无连接没有这么多阶段,它直接进行数据传输。
无连接和面向连接
模型 | ISO/OSI 参考模型 | TCP/IP 模型 |
---|---|---|
网络层 | 无连接+面向连接 | 无连接 |
传输层 | 面向连接 | 无连接+面向连接 |
无论是 OSI 参考模型还是 TCP/IP 模型,都不是完美的,对二者的讨论和批评都很多。OSI 参考模型的设计者从工作的开始,就试图建立一个全世界的计算机网络都要遵循的统一标准。 从技术角度来看,他们希望追求一种完美的理想状态,这也导致基于 OSI 参考模型的软件效率极低。OSI 参考模型缺乏市场与商业动力,结构复杂,实现周期长,运行效率低,这是它未能达到预期目标的重要原因
学习计算机网络时,我们往往采取折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种如图所示的只有五层协议的体系结构,即我们所熟知的物理层、数据链路层、网络层、传输层和应用层。本书也采用这种体系结构进行讨论。
最后简单介绍使用通信协议栈进行通信的结点的数据传输过程。每个协议栈的最顶端都是一个面向用户的接口,下面各层是为通信服务的协议。用户传输一个数据报时,通常给出用户能够理解的自然语言,然后通过应用层,将自然语言会转化为用于通信的通信数据。通信数据到达传输层,作为传输层的数据部分(传输层 SDU),加上传输层的控制信息(传输层 PCI),组成传输层的 PDU ,然后交到网络层,传输层的 PDU 下放到网络层后,就成为网络层的 SDU,然后加上网络层的 PCI,又组成了网络层的 PDU,下放到数据链路层,就这样层层下放,层层包裹,最后形成的数据报通过通信线路传输,到达接收方结点协议栈,接收方再逆向地逐层把“包裹”拆开,然后把收到的数据提交给用户,如下图所示。