第1章 概述
1.1 网络的体系结构
1.1.1 概述
计算机网络是由多种计算机和各类终端通过通信线路连接起来的复杂系统。在这个系统中,计算机型号不一、终端类型各异,加之线路类型、连接方式、同步方式、通信方式不同,给网络中各节点间的通信带来许多不便。在不同计算机系统之间,真正以协同方式进行通信是十分复杂的,为了设计这样复杂的计算机网络,早在最初设计ARPANET时即提出了分层的方法。用分层来实现网络的结构化设计,每层设计相应的协议,实现对应的功能。这样的“分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题总是比较易于研究和处理的。
计算机网络各层及其协议的集合,称为网络的体系结构。划分不同的层次,或层次中实现不同的功能,也就意味着不同的体系结构。
采用这种分层结构可以带来很多好处:
(1)各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道层间接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样,整个问题的复杂程度就下降了。
(2)灵活性好。当任何一层发生变化时(例如技术的变化),只要层间接口关系保持不变,则这层以上或以下各层均不受影响。
(3)结构上可分割开。各层都可以采用最合适的技术来实现。
(4)易于实现和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得容易,因为整个系统已被分解为若干个相对独立的子系统。
(5)能促进标准化工作,因为每一层的功能及其所提供的服务都已有了精确的说明。
1.1.2 协议
网络协议简称协议,是为计算机网络中的数据交换建立的规则、标准或约定的集合。为了完成各层所规定的功能,每一层都要设计若干协议。协议是水平的,其所涉及的实体是通信双方的对等实体,双方共同遵守协议,在协议的约定下进行通信,完成协议约定的任务。相反,在自己的计算机上进行一个不需要和网络上其他主机进行通信的操作,尽管也有各种规定,但这些规定不能称为网络协议。
网络协议由以下三个要素组成。
(1)语法:即数据与控制信息的结构或格式。
(2)语义:即需要发出何种控制信息,完成何种动作和做出何种响应。
(3)同步:即事件实现顺序的详细说明。
对协议的描述通常有两种形式,一种是用便于阅读和理解的文字来描述,另一种是用程序代码来描述,但不管用哪种形式,都需要对协议做出精确的解释。
1.1.3 五层协议的体系结构
为了促进计算机网络的发展,国际标准化组织ISO于1977年成立了一个委员会,提出了不基于具体机型、操作系统或公司的网络体系结构,即OSI参考模型(OSI/RM),其全称为开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)。
OSI参考模型是一个七层的体系结构,它们由低到高分别是物理层(Physical Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、运输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)和应用层(Application Layer)。第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。
OSI参考模型是网络技术的基础,尽管概念清楚,理论也较完整,但由于太复杂等种种原因,并没有得到市场的认可。真正占领市场并得到广泛应用的是 TCP/IP 体系结构,这是一种四层的结构,上面三层依次为应用层、运输层、网际层,最下面的网络接口层并没有具体的内容,虽然这在当时的环境下非常快速地适应了市场的需求,将一些异构的网络都包容了进来,但缺少了对物理层和数据链路层内容的约定。谢希仁教授所编著的《计算机网络》按照五层体系结构来阐述计算机网络的体系结构,更加清晰、简洁。三种体系结构的层次划分及对应关系如图1-1所示。
图1-1 三种体系结构对照图
下面以五层体系结构为例对计算机网络各层所要实现的功能做简要解释。
1.物理层
物理层传输数据的单位是比特,其主要关心的是在连接各种计算机的传输媒体上如何传输比特流。为了达到这个目的,物理层为建立、维护和拆除物理链路提供所需要的机械的、电气的、功能的和规程的特性。比如,用多大的电压代表“1”或“0”;当发送端发出比特“1”时,在接收端如何识别出这是比特“1”而不是比特“0”;规定连接电缆的材质、引线的数目及电缆接头的几何尺寸、锁紧装置等物理性内容。
需要注意的是,具体的连接媒介,如传输介质等,并非物理层的内容。
物理层常见设备有中继器、集线器和网线等。
2.数据链路层
数据链路层主要解决利用物理地址通信的问题,传输数据的单位是帧,帧的格式中包括的信息有:地址信息部分、控制信息部分、数据部分和校验信息部分等。为了完成这一任务,数据链路层需要解决以下三个基本问题。
1)封装成帧
发送方的数据链路层需要将上层传递下来的协议数据单元封装成帧,再将其传递给下面的物理层,而物理层则将其作为比特流传输出去。接收方的物理层收到比特流后,将其交给上面的数据链路层,而数据链路层会按照与发送方对等的协议将其划分为一个个的帧,再将数据部分交给上面的协议。
2)透明传输
透明传输用来解决帧里面的数据部分因含有与帧定界符相同的内容而被误认为是帧定界符的问题,因为这会导致一个帧被非正常地结束,产生无效帧。链路层协议会采用一些方法破坏掉其中与帧定界符相同的内容,这就是透明传输的含义,透明在这里的意思就是看不见。
3)差错检测
在物理层传输比特时,由于信号质量的问题,可能会导致比特在接收方出现误码现象。因此,数据链路层设计了差错检测的功能,以防止出现差错的帧继续在网络中占用资源,检测出差错的帧将被接收方丢弃。
数据链路层常见设备有网卡、网桥和交换机等。
3.网络层
网络层传送的数据单位是IP数据报,也称为IP分组或分组、包。
网络层最主要的功能就是路由选择功能。在计算机网络中进行通信的两台计算机之间可能要经过许多节点和链路,还可能要经过好几个路由器所连接的通信子网。网络层的任务就是选择路由,使发送站的运输层所传下来的报文能够按照目的IP地址找到目的站,并交付给目的站的运输层。
网络层常见设备有路由器、防火墙、多层交换机等。
4.运输层
网络层找到对方的IP接口,运输层则要进一步找到对方的应用进程。运输层通信的两端是指操作系统中的应用进程,因为真正的通信是操作系统中应用进程之间的通信。
运输层提供了两个主要的协议,即TCP(传输控制协议)和UDP(用户数据报协议),TCP用来提供面向连接的、可靠的服务,数据传输单位是报文段;而UDP 提供无连接的、尽最大努力的传输服务,其传输单位为用户数据报。两种协议为上面的应用层提供了不同的传输服务。
5.应用层
应用层是网络体系结构的最高层,是直接为应用进程提供服务的。常见应用层协议有虚拟终端协议(TELNET)、文件传输协议(FTP)、简单邮件传送协议(SMTP)、超文本传输协议(HTTP)和域名系统(DNS)等。许多应用程序调用了应用层协议的服务。当然,应用层为完成功能,也会向下面的运输层请求服务。