IP地址和VLSM和CIDR

早期的ip地址划分:

最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。

IP地址是一个32位的二进制字符,为了方便人类的记忆,所以,通常人们会将二进制的IP地址表示成十进制的格式,没每八位分割一下,即分成四段。(后来数字也不太容易记忆,所以,人们就用字符(域名,例如:www.jd.com)来表示IP地址,每次上网的时候,通过DNS服务器,将字符(域名)解析成IP地址,然后才能上网,这个暂且不提。)

网络ID:用来标识计算机所处的网段,网络ID相同的计算机不需要通过路由器连接就能够直接通信,我们把网络ID相同的计算机组成一个网络称之为本地网络(网段);网络ID不相同的计算机之间通信必须通过路由器连接,我们把网络ID不相同的计算机称之为远程计算机。网络ID是IP地址与子网掩码进行与运算获得,即将IP地址中表示主机ID的部份全部变为0,表示网络ID的部份保持不变。

主机ID:用来标识计该台主机在网段中的位置。

IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。

A类:A类IP地址:一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。

0 000 0000 - 0 111 1111: 0-127

网络数: 2^7(1~126)(0:用于表示未知地址,127表示回环地址,两个都不能用)

每个网络中的主机数: 2^24-2

注意:主机位全0,表示网络ID,防止发生混淆;

注意:主机位全1表示本网段内的广播地址。所以每个网段中的第一个与最后一个都不能使用。

默认子网掩码: 255.0.0.0

私网地址:10.0.0.0

B类:B类IP地址:一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。

10 00 0000 - 10 11 1111: 128-191

网络数: 2^14(128~191)

每个网络中的主机数: 2^16-2

默认子网掩码: 255.255.0.0

私网地址: 172.16.0.0-172.31.0.0

C类:C类IP地址:一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。 

110 0 0000 - 110 1 1111: 192-223

网络数: 2^21(192~223)

每个网络中的主机数: 2^8-2

默认子网掩码: 255.255.255.0

私网地址: 192.168.0.0-192.168.255.0

D类:D类地址用于多点广播(Multicast):D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。224.0.0.0到239.255.255.255用于多点广播 。

1110 0000 - 1110 1111: 224-239

E类:240-255:ping十进制的ip地址也可以ping通。 

特殊地址:

(0.0.0.0)地址对应于未知地址。指在本机的路由表里没有特定条目指明如何到达。一般用户主机为了获得一个可用的IP地址,就给DHCP服务器发送IP分组,并用这样的地址作为源地址,目的地址为255.255.255.255(因为主机此时并没有自己的确定的IP地址,防止自己随便定的IP地址与别的主机发生冲突。)。

(255.255.255.255)是当前子网的广播地址。这个地址指本网段内(同一个广播域)的所有主机,该地址用于主机配置过程中IP数据包的目的地址(例如通过DHCP服务器获取本机的IP地址的时候,由于不知道DHCP服务器的IP地址,便会通知数据链路层,发送广播包,来寻找DHCP),这时主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也还不知道。在任何情况下,路由器都会禁止转发目的地址为受限的广播地址的数据包,这样的数据包仅会出现在本地网络中。

(127...*)是一个A类地址,但是它已被保留作闭环(look back ),一般用作测试之用而不能分配给一个网络。127中的所有地址都代表发送方自己。

(169.254..)仅限于windows使用,如果你的主机是使用DHCP功能,来自动获得一个IP地址的。那么当你的DHCP服务器发生故障或响应时间太长而超出系统规定的一个时间,Windows系统会为你分配这样一个地址。如果你发现你的 主机IP地址是个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了,linux没有这种现象。

(私有地址)在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: 

A类地址:10.0.0.0~10.255.255.255

B类地址:172.16.0.0~172.31.255.255 (16个B类)

C类地址:192.168.0.0~192.168.255.255

私有地址,这些地址被大量用于企业内部网络中。一些宽带路由器,也往往使用192.168.1.1作为缺省地址。私有网络由于不与外部互连,因而可能使用随意的IP地址。保留这样的地址供其使用是为了避免以后接入公网时引起地址混乱。使用私有地址的私有网络在接入Internet时,要使用地址翻译 (nat),将私有地址翻译成公用合法地址。在Internet上,这类地址是不能出现的。

(直接广播地址)主机位全为1,网段中的最后一个地址为直接广播地址。主机使用这种地址把一个IP数据报发送到本地网段的所有设备上,路由器会转发这种数据报到特定网络上的所有主机。注意:这个地址在IP数据报中只能作为目的地址。另外,直接广播地址使一个网段中可分配给设备的地址数减少了1个。

