网络协议本质论
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 计算机网络简介

本章将详细介绍计算机网络的基本概念、发展历史、基本组成以及主要作用,给读者提供一个计算机网络的整体概念。并且,基于上述概念,会重点介绍业界认可和流行的ISO/OSI七层参考模型以及TCP/IP四层参考模型。

1.1 网络的基本概念

1.1.1 计算机网络的定义

计算机网络并没有统一严格的定义,各种资料上的说法也不完全一致。计算机网络从实质上来说就是利用通信线路和通信设备,用一定的连接方法,将分布在不同地点(相对来说,也可是同一地点)的具有独立功能的多台计算机系统(包括独立计算机和网络两种)相互连接起来,在网络软件的支持下进行数据通信,实现资源共享的系统。这个解释同样适用于计算机无线网络。计算机网络中各计算机和网络设备之间的交接点被称为“节点”,各计算机和网络设备之间就是通过这样的节点来彼此通信的。

IEEE高级会员安德鲁·坦尼鲍姆给出的定义是:计算机网络是一组自治计算机的互联的集合。“自治”是指每台计算机都有自主权,不受别人控制,互联则是指使用传输介质将计算机连接起来。这里采用一种比较通用的对计算机网络的定义:通过通信设备和线路将分布在不同地理位置的计算机、终端连接起来,以功能完善的功能软件实现互相通信及网络资源共享的系统。

随着IT业的发展,各种终端设备层出不穷,如打印机、网络电话、WAP(Wireless Application Protocol)手机、个人数字助理PDA(Personal Digital Assistant)等,因此,随着计算机技术和通信技术的发展,计算机网络的内涵也在不断变化。

1.1.2 计算机网络的发展历史

1.第一代计算机网络

早期的计算机系统是高度集中的,所有的设备都安装在单独的机房中,后来出现了批处理和分时系统,分时系统所连接的多个终端连接着主计算机。20世纪50年代中后期,许多系统都将地理上分散的多个终端通过通信线路连接到一台中心计算机上,出现了第一代计算机网络。它是以单个计算机为中心的远程联机系统。典型应用是美国航空公司与IBM在20世纪50年代初开始联合研究、60年代投入使用的飞机订票系统SABRE-I,它由一台计算机和全美范围内2000个终端组成(这里的终端是指由一台计算机外部设备组成的简单计算机,有点类似现在提到的“瘦客户机”,仅包括CRT控制器、键盘,没有CPU、内存和硬盘)。

随着远程终端的增多,为了提高通信线路的利用率并减轻主机负担,使用了多点通信线路、终端集中器、前端处理机FEP(Front-End Processor),这些技术对以后计算机网络的发展有着深刻影响,以线路连接终端和主机间通信建立过程,可以用主机对各终端论询或者由各终端连接成雏菊链的形式实现。考虑到远程通信的特殊情况,对传输的信息还要按照一定的通信规程进行特别的处理。

当时的计算机网络定义为“以传输信息为目的而连接起来,以实现远程信息处理或进一步达到资源共享的计算机系统”,这样的计算机系统具备了通信的雏形。

2.第二代计算机网络

20世纪60年代出现了大型主机,因而也提出了对大型主机资源远程共享的要求,以程控交换为特征的电信技术的发展为这种远程通信需求提供了实现手段。第二代网络以多个主机通过通信线路互联为用户提供服务,兴起于60年代后期。这种网络中主机之间不是直接用线路相连、而是由接口报文处理机(IMP)转接后互联的。IMP和它们之间互联的通信线路一起负责主机间的通信任务,构成通信子网。通信子网互联的主机负责运行程序,提供资源共享,组成了资源子网。

两个主机间通信是对传送信息内容的理解、信息的表示形式,以及各种情况下的应答信号必须遵守一个共同的约定,这就是“协议”。在ARPA网中,将协议按功能分成了若干层次。如何分层,以及各层中具体采用的协议总和,成为网络体系结构。

