【计算机网络】网络层——IPv4地址(个人笔记)

学习日期:2024.7.24

内容摘要:IPv4地址,分类编址,子网,无分类编址


IPv4地址概述

在TCP/IP体系中,IP地址是一个最基本的概念,IPv4地址就是给因特网上的每一台主机的每一个接口分配一个在全世界范围内唯一32比特的标识符。

IPv4地址是32比特位的,因为一连串0和1不方便阅读,所以常用点分十进制法表示,其实就是8个二进制数为一组,用十进制数表示,再用点分开,也就是我们常见的形如192.168.0.1的形式。

 为了方便后面的学习,可以先熟悉几个常用的二进制转十进制:

1111 1111转十进制是255,1000 0000转十进制是128,自然0111 1111转十进制是127

10开头的八位二进制数肯定是128+一个小于64的数,所以在128到192之间

110开头的八位二进制数肯定是128+64+一个小于32的数,所以在192到223之间

IPv4地址的编址方法经历了三个历史阶段:分类编址,划分子网,无分类编址,下面依次介绍。

分类编址的IPv4

IPv4地址最初是分类编址的,分A,B,C,D,E五类,区别在于网络号和主机号所占的位数。

 A类地址前8为是网络号,且一定是0开头。B类地址前16位是网络号,且一定是10开头。C类地址前24位是网络号,且一定是110开头。通过这样的方式,只看前三位就能区分开ABC类地址。

而D类地址是1110开头,为多播地址,E类地址是1111开头,保留为今后使用,这里不多介绍。

注意:

①只有ABC类地址可以分配给网络中的主机和路由器接口

②主机号全0的地址是网络地址,主机号全1的地址是广播地址,不能分配给主机和路由器的各接口

下面为了各位和我自己能看清楚,八位二进制数我会用空格隔开一次,自行看做8位一组即可。

A类地址

A类地址前8位是网络号,而且第一位固定是0。

最小网络号是0000 0000,保留不指派。(和BC不同,A类的最小最大网络号不指派)

最大网络号是0111 1111(十进制为127),作为本地环回测试地址,不指派。

所以,第一个可以指派的网络号是1,网络地址为1.0.0.0(主机号全0),最后一个可指派的网络号是126(0111 1110),网络地址是126.0.0.0

所以A类地址可以指派的网络数量为126个(1到126),计算公式为2^{^{(8-1)}}-2=126

(8-1)是因为有8位,但是第一位固定是0,减2是因为减去最小网络号0和最大网络号127。

所以A类地址每个网络中可以分配的IP地址数量为2^{24}-2=16777214

24位主机号,减去全0的网络地址和全1的广播地址

B类地址

B类地址前16位是网络号,而且前两位固定是10

最小网络号是1000 0000 0000 0000,点分十进制表示是128.0,是第一个可以指派的网络号

最大网络号是1011 1111 1111 1111,点分十进制表示是191.255,是最后一个可以指派的网络号

 所以B类地址可指派的网络数量为2^{(16-2)}=16384个网络数(前两位固定为10,不用像A类一样再减2)

每个网络中可以分配的IP地址数量为2^{16}-2=65534(16位二进制数,减全0和全1两种情况)

C类地址

C类地址前24位是网络号,而且前三位固定是110

最小网络号点分十进制表示是192.0.0,是第一个可以指派的网络号

最大网络号点分十进制表示是223.255.255,是最后一个可以指派的网络号

所以C类地址可指派的网络数量为2^{(24-3)}=2097152

每个网络中可分配的IP地址数量为2^{8}-2=254

小结:

我们通过左起第一个十进制数的值,就可以判断出网络类别,因为A类是0开头,所以A类地址的网络号一定小于127,同理,10开头的128~191是B类,110开头的192~223是C类,现在我们再回看192.168.0.1这个地址

我们发现它是一个C类地址,网络号为192.168.0,主机号为1

而1.2.3.4,我们就知道它是一个A类地址,网络号为1,主机号为2.3.4

有三种情况的地址不能指派给主机或路由器接口:

①A类网络号0和127 ②主机号全0的网络地址 ③主机号全1的广播地址

划分子网的IPv4

假如某单位有一个大型局域网,想连接到因特网,该单位如果申请C类网络地址,只有254个IP地址,不够用,所以该单位申请了一个B类地址,有65534个IP地址,又有点太多了,给每台计算机和路由接口分配IP地址后,还有大量剩余,这些剩余的IP地址只能由该单位的同一个网络使用,其它单位的网络不能使用,造成了浪费。

