软件测试管理

当前位置:首页 > 软件测试管理

《计算机网络:自顶向下方法》第四章 续3

4.4.2 IPv4 编址


我们现在将注意力转向IPv4编址。尽管你可能认为编址是相当直接的主题,但我们希望通过本章的学习,你能认识到因特网编址不仅是一个丰富多彩、微妙和有趣的主题,而且也是一个对因特网极为重要的主题。[ 3Com Addressing 2012]和[Stewart 1999]的第1章都是介绍IPv4编址的优秀读物。


然而,在讨论IP编址之前,我们需要简述一下主机与路由器连人网络的方法。一台主机通常只有一条链路连接到网络;当主机中的IP想发送一个数据报时,它就在该链路上发送。主机与物理链路之间的边界叫做接口( interface)。现在考虑一台路由器及其接口。因为路由器的任务是从链路上接收数据报并从某些其他链路转发出去,路由器必须拥有两条或更多条链路与它连接。路由器与它的任意. 条链路之间的边 界也叫做接口。一台路由器因此有多个接口,每个接口有其链路。因为每台主机与路由器都能发送和接收IP数据报,IP要求每台主机和路由器接口拥有自己的IP地址。因此,一个IP地址技术上是与一个接口相关联的,而不是与包括该接口的主机或路由器相关联的。


每个IP地址长度为32比特( 等价为4字节),因此总共有232个可能的IP地址。由于210近似地表示103,故容易看出约有40亿个可能的IP地址。这些地址一般按所谓点分十进制记法( dotted- decimal notation) 书写,即地址中的每个字节用它的十进制形式书写,各字节间以句号(点)隔开。例如,考虑IP地址193. 32.216.9, 193 是该地址第一个 8比特的十进制等价数,32 是该地址第二个8比特的十进制等价数,依次类推。因此,地址193. 32.216. 9的二进制记法是:


11000001 00100000 1 101 1000 00001001


在全球因特网中的每台主机和路由器上的每个接口,必须有一个全球唯一的IP地址(在NAT后面的接口除外,本节结尾将讨论)。然而,这些地址不能随意地自由选择。一个接口的IP地址的一部分需要由其连接的子网来决定。


图4-15提供了一个IP编址与接口的例子。在该图中,一台路由器(具有3个接口)用于互联7台主机。仔细观察分配给主机和路由器接口的IP地址,有几点需要注意。图4-15中左上侧部分的3台主机以及它们连接的路由器接口,都有一个形如223. 1. 1. xxx的IP地址。这就是说,在它们的IP地址中,最左侧的24比特是相同的。这4个接口也通过一个并不包含路由器的网络互联起来。例如,该网络能够是一个以太网LAN,在此情况下,这些接口将通过一-台以太网交换机互联(第5章中讨论),或者通过一个无线接入点互联(第6章中讨论)。我们此时将这种无路由器连接这些主机的网络表示为一朵云,在第5、6章中再深入这些网络的内部。


《计算机网络:自顶向下方法》第四章 续2


用IP的术语来说,互联这3个主机接口与1个路由器接口的网络形成个子网( sub-net) [RFC 950]。(在因特网文献中,子网也称为IP网络或直接称为网络。) IP编址为这个子网分配一个地址: 223. 1.1.0/24,其中的/24记法,有时称为子网掩码( networkmask),指示了32比特中的最左侧24比特定义了子网地址。因此子网223. 1.1.0/24是由3台主机接口(223.1.1.1、223.1.1.2和223.1.1.3) 和1个路由器接口(223.1.1.4)组成。任何其他要连到223. 1.1.0/24网络的主机都要求其地址具有223. 1.1.xx的形式。图4-15中显示了另外两个网络: 223. 1.2. 0/24网络与223.1.3.0/24子网。图4-16图示了在图4-15中存在的3个IP子网。


《计算机网络:自顶向下方法》第四章 续2


