《OSPF网络设计解决方案(第2版)》一1.6 IP编址-阿里云开发者社区

开发者社区> 开发与运维> 正文

《OSPF网络设计解决方案(第2版)》一1.6 IP编址

简介: 本节书摘来自异步社区《OSPF网络设计解决方案(第2版)》一书中的第1章,第1.6节,作者 【美】Thomas M. Thomas II, CCIE #9360,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.6 IP编址 OSPF网络设计解决方案(第2版) 本节讨论IP编址的方法、基本子网划分、可变长子网掩码(VLSM)及无类域间路由(CIDR)。

本节书摘来自异步社区《OSPF网络设计解决方案(第2版)》一书中的第1章,第1.6节,作者 【美】Thomas M. Thomas II, CCIE #9360,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.6 IP编址

OSPF网络设计解决方案(第2版)
本节讨论IP编址的方法、基本子网划分、可变长子网掩码(VLSM)及无类域间路由(CIDR)。

在设计及配置都较为合理的网络环境中,主机和服务器之间的通信可视为透明的。这是因为,每台使用TCP/IP协议簇的设备都拥有长度为32比特的唯一IP地址。设备读取数据包的目的IP地址,并基于该信息做出正确的路由决策。如果设备是主机或服务器,那么它们将借助默认网关进行数据包转发;如果是一台路由器,那么则参照路由表将数据包转发至目的地。只要使用了正确的IP编址,无论是何种设备,通信过程都能够非常容易地完成,并且通信过程对于终端用户是透明的。

IP地址可以使用4个十进制数字的组合来表示,且每个数字等于一个拥有8比特长度的二进制数组,即八位组。这些十进制数字的数值范围是0~255,数字之间使用小数点隔开。这种书写IP地址的方法被称为点分十进制。注意,这些数字还可以写成二进制或十六进制的形式。图1-8描绘了使用点分十进制表示IP地址的基本格式。


34064a8a3e3973d0f82ac34f5f527f2022e5be4f

IP地址拥有2个主要的逻辑部分:网络号和主机位。两者的使用及差异是极其重要的。除此以外,还有另一个有用的概念,即子网。网络号定义了逻辑的网络,且必须唯一;如果某个网络需要连接Internet,那么该网络的网络号必须由相应机构来分配。这些机构随着地域的不同而不同,例如北美的美国Internet号码注册中心(ARIN)、欧洲的RIPE及亚洲的亚太互联网信息中心(APNIC)。相比之下,主机位则定义了网络中的一台主机(设备),可以由本地管理员进行分配。

假设你为某个网络分配的网络号为172.24,然后管理员为某台主机分配248.100的地址,那么该主机的完整地址为172.24.248.100。因为网络号和主机位都是唯一指定的,因此该地址也是唯一的。

注意
很多时候,当处理一些高级的网络主题——例如OSPF时,人们往往把IP地址写成:x.x.x.x/8 /16 /24的形式。这是一种IP地址速记的方法,其中斜杠(/)右边的数字代表子网掩码的长度。

1.6.1 A类地址

在A类地址中(也可写成/8),第1个八位组代表网络号,而其他3个八位组则表示主机地址。其中,A类地址的网络号的第1个比特必须设置为0。尽管从数值上来说,A类地址共有128种可能的网络号(第1个比特设置为0),但是地址00000000是不可用的。因此只有127(128-1)个合法的A类网络号。而实际上,真正可用的网络地址数量比127还要少,因为网络号127.0.0.0被作为环回地址保留,10.0.0.0被作为私网地址保留。这也就意味着,只有126个A类网络号可供使用。但是,每一个A类网络能够支持多达16,777,214个节点(主机)地址。

注意
当使用有类网络地址规划时,不管是IP地址还是掩码,任何八位组全1或全0的情况通常是不被允许使用的。在引入CIDR的概念后,许多服务提供商便能够分配/19或/20的地址。
Cisco支持选择是否使用全1或全0的八位组,但由于此处尚未介绍这一主题,因此以下内容依然假设路由器不允许八位组为全0或全1。

1.6.2 B类地址

在B类地址中(也可写成/16),网络号使用前2个八位组进行编址。B类地址的前2个比特总是设置为10;注意,这里是二进制的1和0,而不是十进制的10。B类地址的范围是128.0.0.0~191.255.255.255。其中,网络号的第1个八位组的最初6个比特和第2个八位组的所有8个比特可以随意取值,因此最大可提供16,384个B类网络号。剩下的八位组则作为主机位使用,因此每一个B类网络地址支持65,534个主机地址。