现代意义上的计算机网络是从1969年美国国防部高级研究计划局(DARPA)建成的ARPAnet实验网开始的,该网络当时只有4个节点,以电话线路为主干网络。两年后,建成15个节点,进入工作阶段,此后规模不断扩大,20世纪70年代后期,网络节点超过60个,主机100多台,地理范围跨越美洲大陆,连通了美国东部和西部的许多大学和研究机构,而且通过通信卫星与夏威夷和欧洲地区的计算机网络相互连通。其特点主要是:资源共享、分散控制、分组交换、采用专门的通信控制处理机、分层的网络协议,这些特点被认为是现代计算机网络的一般特征。

20世纪70年代后期是通信网大发展的时期,各发达国家的政府部门、研究机构和电报电话公司都在发展分组交换网络。这些网络都以实现计算机之间的远程数据传输和信息共享为主要目的,通信线路大多采用租用电话线路,少数铺设专用线路,这一时期网络成为第二代网络,以远程大规模互联为主要特点。

总的来说,第二代计算机网络开始以通信子网为中心,其概念是“以能够相互共享资源为目的,互连起来的具有独立功能的计算机的集合体”。

3.第三代计算机网络

随着计算机网络技术的成熟,网络应用越来越广泛,网络规模增大,通信变得复杂。各大计算机公司纷纷制定了自己的网络技术标准。IBM于1974年推出了系统网络结构(System Network Architecture),为用户提供能够互联的成套通信产品;1975年DEC公司宣布了自己的数字网络体系结构DNA(Digitat Network Architecture);1976年UNIVAC宣布了该公司的分布式通信体系结构(Distributed Communication Architecture),这些网络技术标准只是在一个公司范围内有效,遵从某种标准的、能够互联的网络通信产品,只是同一公司生产的同构型设备。网络通信市场这种各自为政的状况使得用户在投资方向上无所适从,也不利于多厂商之间的公平竞争。1977年ISO(Internatimat Organization for Standards,国际标准组织)组织的TC97信息处理系统技术委员会SC16分技术委员会开始着手制定开放系统互联参考模型(OSI/RM)。

OSI/RM标志着第三代计算机网络的诞生。此时的计算机网络在共同遵循OSI标准的基础上,形成了一个具有统一网络体系结构,并遵循国际标准的开放式和标准化的网络。OSI/RM参考模型把网络划分为七个层次,并规定,计算机之间只能在对应层之间进行通信,大大简化了网络通信原理,是公认的新一代计算机网络体系结构的基础,为普及局域网奠定了基础。

4.第四代计算机网络

20世纪80年代末,局域网技术发展日趋成熟,出现了光纤及高速网络技术,整个网络就像一个对用户透明的、大的计算机系统,发展以Internet为代表的互联网,这就是直到现在的第四代计算机网络时期。

此时计算机网络定义为“将多个具有独立工作能力的计算机系统通过通信设备和线路由功能完善的网络软件实现资源共享和数据通信的系统”。事实上,对于计算机网络也从未有过一个标准的定义。

1972年,Xerox公司发明了以太网,1980年2月IEEE组织了802委员会,开始制定局域网标准。1985年美国国家科学基金会(National Science Foundation)利用ARPAnet协议建立了用于科学研究和教育的骨干网络NSFnet,1990年NSFnet取代ARPAnet成为国家骨干网,并且走出了大学和研究机构进入社会,从此网上的电子邮件、文件下载和信息传输受到了人们的欢迎和广泛使用。1992年,Internet学会成立,该学会把Internet定义为“组织松散的,独立的国际合作互联网络”,“通过自主遵守计算协议和过程支持主机对主机的通信”,1993年,伊利诺斯大学国家超级计算中心开发成功网上浏览工具Mosaic(后来发展成为Netscape),同年时任美国总统的比尔·克林顿宣布正式实施国家信息基础设施(National Information Infrastructure)计划,从此在世界范围内开展了争夺信息化社会领导权和制高点的竞争。与此同时NSF(Nationat Saienre Foundation,美国国家科学基金会)不再向Internet注入资金,完全使其进入商业化运作。20世纪90年代后期,Internet以惊人速度在发展。

