如何计算IP地址及CIDR

  如何计算IP地址及CIDR

  一、 IP地址概念

  IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段;主 机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示,中间用“.”分隔。比如,192.168.0.1。

  补充(IPv6):前面所讲的32位IP地址称之为IPv4,随着信息技术的发展,IPv4可用IP地址数目已经不能满足人们日常的需要,据权威机 构预测到2010年要充分应用信息技术,每个人至少需要10个IP地址,比如:计算机、笔记本、手机和智能化冰箱等。为了解决该问题开发了IPv6规 范,IPv6用128位表示IP地址,其表示为8组4位16进制数,中间为“:”分隔。比 如,AB32:33ea:89dc:cc47:abcd:ef12:abcd:ef12。

  二、IP地址分类

  为了方便IP寻址将IP地址划分为A、B、C、D和E五类,每类IP地址对各个IP地址中用来表示网络ID和主机ID的位数作了明确的规定。当主机ID的位数确定之后,一个网络中是多能够包含的计算机数目也就确定,用户可根据企业需要灵活选择一类IP地址构建网络结构。

  A类

  A类地址用IP地址前8位表示网络ID,用IP地址后24位表示主机ID。A类地址用来表示网络ID的第一位必须以0开始,其他7位可以是任意值, 当其他7位全为0是网络ID最小,即为0;当其他7位全为1时网络ID最大,即为127。网络ID不能为0,它有特殊的用途,用来表示所有网段,所以网络 ID最小为1;网络ID也不能为127;127用来作为网络回路测试用。所以A类网络网络ID的有效范围是1-126共126个网络,每个网络可以包含 224-2台主机。

  B类

  B类地址用IP地址前16位表示网络ID,用IP地址后16位表示主机ID。B类地址用来表示网络ID的前两位必须以10开始,其他14位可以是任 意值,当其他14位全为0是网络ID最小,即为128;当其他14位全为1时网络ID最大,第一个字节数最大,即为191。B类IP地址第一个字节的有效 范围为128-191,共16384个B类网络;每个B类网络可以包含216-2台主机(即65534台主机)。

  C类

  C类地址用IP地址前24位表示网络ID,用IP地址后8位表示主机ID。C类地址用来表示网络ID的前三位必须以110开始,其他22位可以是任 意值,当其他22位全为0是网络ID最小,IP地址的第一个字节为192;当其他22位全为1时网络ID最大,第一个字节数最大,即为223。C类IP地 址第一个字节的有效范围为192-223,共2097152个C类网络;每个C类网络可以包含28-2台主机(即254台主机)。

  D类

  D类地址用来多播使用,没有网络ID和主机ID之分,D类IP地址的第一个字节前四位必须以1110开始,其他28位可以是任何值,则D类IP地址的有效范围为224.0.0.0到239.255.255.255。

  E类

  E类地址保留实验用,没有网络ID和主机ID之分,E类IP地址的第一字节前四位必须以1111开始,其它28位可以是任何值,则E类IP地址的有效范围为240.0.0.0至255.255.255.254。其中255.255.255.2555表示广播地址。

  在实际应用中,只有A、B和C三类IP地址能够直接分配给主机,D类和E类不能直接分配给计算机。

  三、 网络ID、主机ID和子网掩码

  网络ID用来表示计算机属于哪一个网络,网络ID相同的计算机不需要通过路由器连接就能够直接通信,我们把网络ID相同的计算机组成一个网络称之为本地网络(网段);网络ID不相同的计算机之间通信必须通过路由器连接,我们把网络ID不相同的计算机称之为远程计算机。

  当为一台计算机分配IP地址后,该计算机的IP地址哪部份表示网络ID,哪部份表示主机ID,并不由IP地址所属的类来确定,而是由子网掩码确定。子网确定一个IP地址属于哪一个子网。

  子网掩码的格式是以连续的255后面跟连续的0表示,其中连续的255这部份表示网络ID;连续0部份表示主机ID。比如,子网掩码255.255.0.0和255.255.255.0。

  根据子网掩码的格式可以发现,子网掩码有0.0.0.0、255.0.0.0、255.255.0.0、255.255.255.0和 255.255.255.255共五种。采用这种格式的子网掩码每个网络中主机的数目相差至少为256倍,不利于灵活根据企业需要分配IP地址。比如,一 个企业有2000台计算机,用户要么为其分配子网掩为255.255.0.0,那么该网络可包含65534台计算机,将造成63534个IP地址的浪费; 要么用户为其分配8个255.255.255.0网络,那么必须用路由器连接这个8个网络,造成网络管理和维护的负担。

  网络ID是IP地址与子网掩码进行与运算获得,即将IP地址中表示主机ID的部份全部变为0,表示网络ID的部份保持不变,则网络ID的格式与IP地址相同都是32位的二进制数;主机ID就是表示主机ID的部份。

  例1:IP地址:192.168.23.35 子网掩码:255.255.0.0

  网络ID:192.168.0.0 主机ID:23.35

  例2:IP地址:192.168.23.35 子网掩码:255.255.255.0

  网络ID:192.168.23.0 主机ID:35

  四、子网和CIDR

  将常规的子网掩码转换为二进制,将发现子网掩格式为连续的二进制1跟连续0,其中子网掩码中为1的部份表示网络ID,子网掩中为0的表示主机ID。比如255.255.0.0转换为二进制为11111111 11111111 00000000 00000000。

  在前面所举的例子中为什么不用连续的1部份表示网络ID,连续的0部份表示主机ID呢?答案是肯定的,采用这种方案的IP寻址技术称之为无类域间路 由(CIDR)。CIDR技术用子网掩码中连续的1部份表示网络ID,连续的0部份表示主机ID。比如,网络中包含2000台计算机,只需要用11位表示 主机ID,用21位表网络ID,则子网掩码表示为11111111.11111111.11100000.00000000,转换为十进制则为 255.255.224.0。此时,该网络将包含2046台计算机,既不会造成IP地址的浪费,也不会利用路由器连接网络,增加额外的管理维护量。

  CIDR表示方法:IP地址/网络ID的位数,比如192.168.23.35/21,其中用21位表示网络ID。

  例1:192.168.23.35/21

  子网掩码:11111111 11111111 11111000 00000000则为255.255.248.0

  网络ID:192.168.00010111.0(其中第三个字节红色部分表示网络ID,其他表示主机ID,网络ID是表示网络ID部份保持不变主机ID全部变为0)则网络ID为192.168.16.0

  起始IP地址:192.168.16.1(主机ID不能全为0,全为0表示网络ID最后一位为1)

  结束IP地址:192.168.00010111.11111110(主机ID不能全为1,全为1表示本地广播)则结束IP地址为:192.168.23.254。

  例2:将163.135.0.0划分为16个子网,计算前两个子网的网络ID、子网掩码、起止IP地址。

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

  第2步:第一网络ID(子网掩码与IP地址与运算):163.135.0.0

  第一个IP地址:163.135.0.1 结束IP地址:163.135.15.254;

  第3步:第二网络ID:163.135.16.0

  第一个IP地址:163.135.16.1 结束IP地址:163.135.31.254。

  五、子网掩码和网络ID的快速计算方法

  CIDR的子网掩码都是连续的1跟连接的0表示,则子网掩码有以下几种表示方法:

  0000 0000   0

  1000 0000   128

  1100 0000   128+64=192

  1110 0000   128+64+32=224

  1111 0000   255-15=240

  1111 1000   255-7=248

  1111 1100   255-3=252

  1111 1110   255-1=254

  1111 1111   255

  大家都知道11111111的十进制数为255,那么我们怎么来快速计算子网掩码呢?二进制的1=1,11=3,111=7,1111=15;那么 1111 1110=255-1,1111 1100=255-3,1111 1000=255-8,1111 0000=255-15这样是不是就很快呢?只要我们一旦确定子网掩码中有多少位表示网络ID,那么我们马上就可以写出子网掩码了。那么,对于1000 0000,1100 0000和1110 0000 我们又该怎么计算呢?27=8则1000 0000=128,1100 0000=128+64,1110 0000=128+64+32,所以我们不需要去记住每一个为多少,只需要做做简单的加减法就搞定子网掩码的计算。

  网络ID的结果大家都知道网络ID部份不变,主机ID部分全部变为0,那么在计算网络ID时,首先看子网掩码中有多少位用来表示网络,相应在将IP 地址转换为二进制时就只转换前面几位,比如192.168.176.15/19,网络ID一共19位,则网络ID前两个字节为192.168.X.0发生 变化的为第三个字节。那么怎样快速计算出这个变化的X的值呢?我们知道第三字节只有三位表示网络ID,转换时176>128,第1位为 1,176-128=48<64,第2位为0,48>32第3位为1,剩下的计算就没有意义了,全都要转换为0,则网络ID为10100000,则网络 ID为192.168.160.0,这样计算反而出错的可能性很小。

  六、 本地和远程网络概念

  网络ID相同的计算机称之为本地网络,本地网络中的计算机相互通信不需要路由器连接;网络ID不相同的计算机称之为远程网络,远程网络中的计算机要相互通信必须通过路由器连接。

  例1: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地址。

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

  网络ID相同的就属于同一网段,则192.168.10.16/28不属于同一网段。

  七、子网数和主机数的计算方法

  例: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地址。

  注意:为什么计算IP地址时要减2,而计算子网数目时不减2呢?IP地址减2的原因是主机ID不能全为0也不能全为1;子网就不存在这个问题。

  八、 公共IP和私有IP地址

  IP地址由IANA(Internet地址分配机构)管理和分配,任何一个IP地址要能够在Internet上使用就必须由IANA分配,IANA 分配的能够在Internet上正常使用的IP地址称之为公共IP地址;IANA保留了一部份IP地址没有分配给任何机构和个人,这部份IP地址不能在 Internet上使用,此类IP地址就称之为私有IP地址。为什么私有IP地址不能在Internet上使用呢?因为Internet上没有私有IP地 址的路由。私有IP地址范围包括:

  A类:10.0.0.0/8

  B类:172.16.0.0/12 即172.16.0.1-172.31.255.254共16个B类网络

  C类:192.168.0.0/16即192.168.0.1-192.168.255.254共256个C类网络