1.6.3 C类地址

在C类地址中(也可写成/24),最初的3个八位组为网络号。C类地址的开头3个比特必须设置为110,其地址范围是192.0.0.0~223.255.255.255。那么,剩下的第1个八位组的5个比特和第2,第3个八位组的所有8个比特,能够最多提供2,097,152个C类网络号。最后1个八位组决定主机位,可为每个网络地址提供254个节点地址。

1.6.4 D类地址

D类地址作为特殊类型的地址,不适用于具体的网络。D类地址的最初4个比特必须设置为1110,第一个八位组的范围是224~239。D类地址用于多播数据包,许多协议使用多播将信息发送给一组主机(例如ICMP路由器发现协议,或Internet组成员协议[IGMP],该协议从Cisco IOS软件版本11.2后开始支持)。

你可以把D类地址看作大部分网络逻辑结构中的预设地址,只要数据包使用此类地址作为目的地,那么拥有这些地址的系统将对其回应。例如,如果主机发送去往目的IP地址为224.0.0.5的数据包,那么所有使用该地址的路由器接口(运行OSPF)将进行回应。

1.6.5 E类地址

范围是240.0.0.0~255.255.255.254的地址被称为E类地址1。这些地址的第1个八位组必须以11110开头。E类地址预留给今后新的IP编址研究,但是由于IP版本6(IPv6)的出现,这些预留的地址可能一直不会被使用。

在大部分网络中,所分配的IP地址通常被划分成若干部分,并且逻辑关联于不同的区域。例如,在IP地址中,一部分比特位定义了网络号,一部分比特位定义了子网(也就是子网络),而另一部分比特位定义了该子网网络中的具体主机。

RFC 1918,“Address Allocation for Private Internets”文档定义了以下3个IP地址块应当为私有网络所预留:

  • 10.0.0.0~10.255.255.255——单个A类地址网络号;
  • 172.16.0.0~172.31.255.255——连续的B类地址网络号;
  • 192.168.0.0~192.168.255.255——连续的C类地址网络号。

注意
以上3个私有网络范围也可以写成10/8、172.16/12及192.168/16。
1.6.6 如何使用IP地址
对于有类路由选择行为而言,路由器通过检查IP地址第1个八位组中的固定比特或最高位比特来判断该网络地址所属的主类。这种IP地址读取技术(也被称为第1个八位组规则),被定义用于区分不同的主类地址。

表1-4列出了关于不同主类IP地址的信息。注意在格式一栏中,N代表网络号,而H代表主机位。另外,对于各主类地址而言,其中一个地址将被预留作为广播地址(全1),而另一个地址被预留表示该网络(全0)。


9b5eb3128fbb57803b3048fc0baa8a2fe7f786f0

表1-5到表1-7列举了A、B、C主类IP网络的主机数和子网数。其中,子网和主机皆排除了全0和全1的地址。


59ae6afe91b4bea5dfa393312efa4173dfc2633e


87499428e1546c26d6c74bce04f5c97e8e839ad0


492222d062f4da2731da9485b80daebfcfe58c92


d60934e4d0a0328f8ec472bcd153ab6331d1902b

注意
计算主类地址所拥有的最大主机数量,可以使用这样的公式:假设某个地址为N.H.H.H,H为最大主机数值,则H×H×H-2(256×256×256-2)等于16,777,214。其中,N为网络号,H为主机位。
图1-9显示了主类IP地址的网络号和主机位部分。


703ac5cb4b932581837e814494e81b434b23c43f

在大部分网络中,所分配的IP地址通常被划分成若干部分,并且逻辑关联于不同的区域。例如,在IP地址中,一部分比特位定义了网络号,一部分比特位定义了子网,而另一部分比特位定义了该子网网络中的具体主机。

1.6.7 IP地址的作用

IP使用层次化的编址结构。当路由数据包时,路由器只需要将数据包发给去往目的地址的下一跳即可。例如,如果一个数据包的目的IP地址为172.24.50.10,那么路由器将在路由表中查找该目的地址的第1个八位组(172)。如果存在匹配条目,路由器便会继续对接下来的八位组(24)进行查找,直到获取足够的信息对该数据包进行转发为止。这种路由器的路由行为被称为最长掩码匹配原则,同样这被称为无类路由选择。