(子网中的第一个IP)主机位全为0的地址,用作标识网络ID,一个网段中可分配给设备的地址数会减少1个。

(网络位为0的IP地址)当某个主机向同一网段上的其他主机发送报文时就可以使用这样的地址,分组也不会被路由器转发。比如12.12.12.0/24这个网络中的一台主机12.12.12.2/24在与同一网络中的另一台主12.12.12.8/24通信时,目的地址可以是0.0.0.8。

CIDR:无类域间路由

由于早期的IP地址的划分会浪费太多的IP地址,所以,现在都是用CIDR表示法,为此引入了子网掩码的概念,即网络位的个数可以任意指定。该方法兼容早期的IP划分方法。

CIDR表示方法:IP地址/网络ID的位数(网段的划分更加灵活)

子网掩码:子网掩码的作用,就是将某个IP地址划分成网络地址和主机地址两部分。子网掩码是一个32位地址,用于屏蔽IP地址的一部分,并说明该IP地址是在局域网上,还是在远程网上,具体方法待会儿再讲。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码的二进制格式中的网络位全为1。这样二进制格式的子网掩码和二进制的IP地址进行“与”运算,可以得出该IP地址的网络位。

允许的子网掩码的值:

10000000-128;11000000-192;11100000-224;11110000-240;

11111000-248;11111100-252;11111110-254;11111111-255;

最小IP:主机ID不能全为0,全为0表示网络ID

最大IP:主机ID不能全为1,全为1表示本地广播

CIDR技术用子网掩码中连续的1部份表示网络ID,连续的0部份表示主机ID。比如,网络中包含2000台计算机,只需要用11位表示 主机ID,用21位表网络ID,则子网掩码表示为11111111.11111111.11100000.00000000,转换为十进制则为 255.255.224.0。此时,该网络将包含2046台计算机,既不会造成IP地址的浪费,也不会利用路由器连接网络,增加额外的管理维护量。

例1:192.168.23.35/21计算子网的网络ID、子网掩码、起止IP地址?

子网掩码:11111111 11111111 11111-000 00000000(子网掩码)=255.255.248.0(子网掩码的第二种表示方法。)

网络ID:192.168.16.0(192.168.00010111.0和子网掩码进行“与”运算。)

起始IP地址:192.168.16.1(192.168.16.0是本网端中的第一个IP,可是他已经表示网络ID了,所以,为了避免与该IP地址与网络ID混淆,所以,起始IP为192.168.16.1。)

结束IP地址:192.168.23.254(192.168.00010(网络位)-111.11111110(主机位)主机ID不能全为1,全为1表示本地广播。)

例2:将163.135.0.0/20划分为16个子网,计算第一个和最后一个子网的网络ID、子网掩码、起止IP地址?

第1步:用CIDR表示163.135.0.0/20,则子网掩码为255.255.240(11110000).0。

第2步:第一网络ID(子网掩码与IP地址与运算):163.135.16.0(163.135.0000-0000.0)

第一个IP地址:163.135.0.1

结束IP地址:163.135.15.254

第3步:第二网络ID:163.135.16.0(163.135.0000-1111.0)

第一个IP地址:163.135.16.1

结束IP地址:163.135.31.254

例3:192.168.10.14/28,192.168.10.15/28,192.168.10.16/28,192.168.10.31/28哪些是合法IP,哪些是非法IP地址?

答案:主机ID全为0和主机ID全为1的为非法IP地址:192.168.10.15/28、192.158.10.16/28、192.168.10.31/28都是非法IP地址。

例4:192.168.10.14/28,192.168.10.15/28,192.168.10.16/28哪个不是同一网段?

网络ID相同的就属于同一网段,则192.168.10.16/28不属于同一网段。(192.168.10.14/28,192.168.10.15/28属于非法IP,但是他仍然属于192.168.0.0网段)

例5:172.168.34.56/20,一共划分为了多少个子网,各子网可以包含多少台主机。

172.168.34.56是一个B类地址,B类地址用16位表示网络ID,题目中20位表示网络ID,则子网位数为4位,那么子网就有24次个(即从0000、0001到1111的16种变化)。由于IP地址是32位,用20位表示网络ID,则主机ID的位数为12位,则每个子网可以包含212-2个IP地址,即可以包含4096个IP地址。

划分子网:将一个大网络(主机ID位多)划分多个小的网络(主机ID位少),网络ID向主机ID借位,络ID变多,主机ID变少(划分子网,会减少可用IP地址)

