TCP/IP(3.4)—划分子网,子网掩码,构造超网
2014-05-17 16:18
357 查看
划分子网
1从两级IP地址到三级IP地址
IP地址的不合理:A IP 地址空间利用率有时很低。一个A类地址网络可连接主机超过1000万,可是经常达不到这样的数量
B 给每一个物理网络分配一个网络号会使路由表变的太大而使网络性能变坏。互联网中的网络数越多,路由器中的路由表的项目数也就越多。
C 两级IP地址不够灵活。对于新添加的网络,必须要先在因特网管理机构申请网络后才能上网,而不能灵活地增加原来的网络
为了解决这个问题,1985年增加了 子网络字段,使两级IP变成了三级IP。这种做法就叫做划分子网或者子网寻址或者子网路由选择。
2. 划分子网的基本思路
<1>. 一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网( subnet )。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。<2>. 划分子网的方法是从网络的主机号借用若干位作为子网号 subnet-id,当然主机号也就相应减少了同样的位数。于是两级IP地址在本单位内部就变成三级IP地址:网络号、子网号和主机号。也可以用以下记法来表示:
IP地址 ::= { <网络号>, <子网号>, <主机号>}
<3>. 凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付给目的主机。
下图说明了划分子网的概念:
某单位具有一个B类地址,网络号是145.13,凡是145.13.x.x的数据报都被送到这个路由器R1。先把它分为三个子网,假定子网占八位,主机就只剩八位。整个网络对外仍然只是一个网络。其地址仍然是145.13.0.0. 路由器在收到外来数据后,再根据数据报的目的地址把它转发给相应的子网。
![](http://images.cnitblog.com/i/534926/201405/171005368282737.jpg)
![](http://images.cnitblog.com/i/534926/201405/171005462186574.jpg)
子网掩码
假定一个数据报(目的地址是145.13.3.10)已经到达了路由器R1,那么这个路由器如何把它转发到子网145.13.3.0呢从IP数据报的首部并不知道源主机或者目的主机是否进行了子网划分。所以要通过子网掩码
上图a中IP地址为145.13.3.10的主机本来是两级IP,图B是同一主机的三级IP结构、也就是说,从原来的16位的主机地址变成了8位。注意:现在子网号为3的网络地址是145.13.3.0
下图表示R1把子网掩码和收到的数据报的目的IP 145.13.3.10逐位相与(AND),得到所要的子网IP
![](http://images.cnitblog.com/i/534926/201405/171017185626288.jpg)
1.如何划分子网
比如说对于B类网络,子网号的位数没有0,1,15,16,这四种情况,因为没有意义。根据因特网标准协议RFC950,子网号不能为全1或者全0,但是随着无分类路由选择CIDR的广泛使用,现在全1和全0的子网号也是可以使用的。但是要慎重,要弄清自己路由器的路由选择软件是否支持全1和全0这种用法。
2.没有子网时,为什么要用子网掩码
为了便于查找理由表。因特网规定,所有的网络必须使用子网掩码,而且在路由器的路由表中必须使用子网掩码这一项。如果一个网络不划分子网,那么子网掩码就是默认子网掩码。默认子网掩码中的1和Ip网络中网络字段正好相对。3.划分子网带来的问题
划分子网虽然增加了灵活性,但是减少了能够连接在网络上的主机数量。4. 使用子网时分组的转发
使用子网划分时,路由表必须包含以下三项内容:目的网络地址、子网掩码和下一跳地址。
在划分子网的情况下,路由表转发分组的算法如下:
<1>. 从收到的数据报的首部提取目的IP地址 D 。
<2>. 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D 逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还要把
D 转换成物理地址,把数据报封装成帧再发送出去),转发任务结束。否则就是间接交付,执行<3>。
<3>. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行<4>。
<4>. 对路由表中的每一行(目的网络地址、子网掩码、下一跳地址),用其中的子网掩码和D 逐位相“与”(AND操作),其结果为
N 。若 N 与该行的目的网络地址匹配,则数据报传送给指明的下一跳路由器;否则,执行<5>。
<5>. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行<6>。
<6>. 报告转发分组出错。
![](http://images.cnitblog.com/i/534926/201405/171034563288674.jpg)
主机H1首先要进行的操作时把本子网的子网掩码 255.255.255.128与目的IP 128.30.33.138进行与操作。得到128.30.33.128,他不等于H1的网络地址,所以不在一个子网上。因此H1把分组交互给子网上的默认路由器R1
5.子网间如何通信
构造超网(无分类编址路由选择CIDR)
网络前缀划分子网在一定程度上缓解了一部分问题,但是:
1. B类地址在1992年已经分配了近一半,眼看就要分配完了
2. 因特网主干网上的路由表中的项目数急剧增加
3. 整个IPV4的地址空间最终将全部耗尽。
IETF很快研究出无分类编址CIDR来解决前面两个问题,最后一个问题只有IPV6来解决了
在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码VLSM ( Variable Length Subnet Mask ) 可进一步提高IP地址资源的利用率。在VLSM的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择CIDR( Classless Inter-Domain Routing )。
1. CIDR两个主要特点
<1>. 消除了传统的A类、B类和C类地址以及划分子网的概念。CIDR把32位的IP地址划分为两个部分。前面的部分是“网络前缀”用来指明网络,后面的部分则用来指明主机。因此CIDR使IP地址从三级编址又回到了两级编址,但这已是无分类的两级编址。它的记法是:
IP地址 ::= {<网络前缀>, <主机号>}
CIDR还使用“斜线记法”,或称为CIDR记法,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数。
128.14.35.7/20 =
10000000 00001110 00100011 00000111
<2>. CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
最小地址 128.14.32.010000000 00001110 00100000 00000000
最大地址 128.14.47.25510000000 00001110 00101111 11111111
这个地址块共有 2^12-2 个地址,我们可使用地址块中的最小地址和网络地址块的位数指明这个地址块。例如,上面的地址块可记为 128.14.32.0/20,也可简称为“ /20 地址块 ”。
CIDR使用32位的地址掩码,由一串1和一串0组成,而1的个数是网络前缀的长度。例如,/20 地址块的地址掩码是: 11111111 11111111 11110000 00000000。斜线记法中,斜线后面的数字就是地址掩码中1的个数。
由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合( route aggregation ),它使得路由表中的一个项目可以表示原来传统分类地址的很多个路由。路由聚合也称为构成超网。
CIDR记法有很多形式。
10.0.0.0/10 可简写为 10/10。
00001010 00* (意思是*号前是网络前缀,*表示主机号,可以任意值)
CIDR可更加有效地分配IPv4的地址空间。
2.CIDR如何分配地址
下图是最常见的CIDR地址块,网络前缀小于13或者大于27都较少用到。![](http://images.cnitblog.com/i/534926/201405/171436359845601.jpg)
可以看出,每一个CIDR地址块中的地址数一定是2的整数次密。除了最后几行外,每个地址块都包含多个C类,这就是构造超网的来源
下面是一个例子:
如果某ISP有一个地址块206.0.64.0/18,现某大学需要800个地址,从上图,可知应该分一个206.0.68.0/22地址块
![](http://images.cnitblog.com/i/534926/201405/171435391877316.jpg)
从图中可以看出地址聚合的概念。该ISP含有64个C类网络,如果不采用CIDR技术,则在该ISP的路由器交换路由信息的每一个路由器的路由表中,就需要有64个项目。但采用地址聚合后,就只需要一个项目就能找到该ISP
3. 选择路由—最长前缀匹配
这种方式在查找路由表时,可能会得到不止一个匹配结果比如给目标是四系的一个地址206.0.71.130,把目标与路由表中项目掩码匹配
与大学项目 11111111 11111111 11111100 00000000 得到 206.0.68.0/22 匹配
与4系项目 11111111 11111111 11111111 10000000 得到206.0.71.128/25 匹配
选择的标准是,从匹配结果中选择具有最长网络前缀的路由。就是最长前缀匹配
如果ISP中同时具有大学和四系这两个项目,那么该数据就不会经过大学路由器,而是直接发往四系网络。
4. 为什么使用CIDR
1.使用CIDR的一个好处是更加有效地分配IPV4的地址空间。可以根据用户需要适当分配适当大小的CIDR地址块。如果只能以/8,/16,/24来分配,就很不方便。2. 如果网络一开始就使用CIDR,可以按照网络所在的地理位置来分配地址块。这样就大大减少了路由表中的路由项目。例如,我们将世界分为四大区,每一区分一个块:
![](http://images.cnitblog.com/i/534926/201405/171449169217839.jpg)
上面的每一个地址块都包含约3200万个地址,这种分配地址的方式使得IP与地理位置相关联。好处是大大压缩路由表中的项目数。例如,从中国发往北美的项目数,都要先交给美国的一个路由器,这样在路由表中只有一个项目就可以了。
相关文章推荐
- 【TCP/IP】子网掩码与子网划分
- IP协议详解之子网寻址、子网掩码、构造超网
- TCP/IP 3.4内部和外部网关协议
- 划分子网和构造超网
- TCP/IP 子网掩码浅析
- 构造网络数据包(TCP,IP等)时其中checksum字段的处理
- IP协议详解之子网寻址、子网掩码、构造超网
- IP、子网掩码、TCP和UDP协议包头、常见端口号
- IP协议详解之子网寻址、子网掩码、构造超网
- 第四章 网络层 4.3划分子网和构造超网
- linux原始套接字(3)-构造IP_TCP发送与接收
- TCP/IP - 3.4 设置地址和端口
- 诊断排除基本的TCP/IP网络问题(一)
- TCP/IP 详解 卷1 ch17 TCP: Transmission Control Protocol
- 学习tcp/ip应记住的东西
- 网络协议TCP/IP、IPX/SPX、NETBEUI简介
- TCP/IP 协议相关
- TCP/IP传输层以下的处理
- TCP/IP (三) ---- 网络访问层