【计算机网络】网络层——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),计算公式为
(8-1)是因为有8位,但是第一位固定是0,减2是因为减去最小网络号0和最大网络号127。
所以A类地址每个网络中可以分配的IP地址数量为 个
24位主机号,减去全0的网络地址和全1的广播地址
B类地址
B类地址前16位是网络号,而且前两位固定是10
最小网络号是1000 0000 0000 0000,点分十进制表示是128.0,是第一个可以指派的网络号
最大网络号是1011 1111 1111 1111,点分十进制表示是191.255,是最后一个可以指派的网络号

所以B类地址可指派的网络数量为个网络数(前两位固定为10,不用像A类一样再减2)
每个网络中可以分配的IP地址数量为(16位二进制数,减全0和全1两种情况)
C类地址
C类地址前24位是网络号,而且前三位固定是110
最小网络号点分十进制表示是192.0.0,是第一个可以指派的网络号
最大网络号点分十进制表示是223.255.255,是最后一个可以指派的网络号

所以C类地址可指派的网络数量为
每个网络中可分配的IP地址数量为
小结:
我们通过左起第一个十进制数的值,就可以判断出网络类别,因为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两种,每个子网可分配的地址数量是
, (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》
相关文章:
【计算机网络】网络层——IPv4地址(个人笔记)
学习日期:2024.7.24 内容摘要:IPv4地址,分类编址,子网,无分类编址 IPv4地址概述 在TCP/IP体系中,IP地址是一个最基本的概念,IPv4地址就是给因特网上的每一台主机的每一个接口分配一个在全世界…...
c++ 学习笔记之多线程:线程锁,条件变量,唤醒指定线程
基于CAS线程加锁方式 CAS(Compare-And-Swap)和 mutex 都是用于实现线程安全的技术,但它们适用于不同的场景,具有不同的性能和复杂性。下面是对两者的区别和使用场景的详细解释: CAS(Compare-And-Swap&…...
《0基础》学习Python——第二十三讲__网络爬虫/<6>爬取哔哩哔哩视频
一、在B站上爬取一段视频(B站视频有音频和视频两个部分) 1、获取URL 注意:很多平台都有反爬取的机制,B站也不例外 首先按下F12找到第一条复制URL 2、UA伪装,下列图片中(注意代码书写格式) 3、Co…...
第13周 简历职位功能开发与Zookeeper实战
第13周 简历职位功能开发与Zookeeper实战 本章概述1. Mysql8窗口函数over使用1.1 演示表结构与数据1.2 案例1:获取男女总分数1.3 案例2****************************************************************************************本章概述 1. Mysql8窗口函数over使用 参考案例…...
什么是大型语言模型 (LLM)
本章探讨下,人工智能如何彻底改变我们理解和与语言互动的方式 大型语言模型 (LLM) 代表了人工智能的突破,它采用具有广泛参数的神经网络技术进行高级语言处理。 本文探讨了 LLM 的演变、架构、应用和挑战,重点关注其在自然语言处理 (NLP) 领…...
【人工智能】AI时代:探索个人潜能的新视角
文章目录 🍊Al时代的个人发展1 AI的高速发展意味着什么1.1 生产力大幅提升1.2 生产关系的改变1.3 产品范式1.4 产业革命1.5 Al的局限性1.5.1局限一:大模型的幻觉1.5.2 局限二:Token 2 个体如何应对这种改变?2.1 职场人2.2 K12家长2.3 大学生2.4 创业者 …...
pyaudio VAD通过声音音频值分贝大小检测没人说话自动停止录制
效果可能说话声音小可能不被监听到,需要更改QUIET_DB阈值,另外delay_time值是低于阈值多久就可以停止保存当前的语音 import pyaudio import waveimport sys import numpy as npdef record_auto(MIC_INDEX=1):开启麦克风录音,保存至temp/speech_record.wav音频文件音量超过…...
《后端程序猿 · @Value 注释说明》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
【LeetCode】71.简化路径
1. 题目 2. 分析 3. 代码 我写了一版很复杂的代码: class Solution:def simplifyPath(self, path: str) -> str:operator [] # 操作符的栈dir_name [] # 文件名的栈idx 0cur_dir_name ""while(idx < len(path)):if path[idx] /:operator.ap…...
DockerCompose 安装环境
1. Redis version: 3 services:redis:image: redis:6.2.12container_name: redisports:- "6379:6379"environment:TZ: Asia/Shanghaivolumes:# 本地数据目录要先执行 chmod 777 /usr/local/docker/redis/data 赋予读写权限,否则将无法写入数据- /usr/loc…...
学习笔记之JAVA篇(0724)
p 方法 方法声明格式: [修饰符1 修饰符2 ...] 返回值类型 方法名(形式参数列表){ java语句;......; } 方法调用方式 普通方法对象.方法名(实参列表)静态方法类名.方法名(实参列表) 方法的详…...
【Android】广播机制
【Android】广播机制 前言 广播机制是Android中一种非常重要的通信机制,用于在应用程序之间或应用程序的不同组件之间传递信息。广播可以是系统广播,也可以是自定义广播。广播机制主要包括标准广播和有序广播两种类型。 简介 在Android中,…...
【.NET全栈】ASP.NET开发Web应用——ASP.NET数据绑定技术
文章目录 前言一、绑定技术基础1、单值绑定2、重复值绑定 二、数据源控件1、数据绑定的页面生存周期2、SqlDataSource3、使用参数过滤数据4、更新数据和并发处理5、编程执行SqlDataSource命令6、ObjectDataSource控件介绍7、创建业务对象类8、在ObiectDataSource中使用参数9、使…...
MySQL的账户管理
目录 1 密码策略 1.1 查看数据库当前密码策略: 1.2 查看密码设置策略 1.3 密码强度检查等级解释(validate_password.policy) 2 新建登录账户 3 账户授权 3.1 赋权原则 3.2 常见的用户权限 3.3 查看权限 3.4 赋权语法 4 实例 4.1 示例1&#x…...
FastGPT 源码调试配置
目录 一、添加 launch.json 文件 二、调试 本文简单介绍如何通过 vscode 对 FastGPT 进行调试。 这里假设已经安装 vsocde 和 FastGPT本地部署。 一、添加 launch.json 文件 vscode 打开 FastGPT 项目,点击 调试 -> 显示所有自动调试配置 -> 添加配置 -> Node.j…...
SQL Server数据迁移新纪元:数据库数据泵(Data Pump)使用指南
SQL Server数据迁移新纪元:数据库数据泵(Data Pump)使用指南 在数据管理的世界里,数据迁移是一个常见且复杂的过程。SQL Server提供了一个强大的工具——数据库数据泵(Data Pump),它可以帮助我…...
Android性能优化之OOM
OOM 什么是OOM?为什么会有OOM?APP的内存限制App的内存限制是多少? 为什么Android系统要设定App的内存限制?Android有GC自动回收资源,为什么还会OOM?容易发生OOM的场景及处理方案如何避免OOM? 什么是OOM&am…...
代码随想录算法训练营day7 | 454.四数相加II、383.赎金信、15.三数之和、18.四数之和
文章目录 454.四数相加II思路 383.赎金信思路 15.三数之和思路剪枝去重 18.四数之和思路剪枝去重复习:C中的类型转换方法 总结 今天是哈希表专题的第二天 废话不多说,直接上题目 454.四数相加II 建议:本题是 使用map 巧妙解决的问题&#x…...
Spark实时(三):Structured Streaming入门案例
文章目录 Structured Streaming入门案例 一、Scala代码如下 二、Java 代码如下 三、以上代码注意点如下 Structured Streaming入门案例 我们使用Structured Streaming来监控socket数据统计WordCount。这里我们使用Spark版本为3.4.3版本,首先在Maven pom文件中导…...
《Java初阶数据结构》----4.<线性表---Stack栈和Queue队列>
前言 大家好,我目前在学习java。之前也学了一段时间,但是没有发布博客。时间过的真的很快。我会利用好这个暑假,来复习之前学过的内容,并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...
Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
轻量级Docker管理工具Docker Switchboard
简介 什么是 Docker Switchboard ? Docker Switchboard 是一个轻量级的 Web 应用程序,用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器,使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...