注意:由于人们习惯了将IP地址分成,四段十进制的表示格式,所以,借过位的IP地址,依然是四段。例如:12.100.100.100/8;表示该IP的子网掩码有8位。

该IP的二进制表示格式为:00001010.01100100.00000000.00000000/11111111.00000000.00000000.00000000

即该IP的网络位(二进制)为:00001010.00000000.00000000.00000000

即该IP的网络位(十进制)为:12.0.0.0

如果将该网络划分成4个子网,那么就需要借2个主机位作为网络位来使用,具体方法为:

00000000.00-000000.00000000.00000000(前面的黑色部分为网络位)

第一个子网的网络位为(二进制):00001010.00-000000.00000000.00000000(第一个网段,即借来的网络位全为0)

第一个子网的网络位为(十进制):12.0.0.0

最后一个子网的网络位为(二进制):00001010.11-000000.00000000.00000000(最后一个网段,即借来的网络位全为1)

最后一个子网的网络位为(十进制):12.192.0.0

划分超网:

将多个小网合并一个大网,主机ID向网络ID借位(找共同点)
公式:

1、主机数=2^主机ID位-2

2、网络数=2^可变的网络ID位

3、网络ID=IP和netmask 相与

4、划分子网数=2^网络ID向主机ID借的位数

5、划分子网损失IP数=2*(划分子网数-1)(因为每段子网中的第一个IP地址用来表示网络位,而最后一个IP地址都被用来表示本网段中的广播。)

注意:

子网掩码:二进制的表示格式中,网络位全为1;

网络位:用于表示该网段的地址;

主机位:用于表示该主机位于该网段中的地址;

——————————————习题—————————————————

已知:CIDR:172.17.0.100/26,求:

1、netmask子网掩码?255.255.255.192

2、主机数多少个?2^(32-26)-2=62

3、网络ID值?(172.17.0.64/26)172.17.0.01-000000

已知:CIDR:110.110.244.100/22,求:

1、netmask?255.255.252.0

2、主机数多少个?2^(32-22)-2

3、网络ID值?(110.110.244.0/22)110.110.111101-00.0

已知:IP:10.100.222.100(子网掩码:255.255.248.0),求:

1、CIDR表示法?10.100.222.100/21

2、主机数多少个?2^(32-21)-2=2046

3、网络ID值?10.100.216.0/21

已知:172.200.249.200/22,划分16个子网(需要借4个主机位作为网络位),求:

1、每个子网络netmask?255.255.255.192,netid 26(子网的网络位:255.255.255.11-000000)

2、每个子网络的主机数?2^(32-26(=22+4))-2=62

3、最小子网的netid?172.200.248.0/26(最小子网就是,借来的网络位全为0)

4、最大子网的IP范围?172.200.251.193-172.200.251.254(最大子网就是,借来的网络位全为1)

已知:10.0.0.0/8 划分32子网,第10个子网10.72.0.0/13是河南省,对此子网划分64个子网。分析:首先10.0.0.0的网络位有8个,划分为了32个子网,需要借5个网络位,其中第十个子网为(10.01001-000.0.0)(注意:是第十个)网络位为:10.72.0.0;所以,本题的含义就是,对10.72.0.0/13划分64个子网。求:

1、每个子网络的netmask?255.255.224.0

2、每个子网中的主机数?2^(32-19)-2

3、最小子网的netid?10.72.0.0

4、最大子网的IP范围?10.79.224.1~10.79.255.254(10.01001-111.111-00000.1~10.01001-111.111-11111.254)

问题:A主机的IP地址为192.168.1.100/24,B主机的IP地址为192.168.2.100/16,请问两个主机可以相互通信吗?

答案:在通讯之前,主机首先需要判断目标IP是不是跟自己在一个网段中(因为源主机只知道目标主机的IP地址,并不知道他的子网掩码,所以,源主机会将目标IP与自己的子网掩码进行比较,得出一个网络ID)。

A主机发起通讯:A经过计算,会得出B主机跟自己不在一个网段中,会将将ping包发送给网关(路由器):目标主机不可到达。

B主机发起通讯:B经过计算,会得出A主机跟自己在一个网段中,B发出ping包,A可以收到,但是A找不到B:超时。

问题:211.201.188.199/20;211.201.180.199/20;这两个主机可以通讯吗?答案:在,因为两个主机在一个网段中,网络ID:211.201.176.0

引自:CSDN 作者:han156
原文:https://blog.csdn.net/han156/article/details/77817031
转载只为自己查起来方便

上一篇:《Altium Designer 14电路设计与仿真从入门到精通》——1.2 Altium Designer 14的运行环境


下一篇:MySQL的索引是什么?怎么优化?