一个子网的IP定义并不局限于连接多台主机到一个路由器接口的以太网段。为了搞清其中的道理,可考虑图4-17,图中显示了3台通过点对点链路彼此互联的路由器。每台路由器有3个接口,每条点对点链路使用一个,一个用于直接将路由器连接到一对主机的广播链路。这里出现了几个子网呢? 3个子网223.1.1.0/24、223. 1.2.0/24和223. 1.3. 0/24类似于我们在图4-15中遇到的子网。但注意到在本例中还有其他3个子网:一个子网是223. 1.9. 0/24,用于连接路由器RI与R2的接口;另外一个子网是223. 1.8. 0/24,用于连接路由器R2与R3的接口;第三个子网是223.1.7.0/24,用于连接路由器R3与RI的接口。对于一个路由器和主机的通用互联系统,我们能够使用下列有效方法定义系统中的子网:


为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点。这些隔离的网络中的每一个都叫做一个子网(subnet)。


《计算机网络:自顶向下方法》第四章 续2


如果我们将该过程用于图4-17中的互联系统上,我们会得到6个岛或子网。


从上述讨论可见,一个具有多个以太网段和点对点链路的组织( 如一个公司或学术机构)将具有多个子网,在给定子网上的所有设备都具有相同的子网地址。原则上,不同的子网能够具有完全不同的子网地址。然而,在实践中,它们的子网地址经常有许多共同之处。为了理解其中的道理,我们来关注在全球因特网中是如何处理编址的。


因特网的地址分配策略被称为无类别域间路由选择( Classless Interdomain Routing,CIDR) [ RFC 4632]。CIDR将子网寻址的概念般化了。因为对于子网寻址,32比特的IP地址被划分为两部分,并且也具有点分十进制数形式a. b.c.d/x.其中x指示了地址的第一部分中的比特数。


形式为a. b. e. d/x的地址的x最高比特构成了IP地址的网络部分,并且经常被称为该地址的前缀(prefix)(或网络前缀)。一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址(参见“实践原则”)。在这种情况下,该组织内部的设备的IP地址将共享共同的前缀。当我们在4. 6节中论及因特网的BGP路由选择协议时,将看到该组织网络外部的路由器仅考虑前面的前缀比特x。这相当大地减少了在这些路由器中转发表的长度,因为形式为a. b.c. d/x单一表项足以将数据报转发到该组织内的任何目的地。



实践原则


这是一个ISP将8个组织连接到因特网的例子,它也很好地说明了仔细分配CIDR化的地址有利于路由选择的道理。如图4-18所示,假设该ISP (我们称之为Fly- By-Night-ISP)向外界通告,它应该发送所有地址的前20比特与200. 23. 16. 0/20相符的数据报。外界的其他部分不需要知道在地址块200. 23.16. 0/20内实际上还存在8个其他组织,每个组织有自己的子网。这种使用单个网络前缀通告多个网络的能力通常称为地址聚合( address aggregation), 也称为路由聚合( route aggregation) 或路由摘要( routesummarization)。


《计算机网络:自顶向下方法》第四章 续2


当地址按块分给ISP,然后又由ISP分给客户组织时,地址聚合工作极为有效。但是当地址不是按这样的层次方式分配时,会出现什么情况呢?例如,如果Fly- By- Night-ISP获取了ISPs-R-Us,然后让组织1通过它辅助的ISPs-R-Us与因特网相连,将会发生什么情况呢?如图4-18中所示,该辅助的ISP- R-Us拥有地址块199. 31. 0.0/16,但很遗憾的是组织1的IP地址在该地址块之外。这里可以采取什么措施呢?组织1无疑可以将其所有的路由器和主机重新编号,使得地址在ISPs-R-Us的地址块内。但这是一种代价很高的方案,而且组织1将来也许还会从ISPs-R-Us更换到另一个ISP。通常采用的做法是,组织1保持其IP地址在200.23. 18.0/23内。在这种情况下,如图4-19所示,Fly- By- Night-ISP继续通告地址块200. 23. 16. 0/20,并且ISPs-R-Us也继续通告地址块199.31.0.0/16。然而,ISPs-R-Us 现在还要通告组织1的地址块200. 23.18.0/23。当在更大的因特网上的其他路由器看见地址块200. 23.16.0/20 (来自Fly By- Night- ISP)和200.23. 18.0/23 (来自ISPs-R-Us),并且想路由选择到在地址块200. 23.18. 0/23内的一个地址时,它们将使用一个最长前缀匹配(参见4.2.2 节),并朝着ISPs-R-Us路由,因为它通告了与目的地址相匹配的最长(最具体)的地址前缀。