如果路由器没有足够的信息对数据包进行路由,那么该数据包将被丢弃。路由器根据IP地址的网络号和主机位部分进行层次化决策,如图1-10所示。


9fad91499480b1aa6731c226e6388d812964a2df

电话号码可作为另一个解释路由器所使用的层次化编址技术的实例。例如,如果拨打电话号码919-779-xxx,那么电话系统将根据919获知本次通话的目的地位于北卡罗莱州,779代表罗利市,而最后4个号码则被分配给了某个住宅。但有意思的是,电话系统也面临着号码耗尽的问题,因此你可以选择使用无需付费的分机号,例如888。随着通信技术的发展,调制解调器、寻呼机、手机、免费800电话及安装多部住宅电话,都会加速电话号码的可用空间被耗尽。

1.6.8 如何读取IP地址

对于有类路由选择行为而言,路由器检查IP地址第1个八位组中的固定比特或最高位比特来判断该网络地址所属的主类。这种IP地址读取技术(也被称为第1个八位组规则),被定义用于区分不同的主类地址。

路由器通常拥有许多的物理接口,这些接口分配了IP地址和子网掩码。当数据包尝试发往接口所在网络内的主机时,那么数据包便可以直接路由到该接口。例如,假设某个令牌环网络接口的IP地址为172.24.248.100,那么路由器便能够获知:如果去往或者离开网络172.24.0.0,则需要通过该接口。

1.6.9 IP子网编址

在过去的10年间,急剧增长的网络数量必须依靠子网划分技术才能满足。由于可用的地址空间持续不断地减少,网络管理者需要对已存在的地址空间进行更加有效地利用,这便诞生了子网划分技术。

使用子网划分技术会带来以下好处:

对可用的网络地址进行有效的利用;
在规划网络增长和设计时,提高灵活性;
控制广播流量;
加强本地的管理性控制。
注意
广播流量是指应该发给某个网络中所有节点的数据包。全1的主机地址代表了广播地址。
为了更好地理解子网,你可以认为这是一种扩展网络数量的方法。从本质上来说,子网划分是将原来的主机地址空间再进行划分,使其成为新的网络地址。

你可以使用下面的步骤进行子网划分。

步骤1:定义子网掩码。

步骤2: 为每个子网分配网络号。

步骤3: 为每个节点分配IP地址。

在许多企业网络环境中,利用子网的概念可以将一个较大的网络划分成许多较小的网络。例如,之前所提到的B类网络(172.24.0.0)可以被划分成256个子网:172.24.0.0、172.24.1.0、172.24.2.0等。其中每一个子网内都包含254个主机地址。

注意
根据RFC 1812文档中的定义,由于不再支持全子网广播,因此子网网络号为全1的子网是合法的。

1.6.10 子网掩码

子网掩码和普通IP地址具有相同的格式,但是子网掩码的二进制全1比特指示了IP地址中的网络号。实际上,长度为32比特的子网掩码与IP地址结合使用时,打破了原本仅通过IP地址高位来区分默认网络号或节点地址的规则。子网掩码还能够帮助路由器判断IP地址中的哪些八位组应该在路由表中用于查找数据包的目的地址。

例如,对于正确配置的子网172.24.1.0,你必须指定其子网掩码为255.255.255.0。两者共同组成了一个完整的IP子网地址:172.24.1.0 255.255.255.0。如果把该IP地址分配给路由器的一个以太网接口,当目的地址为172.24.1.30的数据包到达路由器后,那么路由器便能够正确地路由该数据包。这是由于路由器获知了(通过分配的IP地址和掩码)所有去往172.24.1.0网络的数据包都应该从拥有该网络号的以太网接口发出。

所有主类地址都拥有默认的子网掩码,因为对主网进行划分时,子网比特位是从主机位的高位借位过来的。下面列出了主类IP地址所使用的默认子网掩码。

A类——255.0.0.0 默认掩码。
B类——255.255.0.0 默认掩码。
C类——255.255.255.0 默认掩码。
这些默认掩码在对应的IP主类地址的默认网络号比特位上全部为二进制的1。例如,A类网络10.0.0.0/8的默认掩码在第一个八位组的比特位上全部为1。

如果读者此刻已经熟悉了子网掩码的概念,那么以下讨论的内容将变得非常容易理解。对于子网掩码最为重要的是,在分配IP地址时,必须小心地规划。为什么需要在网络中使用子网划分呢?答案是,为了在网络中进行路由。那么,为何要进行路由?这些问题便开始纠缠不清了。