随着该单位的发展,该单位新增了一些计算机,并且需要将原来的网络按照部门划分成三个独立的网络,分为子网1,子网2和子网3,假如原来申请的B类地址是子网1在用,子网2和子网3是不能用的,如果要申请新的网络号,就要花费更多的费用,而且也会浪费原有网络地址中的大量IP地址。

我们发现,核心问题是主机号的长度。对于一个大型局域网来说,C类地址254个主机号不够用,B类65534个又太多了,因此,我们选择从主机号中“借走”一部分充当子网号来解决这个问题。

但是,本来IPv4八位一组分的好好的,我们这样一借,就不是八位一组了,所以我们需要引入一个东西来记录我们“借”了多少位充当子网号,这就是子网掩码

子网掩码也是32比特,可以和IPv4地址对齐,子网掩码连续是1的部分就是网络号和子网号,是0的部分就是主机号。这样我们只需要看子网掩码的1到哪,就可以知道有几位主机号了,避免了主机号原本只能8,16,32位三选一的弊端。

如图所示,网络地址218.75.230.0,218告诉我们这是个C类地址,所以网络号是218.75.230,而子网掩码是255.255.255.128,前三个255是24个连续的比特1,对应网络号,最后一个128表示最后8位是1000 0000,所以主机号的第一位被“借用”了,充当了子网号。

因为只借用了一位,所以子网数量是两个,即子网号是0和1两种,每个子网可分配的地址数量是

2^{(8-1)}-2=126, (8-1)是因为8位主机号被借走一位,事实上只有7位,减2还是减去全0的网络地址和全1的广播地址。

可以结合下图对照仔细理解

 划分子网的方式要兼容之前没有划分的形式,所以,默认的子网掩码是指在未划分子网的情况下使用的子网掩码。其实就是A类用255.0.0.0,B类用255.255.0.0,C类用255.255.255.0

无分类编址的IPv4地址

划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量众多的C类网因为其地址空间太小没有得到充分利用,IPv4地址消耗速度很快

1993年,因特网工程任务组IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)

CIDR消除了传统的ABC类地址和子网的概念,可以更加有效的分配IPv4地址的空间。

CIDR使用斜线记法,就是在IPv4地址后面加上斜线"/",在斜线后面写上网络前缀所占的比特数

比如说128.14.35.7/20,网络前缀占用20比特,主机号占用32-20=12比特

CIDR实际上是将网络前缀全部相同的连续的IP地址组成一个"CIDR地址块",我们只要知道其中任意一个地址,就可以知道该地址块的全部细节,包括:

1.地址块的最小地址 2.地址块的最大地址 3.地址块中的地址数量 4.地址块聚合某类网络的数量

5.地址掩码(可继续称为子网掩码)

128.14.35.7/20,因为20在16和32之间,我们可以把后面16个二进制位写出来,前面的依旧按点分十进制写,如图所示

事实上,就是通过/20这样的形式,自由划分网络号和主机号,该方法还可以用来进行路由聚合。

如图,如果R1将自己直连的五个网络都通告给R2,则R2的路由表会增加五个路由记录。为了减少占用,R1可以将五个路由记录聚合起来,因为其最大共同前缀都是172.1.0000 01共22位,把剩下的位都取0,则聚合地址块是172.1.4.0/22(这个/22不能省,很关键),也可以称之为超网


感谢您看到这里,如果满意的话麻烦您点个赞支持一下,主页还有更多内容分享。

内容总结自bilibili用户 湖科大教书匠的《计算机网络微课堂》和中国工信出版集团《图解TCP/IP》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 之 理解指针(4)

文章目录 1. 字符指针变量2. 数组指针变量2.1 对数组指针变量的理解2.2 数组指针变量的初始化 3. 二维数组传参的本质4. 函数指针变量4.1 函数指针变量的创建4.2 函数指针变量的使用 5. 函数指针数组 1. 字符指针变量 我们在前面使用的主要是整形指针变量,现在要学…

实战练习之Linux上实现shell脚本自动化编程

实验拓扑要求 主机环境描述 注意: 172.25.250.101-172.25.250.105 共 5 个 IP 地址由servera.exam.com服务器进行提供。172.25.250.106 由 serverb.exam.com 服务器进行提供。 需求描述 1. 172.25.250.101 主机上的 Web 服务要求提供 www.exam.com Web站点&#…

A Comprehensive Study of Knowledge Editing for Large Language Models

大型语言模型(LLMs)在理解和生成与人类交流密切相关的文本方面表现出了非凡的能力。然而,一个主要的限制在于训练期间的大量计算需求,这是由于它们的广泛参数化而产生的。世界的动态性质进一步加剧了这一挑战,需要经常…

