-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46583
- shell命令
-
- 文章:(42)篇
- 阅读:154313
- Git教程
-
- 文章:(36)篇
- 阅读:234926
- leetCode刷题
-
- 文章:(76)篇
- 阅读:131961
-
笔试题中IP地址问题汇总2016-09-08 21:06 阅读(8807) 评论(0)
ip地址总共分为5类,A、B、C、D、E
为了便于管理,数据传输等,将IP地址划分为网络号何主机号。并且按照网络号位数与主机号的位数进行分类。
网络号的位数直接决定了可以分配的网络数;主机号的位数则决定了网络中最大的主机数
针对不同的网络规模分配不同类型的IP地址。但是往往或造成,地址的浪费。如学院A需要300个左右IP,那么至少得分别一个B类IP地址,学院B需要也300个左右IP,那么至少也得分别一个B类IP地址,这样就造成了很大的浪费。
实际做法:就是将B类地址进行子网划分,供多个学院来使用。
什么时候需要子网划分?
某集团公司给下属子公司甲分配了一段IP地址192.168.5.0/24,现在甲公司有三层办公楼(1楼、2楼和3楼),统一从1楼的路由器上公网,1楼有101台电脑联网,2楼有53台电脑联网,3楼有60台电脑联网。那么应该怎样进行子网划分?
首先我们可以确定,需要三个网段。那么至少需要两位网络号来区分,但是如果用两位网络号的话,每个网络所允许最大的主机数为:2^6=64,当然这是没法满足需求的。此时,我们在划分子网时优先考虑最大主机数来划分。即先划分两个网段。
A:11000000.10101000.000000101.000000000 192.168.5.0/25 共计可以容纳2^7=128的主机
B:11000000.10101000.000000101.100000000 192.168.5.128/25
1楼使用A网段
针对B网段继续划分
C:11000000.10101000.000000101.100000000 192.168.5.128/26 共计可以容纳2^6=64
D:11000000.10101000.000000101.110000000 192.168.5.192/26 共计可以容纳2^6=64
2楼使用C网段
3楼使用D网段
子网掩码又是什么?
在划分子网的时候,我们将本来属于主机号的一部分划分到网络号中,为了便于区分哪部分是网络号,哪部分是主机号,我们引入了子网掩码。
子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
由子网掩码,我们就能反推知道该子网中所能使用的IP地质范围,也就能求出所能使用的主机数咯。
一、利用子网数来计算子网掩码
如欲将B类IP地址168.195.0.0划分成27个子网:
1)27=11011
2)该二进制为五位数,N = 5
3)将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到 255.255.248.0 (由11111111.11111111.11011000.000000000所得) 即为划分成 27个子网的B类IP地址 168.195.0.0的子网掩码。
二、利用主机数来计算子网掩码
如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:
1) 700=1010111100
2)该二进制为十位数,N = 10
3)将该B类地址的子网掩码255.255.0.0的主机地址全部置 1,得到255.255.255.255 然后再从后向前将后 10位置0,即为: 11111111.11111111.11111100.00000000 即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的子网掩码。
三、详解IP地址后面斜杠加具体数字的含义
如192.168.5.128/26,被称作ip段。26代表子网掩码的个数;192.168.5.128表示该网段的起始ip地址。
如何由一个ip段,计算ip的范围呢?
function getIpRange($ipAddress) { $ipArr = explode('/', $ipAddress); if (count($ipArr) != 2) { //ip段不符合要求 return []; } $subnetMask = $ipArr[1]; //子网掩码的长度 $ipCount = pow(2, (32 - $subnetMask)); // 获取主机号的个数 $startIp = $ipArr[0]; $endIp = long2ip(ip2long($startIp) + $ipCount - 1); return [$startIp, $endIp]; }