5.下一代计算机网络

NGN(Next Generation Network)被普遍认为是互联网、移动通信网络、固定电话通信网络的融合,IP网络和光网络的融合;是可以提供包括语音、数据和多媒体等各种业务的综合开放的网络构架;是业务驱动、业务与呼叫控制分离、呼叫与承载分离的网络;是基于统一协议的、基于分组的网络。

NGN在功能上分为四层,即接入和传输层、媒体层、控制层、网络服务层,涉及软交换、MPLS(Maeti-Protocot Lakel Swithing,多协议标签交换)、E-NUM(其基本服务就是通过E-NUM号码查询到对应的真实位置,然后进行电话拨打的动作,并依据使用者回应的不同而有不同的行为。)等技术。

1.1.3 计算机网络的基本组成

一般而论,计算机网络有三个主要组成部分:若干个主机,它们为用户提供服务;一个通信子网,它主要由节点交换机和连接这些节点的通信链路所组成;一系列的协议,这些协议是为在主机和主机之间或主机和子网中各节点之间的通信而采用的,它是通信双方事先约定好的和必须遵守的规则。

为了便于分析,按照数据通信和数据处理的功能,一般从逻辑上将网络分为通信子网和资源子网两个部分。图1-1给出了典型的计算机网络结构。

图1-1 典型的计算机网络结构示意图

1.通信子网

通信子网由通信控制处理机(CCP)、通信线路和其他通信设备组成,负责完成网络数据传输、转发等通信处理任务。

通信控制处理机在网络拓扑结构中被称为网络节点。它一方面作为与资源子网的主机、终端连接的接口,将主机和终端连入网内;另一方面它又作为通信子网中的分组存储转发节点,完成分组的接收、校验、存储、转发等功能,实现将源主机报文准确发送到目的主机的作用。

通信线路为通信控制处理机与通信控制处理机、通信控制处理机与主机之间提供通信信道。计算机网络采用了多种通信线路,如电话线、双绞线、同轴电缆、光缆、无线通信信道、微波与卫星通信信道等。

2.资源子网

资源子网由主机系统、终端、终端控制器、联网外设、各种软件资源与信息资源组成。资源子网实现全网的面向应用的数据处理和网络资源共享,它由各种硬件和软件组成。

(1)主机系统(Host)。它是指资源子网的主要组成单元,装有本地操作系统、网络操作系统、数据库、用户应用系统等软件。它通过高速通信线路与通信子网的通信控制处理机相连接。普通用户终端通过主机系统连入网内。早期的主机系统主要是指大型机、中型机与小型机。

(2)终端。它是指用户访问网络的界面。终端可以是简单的输入、输出终端,也可以是带有微处理器的智能终端。智能终端除具有输入、输出信息的功能外,本身还具有存储与处理信息的能力。终端可以通过主机系统连入网内,也可以通过终端设备控制器、报文分组组装与拆卸装置或通信控制处理机连入网内。

(3)网络操作系统。它是指建立在各主机操作系统之上的一个操作系统,用于实现不同主机之间的用户通信,以及全网硬件和软件资源的共享,并向用户提供统一的、方便的网络接口,便于用户使用网络。

(4)网络数据库。它是指建立在网络操作系统之上的一种数据库系统,可以集中驻留在一台主机上(集中式网络数据库系统),也可以分布在每台主机上(分布式网络数据库系统),它向网络用户提供存取、修改网络数据库的服务,以实现网络数据库的共享。

(5)应用系统。它是指建立在上述部件基础的具体应用,以实现用户的需求。如图1-2所示。该图表示了主机操作系统、网络操作系统、网络数据库系统和应用系统之间的层次关系。图中UNIX、Windows为主机操作系统,NOS为网络操作系统,NDBS为网络数据库系统,AS为应用系统。

