首页  ·  知识 ·  基础设施
网络基本概念
佚名  本站原创  数据中心  编辑:dezai  图片来源:网络
本章介绍了一些基本概念,这些概念对理解包含网桥和路由器的计算机网络的特定领域是必需的。O S I的网络结构7层参考模型是网络概念的基础,本章介绍的内容
本章介绍了一些基本概念,这些概念对理解包含网桥和路由器的计算机网络的特定领域是
必需的。O S I的网络结构7层参考模型是网络概念的基础,本章介绍的内容覆盖了其中的第二层和第三层。本章还讨论了网络设计中的不同要素,例如网络的覆盖范围、可扩展性、健壮性和自动配置性等。此外,本章还阐述了提供双方可靠通信的典型技术,因为路由器所用的这种技术可以和其他层所用的技术相互影响。
1.1 网络分层模型
不把一个大的任务划分成几个小的子任务而想试图去理解、设计和建立一个网络,将是一
件很困难的事情,一般需要把网络分层以便更好地理解它。层的思想是:每一层都将利用它的下一层的服务来向它的上一层提供服务。每一层都通过协议和其他节点的同一层进行通信。这种通信通过与下一层之间的直接通信来完成。第n层与第n-1层之间的通信称为接口。
O S I (开放系统互联)的分层模型定义了7层,如图1 - 1所示。至于为什么分7层以及各层的功能如何划分其实并不神秘。这个模型在相应协议出现以前就已经设计好了,然后为此成立了一个专门的委员会来设计每一层。实际应用中,很多层经常再被分成若干个子层。至于各层的功能有时并不容易区分,比如网桥和路由器就是这样一个很典型的例子,人们通常搞不清哪一个是哪一层的。但是关于层划分的语义上的争吵并没有什么实际价值,分层的概念应该被视为一种有用的讨论框架而非圣经。
I S O定义的层模型:
1) 物理层:物理层通过链路来传送比特信息。它主要处理以下问题:接插件大小和形状的
选择,每一针的作用,数据比特的电信号变换和比特级的同步。通常一个网络内可以有
好几种不同的物理层类型,甚至一个节点也可能有多种不同的物理层类型,这是因为不
同的技术要求各自的物理层。
2) 数据链路层:数据链路层(有时也称为链路层)通过物理链路来传输成块的信息。它主
要负责处理以下任务:数据出错校验、协调共享媒体的使用(如在一个L A N中)以及编
址(当多个系统都可以访问时,如在某个L A N中)。另外,不同的链路通常也有不同的数
据链路层实现;而且,同一个节点可以支持几种不同的数据链路层协议,节点所连的每
一类链路都有自己的协议。
3) 网络层:网络层使得网络中的任何一对系统间都可以相互通信。一个全互连的网络是指其
中的每一个节点都和其他节点直接相连,但是这种拓扑结构不可能用于有很多节点的情况。
比较典型的情况是,网络层必须找到一条通过一系列相连节点的路径,且路径上的每一个
节点必须向适当的方向转发数据包。网络层处理的主要任务是:路由计算、数据包的分段
和重组(当网络中的不同链路有不同的最大包大小限制时)和拥塞控制。
图1-1 OSI参考模型
4) 运输层:运输层在两个系统之间建立一条可靠的通信链路。它主要处理一些由网络层引
起的错误,比如包丢失和重复包等错误,以及对包进行重新排序、分段(这样运输层用户
就可以处理大的报文)和重装(这样可以避免网络层进行低效的分段和重装)。另外,这也
有助于运输层在网络发生拥塞时可以相应降低发送数据的速率。
5) 会话层:I S O认为会话层对于因特网体系来说并没有太大作用。I S O会话层提供的服务超
出了运输层提供的简单全双工可靠通信流,比如对话控制(实现系统间的特殊通信模式)
和链接(捆绑一组数据包,使得它们要么都发送,要么都不发送)。不管这一层是什么,
2 网络互连(第2版)网桥·路由器·交换机和互连协议
它都跟下层的网络设备如网桥以及路由器等无关。
6) 表示层:这一层的设计目的是为了对数据的表示取得一致,这样人们就可以定义自己的
数据结构,而不必担心比特/字节顺序或者浮点数该如何表示之类的问题了。I S O在
ASN.1(Abstract Syntax Notation 1)中制定了标准。尽管我不是很喜欢A S N . 1,因为它太复
杂而且效率太低(在空间和处理方面),但是很多IETE(Internet Engineering Task Force)的
标准都使用了它。
7) 应用层:桥接和路由之所以吸引人,实际是因为人们需要利用这些功能的相应应用。应用
包括文件传输、虚拟终端及We b浏览等。在一个节点上通常有多个应用程序同时运行。
本书是和数据链路层有关的,因为网桥在该层操作,且该层提供的服务与路由器相关。路
由器在网络层操作,因而本书和网络层也是相关的。另外,本书与运输层也有一定的关系,一
是因为它使用了网络层提供的服务,二是因为网络层做的一些决定(比如说是否允许数据在对
等的几条链路上同时传输等)会影响到运输层。在运输层上面的那些层就跟网桥以及路由器基
本无关了。
通常,第n层从第n+ 1层得到一大块包含有一些必要的附加信息(如目的地址等)的数据后,
第n层把这些数据传输给目的节点的第n层处理,目的节点的第n层再把这些数据送给该节点的第
n+ 1层。第n层经常需要在数据包上附加一些信息,比如说,目的节点地址(它将被其他的第n层
实体解释)。为了得到目的节点的信息,第n层将传递一个数据块给第n-1层,里面包括从第n+ 1
层上来的数据以及第n层上附加的一些控制信息。另外,第n层还可能在这个数据块中加入一些
其他的信息,比如说第n层与第n-1层之间的接口信息。
让我们来看看分层工作的例子。假设物理层允许比特流从一台机器传送到另一台机器。数
据链路层在该串比特流上做上标记,用以表明数据包的开始和结束位置。此外,它还附加上校
验和信息,使得接收的机器可以检测线路上是否有噪声而导致数据错误。
目前人们已经使用了好几种有意义的技术来确保那些表明数据包开始和结束的标志的比特
串不会出现在数据包中。一种是比特填充技术,标志为六个连续的1。为了确保6个连续的1不会
出现在数据包中,传输方在每5个连续的1后面插入一个附加的0。接收方在接收比特流时,如果
发现连续的5个1后面是0,则这个0必须被删除或忽略;如果在5个连续的1后面还是1,这就标志
着数据包的开始或者结束。
网络层通过与其他相连机器的网络层之间的合作,可以计算出一条路由,从而使得信息能
经过多个跳到达目的节点。
当网络层从运输层接到一个待传输的数据包时,它给这个数据包加上一个“信封”,一般是
在原数据包的前面(称为报头)(有可能同时在后面(称为报尾))附加上信息。这个“信封”
包括一些诸如源地址、目的地址等的信息。网络层将选定一条比较好的路径来发送数据包,然
后把连同网络层信封在内的数据包传递给数据链路层,后者将负责把数据发送出去。
当数据包到达中间节点时,由数据链路层进行处理。首先把数据链路层的附加信息除去
(把“信封”去掉),然后把它传递给网络层,这时的数据包看起来就跟前一个网络层传递给数
据链路层时的一样,即包括运输层下传的所有信息加上网络层信封。接收端的网络层查看这个
数据包的网络层附加信息(“网络层信封”),确定这个数据包的去向,必要的时候,修改这些附
第1章网络基本概念3
下载
加信息(比如增加跳数,以表明数据包已经过的节点数),然后再把修改过的数据包交给负责发
送链路的数据链路层处理(见图1 - 2)。
在前面的叙述中,像数据包这样的词比较容易使人混淆。I S O发明的术语让一切都变得简单
明确。每一层通过协议数据单元( P D U)和它的对等层进行通信。为了更准确地表示出当前讨
论的是哪一层,通常在该层的P D U前面增加一个单字母的前缀,如数据链路层通过传送L P D U
和对等的数据链路层进行通信。网络层则通过N P D U和其他网络层进行通信。类似地,运输层通
过T P D U和其他运输层进行通信。
图1-2 低层封装
当第n+ 1层发送消息给第n层时,这个消息称为S D U(服务数据单元)。和P D U一样,在S D U
前面,我们也用一个字母来表示它属于哪一层。当一个运输层想传输一个T P D U给另外一个运输
层时,它需要先给网络层一个N S D U。网络层接收了这个N S D U后,给它加上一个“信封”,然
后再通过数据链路层把这个N P D U发送出去(参见图1 - 3 )。
作为一条规则,本书不采用I S O的术语,因为它过于冗长且难以迅速理解(除非你已经参加
过三次以上的标准会议)。但是,在需要的时候,我们还是偶尔会采用它的术语来进行说明。
4 网络互连(第2版)网桥·路由器·交换机和互连协议
1.2 服务模型
一般说来,第n-1层提供给第n层的服务是通过数据传送来实现的。第n层提供数据( S D U )
以及一些附加信息(如目的地址)给第n-1层。第n层也能通过第n-1层给它的一个通告信息,从
对等的第n层接收数据。
第n-1层既可提供无连接服务,也可以提供面向连接服务。在无连接服务的情况下,它可以
接收第n层发给它的数据包,也可以发送数据包给第n层。
在面向连接的情况下,数据传输之前首先要建立连接。通信包括以下三个步骤:
1) 连接建立。
2) 数据传输(发送或接收数据)。
3) 连接释放。
图1-3 PDU和SDU
第1章网络基本概念5
相应地,对于上面的每一步,都有两个活动:一是第n层初始化该活动;二是第n-1层通知
第n层它的对等层已经初始化好该活动了。
对于连接建立,可以是第n层请求与某个目的地址建立连接,或者是第n-1层通知第n层有某
个节点希望与它建立连接。
对于连接释放,第n层请求释放某个连接,或者第n- 1层通知第n层有某个节点希望释放它们
之间的连接。
不同的接口设计可能还会提供其他功能,但前面所述的是最基本的。
不同服务的可靠程度也不同。纯数据报服务(也称为b e s t - e ff o r t)接收数据,但不对发送做
任何保证。数据可能丢失,也可能重复,乱序,还可能被损坏。而可靠服务将保证(或宣称它
将保证)数据按正确顺序发送,不会被破坏(比特流不被破坏),也不会出现重复数据包或者数
据包被丢失的情况。建立可靠的面向连接的网络(比如X . 2 5 )和数据报(比如AT M)是可能的。无
连接的网络层只提供数据报服务,因为根据定义它无法知道发送的是什么。I P、I P X、D E C n e t、
C L N P和Apple talk都是无连接网络层的例子。图1 - 4列举了几种不同类型的网络层。
图1-4 网络层类型举例
直观地讲,提供可靠服务应是需要的,但这种可靠服务是要付出代价的。它通常使得第n-1
层花费增多、效率降低。虽然有的时候,在多层上都提供可靠服务是有理由的,但绝对不需要
在所有层上都提供可靠服务。
我们将在第6章讨论面向连接与无连接服务之间,以及数据报与可靠服务之间的折衷。在
I S O和I E E E制订的标准里,提倡面向连接可靠服务的人和提倡无连接数据报服务的人,一直都无
法说服对方,所以在I S O和I E E E的协议中,这两种服务类型都可能提供。这就是为什么在第2章
将讨论的L A N中,要提供两种风格的、运行在L A N上的数据链路层,这种服务称为L L C (逻辑链
路控制)。L L C类型1是无连接的数据报服务, L L C类型2提供的是可靠的面向连接的服务。I S O在
这之上定义了两种网络层服务,其一是C O N S(面向连接的网络服务),其二是C L N S(无连接的
网络服务)。
正因为人们没有就选择哪种服务类型达成一致, I S O定义了5类运输层,从T P 0到T P 4。T P 0
假定网络层负责完成几乎所有的事情,而T P 4认为网络层只提供简单的数据报服务。
在T C P / I P协议中,网络层( I P )是无连接的。有两种运输层,一种是T C P(传输控制协议)提
供可靠的面向连接的服务;另一种是U D P(用户数据报协议)提供数据报服务。
AT M提供面向连接的不可靠服务,这时可以认为它提供的是网络层的服务。但是如果有其
他的网络层服务,比如基于AT M的I P,则AT M被当作是I P的数据链路层。正如前面提到过的,
不必太严格地区分层的界限。
第6章中有更详细的有关服务模型的讨论,包括性能保证的问题。
6 网络互连(第2版)网桥·路由器·交换机和互连协议
1.3 网络的重要特性
不同的网络设计有可能看起来提供了相似的功能,但是,它们在细节上却可能不同。在评
估一个网络体系的时候,必须考虑下面的特性:
1) 范围:一个网络体系要尽可能地解决一切常见的问题。它要设计成可以全面支持应用程
序和全面支持下层的各项技术。如果网络是为特定的一个应用程序而设计或是建立在一
种特殊的技术之上,它也许会在那种条件下表现得更加出色。但是,想这样针对每一个
特定的要求设计一种单一的网络是不太可能的。除非一个全面解决方案并不能满足你的
需要,否则最好还是设计一个可以对付大范围的应用程序和下层技术的网络。
2) 可扩展性:一个理想的网络设计不仅要能够在非常大的网络上运作得好,而且要在小网
络上也很高效。在过去,一个拥有上千个节点的网络就可以被认为是很“大”了。而在
现在的标准化设计中,我们应考虑体系结构是否适合上百万个乃至上亿个节点。当然在
理想的情况下,这个设计运用在一个非常小的网络里(譬如只有2 0个节点),效率不会降
低,但不可能只要求实现这样的目标。在这种情况下,一个针对少量节点设计的网络可
能会非常高效,譬如它可以使用更少的地址空间。但是,我们更希望一个折衷的完整解
决方案,只要它能够在专门的网络上取得足够的效率。
3) 健壮性:健壮性的某些方面是显而易见的,绝大多数的网络设计也都考虑到这一点。例
如,即使节点或链路失效,网络也应该可以继续运行;大多数网络采用的路由算法都能
适应改变了的拓扑结构。但是,健壮性还有其他更多的、比较微妙的方面。
大多数的网络在一个理想的理论环境下都能正常工作,前提是:不出现未检测到的数据
错误;所有节点都正常运行所有算法;参数设置对所有节点都是兼容的;以及所有节点
都有足够的处理器能力及时完成必需的算法运算等。
但是,我们面对的实际环境不是乌托邦,难以察觉的数据错误伴随着未被检测到的传输
错误、节点内存中的错误及内部数据总线传送中的数据错误而时时发生。有缺陷的实现
会连到网络上。硬件故障有可能导致不可预料的后果。实现耗尽了内存或C P U,并引起
不可预料的行为,而不是立即停止操作或是执行与网络的持续有效的功能相兼容的操作。
人为因素(一个系统中最不可靠的部分)导致的错误配置等。
因此,仅仅有计算可选路由的健壮性是不够的。一个网络还必须有下面几种类型的健壮
性:
a. 安全壁垒:对于绝大多数网络来说,恶劣的性能可能导致大范围的瘫痪。但是有一些
经过精心设计的网络,能够保证错误不会扩散到一个安全的范围(安全壁垒)之外,
因而瘫痪只会限制在网络的一部分,而不会影响整个网络。
举例来说, L A N上的“广播风暴”对于T C P / I P网络层协议来说,始终是让人头痛的事。
“广播风暴”是指触发严重网络拥塞的事件,它通常是由于应用中的小错误( b u g)、有
歧义的协议规范以及不正确的配置而引起的,严重的“广播风暴”可以使L A N失效。
当两个L A N通过桥连接到一起时,桥就合并了两个L A N,任意一个L A N中的“广播风
制在它发生的那个L A N中。因此,路由器就起到了使“广播风暴”不能扩散的安全壁
垒的作用。
另一种安全壁垒可以通过设计一种层次路由算法,将网络划分成区域( a r e a)或域
(d o m a i n)。这种路由算法可以被设计成即使一个分区中发生瘫痪,也不会扩散到其他
部分。
b. 自稳定性:这个概念是指,即使发生了因为硬件故障或者未察觉的数据错误而引起的
任何数据库崩溃,经过一定的时间后,只要发生故障的硬件被从网络上断开或被修复,
或一段时间内没有更多的数据错误出现,网络就可以在无人干预的情况下恢复正常运
作。如果缺少这种健壮性,一个错误就可能使整个网络一直不能运作,直至所有的节
点都被同时关掉然后重新启动。在第1 2章讨论路由算法时,我们将可以发现A R PA N E T
中实现的路由算法不具有自稳定性。
这种健壮性不能保证网络在连接有故障设备的情况下能够正常运作,但是它使得在诊
断出问题后,能相对容易地修复网络,只需要拆除出错的设备。许多设备陷入了“粘
着状态”,通常重新上电自检就可以立即修复。但是网络并没有开/关按钮,也就不容易
重新上电自检了。网络的健壮性(从它是分布式的,即使其中一部分瘫痪了仍可以保
持可运行的意义上说)就是指如果系统不是自稳定的,则它必须被关闭以消除错误的
任何残余。
如果一个网络不是自稳定的,那么蓄意破坏的人可以发一些错误的包,网络就会永远
瘫痪或者直至由复杂而昂贵的人工干预来修复它。而如果一个网络是自稳定的,那么
蓄意破坏的人,只能一直不断地发送错误的包,以使网络一直瘫痪。这比前面的趁无
人监管时偷偷连上网,发一些坏的包,然后悄悄溜走要冒更多的风险。
此外,如果网络是自稳定的,修复是相当容易的。当找到罪魁祸首后,只要将这个设
备从网络上断开,就可以使网络重新回复到可运行状态了。
c. 错误自检:虽然现今的任何一个网络都不能在有活跃的错误节点( B y z a n t i n e错误,下
面会讨论到)的情况下正常运行,但如果网络能够自我诊断并标志出出错的设备也是
很有帮助的。所有的网络都有一些发现错误的能力,但都不能完美地做到这一点,而
且不同网络能发现的错误的层次也不尽相同。
d. B y z a n t i n e健壮性:术语“ B y z a n t i n e错误”是从计算机科学中的一个著名问题
“B y z a n t i n e一般问题”中得来的。B y z a n t i n e错误是指一个出错节点不是不能运行,而
是错误运行。这样的错误通常是因为有缺陷的实现、硬件错误或者主动破坏而产生的。
具有B y z a n t i n e健壮性的网络能够在即使部分节点存在B y z a n t i n e错误的情况下仍然正确
运行。虽然现今的网络没有这个特性,但是这样的网络是可能的(详见第1 6章)。
4) 自动配置:有些网络设计方案需要一些非常聪明的管理员进行很多复杂的管理工作和经
常性地修改参数才能正常工作。这样的网络方案使那些懂得管理它们的人勿需担心他们
手中的饭碗,但是这种网络远不能满足未来的需要。网络将会变得非常大,它们被分成
由不同组织管理的各个部分,人们将更加依赖那些要靠少数专家来保证运行的网络。
未来的网络必须能够最大可能地实现自我运作。理想情况下,普通用户可以从当地的零
8 网络互连(第2版)网桥·路由器·交换机和互连协议
下载
售商店购买相应设备,把它们插入网络,就得到想要的运行网络。他们不需理会复杂的
参数配置,不需要向负责地址分配的“头头”申请得到一个地址(否则,如果“头头”
渡假去了,或者压根就辞职不干了,或者写有分配到的地址的信封丢了,可就麻烦了)。
用户们不用为了把他们的节点信息加入到数据库中而去找另外一些节点的管理人员。
5) 绞合性:网络应该有自己合理的默认值,在理想情况下,应该能够自动配置。但同时它
们应该有一些定时器和其他的参数,使得那些喜欢研究的网络管理员能有机会为某些特
定情况优化网络性能(理想情况下,参数的任何设定都可以产生合理的(如果不是最优
的)性能,这样即使十分喜欢冒险的网络管理员也不会引起太大的损害)。
6) 决定性:根据决定性的特点,相同的条件将产生相同的结果。例如,在一个决定性网络
的设计中,相同的物理拓扑结构就会有相同的路由。相反,在一个非决定性网络的设计
中,网络中节点的启用顺序不同,路由就可能会有差别。并不是所有的人都认为决定性
是有价值的,因为在某些情形下如果最高优先权的元素一直在失败和重新启动,就相当
于崩溃。但决定性的支持者们认为,通过保证可再现的条件,决定性使网络的分析更加
容易。
7) 迁移:一个网络的设计不会永远地保持下去。设计网络协议,使新的特性能逐个加入到
节点中而不干扰当前的操作,就显得很重要。能够修改的设计也同样重要,例如地址的
改变,可以按逐个节点修改的方式进行而不会破坏网络操作。
本文作者:佚名 来源:本站原创
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的