本文参考谢希仁《计算机网络(第6版)》,电子工业出版社出版。
转载请在开头附加本文链接及作者信息,并标记为转载。
博主主页
计算机网络的精确定义并未统一。较好的定义:计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
“网络”是一个统称,泛指把人或物互连在一起而形成的系统。
网络(network)由若干结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是计算机、集线器、交换机或路由器等。
网络和网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网),因此互联网是“网络的网络”(network ofnetworks)。
因特网(Internet)是世界上最大的互连网络(用户数以亿计,互连的网络数以百万计)。习惯上,大家把连接在因特网上的计算机都称为主机(host)。网络把许多计算机连接在一起,而因特网则把许多网络连接在一起。
注意:网络互连并不是把计算机仅仅简单地在物理上连接起来,因为这样做并不能达到计算机之间能够相互交换信息的目的。我们还必须在计算机上安装许多使计算机能够交换信息的软件才行。因此当我们谈到网络互连时,就隐含地表示在这些计算机上已经安装了适当的软件,因而在计算机之间可以通过网络交换信息。
internet(互联网或互连网)是一个通用名词,它泛指由多个计算机网络互连而成的网络。在这些网络之间的通信协议(即通信规则)可以是任意的。
Internet(因特网)则是一个专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用TCP/IP协议族作为通信的规则,且其前身是美国的ARPANET。
因特网服务提供者ISP (Internet Service Provider)就是一个进行商业活动的公司,因此ISP又常译为因特网服务提供商。例如,中国电信、中国联通和中国移动就是我国最有名的ISP。
ISP可以从因特网管理机构申请到很多IP地址(因特网上的主机都必须有IP地址才能上网),同时拥有通信线路(大的ISP自己建造通信线路,小的ISP则向电信公司租用通信线路)以及路由器等连网设备,因此任何机构和个人只要向某个ISP交纳规定的费用,就可从该ISP获取所需IP地址的使用权,并可通过该ISP接入到因特网。所谓“上网”就是指“(通过某个ISP获得的IP地址)接入到因特网”。IP地址的管理机构不会把一个单个的IP地址分配给单个用户(不“零售”IP地址),而是把一批IP地址有偿租赁给经审查合格的ISP(只“批发”IP地址)。由此可见,现在的因特网已不是某个单个组织所拥有而是全世界无数大大小小的ISP所共同拥有的,这就是因特网也称为“网络的网络”的原因。下图说明了用户通过ISP上网(有线接入或无线接入)。
下是具有三层ISP结构的因特网的概念示意图,但这种示意图并不表示各ISP的地理位置关系。图中给出了主机A经过许多不同层次的ISP与主机B通信的示意图。
因特网交换点IXP的主要作用就是允许两个网络直接相连并交换分组,而不需要再通过第三个网络来转发分组。例如,在上图中右方的两个地区ISP通过一个IXP连接起来了。这样,主机A和主机B交换分组时,就不必再经过最上层的主干ISP,而是直接在两个地区ISP之间用高速链路对等地交换分组。这样就使因特网上的数据流量分布更加合理,同时也减少了分组转发的迟延时间,降低了分组转发的费用。现在许多IXP在进行对等交换分组时,都互相不收费。但本地ISP或地区ISP通过IXP向高层的IXP转发分组时,则需要交纳一定的费用。IXP的结构非常复杂。典型的IXP由一个或多个网络交换机组成,许多ISP再连接到这些网络交换机的相关端口上。IXP常采用工作在数据链路层的网络交换机,这些网络交换机都用局域网互连起来。
因特网已经成为世界上规模最大和增长速率最快的计算机网络,没有人能够准确说出因特网究竟有多大。因特网的迅猛发展始于20世纪90年代,由欧洲原子核研究组织CERN开发的万维网WWW (World Wide Web)被广泛使用在因特网上,大大方便了广大非网络专业人员对网络的使用,成为因特网的这种指数级增长的主要驱动力。
因特网的拓扑结构虽然非常复杂,并且在地理上覆盖了全球,但从其工作方式上看,可以划分为以下的两大块:
处在因特网边缘的部分就是连接在因特网上的所有的主机,这些主机又称为端系统(endsystem)。端系统在功能上可能有很大的差别,小的端系统可以是一台普通个人电脑(包括笔记本电脑或平板电脑)和具有上网功能的手机,甚至是一个很小的网络摄像头(可监视当地的天气或交通情况,并在因特网上实时发布),而大的端系统则可以是一台非常复杂和昂贵的大型计算机。端系统的拥有者可以是个人,也可以是单位(如学校、企业、政府机关等),当然也可以是某个ISP(即ISP不仅仅是向端系统提供服务,它也可以拥有一些端系统)。边缘部分利用核心部分所提供的服务,使众多主机之间能够互相通信并交换或共享信息。
在网络边缘的端系统之间的通信方式通常可划分为两大类:客户-服务器方式(C/S方式)和对等方式(P2P方式)。
客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户-服务器方式所描述的是进程之间服务和被服务的关系。在下图中,主机A运行客户程序而主机B运行服务器程序。在这种情况下,A是客户而B是服务器。客户A向服务器B发出请求服务,而服务器B向客户A提供服务。这里最主要的特征就是:客户是服务请求方,服务器是服务提供方。
对等连接(peer-to-peer,简写为P2P)是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。这时,双方都可以下载对方已经存储在硬盘中的共享文档。因此这种工作方式也称为P2P文件共享。对等连接工作方式可支持大量对等用户(如上百万个)同时工作。
网络核心部分是因特网中最复杂的部分,因为网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘部分中的任何一台主机都能够向其他主机通信。在网络核心部分起特殊作用的是路由器(router),它是一种专用计算机(但不是主机)。路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
在电话问世后不久,人们就发现要让所有的电话机都两两相连接是不现实的。两部电话只需要用一对电线就能够互相连接起来。但若有5部电话要两两相连,则需要10对电线,见下图所示。显然,若N部电话要两两相连,就需要N(N - 1)/2对电线。当电话机的数量很大时,这种连接方法需要的电线数量就太大了(与电话机的数量的平方成正比)。于是人们认识到,要使得每一部电话能够很方便地和另一部电话进行通信,就应当使用电话交换机将这些电话连接起来,如下图所示。每一部电话都连接到交换机上,而交换机使用交换的方法,让电话用户彼此之间可以很方便地通信。一百多年来,电话交换机虽然经过多次更新换代,但交换的方式一直都是电路交换(circuit switching)。
当电话机的数量增多时,就要使用很多彼此连接起来的交换机来完成全网的交换任务。用这样的方法,就构成了覆盖全世界的电信网。从通信资源的分配角度来看,交换(switching)就是按照某种方式动态地分配传输线路的资源。在使用电路交换打电话之前,必须先拨号请求建立连接。当被叫用户听到交换机送来的拨号音并摘机后,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路。这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用。此后主叫和被叫双方就能互相通电话。通话完毕挂机后,交换机释放刚才使用的这条专用的物理通路(即把刚才占用的所有通信资源归还给电信网)。这种必须经过“建立连接(占用通信资源)→通话(一直占用通信资源)→释放连接(归还通信资源)”三个步骤的交换方式称为电路交换。如果用户在拨号呼叫时电信网的资源已不足以支持这次的呼叫,则主叫用户会听到忙音,表示电信网不接受用户的呼叫,用户必须挂机,等待一段时间后再重新拨号。
电路交换的一个重要特点就是在通话的全部时间内,通话的两个用户始终占用端到端的通信资源。
当使用电路交换来传送计算机数据时,其线路的传输效率往往很低。这是因为计算机数据是突发式地出现在传输线路上的,因此线路上真正用来传送数据的时间往往不到10%甚至低到1%。已被用户占用的通信线路资源在绝大部分时间里都是空闲的。例如,当用户阅读终端屏幕上的信息或用键盘输入和编辑一份文件时,或计算机正在进行处理而结果尚未返回时,宝贵的通信线路资源并未被利用而是白白被浪费了。
分组交换则采用存储转发技术。下图画的是把一个报文划分为几个分组的概念。通常我们把要发送的整块数据称为一个报文(message)。在发送报文之前,先把较长的报文划分成为一个个更小的等长数据段,例如,每个数据段为1024bit。在每一个数据段前面,加上一些必要的控制信息组成的首部(header)后,就构成了一个分组(packet)。分组又称为“包”,而分组的首部也可称为“包头”。分组是在因特网中传送的数据单元。分组中的“首部”是非常重要的,正是由于分组的首部包含了诸如目的地址和源地址等重要控制信息,每一个分组才能在因特网中独立地选择传输路径,并被正确地交付到分组传输的终点。
下图强调因特网的核心部分是由许多网络和把它们互连起来的路由器组成的,而主机处在因特网的边缘部分。在因特网核心部分的路由器之间一般都用高速链路相连接,而在网络边缘的主机接入到核心部分则通常以相对较低速率的链路相连接。
位于网络边缘的主机和位于网络核心部分的路由器都是计算机,但它们的作用却很不一样。主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。路由器则是用来转发分组的,即进行分组交换的。路由器收到一个分组,先暂时存储一下,检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步一步地(有时会经过几十个不同的路由器)以存储转发的方式,把分组交付最终的目的主机。各路由器之间必须经常交换彼此掌握的路由信息,以便创建和维持在路由器中的转发表,使得转发表能够在整个网络拓扑发生变化时及时更新。
因特网采取了专门的措施,保证了数据的传送具有非常高的可靠性。当网络中的某些结点或链路突然出故障时,在各路由器中运行的路由选择协议(protocol)能够自动找到其他路径转发分组。
优点 | 所采用的手段 |
---|---|
高速 | 在分组的传输过程中动态分配传输带宽,对通信链路是逐段占用。 |
灵活 | 为每一个分组独立地选择转发路由。 |
迅速 | 以分组作为传输单位,可以不先建立连接就能向其他主机发送分组。 |
可靠 | 保证可靠性的网络协议,分布式多路由的分组交换网,使网络有很好的生存性。 |
分组交换也带来一些新的问题。例如,分组在各路由器存储转发时需要排队,这就会造成一定的时延。因此,必须尽量设法减少这种时延。此外,由于分组交换不像电路交换那样通过建立连接来保证通信时所需的各种资源,因而无法确保通信时端到端所需的带宽。分组交换网带来的另一个问题是各分组必须携带的控制信息也造成了一定的开销(overhead)。整个分组交换网还需要专门的管理和控制机制。
从本质上讲,分组交换这种断续分配传输带宽的存储转发原理并非是完全新的概念。自古代就有的邮政通信,就其本质来说也属于存储转发方式。而在20世纪40年代,电报通信也采用了基于存储转发原理的报文交换(message switching) 。在报文交换中心,一份份电报被接收下来,并穿成纸带。操作员以每份报文为单位,撕下纸带,根据报文的目的站地址,拿到相应的发报机转发出去。这种报文交换的时延较长,从几分钟到几小时不等。现在报文交换已经很少有人使用了。分组交换虽然也采用存储转发原理,但由于使用了计算机进行处理,这就使分组的转发非常迅速。例如ARPANET建网初期的经验表明,在正常的网络负荷下,当时横跨美国东西海岸的端到端平均时延小于0.1秒。这样,分组交换虽然采用了某些古老的交换原理,但实际上已变成了一种崭新的交换技术。
若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。
接入网 AN (Access Network) ,又称为本地接入网或居民接入网。这是一类比较特殊的计算机网络。由于从用户家中接入到因特网可以使用的技术有许多种,因此就出现了可以使用多种接入网技术连接到因特网的情况。接入网本身既不属于因特网的核心部分,也不属于因特网的边缘部分。接入网是从某个端系统到另一个端系统的路径中,由这个端系统到第一个路由器(也称为边缘路由器)之间的一些物理链路所组成。从覆盖的范围看,很多接入网还是属于局域网。从作用上看,接入网只是起到让用户能够与因特网连接的“桥梁”作用。在因特网发展初期,用户多用电话线拨号接入因特网,速率很低(每秒几千比特到几十千比特),因此那时并没有使用接入网这个名词。直到最近,由于出现了多种宽带接入技术,宽带接入网才成为因特网领域中的一个热门课题。
计算机网络的性能一般是指它的几个重要的性能指标。但除了这些重要的性能指标外,还有一些非性能特征(nonperformance characteristics)也对计算机网络的性能有很大的影响。
比特(bit)是计算机中数据量的单位,也是信息论中使用的信息量的单位。英文单词bit来源于binary digit,意思是一个“二进制数字”,因此一个比特就是二进制数字中的一个1或0。网络技术中的速率指的是连接在计算机网络上的主机在数字信道上传送数据的速率,它也称为数据率(datarate)或比特率(bit rate)。速率是计算机网络中最重要的一个性能指标。速率的单位是b/s(比特每秒)(或bit/s,有时也写为bps,即bit per second)。当数据率较高时,就可以用kb/s(k = 103 =千)、Mb/s(M = 106 = 兆)、Gb/s(G = 109 = 吉)或Tb/s(T = 1012 = 太)。现在人们常用更简单的但很不严格的记法来描述网络的速率,如100M以太网,而省略了单位中的b/s,它的意思是速率为100Mb/s的以太网。顺便指出,上面所说的速率往往是指额定速率或标称速率。
“带宽”(bandwidth)有以下两种不同的意义:
在“带宽”的两种表述中,前者为频域称谓,而后者为时域称谓,其本质是相同的。也就是说,一条通信链路的“带宽”越宽,其所能传输的“最高数据率”也越高。
吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。显然,吞吐量受网络的带宽或网络的额定速率的限制。例如,对于一个100Mb/s的以太网,其额定速率是100Mb/s,那么这个数值也是该以太网吞吐量的绝对上限值。因此,对于100Mb/s的以太网,其典型的吞吐量可能只有70Mb/s。请注意,有时吞吐量还可用每秒传送的字节数或帧数来表示。
时延(delay或latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。时延是个很重要的性能指标,它有时也称为延迟或迟延。需要注意的是,网络中的时延是由以下几个不同的部分组成的:
(1)发送时延 发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。因此发送时延也叫做“传输时延”。发送时延的计算公式是:
发 送 时 延 = 发 送 帧 长 度 ( b ) 发 送 速 率 ( b / s ) 发送时延=\frac{发送帧长度(b)}{发送速率(b/s)} 发送时延=发送速率(b/s)发送帧长度(b)
由此可见,对于一定的网络,发送时延并非固定不变,而是与发送的帧长(单位是比特)成正比,与发送速率成反比。
(2)传播时延 传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间。传播时延的计算公式是:
传 播 时 延 = 信 道 长 度 ( m ) 电 磁 波 在 信 道 上 的 传 播 速 率 ( m / s ) 传播时延=\frac{信道长度(m)}{电磁波在信道上的传播速率(m/s)} 传播时延=电磁波在信道上的传播速率(m/s)信道长度(m)
电磁波在自由空间的传播速率是光速,即3.0×105km/s。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为2.3×105km/s,在光纤中的传播速率约为2.0×105km/s。例如,1000km长的光纤线路产生的传播时延大约为5ms。
(3)处理时延 主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等等,这就产生了处理时延。
(4)排队时延 分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。
数据在网络中经历的总时延就是以上四种时延之和:
总 时 延 = 发 送 时 延 + 传 播 时 延 + 处 理 时 延 + 排 队 时 延 总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延 总时延=发送时延+传播时延+处理时延+排队时延
下图画出了这几种时延所产生的地方
把传播时延和带宽相乘,就得到另一个很有用的度量:传播时延带宽积,又称以比特为单位的链路长度,即
时 延 带 宽 积 = 传 播 时 延 × 带 宽 时延带宽积 = 传播时延 \times 带宽 时延带宽积=传播时延×带宽
在计算机网络中,往返时间RTT (Round-Trip Time)也是一个重要的性能指标,它表示从发送方发送数据开始,到发送方收到来自接收方的确认(接收方收到数据后便立即发送确认),总共经历的时间。在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。
利用率有信道利用率和网络利用率两种。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络利用率则是全网络的信道利用率的加权平均值。信道利用率并非越高越好。这是因为,根据排队论的理论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。这和高速公路的情况有些相似。当高速公路上的车流量很大时,由于在公路上的某些地方会出现堵塞,因此行车所需的时间就会增长。网络也有类似的情况。当网络的通信量很少时,网络产生的时延并不大。但在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。如果令 D0表示网络空闲时的时延,D 表示网络当前的时延,那么在适当的假定条件下,可以用下面的简单公式来表示D和D0及网络利用率U之间的关系:
D = D 0 1 − U D = \frac{D_0}{1-U} D=1−UD0
网络的价格(包括设计和实现的费用)总是必须考虑的,因为网络的性能与其价格密切相关。一般说来,网络的速率越高,其价格也越高。
网络的质量取决于网络中所有构件的质量,以及这些构件是怎样组成网络的。网络的质量影响到很多方面,如网络的可靠性、网络管理的简易性,以及网络的一些性能。但网络的性能与网络的质量并不是一回事。例如,有些性能也还可以的网络,运行一段时间后就出现了故障,变得无法再继续工作,说明其质量不好。高质量的网络往往价格也较高。
网络的硬件和软件的设计既可以按照通用的国际标准,也可以遵循特定的专用网络标准。最好采用国际标准的设计,这样可以得到更好的互操作性,更易于升级换代和维修,也更容易得到技术上的支持。
可靠性与网络的质量和性能都有密切关系。速率更高的网络的可靠性不一定会更差。但速率更高的网络要可靠地运行,则往往更加困难,同时所需的费用也会较高。
在构造网络时就应当考虑到今后可能会需要扩展(即规模扩大)和升级(即性能和版本的提高)。网络的性能越高,其扩展费用往往也越高,难度也会相应增加。
如果没有良好的管理和维护,就很难达到和保持所设计的性能。
分层可以带来的好处:
分层时应注意使每一层的功能非常明确。若层数太少,就会使每一层的协议太复杂。但层数太多又会在描述和综合各层功能的系统工程任务时遇到较多的困难。通常各层所要完成的功能主要有以下一些(可以只包括一种,也可以包括多种):
分层当然也有一些缺点,例如,有些功能会在不同的层次中重复出现,因而产生了额外开销。
我们把计算机网络的各层及其协议的集合,称为网络的体系结构(architecture)。换种说法,计算机网络的体系结构就是这个计算机网络及其构件所应完成的功能的精确定义[GREE82]。这些功能究竟是用何种硬件或软件完成的,则是一个遵循这种体系结构的实现(implementation)的问题。总之,体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
应用层(application layer) :应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程(process)就是指主机中正在运行的程序。对于不同的网络应用需要有不同的应用层协议。在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议,等等。我们将应用层交互的数据单元称为报文(message)。
运输层(transport layer) :提供的是进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。运输层主要包括两种协议:
传输控制协议TCP (Transmission Control Protocol)——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)。
用户数据报协议 UDP (User Datagram Protocol)——提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
TCP 主要提供完整性服务,UDP 主要提供及时性服务。
网络层(network layer) :为主机间提供数据传输服务,而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。(负责选择最佳路径 规划IP地址)
数据链路层(data link layer) :不同的网络类型,发送数据的机制不同,数据链路层就是将数据包封装成能够在不同的网络传输的帧。能够进行差错检验,但不纠错,监测处错误丢掉该帧。
物理层(physical layer) :物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的主要任务描述为:确定与传输媒体的接口的一些特性,即:
在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。
TCP/IP的体系结构比较简单,它只有四层。相当于五层协议中数据链路层和物理层合并为网络接口层
现在的 TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。实际上现在的因特网使用的TCP/IP体系结构有时已经演变成为下图所示的那样。
还有一种表示方法,就是分层次画出具体的协议来表示TCP/IP协议族,它的特点是上下两头大而中间小:应用层和网络接口层都有多种协议,而中间的IP层很小,上层的各种协议都向下汇聚到一个IP协议中。这种很像沙漏计时器形状的TCP/IP协议族表明:TCP/IP协议可以为各式各样的应用提供服务(所谓的everything over IP),同时TCP/IP协议也允许IP协议在各式各样的网络构成的互联网上运行(所谓的IP overeverything)。正因为如此,因特网才会发展到今天的这种全球规模。从图中不难看出IP协议在因特网中的核心作用。