时间: 2024-10-10 00:52:24

如何计算IP地址及CIDR的相关文章

[转帖]IP地址和CIDR

https://www.cnblogs.com/cocowool/p/8303795.html 感谢原作者 自己竟然忘记了 classless inter-domain route的含义和用法.. 只在2层里面转 不需要三层的路由器来进行处理 ,减轻 路由器的性能负载. IP地址(IPV4) IPV4的地址是一个32位的二进制数,由网络ID和主机ID两部分组成,用来在网络中唯一的标识一台计算机.IP地址通常用四组3位的十进制数表示,中间用.分割,例如:192.168.0.1. IPV6用128位

[LeetCode] IP to CIDR 将IP地址转为CIDR无类别域间路由

Given a start IP address ip and a number of ips we need to cover n, return a representation of the range as a list (of smallest possible length) of CIDR blocks. A CIDR block is a string consisting of an IP, followed by a slash, and then the prefix le

IP地址的规划和设计方法(二)

五,IP地址规划方法 (1)IP地址规划的基本步骤 网络地址规划需要按以下6步进行: a)判断用户对网络与主机数的需求: b)计算满足用户需求的基本网络地址结构: c)计算地址掩码: d)计算网络地址: e)计算网络广播地址: f)计算网络主机地址. (2)地址规划的基本方法 a)步骤一:判断网络与主机数量的需求 根据网络总体设计中物理拓扑设计是参数,确定以下两个主要数据: 1)网络中最多可能使用的子网数量Nnet: 2)网络中最大网段已有的和可能扩展的主机数量Nhost. b)步骤二:计算满足

