近十年来,随着计算机网络规模的不断扩大,大型互联网络(如Internet)的迅猛发展,路由技术在网络技术中已逐渐成为关键部分,路由器也随之成为最重要的网络设备。
用户的需求推动着路由技术的发展和路由器的普及,人们已经不满足于仅在本地网络上共享信息,而希望最大限度地利用全球各个地区、各种类型的网络资源。而在目前的情况下,任何一个有一定规模的计算机网络(如企业网、校园网、智能大厦等),无论采用的是快速以大网技术、FDDI技术,还是ATM技术,都离不开路由器,否则就无法正常运作和管理。
1 网络互连
把自己的网络同其它的网络互连起来,从网络中获取更多的信息和向网络发布自己的消息,是网络互连的最主要的动力。网络的互连有多种方式,其中使用最多的是网桥互连和路由器互连。
1.1 网桥互连的网络
网桥工作在OSI模型中的第二层,即链路层。完成数据帧(frame)的转发,主要目的是在连接的网络间提供透明的通信。网桥的转发是依据数据帧中的源地址和目的地址来判断一个帧是否应转发和转发到哪个端口。帧中的地址称为“MAC”地址或“硬件”地址,一般就是网卡所带的地址。
网桥的作用是把两个或多个网络互连起来,提供透明的通信。网络上的设备看不到网桥的存在,设备之间的通信就如同在一个网上一样方便。由于网桥是在数据帧上进行转发的,因此只能连接相同或相似的网络(相同或相似结构的数据帧),如以太网之间、以太网与令牌环(token ring)之间的互连,对于不同类型的网络(数据帧结构不同),如以太网与X.25之间,网桥就无能为力了。
网桥扩大了网络的规模,提高了网络的性能,给网络应用带来了方便,在以前的网络中,网桥的应用较为广泛。但网桥互连也带来了不少问题:一个是广播风暴,网桥不阻挡网络中广播消息,当网络的规模较大时(几个网桥,多个以太网段),有可能引起广播风暴(broadcasting storm),导致整个网络全被广播信息充满,直至完全瘫痪。第二个问题是,当与外部网络互连时,网桥会把内部和外部网络合二为一,成为一个网,双方都自动向对方完全开放自己的网络资源。这种互连方式在与外部网络互连时显然是难以接受的。问题的主要根源是网桥只是最大限度地把网络沟通,而不管传送的信息是什么。
1.2 路由器互连网络
路由器互连与网络的协议有关,我们讨论限于TCP/IP网络的情况。
路由器工作在OSI模型中的第三层,即网络层。路由器利用网络层定义的“逻辑”上的网络地址(即IP地址)来区别不同的网络,实现网络的互连和隔离,保持各个网络的独立性。路由器不转发广播消息,而把广播消息限制在各自的网络内部。发送到其他网络的数据茵先被送到路由器,再由路由器转发出去。
IP路由器只转发IP分组,把其余的部分挡在网内(包括广播),从而保持各个网络具有相对的独立性,这样可以组成具有许多网络(子网)互连的大型的网络。由于是在网络层的互连,路由器可方便地连接不同类型的网络,只要网络层运行的是IP协议,通过路由器就可互连起来。
网络中的设备用它们的网络地址(TCP/IP网络中为IP地址)互相通信。IP地址是与硬件地址无关的“逻辑”地址。路由器只根据IP地址来转发数据。IP地址的结构有两部分,一部分定义网络号,另一部分定义网络内的主机号。目前,在Internet网络中采用子网掩码来确定IP地址中网络地址和主机地址。子网掩码与IP地址一样也是32bit,并且两者是一一对应的,并规定,子网掩码中数字为“1”所对应的IP地址中的部分为网络号,为“0”所对应的则为主机号。网络号和主机号合起来,才构成一个完整的IP地址。同一个网络中的主机IP地址,其网络号必须是相同的,这个网络称为IP子网。
通信只能在具有相同网络号的IP地址之间进行,要与其它IP子网的主机进行通信,则必须经过同一网络上的某个路由器或网关(gateway)出去。不同网络号的IP地址不能直接通信,即使它们接在一起,也不能通信。
路由器有多个端口,用于连接多个IP子网。每个端口的IP地址的网络号要求与所连接的IP子网的网络号相同。不同的端口为不同的网络号,对应不同的IP子网,这样才能使各子网中的主机通过自己子网的IP地址把要求出去的IP分组送到路由器上。
2 路由原理
当IP子网中的一台主机发送IP分组给同一IP子网的另一台主机时,它将直接把IP分组送到网络上,对方就能收到。而要送给不同IP于网上的主机时,它要选择一个能到达目的子网上的路由器,把IP分组送给该路由器,由路由器负责把IP分组送到目的地。如果没有找到这样的路由器,主机就把IP分组送给一个称为“缺省网关(default gateway)”的路由器上。“缺省网关”是每台主机上的一个配置参数,它是接在同一个网络上的某个路由器端口的IP地址。
路由器转发IP分组时,只根据IP分组目的IP地址的网络号部分,选择合适的端口,把IP分组送出去。同主机一样,路由器也要判定端口所接的是否是目的子网,如果是,就直接把分组通过端口送到网络上,否则,也要选择下一个路由器来传送分组。路由器也有它的缺省网关,用来传送不知道往哪儿送的IP分组。这样,通过路由器把知道如何传送的IP分组正确转发出去,不知道的IP分组送给“缺省网关”路由器,这样一级级地传送,IP分组最终将送到目的地,送不到目的地的IP分组则被网络丢弃了。
目前TCP/IP网络,全部是通过路由器互连起来的,Internet就是成千上万个IP子网通过路由器互连起来的国际性网络。这种网络称为以路由器为基础的网络(router based network),形成了以路由器为节点的“网间网”。在“网间网”中,路由器不仅负责对IP分组的转发,还要负责与别的路由器进行联络,共同确定“网间网”的路由选择和维护路由表。
路由动作包括两项基本内容:寻径和转发。寻径即判定到达目的地的最佳路径,由路由选择算法来实现。由于涉及到不同的路由选择协议和路由选择算法,要相对复杂一些。为了判定最佳路径,路由选择算法必须启动并维护包含路由信息的路由表,其中路由信息依赖于所用的路由选择算法而不尽相同。路由选择算法将收集到的不同信息填入路由表中,根据路由表可将目的网络与下一站(nexthop)的关系告诉路由器。路由器间互通信息进行路由更新,更新维护路由表使之正确反映网络的拓扑变化,并由路由器根据量度来决定最佳路径。这就是路由选择协议(routing protocol),例如路由信息协议(RIP)、开放式最短路径优先协议(OSPF)和边界网关协议(BGP)等。
转发即沿寻径好的最佳路径传送信息分组。路由器首先在路由表中查找,判明是否知道如何将分组发送到下一个站点(路由器或主机),如果路由器不知道如何发送分组,通常将该分组丢弃;否则就根据路由表的相应表项将分组发送到下一个站点,如果目的网络直接与路由器相连,路由器就把分组直接送到相应的端口上。这就是路由转发协议(routed protocol)。
路由转发协议和路由选择协议是相互配合又相互独立的概念,前者使用后者维护的路由表,同时后者要利用前者提供的功能来发布路由协议数据分组。下文中提到的路由协议,除非特别说明,都是指路由选择协议,这也是普遍的习惯。
通信的每一层中都有自己独特的安全问题。数据链路层(第二协议层)的通信连接就安全而言,是较为薄弱的环节。网络安全的问题应该在多个协议层针对不同的弱点进行解决。在本篇文章中,我们将集中讨论与有线局域网相关的安全问题。无线局域网和广域网(WAN)的安全问题将在其它篇章中单独进行讨论。在第二协议层的通信中,交换机是关键的部件,它们也用于第三协议层的通信。对于相同的第三协议层的许多攻击和许多独特的网络攻击,它们和路由器都会很敏感,这些攻击包括:
内容寻址存储器(CAM)表格淹没:交换机中的 CAM 表格包含了诸如在指定交换机的物理端口所提供的 MAC 地址和相关的 VLAN 参数之类的信息。一个典型的网络侵入者会向该交换机提供大量的无效 MAC 源地址,直到 CAM 表格被添满。当这种情况发生的时候,交换机会将传输进来的信息向所有的端口发送,因为这时交换机不能够从 CAM 表格中查找出特定的 MAC 地址的端口号。CAM 表格淹没只会导致交换机在本地 VLAN 范围内到处发送信息,所以侵入者只能够看到自己所连接到的本地 VLAN 中的信息。
VLAN 中继:VLAN 中继是一种网络攻击,由一终端系统发出以位于不同 VLAN 上的系统为目标地址的数据包,而该系统不可以采用常规的方法被连接。该信息被附加上不同于该终端系统所属网络 VLAN ID 的标签。或者发出攻击的系统伪装成交换机并对中继进行处理,以便于攻击者能够收发其它 VLAN 之间的通信。
操纵生成树协议:生成树协议可用于交换网络中以防止在以太网拓朴结构中产生桥接循环。通过攻击生成树协议,网络攻击者希望将自己的系统伪装成该拓朴结构中的根网桥。要达到此目的,网络攻击者需要向外广播生成树协议配置/拓朴结构改变网桥协议数据单元(BPDU),企图迫使生成树进行重新计算。网络攻击者系统发出的 BPDU 声称发出攻击的网桥优先权较低。如果获得成功,该网络攻击者能够获得各种各样的数据帧。
媒体存取控制地址(MAC)欺骗:在进行 MAC 欺骗攻击的过程中,已知某其它主机的 MAC 地址会被用来使目标交换机向攻击者转发以该主机为目的地址的数据帧。通过发送带有该主机以太网源地址的单个数据帧的办法,网络攻击者改写了 CAM 表格中的条目,使得交换机将以该主机为目的地址的数据包转发给该网络攻击者。除非该主机向外发送信息,否则它不会收到任何信息。当该主机向外发送信息的时候,CAM 表中对应的条目会被再次改写,以便它能恢复到原始的端口。
地址解析协议(ARP)攻击:ARP 协议的作用是在处于同一个子网中的主机所构成的局域网部分中将 IP 地址映射到 MAC 地址。当有人在未获得授权时就企图更改 MAC 和 IP 地址的 ARP 表格中的信息时,就发生了 ARP 攻击。通过这种方式,黑客们可以伪造 MAC 或 IP 地址,以便实施如下的两种攻击:服务拒绝和中间人攻击。
专用 VLAN:专用 VLAN 通过限制 VLAN 中能够与同 VLAN 中其它端口进行通信的端口的方式进行工作。VLAN 中的孤立端口只能和混合端口进行通信。混合端口能够和任何端口进行通信。能够绕过专用 VLAN 安全措施的攻击的实现要使用绕过专用 VLAN 访问限制的代理。
DHCP 耗竭:DHCP 耗竭的攻击通过利用伪造的 MAC 地址来广播 DHCP 请求的方式来进行。利用诸如 gobbler 之类的攻击工具就可以很容易地造成这种情况。如果所发出的请求足够多的话,网络攻击者就可以在一段时间内耗竭向 DHCP 服务器所提供的地址空间。这是一种比较简单的资源耗竭的攻击手段,就像 SYN 泛滥一样。然后网络攻击者可以在自己的系统中建立起虚假的 DHCP 服务器来对网络上客户发出的新 DHCP 请求作出反应。
降低局域网安全风险
在交换机上配置端口安全选项可以防止 CAM 表淹没攻击。该选择项要么可以提供特定交换机端口的 MAC 地址说明,要么可以提供一个交换机端口可以习得的 MAC 地址的数目方面的说明。当无效的 MAC 地址在该端口被检测出来之后,该交换机要么可以阻止所提供的 MAC 地址,要么可以关闭该端口。
对 VLAN 的设置稍作几处改动就可以防止 VLAN 中继攻击。这其中最大的要点在于所有中继端口上都要使用专门的 VLAN ID。同时也要禁用所有使用不到的交换机端口并将它们安排在使用不到的 VLAN 中。通过明确的办法,关闭掉所有用户端口上的 DTP,这样就可以将所有端口设置成非中继模式。
要防止操纵生成树协议的攻击,需要使用根目录保护和 BPDU 保护加强命令来保持网络中主网桥的位置不发生改变,同时也可以强化生成树协议的域边界。根目录保护功能可提供保持主网桥位置不变的方法。生成树协议 BPDU 保护使得网络设计者能够保持有源网络拓朴结构的可预测性。尽管 BPDU 保护也许看起来是没有必要的,因为管理员可以将网络优先权调至0,但仍然不能保证它将被选做主网桥,因为可能存在一个优先权为0但ID却更低的网桥。使用在面向用户的端口中,BPDU 保护能够发挥出最佳的用途,能够防止攻击者利用伪造交换机进行网络扩展。
使用端口安全命令可以防止 MAC 欺骗攻击。端口安全命令能够提供指定系统 MAC 地址连接到特定端口的功能。该命令在端口的安全遭到破坏时,还能够提供指定需要采取何种措施的能力。然而,如同防止 CAM 表淹没攻击一样,在每一个端口上都要指定一个 MAC 地址是一种难办的解决方案。在界面设置菜单中选择计时的功能,并设定一个条目在 ARP 缓存中可以持续的时长,能够达到防止 ARP 欺骗的目的。
对路由器端口访问控制列表(ACL)进行设置可以防止专用 VLAN 攻击。虚拟的 ACL 还可以用于消除专用 VLAN 攻击的影响。
通过限制交换机端口的 MAC 地址的数目,防止 CAM 表淹没的技术也可以防止 DHCP 耗竭。随着 RFC 3118,DHCP 消息验证的执行,DHCP 耗竭攻击将会变得越来越困难。
另外,IEEE802.1X 还能够在数据链路层对基本的网络访问进行监测,它本身是一种在有线网络和无线网络中传送可扩展验证协议(EAP)架构的标准。在未完成验证的情况下 801.1X 就拒绝对网络的访问,进而可以防止对网络基础设备实施的,并依赖基本 IP 连接的多种攻击。802.1X 的初始编写目标是用于拔号连接和远程访问网络中的点对点协议(PPP),它现在支持在局域网的环境中使用 EAP,包括无线局域网。
【导读】这是IP网络设计系列讲座的最后一部分,讨论园区局域网设计中遇到的一些问题。以太网交换机优越于传统的集线器环境的好处将首先介绍一下。应用虚拟局域网的动机已经同规划和配置虚拟局域网遇到的问题一起进行了研究。本文还将讨论确保园区网络设计具有可伸缩性和弹性的一些技术。本文还将讨论生成树协议以及如何在大型交换的网络中优化这个协议。最后,在本文的结论部分将涉及到与推出IP电话有关的设计问题。
以太网交换的好处
传统的共享的以太网是一种基带介质。这就意味着在任何一个时间只能有一个站点能够向这个介质发送数据。多个信号不能像在宽带网介质中那样成为多路复用的信号。在一个共享的以太网集线器,各个站点通过监听一对儿接收的线路来检查是否有其它站点在发送数据,用这种方法来解决访问冲突问题。以太网交换的应用取代了共享的以太网,从而产生了如下改善的运行功能:
专用的冲突域
交换机的每一个端口都在自己的冲突域中,因此,一个站点通过一台交换机的端口连接到这个局域网,而不是通过一个集线器的端口。这样,这个站点就不需要在发送数据之前通过监听是否有冲突来竞争接入到线路的权限。这将提高局域网的有效带宽。
通信过滤和转发
一台交换机像一个多口网桥一样工作,并且通过监听实况通信来了解每一个站点的MAC地址的位置。对于交换机交换的每一帧,交换机仅把通信转发到目的地MAC地址所在的端口。这台交换机据说要过滤所有其它端口的帧。这将显著减少局域网中不必要的通信,提高带宽的利用率。然而,广播帧将涌向所有的端口,这样,一个交换机据说要创建多个冲突域,但是,所有的端口仍在同一个广播域中。这通常是一种理想工作方式,因为广播时必要的,通常是局域网中的一种有效的通信手段。这与广域网有些不同。微软的Windows就使用严重依赖广播的NetBios。另一个例子是地址解析协议(ARP)。根据地址解析协议,一个地址解析协议广播必须要达到IP子网的每一个站点以便把一个目的地的IP地址解析为MAC地址。
全双工传输
传统共享的以太网以半双工的模式工作。换句话说,各个站点不能同时发送和接收数据。由于以太网基带的性质,只有一个站点能够访问这个介质并且在任何一个时间发送数据。一个共享的以太网介质上的各个站点通过监听冲突来解决通信冲突。全双工传输意味着所有的站点都能够同时发送和接收数据。在以太网中,这并不是通过监视冲突来实现的。如果这个站点附加到自己专用的交换机端口,它只是合法地关闭了冲突检测功能。这就意味着在冲突域只有两个站点:这个站点本身和这台交换机的端口。然后,每个站点都可以相互收发数据,而不必监听冲突。这种方式称作点对点的以太网。同许多网络词汇一样,全双工一直被滥用而且有些说法是不真实的。交换机厂商之间的市场营销大战促使这些厂商声称全双工作业能够使数据吞吐量提高一倍。全双工作业确实能够显著改善数据吞吐量,但是,还不能说把数据吞吐量提高了一倍,因为同一个站点不可能以线速的速度同时发送和接收应用程序的通信。
理解客户机-服务器通信流
当实施一个交换的局域网设计时,获得对客户机-服务器通信流的详细了解大概是一项最大的挑战。一个网络正在进行重新设计,要把一个共享的局域网环境转变为一个交换的局域网,以满足日益增长的带宽需求。在这种情况下,有可能收集到详细的大量有关通信状况的信息。在一个全新的网络,在网络推出之前收集这些信息是不容易的。然而,没有严格数量的通信状况分析,对通信状况进行合理的质量分析也是应该达到的。获得下列信息的合理的预测是非常重要的:什么用户在与什么服务器进行通话,通话的时间有多长,现在消耗的带宽是多少,将来消耗的带宽是多少?所有的客户机和服务器的物理位置和逻辑位置是什么。换句话说,要清楚地了解每个应用程序的客户机与服务器之间数据通道。服务器之间的通信水平是什么?再次说明一下,这与了解整个网络的全部主要通信流的需求是一致的。如果不充分理解这些通信流,介绍局域网交换机的作用也是很有限的。举一个极端的例子,假设一台服务器在远方并且必须通过一个56K的广域网线路访问这台服务器。在这种情况下,一台局域网交换机将不能显著提高性能,因为瓶颈是在广域网而不是在局域网。
高速内核
一些专有的方法与802.3ad标准的存在允许把多个连接集成为一个逻辑的高速连接。两台交换机之间的多个物理连接必须被当作一个逻辑连接对待,否则,生成树将封锁多余的连接。这种功能可以用来提供核心交换机之间的高速连接并且向高带宽服务器提供高速连接。即使在应用万兆以太网之前,就存在最多把8个以太网端口集成在一起提供高速园区干线的功能。
广域网(WAN)对于企业的网络拥有成本是一个最大的单项开支。因此,强调得最多的和最重要的是有一个权衡性价比的区域。本文将探讨各种替代的方法。这些方法在选择和设计WAN基础设施的时候是必须要进行评估的。不同的拓扑的和技术的选择将从它们与基本的WAN设计目标的关系的角度进行讨论。包括同步串行线路、帧中继和ATM在内的传统的技术替代方法将同DSL和MPLS等更高级的技术一起讨论。
同步串行线路清晰频道租赁线路是地理上分散的站点之间相互连接的最简单和最传统的方式,然而也是最昂贵的方式。同步租赁线路的主要优势在于其技术的简单性。这就意味着这种技术的安装和排除故障仅需要较少的专业知识,从而减少了技术支持的费用。点对点的串行连接的特点是需要的费用最少,因此提高了有效的数据吞吐量并且消除了额外的延迟和抖动的因素。
充足带宽的串行连接的特点是具有极好的服务质量。在串行连接上造成信号延迟和抖动的主要原因是路由器上的队列和数据包串行化。当一个小数据包等待一个大数据包在这个连接上发送的时候可能会出现串行化延迟。这种类型的延迟最有可能发生在低速连接上。然而,带宽预算总是有上限的,并且总有更省钱的方法减少在串行连接上的延迟和抖动。高级的队列技术把大型数据包分割为小数据包,并且给小数据包更高的优先等级,从而保证在串行连接上的延迟分布的更统一。
这对于数据包语音、视频和多媒体等对延迟非常敏感的实时应用是非常重要的。串行租赁线路最大的缺点是成本太高。因此,这个行业的许多部门都把串行租赁线路看作是不能有效地使用价格昂贵的带宽。这种情况促使人们从串行租赁线路技术向诸如帧中继或者用于更高带宽需求的ATM信元中继等包交换技术转移。
帧中继
帧中继协议是在客户的路由器或者帧中继接入设备(FRAD)之间运行的。本地帧中继交换机一般属于服务提供商。永久虚拟电路(PVC)用于站点之间的连接。永久虚拟电路之所以称作“永久”是因为端点总是与一个租赁线路时相同的。使用“虚拟”这个词是因为在运营商的网络上的整个线路中没有一个专用的物理连接。例如,不需要运营商编排其交换机来保证信号传输,从站点A进入帧中继网络的通信将在站点B退出这个运营商的网络。
因此,在最基本的水平上,这看起来好像与使用一条租赁线路把站点A与站点B连接起来是一样的。不过,还有许多基本的和相当大的区别。帧中继实际上是通过一种包交换的技术收取传统的基本费用。事实是,整个线路上没有一个专用的物理电路使运营商能够提供一个灵活的带宽,向用户证明这种连接是节省费用的。
一项帧中继服务需要为每一个永久虚拟电路购买一个承诺信息速率(CIR)。CIR是运营商担保的端对端的带宽。用户还可以购买额外的突发速率(Burst Rate)。突发速率是所有的永久虚拟电路都支持的最大速度的通信速率。显然,最大突发速率是用户接入帧中继服务提供商的线路的物理速度。然而,运营商不能保证通信将以超过CIR的速度传输。一旦超过了这个速率,所有随后的数据包都将在帧中继文件头上打上“DE”(符合丢弃条件)的标签。这将在本地帧中继交换机上完成。
如果在帧中继网络的一个节点检测到阻塞的情况,有“DE”标记的数据包将被首先放弃。在检测到拥塞之后,帧中继交换机将向信息源发送一个后向拥塞通知(BECN)信息。如果发送这个信息的路由器或者FRAD有足够的智能来处理这个信息,那么,它就能够把发送的速率降低到CIR速率。因此,用户可以选择CIR速率或者最大突发速率,以便获得能够充分支持其应用需求的最划算的带宽。
使用TCP协议的应用程序对于放弃的数据包更有弹性,因此同不太可靠的基于UDP的应用程序相比性能受到的影响要小一些。对于语音应用程序来说,被放弃的数据包超过一定的比例将影响语音的质量。当以超过CIR的速率进行语音通信时,还有一个需要注意的问题。除了在拥塞时放弃有“DE”标记的数据包之外,帧中继交换机还可能以较低的优先等级缓存这些数据包。这意味着这种通信将会达到目的地,但是,会有很大的延迟或者抖动,对于语音质量或者任何实时重放都会产生严重的影响。
避免以超过CIR速率的速度运行实时通信程序应该被当作一项一般的原则。这是非常恰当的,因为帧中继服务会需要某些带宽的保证,不能保证出现任何延迟。因此,对于实时的和非实时的通信使用不同的永久虚拟电路是非常必要的。帧中继网络能够以节省成本的方式提供恢复能力。可以使用一些CIR速率低于主要的永久虚拟电路的备份的永久虚拟电路。这种备份的永久虚拟电路位于通向本地帧中继交换机的不同的电缆线中,因为不仅仅在理论上保证这种恢复能力是很重要的。
异步传输模式
异步传输模式(ATM)一种综合性技术,旨在把带宽的一致性和传统的清晰频道TDM技术有关的延迟与包交换技术的灵活性结合在一起。ATM的较高层使用专用网络接口(PNNI)支持交换式虚电路(SVC)的动态重新路由。ATM还适应突发通信状况。小的、固定的53个字节的信元可减少在WAN中出现的延迟或者抖动的变化。虽然ATM中使用的许多原则与帧中继相似,但是,交换较小的固定长度的信元以及ATM协议中固有的服务质量的特点使ATM更适合用于由不同成分组成的和实时的应用程序。
ATM资源和服务质量参数
用户能够受益于与帧中继相同的带宽的灵活性。使用ATM,用户可以从服务提供商那里购买可持续信元速率(SCR)和峰值信元速率(PCR)。这与帧中继中使用的CIR和EIR相同。因此,同使用帧中继一样,用户对于接入速度有一定的控制权,并且可以根据应用的需求调整接入速度。
除了与信元速率有关的通信参数之外,ATM还采用了服务质量参数。这些参数可在用户网络接口提出申请,旨在为各种对延迟敏感的和对丢失数据包敏感的应用程序提供更好的服务。
信元丢失率(CLR):这是整个连接中数据吞吐量中信元总数与放弃的信元数量的比例。CLR是一个参数,对于那些对丢失数据包非常敏感的应用程序可以把CLR设置为最大值,例如基于UDP数据的应用程序等。
信元延迟变化(CDV):CDV是在特定时间间隔中整个ATM连接中延迟的平均变化。对于语音和视频等不能容忍大量延迟变化的应用程序,可以向ATM网络申请CDV的最大值。
信元传送延迟(CTD):CTD是总的端对端的延迟或者在整个ATM连接中的延迟。对于那些对时间敏感的语音或者数据应用程序,可以设置这个值。
IP地址管理是成功的逻辑设计的基础。本讲座的这一部分将介绍如何制定一个能够支持网络随时扩容的可伸缩性的IP地址管理计划。这部分还将介绍可变长度子网掩码和路由汇聚等关键工具的使用和重要性。选择适当的路由协议是同等重要的。用于评估一个路由协议的适宜性参数也在这里进行研究和讨论。IP路由协议的不同特点将与路由信息协议(RIP)和开放最短路径优先协议(OSPF)等行业标准协议的运行一起介绍。可变长度子网掩码
可变长度子网掩码(VLSM)的含义是在一个网络的同一个主要类别中使用一个以上的子网掩码。它能够更有效率地在主机和子网中使用IP地址空间。在一个没有充裕的IP地址空间的网络中,VLSM是非常重要的。
为了在同一个主要网络使用不同的子网掩码,需要一个支持VLSM的路由协议。这种路由协议称作无类路由协议。这些协议在路由广播中携带子网掩码信息,因此能够支持一个以上的子网掩码。无类路由协议的例子包括OSPF、RIP第二版、思科的EIGRP(增强型内部网关路由协议)、BGP(边界网关协议)和IS-IS(中间系统-中间系统协议)。
考虑一个使用VLSM的例子。假设需要一个B类地址172.16.0.0支持一个总共拥有200个站点的网络。这个最繁忙的局域网可能最多支持100台主机,并且最多可以有400个点对点的广域网连接。因此,需要600个子网,每一个子网最多可以有100台主机。即使采用B类地址,在不使用VLSM的情况下也没有足够的地址空间来满足这种需求。
在规划一个VLSM解决方案的时候,你应该首先使用最短的子网掩码。换句话说,你应该计划让这个子网支持最多的主机。这一般是用于大多数或者全部局域网网段中的子网掩码。在这个例子中,有200个局域网网段,每个网段最多可支持100台主机。虽然7个“host bits”(主机地址的二进制位数)或者一个25位掩码就能够满足这种需求,但是,从管理方面说,使用一个24位掩码会更方便。由于在这个例子中使用了VLSM,网络地址是非常充裕的。局域网网段可以使用172.16.1.0/24至172.16.200.0/24的地址。
现在是进入VLSM第二个阶段的时候了。这个阶段包括选择可用的子网和进一步划分子网。这个阶段有时候称作“划分子网”。重要的是要记住,子网划分只能在一个或者更多的子网没有用尽的情况下才能实施。
172.16.201.0这个地址范围是空闲的,可以使用30位掩码进行划分,在这个地址范围内创建一个额外的64个子网。同样,172.16.202.x/30地址范围可以创建适用于点对点连接的64个以上的子网。每一个最多可包含172.16.207.x/30的地址范围都可以为400个串行连接提供足够的子网地址空间。这就意味着满足了地址管理的要求,并且还有许多空闲的地址空间。
如果有可能,应该使用连续的子网。虽然这并不重要,但是,选择一个连续范围的地址并且为这些地址分配一个特定的子网掩码是非常有意义的。正如下一节将要重点介绍的那样,在讨论路由汇聚的时候,高效率的IP地址分配不会仅仅是为了整洁而做的,这样做通常对于良好的网络设计是必不可少的。
路由汇聚
路由汇聚的含义是把一组路由汇聚为一个单个的路由广播。路由汇聚的最终结果和最明显的好处是缩小网络上的路由表的尺寸。这样将减少与每一个路由跳有关的延迟,因为由于减少了路由登录项数量,查询路由表的平均时间将加快。由于路由登录项广播的数量减少,路由协议的开销也将显著减少。随着整个网络(以及子网的数量)的扩大,路由汇聚将变得更加重要。
除了缩小路由表的尺寸之外,路由汇聚还能通过在网络连接断开之后限制路由通信的传播来提高网络的稳定性。如果一台路由器仅向下一个下游的路由器发送汇聚的路由,那么,它就不会广播与汇聚的范围内包含的具体子网有关的变化。例如,如果一台路由器仅向其临近的路由器广播汇聚路由地址172.16.0.0/16,那么,如果它检测到172.16.10.0/24局域网网段中的一个故障,它将不更新临近的路由器。
这个原则在网络拓扑结构发生变化之后能够显著减少任何不必要的路由更新。实际上,这将加快汇聚,使网络更加稳定。为了执行能够强制设置的路由汇聚,需要一个无类路由协议。不过,无类路由协议本身还是不够的。制定这个IP地址管理计划是必不可少的,这样就可以在网络的战略点实施没有冲突的路由汇聚。
这些地址范围称作连续地址段。例如,一台把一组分支办公室连接到公司总部的路由器能够把这些分支办公室使用的全部子网汇聚为一个单个的路由广播。如果所有这些子网都在172.16.16.0/24至172.16.31.0/24的范围内,那么,这个地址范围就可以汇聚为172.16.16.0/20。这是一个与位边界(bit boundary)一致的连续地址范围,因此,可以保证这个地址范围能够汇聚为一个单一的声明。要实现路由汇聚的好处的最大化,制定细致的地址管理计划是必不可少的。
选择路由协议
选择正确的IP路由协议的重要性已经间接地提到了。现在,我介绍一下评估一个路由协议的具体问题。让我们考察一下判断一个路由协议所依据的一些特点。
·稳定性
路由协议必须具备防止出现路由环路问题的稳定性。路由环路是由网络拓扑结构发生变化之后立即出现的虚假路由信息广播引起的,可造成网络的崩溃。RIP等不太高级的协议使用保持计时器(holddown timer)来提高稳定性。如果一个子网性能下降,所有的路由器在保持计时器运行期间将忽略那个子网的任何更新。
导言一个优秀的网络设计是建立一切成功的网络应用的基础。本文是四篇讲座文章的第一篇,重点介绍基于IP的网络设计,因为IP实际上已经成为标准的桌面协议。高级IP网络支持的应用在本质上已经日益变得多元化。IP已经同传统的数据应用一起成为语音、视频和多媒体等实时应用的一种传输机制。由于当前应用有许多不同的性质,IP互联网设计从来没有像现在这样具有挑战性。本文讨论在设计网络时应该遵循的一些基本原则。以后的文章将介绍用来熟练地进行网络设计的具体的局域网和广域网技术。
需要一个设计计划
大多数IP互联网络从设计方面说都属于两大类之中的一类。一类显然是设计非常好的网络,另一类只是临时批凑起来的网络。这两类网络明显的区别显示了良好的设计的重要性。一个设计良好的网络的特点是在下面的每一个领域都有可预见性和一致性:
性能
在主要网络性能参数方面能够保持不变的高水平性能。这些参数可能包括应用程序响应时间和响应时间的变化。
弹性
网络应该为其支持的应用程序提供一个有弹性的平台。一个高度专用的网络比需要满足所有的应用程序的99%的可用性目标,并且能够满足重要任务应用程序“零关机时间”的要求。理想的情况是,任何一个连接的失败或者客户机至服务器之间的任何一台网络设备的故障都不应该导致客户机与服务器之间通信进程的丢失。自动绕过故障启用备份线路的功能应该在极短的时间内完成,这个时间的间隙应该足以把当前通信进程的影响降低到最小的程度。这个间隔时间称作“收敛时间”,可根据网络拓扑结构变化的时间长度来确定(如一个连接的丢失),直到网络上的每一台设备都知道这个变化。一个设计良好的网络总是一直保持较低的收敛时间。
可伸缩性
一个具有可伸缩性的网络能够充分支持网络的扩容,而不需要进行重大的重新设计。在用户数量的增长方面,网络节点或者站点的数量必须能够满足可能增加新的应用程序和这些应用程序可能消耗更多的带宽的需求。要获得对你的网络的伸缩性的认识,你需要回答下列问题:如果用户数量增加一倍、节点数量增加一倍、并且有需要一倍带宽的应用程序,你该怎么办?一个具有伸缩性的网络能够容纳这种增长和变化,而不需要对基础设置进行全面修改。基础的网络拓扑结构和使用的技术不必为了容纳这些变化而进行重新设计。新的用户和节点可以用一个简单的构建模块的方式添加到一个可伸缩的网络中。例如,新的节点应该简单地把新的网段或者模块与作为网络核心和骨干的现有的网络结构结合在一起。应该采用根据需要适当地增加局域网和广域网带宽的方式来容纳增加的带宽。在增加网络路由器和交换机的内存和处理能力等网络寿命周期之间,某些运营的升级也许还是必要的。然而,不应该做的事情是,在网络的寿命周期内,不应该为了支持计划之中的增长而对这个网络基础设施进行全面的修改。这就是一开始就要有一个网络计划的根本原因之一。
运行成本
成本是网络设计过程之中最基本的推动因素。这是一个不可回避的事实。网络不仅必须要满足某些技术规范,而且必须在设计和应用上更划算。拥有一个网络的主要成本通常是服务提供商提供的广域网的费用。那是帧中继、ATM、租赁线路或者ISDN技术的费用。
网络设计的特点是权衡性能和可用性的成本。例如,要保证优化的应用程序平台可能需要更多的带宽,然而,这里有一个临界点,超过了这个限度去购买更多的带宽就不划算。
同样,备份线路或者ISDN可以用来在客户机与服务器的通道之中保证网络的弹性,一旦主要数据通道出现故障,即可立即启用保证线路畅通。这种备份技术必须与主要连接线路的速度相同以避免在发生故障时降低服务质量。对于用户来说,在发生故障时降低服务质量是否可以容忍是一个经济性的决策。
一个设计良好的网络不仅运行起来节省成本,而且还应该保持相对一致的运行成本。能够说明运行成本的一致性和可预见性的重要性的最佳例子之一是就是技术支持的成本问题。拥有网络的成本的第二大组成部分(仅次于广域网成本)就是技术支持的成本。这也是最容易忽略的一个成本要素,主要是因为技术支持的成本很难量化。
例如,为了减少ATM服务提供商收取的广域网的费用,可以决定采用一种私人管理的应用ATM的方式。虽然这样做毫无疑问可以减少广域网成本,但是,这样做会导致技术支持费用的增加。要为一个专用ATM网络提供技术支持需要一个具有相当水平的技术人员。雇用和保留一个这样的技术人员是很昂贵的。然而,如果在公司内部没有这种技术人员,使用外部人员提供技术支持的费用将更高,例如使用外部的技术顾问或者使用第三方填补这个空缺以保证系统每天的顺利运行。
设计目标
在设计开始的时候制定一个明确的设计目标是必不可少的。这些目标与用来评估网络设计的一些参数有关。关键的性能参数必须要确定下来,并且为这些参数分配目标值。这些性能的目标最终是由应用程序的要求规定的。
要以有意义的方式分配这些目标,应用程序必须知道数量和质量的水平。必须评估应用程序消耗的带宽以便提供必要的容量来满足性能目标。必须清楚地了应用程序包对数据包丢失、数据包延迟和各种延迟的敏感性。这在支持多种应用程序的现代网络中是特别重要的。数据包丢失对于使用UDP协议传输的数据应用程序的影响比对需要可靠连接的TCP协议应用程序的影响还要严重。
相反,对于数据包丢失、数据包延迟和各种延迟来说,语音、视频、和多媒体等实时应用程序能够更容忍数据包丢失。因此,对于不同的网络应用程序应该采用优先等级不同的质量参数。目标值应该设置网络的可用性或者关机时间。同性能目标一样,这个目标在设计过程中将作为一个质量的标准。
允许的网络关机时间的水平与商业应用程序本身有很大的关系。应用程序不能使用造成的影响在不同的行业有很大区别,在金融行业可能造成每小时数万美元的损失,在医疗行业有可能造成性命的损失。
对于网络可能升级的规模应该提供一个预测。这种预测目标应该包括网络用户增加的数量、网络节点的增加数量,地理位置数量的增加、以及更重要的应用程序通信量的增加等。网络设计师的任务就是制定一个能够容纳这些增长的网络计划。
如果一个网络不是一个成本低效率高的解决方案,设计这种具有性能、弹性和可伸缩性的网络就是没有用处的。设计师必须要非常清楚地了解预算的限制,以便对权衡成本和可用性做出聪明的决策。
1) 什么是电子签名?
电子签名并非是书面签名的数字图像化。它其实是一种电子代码,利用它,收件人便能在网上轻松验证发件人的身份和签名。它还能验证出文件的原文在传输过程中有无变动。
目前,可以通过多种技术手段实现电子签名,在确认了签署者的确切身份后,电子签名承认人们可以用多种不同的方法签署一份电子记录。方法有:基于PKI的公钥密码技术的数字签名;以生物特征统计学为基础的识别标识;手印、声音印记或视网膜扫描的识别;一个让收件人能识别发件人身份的密码代号、密码或个人识别码PIN;基于量子力学的计算机等等。但比较成熟的,使用方便具有可操作性的,在世界先进国家和我国普遍使用的电子签名技术还是基于PKI(PublicKeyInfrastructino)的数字签名技术。
2) 基于PKI的数字签名技术
基于PKI(公钥基础设施)的电子签名被称作“数字签名”。有人称“电子签名”就是“数字签名”是错误的。数字签名只是电子签名的一种特定形式。因为电子签名虽然获得了技术中立性,但也带来使用的不便,法律上又对电子签名作了进一步规定,如上述联合国贸发会的《电子签名示范法》和欧盟的《电子签名共同框架指令》中就规定了“可靠电子签名”和“高级电子签名”。实际上就是规定了数字签名的功能,这种规定使数字签名获得了更好的应用安全性和可操作性。目前,具有实际意义的电子签名只有公钥密码理论。所以,目前国内外普遍使用的、技术成熟的、可实际使用的还是基于PKI的数字签名技术。作为公钥基础设施PKI可提供多种网上安全服务,如认证、数据保密性、数据完整性和不可否认性。其中都用到了数字签名技术。
PKI的核心执行机构是电子认证服务提供者,即通称为认证机构CA(Certificate Authority),PKI签名的核心元素是由CA签发的数字证书。它所提供的PKI服务就是认证、数据完整性、数据保密性和不可否认性。它的作法就是利用证书公钥和与之对应的私钥进行加/解密,并产生对数字电文的签名及验证签名。数字签名是利用公钥密码技术和其他密码算法生成一系列符号及代码组成电子密码进行签名,来代替书写签名和印章;这种电子式的签名还可进行技术验证,其验证的准确度对手工签名和图章的验证无法比拟的。这种签名方法可在很大的可信PKI域人群中进行认证,或在多个可信的PKI域中进行交叉认证,它特别适用于互联网和广域网上的安全认证和传输。
接入网的分类方法有很多种,例如可以按传输媒介分、按拓扑结构分、按使用技术分、按接口标准分、按业务带宽分、按业务种类分等等。
接入网的分类方法有很多种,例如可以按传输媒介分、按拓扑结构分、按使用技术分、按接口标准分、按业务带宽分、按业务种类分等等。将这些因素都考虑进去,接入网的花样自然就很多,但常用的主要有下面几大类,它们可单独使用或混合使用:
金属用户线上的XDSL:它又可分为IDSL(ISDN数字用户环路)、HDSL(利用两对线双向对称传输2Mb/s的高速数字用户环路)、SDSL(单线对双向对称传输2Mb/s的数字用户环路,传输距离比HDSL稍短)、VDSL(甚高速数字用户环路)、ADSL(不对称数字用户环路)。上述系统的拓扑结构是点到点。
同轴电缆上的HFC(双向混合光纤同轴电缆接入传输系统),SDV(可交换的数字视频接入系统,也基于混合光纤同轴电缆,但同轴缆上只传下行信号)。
拓扑结构是树型或总线型,下行物理上通常为广播方式。HFC/SDV与其他接入方式相比的特点是下行可以混合传送摸拟与数字信号。
光纤接入系统:可分为有源与无源系统,有源系统有基于PDH和SDH之分,拓扑结构可以是环型、总线型、星型或它们的混合型,也有点对点的应用。
无源即PON(无源光网络),有窄带与宽带之分,目前宽带 PON已经标准化的是基于ATM的 PON,即APON。PON本身下行是点到多点系统,上行为多点到点,上行时需要解决多用户争用问题,目前上行大多用TDMA(时分多址)技术。
无线接入系统:通常指固定无线接入(FWA),根据其技术来自无绳电话(如DECT)、集群电话、蜂窝移动通信、微波通信或卫星通信可分为很多类,对应不同的频段,容量、业务带宽和覆盖范围各异。无线接入主要的工作方式是点到多点,上行解决多用户争用的技术有FDMA(频分多址)、TDMA(时分多址)和CDMA(码分多址),从频谱效率看CDMA最好,TDMA其次。其中CDMA又可有扩谱(DS)、跳频(FH)和同步(S-CDMA)几种。
| 在编写Servlet 时需要用到两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。下面主要介绍javax.servlet.http提供的HTTP Servlet应用编程接口。
首先介绍一下Java Servlet的基本方法。
- init() 方法
在Servlet的生命周期中,仅执行一次 init() 方法,即在服务器装入Servlet时执行。通过配置服务器,可以设定在启动服务器或客户机首次访问Servlet 时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行 init()。
- service() 方法
service()方法是Servlet的主体部分。客户对一个HttpServlet对象的每次请求都会调用该对象的service() 方法,并传递给这个方法一个”请求”对象和一个”响应”对象作为参数。”请求”对象提供有关请求的信息,而”响应”对象提供了一个将响应信息返回给浏览器的通信途径。javax.servlet 软件包中的相关类为ServletRequest和ServletResponse,而javax.servlet.http 软件包中的相关类为HttpServletRequest 和 HttpServletResponse。Servlet 通过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用”请求”对象的方法获知客户机环境、服务器环境的信息和所有由客户机提供的信息;通过调用”响应”对象的方法,Servlet可以向客户机发送响应。
HttpServlet中的service()方法默认的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如,如果 HTTP 请求方法为 GET,则默认情况下就调用 doGet()。当一个客户通过HTML表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。
Servlet的响应可以是下列几种类型: ·一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。 ·一个HTTP错误响应,重定向到另一个URL、Servlet和JSP。
- destroy() 方法
destroy() 方法仅执行一次,即在服务器停止且卸载Servlet 时执行该方法。当服务器卸载 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个Servlet 在运行service() 方法时可能会产生其他的线程,因此在调用 destroy() 方法时,必须确认这些线程已终止或完成。
- GetServletConfig()方法
GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和ServletContext。ServletContext 接口提供有关Servlet 的环境信息。
- GetServletInfo()方法
GetServletInfo()方法是一个可选的方法,它提供有关Servlet 的信息,如作者、版本、版权。
下面介绍编写一个基本HTTP Servlet的步骤。
(1)引入相应的包和类,包括:
import javax.servlet.*;import javax.servlet.http.*;import java.io.*;继承javax.servlet.http.HttpServlet public class MyServlet extends HttpServlet{ |
(2)实现service方法。
Servlet的主要功能是接受从浏览器发送过来的HTTP请求(request),并返回HTTP响应(response)。这个工作是在service方法中完成的。service方法包括从request对象获得客户端数据和向response对象创建输出。
如果一个Servlet从javax.servlet.http.HttpServlet继承,实现了doPost或doGet方法,那么这个Servlet只能对POST或GET做出响应。如果开发人员想处理所有类型的请求(request),只要简单地实现service方法即可(但假如选择实现service方法,则不必实现doPost或doGet方法,除非在service方法的开始调用super.service())。其中的差别如图14-2所示。
 图14-2 doGet、doPost、service的区别
HTTP Servlet规范描述了用来处理其他请求(request)类型的方法,所有这些方法都可以归属于service方法。所有的service 方法使用一样的参数。HttpServletRequest提供关于请求(request)的信息,Servlet可以使用 HttpServletResponse 对HTTP客户端做出响应。
public void service(HttpServletRequest req,HttpServletResponse res)throws IOException{// 设置响应内容的类型 res.setContentType(“text/html”);// 获得java.io.PrintWriter对象的引用,用来输出 PrintWriter out = res.getWriter();// 使用PrintWriter对象的println()方法创建一些HTML代码,例如 out.println(“<html><head><title>Hello World!</title></head>”);out.println(“<body><h1>Hello World!</h1></body></html>”);……} |
(3)编译Servlet。 从存放此Servlet源代码文件的目录编译此Servlet到包含此Servlet的应用中的 WEB-INF/classes目录。如: javac -d /your_application_dir/WEB-INF/classes your_servlet.java
(4)将此Servlet作为应用的一部分部署。 把程序编译到指定目录后还是没有开启这个服务,我们必须对它进行配置,在C:\bea\wlserver6.1\config\mydomain\applications\DefaultWebApp\WEB-INF下有一个web.xml文件,这个就是应用程序的配置文件。这个文件的一般形式如下:
<?xml version=”1.0″ ?><!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 1.2//EN” “http://java.sun.com/j2ee/dtds/web-app_2_2.dtd”><web-app> <!–chapter 8 java servlets –> <servlet> <servlet-name>HelloWorld2</servlet-name> <servlet-class>examples.servlets.HelloWorld2</servlet-class> <init-param> <param-name>greeting</param-name> <param-value>welcome</param-value> </init-param> <init-param> <param-name>person</param-name> <param-value>weblogic developer</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>HelloWorld2</servlet-name> <url-pattern>/HelloWorld2/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list></web-app> |
其中servlet-name是Servlet的名字,servlet-class是在\WEB-INF\classes下存放class文件的相对路径。我们还可以在此文件中初始化参数,形式如下:
<init-param> <param-name>greeting</param-name> <param-value>welcome</param-value></init-param> |
param-name是参数的名称,在本例中是greeting;param-value是参数的值,在本例是welcome。我们可以以此形式初始化更多的参数。
<servlet-mapping><servlet-name>HelloWorld2</servlet-name><url-pattern>/HelloWorld2/*</url-pattern></servlet-mapping> |
这段代码是Servlet名称与url-pattern路径的映射。根据这段代码,HelloWorld2这个Servlet程序的URL路径就是http://SERVER_ADDRESS:/HelloWorld2。
(5)从浏览器访问Servlet。一般说来,调用Servlet的URL 取决于包含Servlet的Web应用的名字和Web应用部署描述中的Servlet映射的名字。请求(request)参数也可以是调用Servlet的URL的一部分,一般Servlet 的URL如以下模式: http://SERVER_ADDRESS:/your_web_application_name/ mapped_servlet_name? Parameter |
« Newer Posts —
Older Posts »
Powered by WordPress