关于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 ...
随机推荐
- MoviePy v2.0.0.dev1尚不成熟,不建议大家使用
☞ ░ 前往老猿Python博文目录 ░ 在<重要消息:MoviePy v2.0.0.dev1预发布版本已经可以下载安装使用>之后老猿就安装了MoviePy v2.0.0.dev1这个版本 ...
- 第10.2节 查看导入的Python模块
在Python中,要查看导入模块,可以使用sys.modules来查看,不过sys包含了所有导入模块包括内建模块,如果需要过滤掉内建模块甚至扩展模块,则需要对sys.modules进行一下过滤. 一. ...
- [BJDCTF 2nd]duangShell 反弹shell
[BJDCTF 2nd]duangShell [BJDCTF 2nd]duangShell 点击进去之后提示我们swp源代码泄露,访问http://xxx/.index.php.swp下载该文件 ...
- BUUOJ 杂项MISC(1)
爱因斯坦 下载之后解压打开是一张爱因斯坦的图片,看来是图片隐写题 使用binwalk -e misc2.jpg 获得一个有flag.txt的压缩包,但是需要密码才能打开,猜想密码在图片里面,把图片丢进 ...
- go中位运算
左移右移 const ( // 将 1 左移 100 位来创建一个非常大的数字 // 即这个数的二进制是 1 后面跟着 100 个 0 Big = 1 << 100 // 再往右移 99 ...
- 软工个人项目 ——wc.exe
1.GitHub项目地址 https://github.com/k8kiw/WordCount 2.PSP预计时间 PSP2.1 Personal Software Process Stages 预估 ...
- ucore操作系统学习(六) ucore lab6线程调度器
1. ucore lab6介绍 ucore在lab5中实现了较为完整的进程/线程机制,能够创建和管理位于内核态或用户态的多个线程,让不同的线程通过上下文切换并发的执行,最大化利用CPU硬件资源.uco ...
- BJOI2017 机动训练
落谷.Loj. Description 定义机动路径为: 没有自环 路径至少包含两个格子 从起点开始每一步都向不远离终点的方向移动 相同地形序列指路径上顺序经过的地形序列. 定义机动路径的权值为相同地 ...
- 安卓qq视频动态名片制作器
本软件来自互联网,仅供个人参考,严禁商业用途! 非常炫酷的diy动态名片教程,B格绝对高,内含软件教程代码,包会!
- dataframe的一些用法
pandas中Dataframe的一些用法 pandas读取excel文件 pd.read_excel 前提是安装xlrd库 dataframe,numpy,list之间的互相转换 dataframe ...