图1-2 计算机网络应用系统示意图

1.1.4 计算机网络的主要作用

计算机网络的功能可归纳为以下几点。

(1)资源共享:资源共享是网络的基本功能之一。计算机网络的基本资源包括硬件资源、软件资源和数据资源。共享资源即共享网中的硬件、软件和数据资源。网络中可共享的硬件资源一般包括海量存储器、绘图仪、激光打印机等硬件设备。可以共享的软件包括各种应用软件、工具软件、系统开发所用的支撑软件、语言处理程序及其他控制程序等。同时,分散在不同地点的网内计算机用户可以共享网内的大型数据库,而不必自己再去重新设计和构建这些数据库。

(2)信息传输:信息传输也是计算机网络的基本功能之一。在网络中,通过通信线路可以实现主机与主机、主机与终端之间数据和程序的快速传输。

(3)集中处理:在网络上可以把已存在的许多联机系统有机地连接起来,进行实时地集中管理,使各部件协同工作、并行处理,提高系统的处理能力。

(4)负载均衡和分布式处理:广域网内包括很多子处理系统,当网内的某个子处理系统负载过重时,新的作业可以通过网内的节点和线路分送给较空闲的子系统处理。在进行这种分布式处理时,必要的处理程序和数据也同时送到空闲子系统。此外,在幅员辽阔的国家中,可以利用地理上的时差,均衡系统日夜负载不均的现象,以达到充分发挥网内各处理系统的负载能力。

(5)提供综合信息服务:计算机网络提供多媒体信息服务,如图像、语音、动画等信息的处理和传输。这是单个计算机系统难以实现的。

1.2 ISO/OSI参考模型

1.2.1 七层协议

