关于IP的相关计算
不论是考研还是考各种计算机类的证,大家或多或少都会遇到网络部分的一种题型,大体的归类就是以下几种:
- 已知一个IP是192.XX.XX.XX,子网掩码是255.255.255.0,那么它的网络地址是多少?
- 已知某主机的ip地址是192.168.100.200,子网掩码为255.255.255.192,其网络内可用的ip地址个数为多少?
- 一个A类ip地址的子网掩码是255.255.240.0,共有几位被用来划分子网?且可以划分多少个子网?每个子网ip地址数量是多少?
- 已知IP地址为10.135.255.19,子网掩码为255.255.255.248,那么该网的广播地址为多少?
这里就详细记录一下这类问题的解决方案,看这些问题之前,先补充一下网络里面一些关于IP的知识。
IP地址的格式和分类
IP地址是一个网卡在网络世界的通讯地址,相当于我们现实生活中的门牌号,既然是门牌号就必须要保证唯一,就好比,你住13号楼2单元602,我的地址也是13号楼2单元602,那快递小哥就懵逼了,所以,有时候咱们电脑弹出网络地址冲突,上不去网的情况,多半就是Ip冲突。
在网际层中,利用 IP 地址将数据传输到目的地。为了能够使数据正确地发送到目标主机上,网络上的 IP 地址必须有一定的规则来识别主机的位置。就拿10.11.12.13来说,这是一个IP地址,这个地址被点分割为四个部分,每个部分8个bit,所以IP地址总共是32位。本来32位的IP设计就导致数量不多,设计者们又将它划分为了5种类型:

为了便于寻址,了解目标主机的位置,每个 IP 地址包括两个标识码(ID),即网络 ID 和主机 ID。同一个物理网络上的所有主机都使用同一个网络 ID,网络上的一个主机(包括网络上的工作站、服务器和路由器等)有一个主机 ID 与其对应。这个ID的确认就是使用上面提到的32位来进行划分,说白了就是32个二进制位,前几位为网络ID,后几位为主机ID。
- A 类:前 8 位表示网络 ID,网络 ID 的第一位以 0 开始的地址。后 24 位表示主机 ID;该地址分配给政府机关单位使用。
- B 类:前 16 位表示网络 ID,网络 ID 的第一位以 10 开始的地址。后 16 位表示主机 ID;该地址分配给中等规模的企业使用。
- C 类:前 24 位表示网络 ID,网络ID的第一位以 110 开始的地址。后 8 位表示主机 ID;该地址分配给任何需要的人使用。
- D 类:不分网络 ID 和主机 ID;地址以 1110 开始的地址。该地址用于多播。
- E 类:不分网络 ID 和主机 ID;地址以 11110 开始的地址。该地址用于实验。
下面这个表图,详细标明了ABC三类所能包含的主机数量