Unity UGUI 之Text 控件

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 1.Text是什么 UI里面写文本的(注意是legacy Text,而不是TextmeshP…

前端网页打开PC端本地的应用程序实现方案

最近开发有一个需求,网页端有个入口需要跳转三维大屏,而这个大屏是一个exe应用程序。产品需要点击这个入口,并打开这个应用程序。这个就类似于百度网盘网页跳转到PC端应用程序中。 这里我们采用添加自定义协议的方式打开该应用程序。一开始可…

springboot项目从jdk8升级为jdk17过程记录

背景:公司有升级项目jdk的规划,计划从jdk8升级到jdk11 开始 首先配置本地的java_home 参考文档:Mac环境下切换JDK版本及不同的maven-CSDN博客 将pom.xml中jdk1.8相关的版本全部改为jdk17,主要是maven编译插件之类的&#xff0c…

mysql定时备份

为什么写这篇文章 最近项目里面需要定时备份mysql的数据,网上找了下,找到了一些比较好的解决方案。但是发现有几个地方与自己不匹配,我期望有如下 备份过程不能锁表,网上很多都是会锁表备份定时任务无法执行,但是手动…

【如何在Jenkins的从节点切换NPM镜像源查看和切换】

【问题】 Jenkins打包时,前端npm构建时很慢,所有需要更换镜像源 【自查】 找到Jenkins从节点上的nodejs安装的路径,进入bin目录 执行./npm -v查看是不能正常查看, [rootlocalhost bin]# ./npm -v /usr/bin/env: ‘node’: No su…

redis 基础命令

1.数据库命令 select 库名;切换库 flushdb 清空库 flushall 清空所有库 redis支持的数据类型有很多,使用最频繁的有String 字符串类型,List队列,Hash,Zset有序集合,Set集合。 2.字符串类型命令 表示k…

【Python机器学习】k-近邻算法简单实践——电影分类

k-近邻算法(KNN)的工作原理是:存在一个样本数据集合,也被称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的数据后,将…

Flink之重启策略

目录 1、固定延迟重启策略 2、失败率重启策略 3、不重启策略 在设置完 CheckPoint() 检查点机制后,不设置重启策略的话,,可以无限重启程序,那么设置的检查点机制也就没有什么意义了。因此,在生产实践中,…

android手势监听

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、使用四、 如何实…

昇思25天学习打卡营第17天 | CycleGAN图像风格迁移互换

通过深入学习CycleGAN模型,我对无监督图像到图像的转换技术有了更深的理解。CycleGAN不仅能在没有成对训练样本的情况下实现域之间的转换,而且在保持内容结构的同时成功转换图像风格,这在许多应用中都非常有用,如艺术风格转换、季…

VAE、GAN与Transformer核心公式解析

VAE、GAN与Transformer核心公式解析 VAE、GAN与Transformer:三大深度学习模型的异同解析 【表格】VAE、GAN与Transformer的对比分析 序号对比维度VAE(变分自编码器)GAN(生成对抗网络)Transformer(变换器&…

Python从0到100(四十三):数据库与Django ORM 精讲

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

SpringMVC 控制层框架-下

五、SpringMVC其他扩展 1. 异常处理机制 1.1 异常处理概念 开发过程中是不可避免地会出现各种异常情况,例如网络连接异常、数据格式异常、空指针异常等等。异常的出现可能导致程序的运行出现问题,甚至直接导致程序崩溃。因此,在开发过程中&a…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 小区小朋友统计(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

智能编程,一触即发:使用AIGC优化CSS——提升前端开发效率与质量

文章目录 一、AIGC在CSS优化中的应用场景智能代码生成自动布局调整性能优化建议样式和色彩建议 二、使用AIGC优化CSS的具体步骤明确需求选择AIGC工具输入描述或设计稿审查和调整集成和测试 三、AIGC优化CSS的优势与挑战优势:挑战: 《CSS创意项目实践&…

AttributeError: module ‘selenium.webdriver‘ has no attribute ‘PhantomJS‘

AttributeError: module ‘selenium.webdriver‘ has no attribute ‘PhantomJS‘ 目录 AttributeError: module ‘selenium.webdriver‘ has no attribute ‘PhantomJS‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的…

数据结构初阶 · 二叉搜索树

目录 前言: 二叉搜索树的实现 二叉搜索树的基本结构 增 查 中序遍历 删 前言: 在最初学习二叉树的时候,就提及到过单独用树来存储数据是既不如链表也不如顺序表的,二叉树的用处可以用来排序,比如堆排序,也可以用来搜索数据…