OSI(Open System Interconnection)模型,即开放式通信系统互联参考模型(OSI/RM,Open Systems Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互联为网络的标准框架,简称开放系统互联(OSI)。OSI/RM协议是由ISO制定的,它有三个基本的功能:提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。OSI模型是由ISO于1984年提出的一种标准参考模型,是一种关于由不同供应商提供的不同设备和应用软件之间的网络通信的概念性框架结构。现在它被公认为是计算机通信和Internet网络通信的一种基本结构模型。当今使用的大多数网络通信协议都基于OSI模型结构。OSI模型将通信处理过程定义为七层,并将网络计算机之间的移动信息任务划分为七个更小的、更易管理的任务组。各个任务或任务组被分配到ISO参考模型的各层。各层相对独立(self-contained),从而使得分配到各层的任务能够独立实现。这样,当其中一层提供的某些功能更新时,它不会影响其他层。

ISO所定义的开放系统互联七层模型的定义和各层功能,是网络技术入门者必须知道的基础知识,也是分析、评判各种网络技术的依据。建立七层模型主要是为解决异种网络互联时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来;也使网络的不同功能模块分担起不同的职责。

网络发展中一个重要里程碑便是ISO对OSI七层网络模型的定义。它不但成为以前的和后续的各种网络技术评判、分析的依据,也成为网络协议设计和统一的参考模型。

建立七层模型的主要目的是为解决异种网络互联时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务;这样各层之间具有很强的独立性,互联网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。网络七层的划分也是为了使网络的不同功能模块(不同层次)分担起不同的职责,从而带来如下好处:

  • 减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错;
  • 在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可放在多种低层协议上运行;能有效地刺激网络技术革新,因为每次更新都可以在小范围内进行,无需对整个网络动大手术;便于研究和教学;
  • 网络分层体现了在许多工程设计中都具有的结构化思想,是一种合理的划分,网络模型分层的情况如图1-3所示。

图1-3 ISO/OSI网络模型的各层

1.2.2 OSI每层的功能

网络七层包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称做媒体层,是网络工程师所研究的对象;传输层、会话层、表示层和应用层则被称做主机层,是用户所面向和关心的内容。

那么,网络七层的具体定义和相应职责各是什么呢?图1-4是OSI七层模型的协议堆栈示意,它们由下到上分别如下。

第1层——物理层:物理层定义了通信网络之间物理链路的电气或机械特性,以及激活、维护和关闭这条链路的各项操作。物理层特征参数包括:电压、数据传输率、最大传输距离、物理连接媒体等。

第2层——数据链路层:实际的物理链路是不可靠的,总会出现错误,数据链路层的作用就是通过一定的手段(将数据分成帧,以数据帧为单位进行传输)将有差错的物理链路转化成对上层来说没有错误的数据链路。它的特征参数包括:物理地址、网络拓扑结构、错误警告机制、所传数据帧的排序和流控等。其中物理地址是相对网络层地址而言的,它代表了数据链路层的节点标识技术;“拓扑”是网络中经常会碰到的术语,标记着各个设备以何种方式互连起来,如:总线型——所有设备都连在一条总线上,星型——所有设备都通过一个中央节点互连;错误警告是向上层协议报告数据传递中错误的发生;数据帧排序可将所传数据重新排列;流控则用于调整数据传输速率,使接收端不至于过载。

第3层——网络层:网络层将数据分成一定长度的分组,并在分组头中标识源和目的节点的逻辑地址,这些地址就像街区、门牌号一样,成为每个节点的标识;网络层的核心功能便是根据这些地址来获得从源到目的节点的路径,当有多条路径存在的情况下,还要负责进行路由选择。

第4层——传输层:提供对上层透明(不依赖于具体网络)的可靠的数据传输。如果说网络层关心的是“点到点”的逐点转递,那么可以说传输层关注的是“端到端”(源端到目的端)的最终效果。它的功能主要包括:流控、多路技术、虚电路管理和纠错及恢复等。其中多路技术使多个不同应用的数据可以通过单一的物理链路共同实现传递;虚电路是数据传递的逻辑通道,在传输层建立、维护和终止;纠错功能则可以检测错误的发生,并采取措施(如重传)解决问题。

第5层——会话层:在网络实体之间建立、管理和终止通信应用服务请求和响应等会话。

第6层——表示层:定义了一系列代码和代码转换功能以保证源端数据在目的端同样能被识别,比如大家所熟悉的文本数据的ASCII码、表示图像的GIF或表示动画的MPEG等。

第7层——应用层:应用层是面向用户的最高层、通过软件应用实现网络与用户的直接对话,如:找到通信对方、识别可用资源和同步操作等。

网络七层的底三层(物理层、数据链路层和网络层)通常被称做媒体层,它们不为用户所见,默默地对网络起到支撑作用,是网络工程师所研究的对象;网络7层的上四层(传输层、会话层、表示层和应用层)则被称做主机层,是用户所面向和关心的内容,这些程序常常将各层的功能综合在一起,在用户面前形成一个整体。大家所熟悉的网上应用WWW、FTP、TELNET等,都是这多层功能的综合。

在数据的实际传输中,发送方将数据送到自己的应用层,加上该层的控制信息后传给表示层;表示层如法炮制,再将数据加上自己的标识传给会话层;依此类推,每一层都在收到的数据上加上本层的控制信息并传给下一层;最后到达物理层时,数据通过实际的物理媒体传到接收方。接收端则执行与发送端相反的操作,由下往上,将逐层标识去掉,重新还原成最初的数据。由此可见,数据通信双方在对等层必须采用相同的协议,定义同一种数据标识格式,这样才可能保证数据的正确传输而不至于走形。

图1-4 两台主机进行通信时OSI七层模型的协议堆栈示意

1.3 TCP/IP参考模型

1.3.1 TCP/IP模型概述

TCP/IP是一组用于实现网络互联的通信协议。Internet网络体系结构以TCP/IP为核心。简单地说,就是由底层的IP协议和TCP协议组成的。TCP/IP协议的开发工作始于20世纪70年代,是用于互联网的第一套协议。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络接口层、网际互联层、传输层、和应用层。

  • 网络接口层:网络接口层与OSI参考模型中的物理层和数据链路层相对应。事实上,TCP/IP本身并未定义该层的协议,而由参与互联的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接口层进行连接。
  • 网际互联层:网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。该层有四个主要协议:网际协议(IP)、地址解析协议(ARP)、反向地址解析协议(RARP)和互联网控制报文协议(ICMP)。
  • 传输层:传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP协议提供的是一种可靠的、面向连接的数据传输服务;而UDP协议提供的是不可靠的、无连接的数据传输服务。
  • 应用层:应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等。

1.3.2 TCP/IP的基本工作原理

在互联网上源主机的协议层与目的主机的同层协议通过下层提供的服务实现对话。在源和目的主机的同层实体称为对等实体(Peer Entities)或叫对等进程,它们之间的对话实际上是在源主机上从上到下,然后穿越网络到达目的主机后,再从下到上到达相应层。

下面以使用TCP协议传送文件(如FTP应用程序)为例说明TCP/IP的工作原理如下:

(1)在源主机上应用层将一串字节流传给传输层;

(2)传输层将字节流分成TCP段,加上TCP包头交给互联网络(IP)层;

(3)IP层生成一个包,将TCP段放入其数据域,并加上源和目的主机的IPIP包交给数据链路层;

(4)数据链路层在其帧的数据部分装IP包,发往目的主机或IP路由器;

(5)在目的主机,数据链路层将数据链路层帧头去掉,将IP包交给互联网层;

(6)IP层检查IP包头,如果包头中的校验和与计算出来的不一致,则丢弃该包;

(7)如果校验和一致,IP层去掉IP头,将TCP段交给TCP层,TCP层检查顺序号来判断是否为正确的TCP段;

(8)TCP层为TCP包头计算TCP头和数据。如果不对,TCP层丢弃这个包,若对,则向源主机发送确认;

(9)在目的主机,TCP层去掉TCP头,将字节流传给应用程序;

(10)于是,目的主机收到了源主机发来的字节流,就像直接从源主机发来的一样。

实际上每往下一层,便多加了一个报头,而这个头对上层来说是透明的,上层根本感觉不到下面报头的存在。假设物理网络是以太网,上述基于TCP/IP的文件传输(FTP)应用打包过程便是一个逐层封装的过程,当到达目的主机时,则从下而上去掉包头。

从用户角度看,TCP/IP协议提供一组应用程序,包括电子邮件、文件传送和远程登录。它们都是实用程序,用户使用它们可以方便地发送邮件,在主机间传送文件和以终端方式登录远程主机;从程序员的角度看,TCP/IP提供两种主要服务:无连接报文分组递送服务和面向连接的可靠数据流传送服务,这些服务都由TCP/IP驱动程序提供,程序员可用它们来开发适合自己应用环境的应用程序;从设计角度看,TCP/IP主要涉及寻址、路由选择和协议的具体实现。

1.3.3 TCP/IP与OSI的比较

OSI参考模型在协议发明以前产生,这意味着该模型没有偏向于任何特定的协议,因此非常通用。不足的是,不知道该把哪些功能放在哪一层最好。

TCP/IP却正好相反。首先出现的是协议,不会出现协议不匹配模型的情况。唯一的问题是它对于描述其他的非TCP/IP网络并不特别有用。TCP/IP参考模型与OSI参考模型的对应关系如图1-5所示。

图1-5 TCP/IP参考模型与OSI参考模型比较

另一个差别是面向连接和无连接的通信。OSI模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信。然而,TCP/IP模型在网络层仅有一种通信模式(无连接),但在传输层支持两种模式,给了用户选择的机会。这种选择对简单的请求-应答协议是非常重要的。