第3章IP地址与子网划分 学习目标: (1) 熟练掌握IPv4和IP地址。 (2) 熟练掌握子网划分的方法。 (3) 了解IPv6。 3.1IP与网络层服务 TCP/IP是20世纪60年代由麻省理工学院(MIT)和一些商业组织为美国国防部开发的,即使遭到核攻击而破坏了大部分网络,TCP/IP依然能够维持有效地通信。ARPANET就是基于该协议开发而成的,并发展成为后来的Internet。TCP/IP同时具备了可扩展性和可靠性的需求。Internet公用化以后,人们开始发现Internet的强大功能。Internet的普遍性是TCP/IP至今仍然被广泛使用的原因。用户经常在没有意识到的情况下就在自己的PC上安装了TCP/IP,从而使该网络协议在全球应用最广。IPv4的32位寻址方案不足以支持越来越多加入Internet的主机和网络数,IPv4正在逐步向IPv6过渡。 1. IP互联网的工作原理 Internet是将提供不同服务的、使用不同技术的、具有不同功能的网络互联起来而形成的。IP精确定义了IP数据报格式,并且对数据寻址和路由、数据报分片和重组、差错控制和处理等做出了具体规定。 IP互联网的工作原理: 假设主机A发送数据到主机B,主机A的应用层形成的数据经传输层送往网络层处理; 网络层将数据封装成IP数据包,并决定发送给最近的路由器; 主机A利用以太网控制程序把IP数据包传送到路由器; 路由器对数据包进行拆封和处理,如果仍需传输,再封装后利用网络层的广域网控制程序进行传输,并经由通信子网传输到主机B。 2. 网络层所提供的服务 网络层提供的服务有以下3种。 (1) 不可靠的数据传递服务。IP不能确定发送的报文是否被正确接收,即不能保证数据包的可靠传递。 (2) 面向无连接的传输服务。从源节点到目的节点的数据包可能经过不同的传输路径,而且在传输过程中数据包有可能丢失,也有可能正确到达。 (3) 尽最大努力投递服务。IP数据包虽是面向无连接的不可靠服务,但IP互联网并不会随意丢弃数据包。只有系统资源用尽、接收数据错误或网络发生故障时,IP互联网才会被迫丢弃数据包。 3. IP互联网的特点 IP互联网的特点如下。 (1) IP互联网隐藏了低层物理网络细节,为用户提供通用的、一致的网络服务。 (2) 一个网络只要通过路由器与IP互联网中任意一个网络相连,就具有访问整个互联网的能力。 (3) 信息可以跨网传输。 (4) 网络中的计算机使用统一的、全局的地址描述法。 (5) IP互联网平等对待互联网中的每一个网络。 3.2IP地址 3.2.1IP地址的结构和分类 根据TCP/IP可知,连接在Internet上的每个设备都必须至少有一个IP地址,它是一个32位的二进制数,也可以用十进制数字形式书写,每8个二进制位为一组,用一个十进制数来表示,即0~255。每组之间用“.”隔开,例如192.168.43.10。 IP地址包括3部分: 地址类别、网络号和主机号(为了方便划分网络,后面将“地址类别”和“网络号”合称“网络号”),如图31所示,这样做的目的是为了方便寻址。 图31IP地址的结构 IP地址中的网络号用于标明不同的网络,而主机号用于标明每一个网络中的主机地址。IP地址主要分为A、B、C、D、E这五类,如图32所示。 图32IP地址分类 (1) A类大型网。高8位代表网络号,后3个8位代表主机号,网络号的最高位必须是0。十进制的第1组数值所表示的网络号范围为0~127,由于0和127有特殊用途,因此,有效的地址范围是1~126。每个A类网络可连接16777214台(224-2)主机。 (2) B类中型网。前2个8位代表网络号,后2个8位代表主机号,网络号的最高位必须是10。十进制的第1组数值范围为128~191。每个B类网络可连65534台(216-2)主机。 (3) C类小型网。前3个8位代表网络号,低8位代表主机号,网络号的最高位必须是110。十进制的第1组数值范围为192~223。每个C类网络可连接254台(28-2)主机。 (4) D类、E类为特殊地址。D类用于组播(多播)传送,十进制的第1组数值范围为224~239。E类保留用于将来和实验使用,十进制的第1组数值范围为240~247。 3.2.2特殊IP地址 IP地址空间中的某些地址已经作为特殊目的而被保留,而且通常并不允许作为主机地址,如表31所示,这些保留地址的规则如下。 表31特殊IP地址 网络号主机号地址类型用途 任意全0网络地址代表一个网段 任意全1直接广播地址特定网段的所有节点 127任意回送地址回送测试 全0私有地址在路由器中作为默认路由 全1有限广播地址本网段的所有节点 (1) 网络地址。网络地址用于表示网络本身。具有正常的网络号部分,而主机号部分为全0的IP地址称为网络地址。如129.5.0.0就是一个B类网络地址。 (2) 直接广播地址。广播地址用于向网络中的所有设备进行广播。具有正常的网络号部分,而主机号部分为全1(即255)的IP地址称为直接广播地址。如129.5.255.255就是一个B类的直接广播地址。 32位全为1(即255.255.255.255)的IP地址称为有限广播地址,用于本网广播。 (3) 回送地址。网络号部分不能以十进制的127开头,在地址中数字127保留给系统作诊断用,称为回送地址(回环地址)。如127.0.0.1用于回路测试。 (4) 私有地址。只能在局域网中使用、不能在Internet上使用的IP地址称为私有IP地址。当网络上的公有地址不足时,可以通过网络地址转换(network address translation,NAT),利用少量的公有地址把大量的配有私有地址的机器连接到公用网络上。 下列地址作为私有IP地址。 10.0.0.0~10.255.255.255,表示1个A类地址。 172.16.0.0~172.31.255.255,表示16个B类地址。 192.168.0.0~192.168.255.255,表示256个C类地址。 3.3子网掩码与子网划分 3.3.1子网掩码 子网掩码用于识别IP地址中的网络号和主机号。子网掩码也是32位二进制数字。在子网掩码中,对应于网络号部分用1表示,主机号部分用0表示。由此可知,A类网络的默认子网掩码是255.0.0.0,B类网络的默认子网掩码是255.255.0.0,C类网络的默认子网掩码是255.255.255.0。还可以用网络前缀法表示子网掩码,即“/<网络号位数>”,如138.96.0.0/16表示B类网络138.96.0.0的子网掩码为255.255.0.0。 通过子网掩码与IP地址的进行按位“与”操作,屏蔽掉主机号,得到网络号。例如: B类地址128.22.25.6,如果子网掩码为255.255.0.0,进行按位“与”操作后,得到网络号为128.22.0.0; 如果子网掩码为255.255.255.0,进行按位“与”操作后,得到网络号为128.22.25.0。 3.3.2子网划分 我们可以发现,在A类地址中,每个网络最多可以容纳16777214台(224-2)主机; 在B类地址中,每个网络最多可以容纳65534台(216-2)主机。在网络设计中一个网络内部不可能有这么多机器; 另外,IPv4面临IP地址资源短缺的问题。在这种情况下,可以采取划分子网的办法来有效地利用IP地址资源。 子网划分是通过借用IP地址的若干位主机位来充当子网地址(子网号),从而将原网络划分为若干子网而实现的,如图33所示。划分子网时,随着子网地址借用主机位数的增多,致使子网的数目也会随之增加,而每个子网中的可用主机数逐渐减少。 图33划分子网 以C类网络为例,原有8位主机位,256个(28)主机地址,默认子网掩码为255.255.255.0。网络管理员可以将这8位主机位分成两部分,一部分作为子网标识,另一部分作为主机标识。作为子网标识的位数为2~6位,如果子网标识的位数为m,则该网络一共可以划分为(2m-2)个子网(注意子网标识不能全为1,也不能全为0),与之对应主机标识的位数为8-m,每个子网中可以容纳(28-m-2)台主机(注意主机标识不能全为1,也不能全为0)。根据子网标识借用的主机位数,可以计算出划分的子网数、子网掩码、每个子网主机数等,如表32所示。 表32C类网络的子网划分 子网位数 (m)划分子网数 (2m-2)子网掩码(二进制)子网掩码(十进制)每个子网的主 机数 (28-m-2) 2211111111.11111111.11111111.11000000255.255.255.19262 3611111111.11111111.11111111.11100000255.255.255.22430 41411111111.11111111.11111111.11110000255.255.255.24014 53011111111.11111111.11111111.11111000255.255.255.2486 66211111111.11111111.11111111.11111100255.255.255.2522 在表32所示的C类网络中,若子网占用7位主机位时,主机位只剩一位,无论设为0还是1,这都意味着主机位是全0或全1。由于主机位全0表示本网络,全1留作广播地址,这时子网实际上没有可用的主机地址,所以主机位至少应保留2位。 B类网络的子网划分如表33所示。 表33B类网络的子网划分 子网位数 (m)划分子网数 (2m-2)子网掩码(二进制)子网掩码(十进制)每个子网的主 机数 (28-m-2) 2211111111.11111111.11000000.00000000255.255.192.016382 3611111111.11111111.11100000.00000000255.255.224.08190 41411111111.11111111.11110000.00000000255.255.240.04094 53011111111.11111111.11111000.00000000255.255.248.02046 66211111111.11111111.11111100.00000000255.255.252.01022 712611111111.11111111.11111110.00000000255.255.254.0510 825411111111.11111111.11111111.00000000255.255.255.0254 951011111111.11111111.11111111.10000000255.255.255.128126 10102211111111.11111111.11111111.11000000255.255.255.19262 11204611111111.11111111.11111111.11100000255.255.255.22430 12409411111111.11111111.11111111.11110000255.255.255.24014 13819011111111.11111111.11111111.11111000255.255.255.2486 141638211111111.11111111.11111111.11111100255.255.255.2522 1. 子网划分的步骤 子网划分的步骤如下。 (1) 确定要划分的子网数目及每个子网的主机数目。 (2) 求出子网数目对应二进制数的位数N及主机数目对应二进制数的位数M。 (3) 将该IP地址的原有子网掩码的地址部分的前N位置1(其余全置0)或后M位置0(其余全置1),即得出该IP地址划分子网后的新子网掩码。 例如,对于B类网络135.41.0.0/16需要划分为20个能容纳200台主机的网络。因为14<20<30,即24-2<20<25-2,所以,子网位只需占用5位主机位就可划分成30个子网,可以满足划分成20个子网的要求。B类网络的默认子网掩码是255.255.0.0,转换为二进制为11111111.11111111.00000000.00000000。现在子网又占用了5位主机位,根据子网掩码的定义,划分子网后的子网掩码应该为11111111.11111111.11111000.00000000,转换为十进制应该为255.255.248.0。现在来看一看每个子网的主机数。子网中可用主机位还有11位(16-5),211=2048,去掉主机位全0和全1的情况,还有2046个(2048-2)主机标识可以分配,而子网能容纳200台主机就能满足需求了。按照上述方式划分子网,每个子网能容纳的主机数目远大于需求的主机数目,造成了IP地址资源的浪费。为了更有效地利用资源,也可以根据子网所需主机数来划分子网。还以上例来说,(128-2)<200<(256-2),即(27-2)<200<(28-2),也就是说,在B类网络的16位主机位中,保留8位主机位,其他的8位(16-8)作为子网位,可以将B类网络138.96.0.0划分成254个(28-2)能容纳254台(256-2)主机的子网。此时的子网掩码为11111111.11111111.11111111.00000000,转换为十进制为255.255.255.0。 在上例中,分别根据子网数和主机数划分子网,从而得到了两种不同的结果,都能满足需求。实际上,子网占用5~8位主机位时所得到的子网都能满足上述需求。所以,在实际工作中,应按照一定的原则来决定子网位占用几位主机位。 2. 划分子网时的注意事项 (1) 在划分子网时,不仅要考虑目前的需要,还应了解将来需要多少子网和主机。子网掩码使用较多的主机位可以得到更多的子网,节约了IP地址资源,若将来需要更多子网时,不必再重新分配IP地址,但每个子网的主机数量有限; 反之,子网掩码使用较少的主机位,每个子网的主机数量允许有更大的增长,但可用子网数量有限。 (2) 一般来说,一个网络中的节点数太多,网络会因为广播通信而饱和。所以,网络中的主机数量的增长是有限的,也就是说,在条件允许的情况下,应将更多的主机位用于子网位中。 可见,子网掩码的设置关系到子网的划分。子网掩码设置得不同,所得到的子网就不同,每个子网能容纳的主机数目也不同。若设置错误,可能会导致数据传输错误。 3. 划分子网的优点 划分子网具有以下优点。 (1) 充分利用IP地址。由于A类网络或B类网络的地址空间太大,造成在不使用路由设备的单一网络中无法使用全部IP地址,比如,对于一个B类网络172.17.0.0,可以有65534台(216-2)主机,这么多的主机在单一的网络下是无法工作的。因此,为了能更有效地利用IP地址空间,有必要把可用的IP地址分配给更多较小的网络。 (2) 简化管理。划分子网还可以简化网络管理。当一个网络被划分为多个子网时,每个子网中的站点数量就会大幅减少,每个子网就变得更加容易管理和控制。每个子网的用户、计算机及其子网资源可以让不同的管理员进行管理来减轻单人管理大型网络的负担。 (3) 提高网络性能。在一个网络中,随着网络用户和主机数量的增加,网络通信也将变得繁忙。而繁忙的网络通信很容易导致冲突、丢失数据包及数据包重传,因而降低了主机之间的通信效率。而如果将一个大型的网络划分为若干个子网,并通过路由器将其连接起来,就可以减少网络拥塞。这些路由器就像一堵墙把子网隔离开来,使本地的通信不会转发到其他子网中。使同一个子网中主机之间进行广播和通信,只能在各自的子网中进行。 3.4IP数据报格式 IP数据报分为报文头和数据区两大部分,其中报文头只是为了正确传输高层(即传输层)数据而增加的控制信息,数据区包括高层需要传输的数据。 IPv4数据报格式如图34所示。 图34IPv4数据报格式 1. IPv4数据报的主要字段 (1) 版本。占4位,指明IP的版本号(一般是4,即IPv4),不同IP版本规定的数据格式不同。 (2) 报头长度。占4位,指明数据报报头的长度。以32位(即4字节)为单位,当报头中无可选项时,报头的基本长度为5个单位(即20字节)。 (3) 服务类型。占8位,其中3位用于标识优先级,4个标志位: D(延迟)、T(吞吐量)、R(可靠性)和C(代价),另外一位未用。 (4) 总长度。占16位,数据报的总长度,包括头部和数据,以字节为单位。 (5) 标识。占16位,源主机赋予IP数据报的标识符,目的主机利用此标识来判断此分片属于哪个数据报,以便重组。 当IP分组在网上传输时,可能要跨越多个网络,但每个网络都规定了一帧最多携带的数据量(此限制称为最大传输单元MTU),当长度超过MTU时,就需要将数据分成若干个较小的部分(分片),然后独立发送每个分片。目的主机接收到分片后的数据报后,对分片进行重新组装(重组)。 (6) 标志。占3位,告诉目的主机该数据报是否已经分片,是否是最后的分片。 (7) 片偏移。占13位,指示本片数据在初始IP数据报(未分片时)中的位置,以8字节为单位。 (8) 生存时间(time to live,TTL)。占8位,设计一个计数器,当计数器值为0时,数据报被删除,避免循环发送。 (9) 协议。占8位,指示传输层所采用的协议,如TCP、UDP等。 (10) 首部校验和。占16位,只校验数据报的报头,不包括数据部分。 (11) IP地址。各占32位的源IP地址和目的IP地址分别表示数据报发送者和接收者的IP地址,在整个数据报传输过程中,此两字段的值一直保持不变。 (12) 可选字段(长度可变)。主要用于控制和测试。既然是选项,用户可以使用,也可以不使用,但实现IP的设备必须能处理IP选项。 (13) 填充。在使用选项的过程中,如果造成IP数据报的报头不是32位的整数倍,这时需要使用“填充”字段凑齐。 (14) 数据部分。本域常包含送往传输层的TCP或UDP数据。 2. IP选项 IP选项主要有以下3个。 (1) 源路由。IP数据包穿越互联网所经过的路径由源主机指定,包括严格路由选项和松散路由选项。严格路由选项规定IP数据包要经过路径上的每一个路由器,相邻的路由器之间不能有其他路由器,并且经过的路由器的顺序不能改变。松散路由选项给出数据包必须要经过的路由器列表,并且要求按照列表中的顺序前进,但是在途中也允许经过其他的路由器。 (2) 记录路由。记录IP数据包从源主机到目的主机所经过的路径上各个路由器的IP地址,用于测试网络中路由器的路由配置是否正确。 (3) 时间戳。记录IP数据包经过每一个路由器时的时间(以ms为单位)。 3.5IPv6 IPv4定义IP地址的长度为32位,Internet上的每台主机至少分配了1个IP地址,同时为提高路由效率将IP地址进行了分类,从而造成了IP地址的浪费。网络用户和节点的增长不仅导致IP地址的短缺,也导致了路由表的迅速膨胀。 针对IPv4的不足,国际互联网工程任务组(Internet engineering task force,IETF)的IPng工作组在1994年9月提出了一个正式的草案the recommendation for the IP next generation protocol,1995年年底确定了IPng的协议规范,并称为“IP版本6(IPv6)”,以与现在的IP版本4相区别。 1. IPv6的优点 与IPv4相比,IPv6主要有以下的优点。 (1) 超大的地址空间。IPv6将IP地址从32位增加到128位,所包含的IP地址数目高达2128个(约为3.4×1038)。如果所有地址平均散布在整个地球表面,大约每平方米有1024个地址,远超过了地球上的人数。 (2) 更好的首部格式。IPv6采用了新的首部格式,将选项与基本首部分开,并将选项插入到首部与上层数据之间。首部具有固定的40字节的长度,简化和加速了路由选择的过程。 (3) 增加了新的选项。IPv6有一些新的选项可以实现附加的功能。 (4) 允许扩充。留有充分的备用地址空间和选项空间,当有新的技术或应用需要时允许协议进行扩充。 (5) 支持资源分配。在IPv6中删除了IPv4中的服务类型,但增加了流标记字段,可用来标识特定的用户数据流或通信量类型,以支持实时音频和视频等需实时通信的通信量。 (6) 增加了安全性考虑。扩展了对认证、数据一致性和数据保密的支持。 2. IPv6 地址 1) IPv6的地址表示 IPv6地址采用128位二进制数,其表示格式有以下几种。 (1) 首选格式: 按16位一组,每组转换为4位十六进制数,并用冒号隔开。例如,“21DA:0000:0000:0000:02AA:000F:FE08:9C5A”。 (2) 压缩表示: 一组中的前导0可以不写; 在有多个0连续出现时,可以用一对冒号取代,且只能取代一次。如上面地址可表示为“21DA:0:0:0:2AA:F:FE08:9C5A”或“21DA::2AA:F:FE08:9C5A”。 (3) 内嵌IPv4地址的IPv6地址: 为了从IPv4平稳过渡到IPv6,IPv6引入一种特殊的格式,即在IPv4地址前置96个0,保留十进制点分格式,如“::192.168.0.1”。 2) IPv6掩码 与无类别域间路由(classless interdomain routing,CIDR)类似,IPv6掩码采用前缀表示法,即表示成: IPv6地址/前缀长度,如“21DA::2AA:F:FE08:9C5A/64”。 3) IPv6地址类型 IPv6地址有单播、组播和任播3种类型。IPv6取消了广播类型。 (1) 单播地址。单播地址是点对点通信时使用的地址,该地址仅标识一个接口。网络负责将向单播地址发送的分组发送到这个接口上。 (2) 组播地址。组播地址(前8位均为“1”)表示主机组,它标识一组网络接口,发送给组播的分组必须交付到该组中的所有成员。 (3) 任播地址。任播地址也表示主机组,但它用于标识属于同一个系统的一组网络接口(通常属于不同的节点),路由器会将目的地址是任播地址的数据包发送给距离本地路由器最近的一个网络接口。如移动用户上网就需要因地理位置的不同而接入离用户距离最近的一个接收站,这样才可以使移动用户在地理位置上不受太多的限制。 当一个单播地址被分配给多于1个的接口时,就属于任播地址。任播地址从单播地址中分配,可使用单播地址的任何格式,从语法上任播地址与单播地址没有任何区别。 4) 特殊IPv6地址 当所有128位都为0时(即0:0:0:0:0:0:0:0),如果主机不知道自己的IP地址,在发送查询报文时用作源地址。注意该地址不能用作目的地址。 当前127位为0,而第128位为1时(即0:0:0:0:0:0:0:1),作为回送地址使用。 当前96位为0,而最后32位为IPv4地址时,可以作为内嵌IPv4地址的IPv6地址使用。 3. IPv6的数据报格式 IPv6的数据报由一个IPv6的基本报头、多个扩展报头和一个高层协议数据单元组成。基本报头长度为40字节。一些可选的内容放在扩展报头部分实现,这种设计方法可提高数据报的处理效率。IPv6数据报格式不向下兼容IPv4。 IPv6数据报格式如图35所示。 图35IPv6数据报格式 IPv6数据报的主要字段有以下几个。 (1) 版本。占4位,取值为6,表示是IPv6协议。 (2) 通信流类别。占8位,表示IPv6的数据报类型或优先级,以提供区分服务。 (3) 流标签。占20位,用来标识这个IP数据报属于源节点和目的节点之间的一个特定数据报序列。流是指从某个源节点向目的节点发送的分组群中,源节点要求中间路由器进行特殊处理的分组。 (4) 有效载荷长度。占16位,是指除基本报头之外的数据,包含扩展报头和高层数据。 (5) 下一个报头。占8位,如果存在扩展报头,该字段的值用于指定下一个扩展报头的类型; 如果无扩展报头,该字段的值用于指定高层数据的类型,如TCP(6)、UDP(17)等。 (6) 跳数限制。占8位,指IP数据报被丢弃之前可以被路由器转发的次数。 (7) 源IP地址。占128位,指发送方的IPv6地址。 (8) 目的IP地址。占128位,在大多情况下,该字段为最终目的节点的IPv6地址,如果有路由扩展报头,目的地址可能为下一个转发路由器的IPv6地址。 (9) IPv6扩展报头。扩展报头是可选报头,紧接在基本报头之后,IPv6数据报可包含多个扩展报头,而且扩展报头的长度并不固定,IPv6扩展报头代替了IPv4报头中的选项字段。 IPv6的基本报头为固定40字节长,一些可选报头信息由IPv6扩展报头来实现。IPv6的基本报头中“下一个报头”字段指定第一个扩展报头类型。每个扩展报头中都包含“下一个报头”字段,用于指定后继扩展报头类型。最后一个扩展报头中的“下一个报头”字段指定高层协议的类型。 扩展报头有以下几种。 ① 逐跳选项报头。类型为0,由中间路由器处理的扩展报头。 ② 目的站选项报头。类型为60,用于携带由目的节点检查的信息。 ③ 路由报头。类型为43,用于指定数据报从数据源到目的节点传输过程中需要经过一个或多个中间路由器。 ④ 分片报头。类型为44,IPv6对分片的处理类似于IPv4,该字段包括数据报标识符、分片号和是否终止标识符。在IPv6中,只能由源主机对数据报进行分片,源主机对数据报分片后要加分片选项扩展报头。 ⑤ 认证报头。类型为51,用于携带通信双方进行认证所需的参数。 ⑥ 封装安全有效载荷报头。类型为52,与认证报头结合使用,也可单独使用,用于携带通信双方进行认证和加密所需的参数。