【Linux网络编程】IP地址介绍

什么是 IP 地址IP 地址(Internet Protocol Address)也称为网间地址.网际地址.IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写.IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异. IP 地址是?TCP/IP 协议栈?里的网络层地址方案,IP地址是一种用来对网络设备的逻辑标识. 举个生活中的例子,如果我要寄一

Ip地址和子网掩码和CIDR无间别域间路由

开始,网络的制定者将网络划分为A,B,C三种网络,想这个样子: A类网:  xxx.0.0.0         子网掩码:255.0.0.0 xxx.0.0.0/8 //后面的数字代表网络地址的字段 B类网:  xxx.xxx.0.0      子网掩码:255.255.0.0   xxx.xxx.0.0/16 C类网:  xxx.xxx.xxx.0  子网掩码:255.255.255.0     xxx.xxx.xxx.0/24 A类网255*255*255=16581375个地址,1千6百多

IP地址子网划分VLSM和子网汇总CIDR

国际规定:把所有的IP地址划分为 A,B,C,D,E.  A类地址:范围从0-127,0是保留的并且表示所有IP地址,而127也是保留 的地址,并且是用于测试环回用的.因此,A类地址的范围其实是从1-126之间. 如:10.0.0.1,第一段号码为网络号码,剩下的三段号码为本地计算机的号码.转换 为2进制来说,一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址 的最高位必须是"0",地址范围从0.0.0.1 到126.0.0.0.可用的A类网络有126个, 每个网络能容纳

php中获取用户登陆的IP地址以及常规处理

本文为原创,转载请注明!  在我们开发多站点业务网站中,经常需要获取客户端的ip地址来给用户推荐其所在地址的信息的业务,用php获取客户端的ip地址,我们一般用到的PHP内置方法是$_SERVER['REMOTE_ADDR']. 但是这个函数只能获取访问者本地连接中设置的IP,局域网网关出口的IP地址,如果访问者使用代理服务器,将不获取代理服务器的IP,而是获取访问者网关的真实IP.如果将这个函数应用到限IP访问的网页中,别人即使通过限IP访问段中的代理服务器,也不能访问该页面. 所以我们一般为

IP地址基础知识

IP地址基础知识 网络号:用于识别主机所在的网络:主机号:用于识别该网络中的主机. 一 OSI/RM模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 二 TCP/IP模型 数据链路层(网络接口层):Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌环 · 以太网 ·FDDI · 帧中继 · GPRS · EVDO ·HSPA · HDLC · PPP · L2TP ·PPTP · ISDN·STP 等 网络层协议(互联网

IP地址的划分和配置路由

IP地址:是一种在Internet上的给主机编址的方式,也称为网际协议地址.常见的IP地址,分为IPv4与IPv6两大类: 路由:路由器能把不是同一个网段的网络设备连接起来,使它们能够建立通信: IP地址分类 A 类:(前八位是网络地址:固定的) 0 000 0000 - 0 111 1111: 1-127 网络数:126, 127 每个网络中的主机数:2^24-2 默认子网掩码:255.0.0.0 公网地址:1.0.0.0 - 9.255.255.255 : 11.0.0.0 - 126.25