当前位置: 首页 > news >正文

【计算机网络】网络层——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》

相关文章:

【计算机网络】网络层——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. 代码 我写了一版很复杂的代码&#xff1a; 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 赋予读写权限&#xff0c;否则将无法写入数据- /usr/loc…...

学习笔记之JAVA篇(0724)

p 方法 方法声明格式&#xff1a; [修饰符1 修饰符2 ...] 返回值类型 方法名&#xff08;形式参数列表&#xff09;{ java语句;......; } 方法调用方式 普通方法对象.方法名&#xff08;实参列表&#xff09;静态方法类名.方法名&#xff08;实参列表&#xff09; 方法的详…...

【Android】广播机制

【Android】广播机制 前言 广播机制是Android中一种非常重要的通信机制&#xff0c;用于在应用程序之间或应用程序的不同组件之间传递信息。广播可以是系统广播&#xff0c;也可以是自定义广播。广播机制主要包括标准广播和有序广播两种类型。 简介 在Android中&#xff0c…...

【.NET全栈】ASP.NET开发Web应用——ASP.NET数据绑定技术

文章目录 前言一、绑定技术基础1、单值绑定2、重复值绑定 二、数据源控件1、数据绑定的页面生存周期2、SqlDataSource3、使用参数过滤数据4、更新数据和并发处理5、编程执行SqlDataSource命令6、ObjectDataSource控件介绍7、创建业务对象类8、在ObiectDataSource中使用参数9、使…...

MySQL的账户管理

目录 1 密码策略 1.1 查看数据库当前密码策略&#xff1a; 1.2 查看密码设置策略 1.3 密码强度检查等级解释&#xff08;validate_password.policy&#xff09; 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数据迁移新纪元&#xff1a;数据库数据泵&#xff08;Data Pump&#xff09;使用指南 在数据管理的世界里&#xff0c;数据迁移是一个常见且复杂的过程。SQL Server提供了一个强大的工具——数据库数据泵&#xff08;Data Pump&#xff09;&#xff0c;它可以帮助我…...

Android性能优化之OOM

OOM 什么是OOM&#xff1f;为什么会有OOM&#xff1f;APP的内存限制App的内存限制是多少&#xff1f; 为什么Android系统要设定App的内存限制&#xff1f;Android有GC自动回收资源&#xff0c;为什么还会OOM?容易发生OOM的场景及处理方案如何避免OOM&#xff1f; 什么是OOM&am…...

代码随想录算法训练营day7 | 454.四数相加II、383.赎金信、15.三数之和、18.四数之和

文章目录 454.四数相加II思路 383.赎金信思路 15.三数之和思路剪枝去重 18.四数之和思路剪枝去重复习&#xff1a;C中的类型转换方法 总结 今天是哈希表专题的第二天 废话不多说&#xff0c;直接上题目 454.四数相加II 建议&#xff1a;本题是 使用map 巧妙解决的问题&#x…...

Spark实时(三):Structured Streaming入门案例

文章目录 Structured Streaming入门案例 一、Scala代码如下 二、Java 代码如下 三、以上代码注意点如下 Structured Streaming入门案例 我们使用Structured Streaming来监控socket数据统计WordCount。这里我们使用Spark版本为3.4.3版本&#xff0c;首先在Maven pom文件中导…...

《Java初阶数据结构》----4.<线性表---Stack栈和Queue队列>

前言 大家好&#xff0c;我目前在学习java。之前也学了一段时间&#xff0c;但是没有发布博客。时间过的真的很快。我会利用好这个暑假&#xff0c;来复习之前学过的内容&#xff0c;并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...