为了更好地解释上面的问题,假设存在一个大型的共享以太网,该网络内拥有接近饱和的用户数量。由于冲突发生的次数和概率很大,导致用户网络的性能表现非常差。一种简单的解决办法是使用网桥分隔共享介质,但保持两者的连通性。网桥需要使用MAC地址来决策数据包的转发,但是如果网桥不知道如何发送数据包的话,它将把数据包广播至每一个节点。通过部署网桥,原本缓慢繁忙的共享以太网将被分隔成两个网段,网络性能也会随之提升。但是,随着越来越多网段的加入,广播流量将泛洪至每一个网段,并最终导致所有的互联网络发生卡顿。类似这种大量广播存在的现象,通常被称为广播风暴,这是一种不好的现象。因此,只有更为智能的硬件设备——路由器,才能分隔多个广播域。

一般来说,路由器连接多个网络,并根据数据包的地址来决策是否应该发送数据包,以及如何发送数据包。如果无法获知数据包应该发送到哪里,路由器则选择丢弃数据包;因此,便不再会出现无法控制的广播流量了。

例如,假设路由器接口#1连接网络172.24.0.0,接口#2连接网络10.37.0.0。首先,你需要为路由器的各个接口分配正确的网络IP地址——如xxx.xxx.1.1,然后在每个网络中至少接入一台PC。图1-11描绘了该情景。


7ec4acfe05bb1e91341a4dd346c11fd7db89897a

最开始,路由器并未学习到任何可用的地址。但由于其接口#1的IP地址为172.24.1.1 255.255.255.0,则它假定所有去往172.24.0.0网络的数据包都可以通过接口#1发送并到达。如果路由器收到了一个数据包,且该数据包的目的地址并不是已知的2个网络(本例中为172.24.0.0或10.37.0.0)之一,那么数据包将被路由器丢弃。

如果PC A想要和PC B进行通信,那么A所发送的数据包的目的IP地址为10.37.100.212。但是路由器是如何获知该地址位于分配了相同网络IP地址(10.37.1.1)的接口上呢?简单地说,子网掩码必须被输入。这也就意味着,当为接口#2分配IP地址10.37.1.1时,必须一并指定一个子网掩码。

提示
每个路由器的接口都必须分配一个本地子网掩码。而且,Cisco路由器不允许配置缺少掩码的IP地址。
如果为接口#2分配的子网掩码为255.255.0.0,实际上就是告知路由器,当需要进行数据包路由决策时,如果目的IP地址的最初2个八位组匹配10.37,那么数据包则可以从接口#2发出。这是因为,子网掩码的设计原则是,路由器必须精确匹配掩码中255所对应的IP地址八位组,而0所对应的八位组值则无关紧要。

如果为接口分配的子网掩码是255.255.255.0,实际上就是告知路由器,当进行路由决策时,只需要关注目的IP地址的前3个八位组。根据之前讨论过的内容,原始C类地址的前3个八位组定义了网络号。

你还可以通过其他子网掩码的使用方式来分隔网络,但这些内容已经超出了本书的论述范围。如果读者想要获知更多关于基本子网划分的技术,可以参考上一节所提到的RFC文档。在介绍其他内容之前,你还必须掌握使用子网概念的一些限制。

1.6.11 子网划分的限制

通常,在传统子网化网络中会存在一些限制;但是,如果运行支持VLSM的协议(如OSPF或边界网关协议[BGP])并启用VLSM的话,这些限制都将不复存在。对于那些老旧的,并且不支持VLSM的路由协议(如路由信息协议[RIP]版本1),这些限制内容依然存在。

对于相同的子网掩码,路由器假设这些所配置的子网掩码适用于所有子网。因此,主类网络中的所有子网必须使用相同的掩码。不同的掩码只能在不同的主类网络中使用。

另外,在对主类网络进行子网划分时,不能进行孤立式地分隔,因为所有子网必须是连续的。在主类网络中,不连续的子网划分会造成非常严重的路由错误。

关于子网划分限制的更多讨论和实例,可以参考如下资料:

RFC 791,“Internet Protocol”
RFC 950,“Internet Standard Subnetting Procedure”
RFC 1219,“On the Assignment of Subnet Numbers”
RFC 1700,“Assigned Numbers”
RFC 1918,“Address Allocation for Private Internets”
你可以登录下面的站点在线检索所有的RFC文档:

http://www.rfc-editor.org/rfc.html

1译者注:255.255.255.255为全网广播地址。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章