CIDR(无类域间路由)
经过上面的介绍,我们似乎发现了一个问题,能给我们使用的似乎只有C类地址,而C类地址的数量有限且不是很多,只有254个,这要是使用的话,一个网吧或者一个稍微大一点的单位就能把254个IP给分干净,而B类的地址又太多,这似乎很不平衡。于是,CIDR(Classless Inter-Domain Routing,CIDR)就诞生了,CIDR中文名字叫做无类域间路由,无类域间路由(Classless Inter-Domain Routing,CIDR)可以将路由集中起来,在路由表中更灵活地定义地址。它不区分 A 类、B 类、C 类地址,而是使用 CIDR 前缀的值指定地址中作为网络 ID 的位数。
CIDR 标记使用一个斜线 / 分隔符,后面跟一个十进制数值表示地址中网络部分所占的位数。例如,10.100.122.2/24 中的 24 表示地址中 24位用于网络 ID,后8位用于主机ID,伴随着CIDR的,随之产生了 广播地址 10.100.122.255 和 子网掩码 255.255.255.0
如何理解子网掩码
要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。
IP地址的网络号和主机号各是多少位呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。什么是子网掩码子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分子网掩码的设定必须遵循一定的规则。与IP地址相同,子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示;右边是主机位,用二进制数字“0”表示。假设IP地址为“192.168.1.1”子网掩码为“255.255.255.0”。其中,“1”有24个,代表与此相对应的IP地址左边24位是网络号;“0”有8个,代表与此相对应的IP地址右边8位是主机号。这样,子网掩码就确定了一个IP地址的32位二进制数字中哪些是网络号、哪些是主机号。这对于采用TCP/IP协议的网络来说非常重要,只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。
具体的计算
有了前面的补充,我们开始详细来看一下开篇说的几个问题。
已知一个IP是192.XX.XX.XX,子网掩码是255.XXX.XXX.0,那么它的网络地址是多少?
这一类型的思路就是,先将IP地址与子网掩码转化为二进制,然后进行 and 运算。
假设IP是192.168.2.1,子网掩码是255.255.255.0,
IP的二进制为:11000000.10101000.00000010.0000000
子网掩码的二进制:11111111.11111111.11111111.00000000
进行按位 “与(and)” 计算:
11000000.10101000.00000010.00000000
11111111.11111111.11111111.00000000
得:
11000000.10101000.00000010.00000000
8位为一单位转化为10进制:
网络地址就是:192.168.2.0
已知某主机的ip地址是192.168.100.200,子网掩码为255.255.255.192,其网络内可用的ip地址个数为多少?
这一类型思路就是,计算网络掩码中主机ID的位数,看看主机ID可以分出多少台机器
将子网掩码255.255.255.192转换为二进制:11111111.11111111.11111111.11000000
子网掩码共有26位,还有6位可用。
即2的6次方减去2(广播地址和网络地址不可用),等于62,即有62个ip地址可用。
一个A类ip地址的子网掩码是255.255.240.0,共有几位被用来划分子网?且可以划分多少个子网?每个子网ip地址数量是多少?
首先,固定类型的IP地址的子网掩码位数是确定的,根据给出的子网掩码位数与默认的子网掩码位数的差值,可以得出子网数,每个子网的网络号位数已经确认,那么,只需要用总位数(32)减去网络号的位数,可以得到每个子网的主机ID的位数,就能求出每个子网的IP地址数量
将子网掩码255.255.240.0转换为二进制:11111111.11111111.11110000.00000000
子网掩码共有20位,而一个A类的ip地址的子网掩码是8位,即有12位被用来划分子网。
所以子网数为:2的12次方=4096个子网。
因为ip地址为32位,网络号已为20位,则主机数12位。每个子网中的ip数量为2^12=4096,但是能够分配给计算机使用的只有4096-2=4094个,(减去一个网络地址与一个广播地址)。
已知IP地址为10.135.255.19,子网掩码为255.255.255.248,那么该网的广播地址为多少?
要得到广播,先得出网络地址,然后把网络地址的主机位全换成1,便就是广播地址。
将ip地址10.135.255.19转换为二进制:00001010.10001001.11111111.00010011
将子网掩码255.255.255.248转换成二进制:11111111.11111111.11111111.11111000
然后将两者相“与(and)"运算得出网络号:
00001010.10001001.11111111.00010011
11111111.11111111.11111111.11111000
得:00001010.10001001.11111111.00010000,转换成网络地址就是:10.135.255.16
从子网掩码 11111111.11111111.11111111.11111000 可以看出,这个子网掩码是29位。也就是主机数还有3位可用。
把网络地址 00001010.10001001.11111111.00010000 的后面三个零全换成1,得出广播地址为:10.135.255.23
关于IP的相关计算的更多相关文章
- IP地址分类及其相关计算问题
IP地址分类及其相关计算问题 公网IP和子网IP 公网IP: • A类:1.0.0.0 到 127.255.255.255 主要分配 给大量主机而局域网网络数量较少的大型网络 • B类:128.0.0 ...
- MATLAB线性回归方程与非线性回归方程的相关计算
每次比赛都需要查一下,这次直接总结到自己的博客中. 以这个为例子: 2.线性方程的相关计算 x=[1,2,3,4,5]';%参数矩阵 X=[ones(5,1),x];%产生一个5行一列的矩阵,后接x矩 ...
- 你应该知道的ip地址相关知识
IP地址是一个网卡在网络世界里的通讯地址,相当于我们家里的门牌号码.这样类比的话,很显然ip地址是唯一的.在windows系统中,我们可以使用 ipconfig 命令查看本机的ip地址相关信息: 图中 ...
- 大数据学习day23-----spark06--------1. Spark执行流程(知识补充:RDD的依赖关系)2. Repartition和coalesce算子的区别 3.触发多次actions时,速度不一样 4. RDD的深入理解(错误例子,RDD数据是如何获取的)5 购物的相关计算
1. Spark执行流程 知识补充:RDD的依赖关系 RDD的依赖关系分为两类:窄依赖(Narrow Dependency)和宽依赖(Shuffle Dependency) (1)窄依赖 窄依赖指的是 ...
- IP首部校验和计算
根据RFC1071文档的计算方法,编写代码实现IP首部校验和的计算 计算步骤: 1.首先将IP首部中校验和字段置0 2.将IP首部每16bit进行相加,如果有进位产生,则将进位加到最低位. 3.将计算 ...
- ubuntu下网络IP设置相关命令
一.使用命令设置ubuntu的ip地址 1.修改配置文件blacklist.conf禁用IPV6: sudo vi /etc/modprobe.d/blacklist.conf 2.在文档最后添加 b ...
- ip netns相关命令
1.增加虚拟网络命名空间 ip netns add net0 2.显示所有的虚拟网络命名空间 EULER:~ # ip netns list net0 也可通过查看/var/run/netns ...
- 由IP和掩码计算广播地址
public static IPAddress GetBroadcast(IPAddress ipAddress, IPAddress subnetMask) { var ip = ipAddress ...
- c++ ip地址相关
#include <stdio.h> #include <string.h> #include <arpa/inet.h> #include <sys/typ ...
随机推荐
- 第9.6节 Python使用read函数读取文件内容
一.语法 read(size=-1) read函数实际上在读取文本文件和二进制文件时,调用的是不同类的read,这是因为文本文件和二进制文件打开后返回的文件对象类型不同,同时读取的具体处理机制上也不同 ...
- PyQt(Python+Qt)学习随笔:exit code 1073741845与槽函数所在对象不能定义同名实例方法问题
最近做了几次测试,在PyQt中如果使用与槽函数同名的实例方法可能会导致不可控的错误. 案例1:如果两个信号映射到同名的槽函数,虽然参数不一样,但真正响应的槽函数是最后定义的槽函数,具体案例请见< ...
- Github 美化设置个人主页
起因是发现自己follow的大师傅个人主页跟普通的不太一样: 猜测应该是Github啥时候出现的新功能,查了一下,发现可以通过创建同名仓库来实现个人主页的美化设置 首先在 GitHub 上建立一个与自 ...
- c#如何取出指定的中间文本
///<summary> ///取出文本中间内容 ///<summary> ///<param name="left">左边文本</par ...
- 团队作业part4--项目冲刺
七天敏捷冲刺汇总 1. Day1 Scrum 冲刺博客 2. Day2 Scrum 冲刺博客 3. Day3 Scrum 冲刺博客 4. Day4 Scrum 冲刺博客 5. Day5 Scrum 冲 ...
- Element-ui 实现table的合计功能
Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,其功能较为完善,根据其文档与demo学习,非常容易上手,但是我在使用其tabel组件时,发现我的功能 需求并不 ...
- Python+Selenium基本语法
对Selenium自动化已有了解,最近开始做h5端的自动化,所以总结了下Python+Selenium自动化基本语法 一.启动浏览器 1.普通方式启动 #coding=utf-8 import tim ...
- Jmeter(8)分布式测试
通过Jmeter远程启动功能,把一台windows机器作为控制器,远程控制其他多个Windows或linux压力机,把压力分散到多台执行机器上,从而实现高并发,并在控制机上搜集测试结果 Jmeter分 ...
- 六、TestNG传递参数1
TestNG可以通过testng.xml和Data Providers向测试方法传递参数 利用testNG.xml传递参数 1-创建一个TestNG测试类 其中 parameters = {" ...
- 微信小程序api拦截器
微信小程序api拦截器 完美兼容原生小程序项目 完美兼用小程序api的原本调用方式,无痛迁移 小程序api全Promise化 和axios一样的请求方式 小程序api自定义拦截调用参数和返回结果 强大 ...