网络知识一箩筐:IP地址划分的那些知识点
摘要:IP地址是怎么划分的呢?划分的依据是什么呢?本节小课将带你一起学习IP地址划分、子网划分、子网掩码、CIDR等网络基础概念,了解IP地址划分背后的那些故事。
首先,回忆一下,前面小课中我们有提到IP地址的分类,那么IP地址到底是怎么划分的呢?划分的依据是什么呢?这就不得不提到IP地址划分背后的那些故事了。
IP地址划分
最初32位的IP地址是由{<网络地址/网络号><主机地址/主机号>}组成,被划分为五大类,一般使用最多比较常见是A类、B类和C类。
IP地址编码规范中规定:网络地址和主机地址全0为本地地址,表示本地网络或主机;网络地址和主机地址为全1为广播地址,表示所有网站都可接收发出的信息,通常这两种IP地址不能作为互联网中的主机IP地址。因此,每类IP地址中除去这两个,可计算出ABC三类IP地址的网络地址数以及每个网络地址中所能容纳的主机数量:
- A类IP地址:126(2^7-2)个网络地址,可容纳主机 16777214(2^24-2)台
- B类IP地址:16382(2^14-2)个网络地址,可容纳主机 65534(2^16-2)台
- C类IP地址:2097150(2^21-2)个网络地址,可容纳主机 254(2^8-2)台
上述的IP地址表示方式称为两级IP地址。不难发现,在实际应用中,分配一个B类网络地址太多,C类又太少,这样对IP地址空间的利用率会偏低,也不够灵活。于是,就出现了子网划分的概念。
子网划分
子网划分就是将原来的两级IP地址进一步划分为三级IP地址,即:{<网络地址/网络号>,<子网地址/子网号>,<主机地址/主机号>}。参考如下图,将C类的两级IP地址划分为三级IP地址。
其中子网地址就是从主机地址中借走几位,所以子网划分实际上就是减少了主机数,分配到不同的子网,每个子网包含一定的主机数。子网就可以理解为,把一个大的网络从内部分成几个小的子网。但对于该网络的外层来看,还是一个大的网络,只有该网络内部才可以看到其进行了子网划分。
比如说:某个高校被分配了一个大的网段,学校可以采用三级IP地址划分方式分给对应的学院使用。对于互联网来说,学校的网络地址依旧是那个网络地址,只有高校知道自己内部还进行了子网划分。
但是有个问题,互联网中的网络设备向学校内的主机发送数据时,在IP数据包到达学校网络时,路由器是如何机智的识别到这个数据应该发送给哪个子网呢?子网掩码在这里就发挥了很大的作用。
子网掩码
子网掩码将某个IP地址划分成网络地址和主机地址两部分,可以用来判断任意两台主机的IP地址是否属于同一子网络。具体来说就是两台计算机各自的IP地址与子网掩码进行“与”运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通信。
例如:192.168.1.1>11000000.10101000.00000001 00000001
子网掩码255.255.255.240 >11111111.11111111.11111111.11110000
相“与”得到:11000000 10101000 00000001 00000000
网络地址为:192.168.1.0
主机地址为:0.0.0.1
在实际应用中,我们会遇到这样的IP地址:
- IP地址:192.168.1.1 子网掩码:255.255.255.0
- IP地址:192.168.1.2 子网掩码:255.255.255.0
可以直接判断出,他们网络地址都为192.168.1.0,属于同一子网网段。
那么如果是下面这样的呢?
- IP地址:192.168.1.1 子网掩码:255.255.255.0
- IP地址:192.168.1.2 子网掩码:255.255.0.0
根据“与”运算,你发现,虽然长得比较像,但他们可不是“一家人”哦
第一个网络地址为192.168.1.0,而第二个网络地址为192.168.0.0,不在同一子网网段。
CIDR
子网的划分有效地减少了网络中浪费的IP地址,但是仍然存在一些问题。
比如某公司需要2000个地址,分配一个B类IP地址,那可就太浪费了,分配一个C类IP地址,又不够用。那这个问题要怎么解决呢?
这就产生了无分类域间路由选择(Classless Inter-Domain Routing,CIDR),也就是无分类编址。它消除了传统ABC类及子网划分的概念。使网段的划分更加灵活。采用CIDR记法(斜线记法)表示IP地址:{<网络前缀><主机地址/主机号>}/网络前缀占位数。
在上述公司案例中,需要8个C类地址,这8个C类地址可以构成一个地址块,分配这个CIDR地址块给该公司。只需要11位表示主机地址,21位表示网络前缀。则子网掩码表示为11111111.11111111.11111000.00000000
比如分配192.168开头的,8个C类的地址块:
11000000.10101000.11111xxx.xxxxxxxx
网络地址的后三位为变量,那么加上后八位主机地址,可以容纳(2^8)*(2^3)=2048个主机地址。
该网络前缀为11000000.10101000.11111(192.168.248),比如某主机号192.168.248.15,采用CIDR记法则为192.168.248.15/21。
课堂练习
讲了IP划分的由来及背后涉及的这些基础概念知识,不妨建立一个虚拟私有云试试吧~
虚拟私有云VPC,为云服务器、云容器、云数据库等资源构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云上资源的安全性,简化用户的网络部署。
您可以在VPC中定义IP地址段,每个虚拟私有云VPC都包含一个私网网段和至少一个子网。当您选定网段后,页面自动显示子网网段可用IP数,便于您的网络规划哦~
私网网段:在创建虚拟私有云VPC时,需要指定虚拟私有云VPC使用的私网网段。当前虚拟私有云VPC支持的网段有10.0.0.0/8~24、172.16.0.0/12~24和192.168.0.0/16~24。
子网:云资源(例如云服务器、云数据库等)必须部署在子网内。所以,虚拟私有云VPC创建完成后,您需要为虚拟私有云VPC划分一个或多个子网,子网网段必须在私网网段内。
了解更多虚拟私有云信息,戳这里。
本文分享自华为云社区《IP地址划分的背后.....》,原文作者:云小萌 。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何通过 Serverless 提高 Java 微服务治理效率?
作者 | 王科怀(行松) 来源 | 阿里巴巴云原生公众号 微服务治理面临的挑战 在业务初期,因人手有限,想要快速开发并上线产品,很多团队使用单体的架构来开发。但是随着公司的发展,会不断往系统里面添加新的业务功能,系统越来越庞大,需求不断增加,越来越多的人也会加入到开发团队,代码库也会增速的膨胀,慢慢的单体应用变得越来越臃肿,可维护性和灵活性逐渐降低,维护成本越来越高。 这个时候很多团队会把单体应用架构改为微服务的架构,解决单体应用的问题。但随着微服务越来越多,运维投入会越来越大,需要保证几十甚至几百个服务正常运行与协作,这给运维带来了很大的挑战,下面从软件生命周期的角度来分析这些挑战: 开发测试态 如何实现开发、测试、线上环境隔离? 如何快速调试本地变更? 如何快速部署本地变更? 发布态 如何设计服务发布策略? 如何无损下线旧版本服务? 如何实现对新版本服务灰 度测试? 运行态 线上问题如何排查?有什么工具可以利用呢? 对于服务质量差的节点如何处理? 对于完全不工作的实例我们如何恢复? 面对以上问题,Serverless 应用引擎在这方面都做了哪些工作? Serverless 应用引擎...
- 下一篇
Spring Boot 轻量替代框架 Solon 1.3.10 发布
Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,4000多次的commit;内核保持0.1m的身材,超高的跑分,良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。 替代?那有什么差别! Solon 特性简集,相较于 Springboot 有什么区别? 所谓更小: 内核0.1m,最小开发单位0.2m(相比Dubbo、Springboot项目包,小到可以乎略不计) 所谓更快: 本机helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.ge...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19