《计算机网络:自顶向下方法》第四章 续2



一个地址的剩余32一x比特可认为是用于区 分该组织内部设备的,其中的所有设备具有相同的网络前缀。当该组织内部的路由器转发分组时,才会考虑这些比特。这些较低阶比特可能(或可能不)具有另外的子网结构,如前面所讨论的那样。例如,假设某CIDR 化的地址a. b. c. d/21的前21比特定义了该组织的网络前缀,它对该组织中的所有主机的IP地址来说是共同的。其余的11比特标识了该组织内的主机。该组织的内部结构可以采用这样的方式,使用这最右边的11比特在该组织中划分子网,就像前面所讨论的那样。例如,a. b. c. d/24可能表示该组织内的特定子网。


在CIDR被采用之前,IP地址的网络部分被限制为长度为8、16或24比特,这是一-种称为分类编址( classful addressing)的编址方案,这是因为具有8、16 和24比特子网地址的子网分别被称为A、B和C类网络。一个IP地址的网络部分正好为1、2或3字节的要求,已经在支持数量迅速增加的具有小规模或中等规模子网的组织方面出现了问题。一个C类(/24) 子网仅能容纳多达28-2=254台主机(28 =256, 其中的两个地址预留用于特殊用途),这对于许多组织来说太小了。然而一个B类(/16)子网可支持多达65534台主机,又太大了。在分类编址方法下,比方说一个有2000台主机的组织通常被分给一个B类(/16)地址。这就导致了B类地址空间的迅速损耗以及所分配的地址空间的利用率低。例如,为具有2000台主机的组织分配了一个B类地址,就具有足以支持多达65534个接口的地址空间,剩下的超过6300个地址却不能被其他组织使用。


如果还不提及另一种类型的IP地址,即IP 广播地址255.255. 255. 255,那将是我们的不负责任。当一台主机发出一个目的地址为255. 255. 255. 255的数据报时,该报文会交付给同一个网络中的所有主机。路由器也会有选择地向邻近的子网转发该报文( 虽然它们通常不这样做)。


此时已经详细地学习IP编址,我们需要知道主机或子网最初是如何得到它们的地址的。我们先看一个组织是如何为其设备得到一个地址块的, 然后再看一个设备(如一台主机)是如何从某组织的地址块中分配到一个地址的。


1.获取一块地址


为了获取一块IP地址用于一个组织的子网,某网络管理员也许首先会与他的ISP联系,该ISP可能会从已分给它的更大地址块中提供一些地址。 例如,该ISP也许自己已被分配了地址块200.23.16.0/20。该ISP可以依次将该地址块分成8个长度相等的连续地址块,为本ISP支持的最多达8个组织中的一个分配这些地址块中的一块,如下所示。(为了便于查看,我们已将这些地址的网络部分加了下划线。)


《计算机网络:自顶向下方法》第四章 续2


尽管从一个ISP获取一组地址是得到一块地址的种方法, 但这不是唯一的方法。显然,必须还有一-种方法供ISP本身得到一块地址。是否有一个全球性的权威机构,它具有管理IP地址空间并向各ISP和其他组织分配地址块的最终责任呢?的确有一个! IP地址由因特网名字和编号分配机构( Internet Corporation for Assigned Names and Numbers,ICANN) [ICANN 2012]管理,管理规则基于[ RFC 2050]。非营利的ICANN组织[ NTIA1998]的作用不仅是分配IP地址,还管理DNS根服务器。它还有一项容易引起争论的工作,即分配城名与解决域名纷争。ICANN向区域性因特网注册机构(如ARIN、RIPE、APNIC和LACNIC)分配地址,这些机构-起形成了ICANN的地址支持组织[ ASO- ICANN2012],处理本地域内的地址分配/管理。


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~