计算机网络:网络层 —— IPv4 协议的表示方法及其编址方法

news2024/11/24 11:25:18

文章目录

      • IPv4
        • IPv4的表示方法
        • IPv4的编址方法
          • 分类编址
            • A类地址
            • B类地址
            • C类地址
            • 可指派的地址数量
            • 一般不使用的特殊IPv4地址
          • 划分子网编址
            • 子网掩码
            • 默认子网掩码
          • 无分类编址方法
            • 地址掩码
            • 斜线记法
            • 无分类域间路由选择 CIDR

IPv4

IPv4(Internet Protocol version 4)是互联网上最常用的 IP 协议版本。是给因特网(Intemnet)上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的32比特的标识符。它是互联网传输层协议栈中的网络层协议,用于为网络中的设备分配唯一的 IP 地址,并在网络上传输数据

![[IPv4地址.png]]

IPv4 地址空间的有限性导致了 IP 地址短缺问题。IPv4 地址共有约 42 亿个,但是随着互联网的快速发展,这个数量已经远远不够。2011年2月3日,因特网号码分配管理局(Internet Assigned Numbers Authority,IANA)(由 ICANN 行使职能)宣布,IPv4 地址已经分配完毕。

IPv4的表示方法

IPv4 地址是由 32位二进制数 表示,通常以“点分十进制”(dotted decimal)的形式呈现,如 192.168.0.1。IPv4 地址由两部分组成,网络部分主机部分

  • 网络部分用来标识网络
  • 主机部分用来标识网络中的具体设备

![[IPv4的表示方法.png]]

IPv4的编址方法

IPv4地址的编址方法经历了三个历史阶段:

![[IPv4的编址方法发展.png]]

分类编址

IPv4 的分类编址方法将 32 比特的 IPv4 的地址划分为网络号部分主机号部分

  • 网络号:标志主机(或路由器)的接口所连接到的网络。同一个网络中,不同主机(或路由器)的接口的IPv4地址的网络号必须相同,表示它们属于同一个网络。

  • 主机号:标志主机(或路由器)的接口。同一个网络中,不同主机(或路由器)的接口的IPv4地址的主机号必须各不相同,以便区分各主机(或路由器)的接口

![[IPv4的分类编址.png]]

IPv4 的分类编址方法将 IPv4 地址分为了五类:

![[IPv4的分类编址类别.png]]

  • A类、B类和C类地址都是单播地址,只有单播地址可以分配给网络中的主机(或路由器)的各接口

  • 主机号为“全0”的地址是网络地址,不能分配给主机(或路由器)的各接口

  • 主机号为“全1”的地址是广播地址,不能分配给主机(或路由器)的各接口

A类地址

![[A类地址.png]]

  • 开头的八位组(第一个字节)的第一位必须是 0

  • 这一类地址主要用于大型网络,如企业或国家层面的网络。

  • A 类地址的第一个字节代表网络号,其余三个字节代表主机号。

  • 其地址范围是从 1.0.0.0126.255.255.255

  • 每个 A 类网络最多支持约 1677万(2^24)个主机。

本地环回测试地址,也被称为环回地址或本地回环地址,是一组特殊的IP地址,主要用于测试本机的网络配置和模拟网络通信。当需要测试本机上的网络应用程序或服务时,可以使用环回地址进行通信,数据报由本机进行接收和处理,不会发送到其他主机。

B类地址

![[B类地址.png]]

  • 开头的八位组的前两位必须是 10

  • B 类地址适合中型网络,如大学校园或大公司内部网络。

  • 前两个字节代表网络号,后两个字节代表主机号。

  • 其地址范围是从 128.0.0.0191.255.255.255

  • 每个 B 类网络最多支持约 65534(2^16 - 2)个主机。

C类地址

![[C类地址.png]]

  • 开头的八位组的前三位必须是 110

  • C 类地址通常用于小型网络,如家庭或小型办公室。

  • 前三个字节代表网络号,最后一个字节代表主机号。

  • 其地址范围是从 192.0.0.0223.255.255.255

  • 每个 C 类网络最多支持约 254(2^8 - 2)个主机。

可指派的地址数量

![[可指派的地址数量.png]]

  • D 类地址:

    • 开头的八位组的前四位必须是 1110
    • D 类地址用于多播通信,即将数据包发送给一组选定的接收者。
    • 其地址范围是从 224.0.0.0239.255.255.255
  • E 类地址:

    • 开头的八位组的前五位必须是 11110
    • E 类地址保留供实验和研究使用,不用于常规互联网通信
    • 其地址范围是从 240.0.0.0255.255.255.255
一般不使用的特殊IPv4地址

如下 IPv4 地址一般在特殊情况下使用

![[一般不使用的特殊IPv4地址.png]]

划分子网编址

随着更多的中小网络加入因特网,IPv4 分类编址方法不够灵活、容易造成大量IPv4地址资源浪费的缺点就暴露出来了,剩余的大量地址只能由该单位的同一个网络使用,而其他单位的网络不能使用。

![[申请新的网络号.png]]

申请新的网络号存在以下弊端

  • 需要等待很长的时间,并且要花费更多的费用
  • 即便申请到了两个新的网络号,其他路由器的路由表还需要新增针对这两个新的网络的路由条目。
  • 浪费原来已申请到的网络中剩余的大量地址

因此,划分子网编址方法对其进行改进(“打补丁”)

如果可以从 IPv4 地址的主机号部分借用一些比特作为子网号来区分不同的子网,就可以利用原有网络中剩余的大量 IPv4 地址,而不用申请新的网络地址了。

![[借用一些比特作为子网号.png]]

子网掩码

IPv4 地址的主机号部分借用一些比特作为子网号来区分不同的子网,就引入了一个新的概念:子网掩码,可以表明分类 IPv4 地址的主机号部分被借用了几个比特作为子网号。

IPv4 地址类似,子网掩码也是由 32比特 构成的。

  • 用左起多个连续的比特1对应 IPv4 地址中的网络号和子网号
  • 之后的多个连续的比特0对应 IPv4 地址中的主机号

将划分子网的IPv4地址与相应的子网掩码进行逐比特的逻辑与运算,就可得到该 IPv4 地址所在子网的网络地址。

![[IPv4地址与相应的子网掩码.png]]

只要给定了一个分类的 IPv4 地址及其相应的子网掩码就可以得出子网划分的全部细节

![[IPv4地址与相应的子网掩码划分.png]]

子网划分:

![[子网划分.png]]

  1. 原始网络:

    • 网络地址: 218.75.230.0
    • 子网掩码: 255.255.255.0
  2. 子网划分:

    • 从主机号中借用一位来形成子网号,使得每个子网拥有更多的地址。
    • 新的子网掩码变为: 255.255.255.128
  3. 子网0:

    • 网络地址: 218.75.230.0
    • 主机地址范围: 218.75.230.1218.75.230.126
    • 广播地址: 218.75.230.127
  4. 子网1:

    • 网络地址: 218.75.230.128
    • 主机地址范围: 218.75.230.129218.75.230.254
    • 广播地址: 218.75.230.255
  • 网络号: 是固定不变的,标识整个网络。
  • 子网号: 通过借用主机号的一位来区分不同的子网。
  • 主机号: 表示单个设备在网络内的唯一标识。
默认子网掩码

默认子网掩码是指在未划分子网的情况下使用的子网掩码

![[默认子网掩码.png]]

  • A 类地址:默认子网掩码为 255.0.0.0

  • B 类地址:默认子网掩码为 255.255.0.0

  • C 类地址:默认子网掩码为 255.255.255.0

无分类编址方法

IPv4 地址的划分子网编址方法在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网( 2 24 − 3 = 2097152 2^{24-3}= 2097152 2243=2097152)由于其每个网络所包含的地址数量太小( 2 8 = 256 2^8=256 28=256),因此并没有得到充分使用,而因特网的 IPv4 地址仍在加速消耗,整个 IPv4 地址空间面临全部耗尽的威胁。

为此,因特网工程任务组IETF又提出了采用无分类编址的方法,来解决 IPv4 地址资源紧张的问题,同时还专门成立 IPv6 工作组负责研究新版本的 IP,以切底解决 IPv4 地址耗尽问题。

1993年,因特网工程任务组IETF发布了无分类域间路由选择(Classless Inter-Domain Routing,CIDR)的 RFC 文档 [RFC1517~1519,RFC1520].

  • CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念
  • CIDR 可以更加有效地分配 IPv4 地址资源,且可以在 IPv6 使用之前允许因特网的规模继续增长。

![[无分类编址方法发展.png]]

地址掩码

无分类编址方法使用的地址掩码与划分子网使用的子网掩码类似,由32比特构成。

  • 用左起多个连续的比特1对应IPv4地址中的网络前缀

  • 之后的多个连续的比特0对应IPv4地址中的主机号

  • 对于无分类编址的 IPv4 地址,仅从地址自身无法看出网络前缀和主机号各自的长度

无分类编址方法示例:
![[无分类编址方法.png]]
从二进制表示可以看出,地址掩码中连续的“1”位定义了网络前缀的长度。在这个例子中,连续的“1”位共有20位,因此网络前缀占用了20比特剩下的12比特则属于主机号部分

斜线记法

为了简便起见,可以不明确给出配套的地址掩码的点分十进制形式,而是在无分类编址的IPv4地址后面,加上斜线 "/" 在斜线,之后写上网络前缀所占的比特数量(也就是地址掩码中左起连续比特1的数量),这种记法称为斜线记法

如:128.14.35.7/20网络前缀为 20 比特主机号为 12 比特(32-20)

无分类域间路由选择 CIDR

无分类域间路由选择 CIDR 是将网络前缀都相同的、连续的多个无分类IPv4地址,组成一个CIDR地址块,只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的以下全部细节:

  • 地址块中的最小地址
  • 地址块中的最大地址
  • 地址块中的地址数量
  • 地址块中聚合某类网络(A类、B类、C类)的数量
  • 地址掩码

****![[无分类域间路由选择 CIDR.png]]****

分类编址方法只能以 /8(A类网络)/16(B类网络)/24(C类网络) 为单位来分配,既不灵活,也容易造成 IPv4 地址的浪费。而使用 CIDR 的一个好处是,可以根据客户的需要分配适当大小的CIDR地址块,因此可以更加有效地分配 IPv4 的地址空间。

![[CIDR的好处1.png]]

使用 CIDR 的另一个好处是路由聚合(也称为构造超网

在如下图的例子中,我们对 R2 的路由表进行了聚合操作。具体来说,我们将五个子网的路由条目合并为一个单一的聚合路由条目
![[路由聚合.png]]

  1. 确定公共前缀:首先,我们需要找到这些子网地址的公共前缀。观察这些子网地址,我们可以看到它们的前缀都是 172.1。这意味着它们共享了前 16 位。

  2. 计算最长公共前缀:接下来,我们需要找出这些子网地址中最长的公共前缀。在这种情况下,最长公共前缀是 172.1.4,对应于前 22 位。

  3. 创建聚合路由:根据最长公共前缀,我们可以创建一个新的聚合路由条目。该条目的地址范围覆盖了所有的原始子网地址。在这个例子中,聚合后的路由条目是 172.1.4.0/22

最终,R2 的路由表中只有一个聚合路由条目 172.1.4.0/22,而不是原来的五个具体路由条目。这种聚合方式大大减小了路由表的规模,同时也降低了路由查找的时间复杂度。

  • 网络前缀越长,地址块越小,路由越具体

  • 若路由器查表转发分组时发现有多条路由条目匹配,则选择网络前缀最长的那条路由条目,这称为最长前缀匹配,因为这样的路由更具体。

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

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

相关文章

excel自定义导出实现(使用反射)

前言 项目中接到需求,需要对导出的字段进行自定义导出 ,用户可在前端选择自定义导出的字段(如图),实现过程做以下记录,仅供参考; 思路 跟前端约定好所有要导出的字段名称(headName)跟对应的…

练习LabVIEW第十七题

学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第十七题: 编写一个程序,用labview的信号生成函数产生一个三角波并显示在chart上,在编写例外一个程序读出数据…

【论文阅读】PGAN

1. WHY 问题 图像超分辨率一直是一个热门研究课题,具有重要的应用价值。基于生成对抗网络GAN的单幅图像超分辨率方法显示重建图像与人类视觉特征更一致。因此,基于 GAN 的网络优化已成为图像超分辨率的主流。然而,一些最新研究表明&#xf…

江协科技STM32学习- P28 USART串口数据包

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

C# Retry库

比如网络访问或硬件参数设置需要重试&#xff0c;可引用gunet上的Polly库。 同步方式&#xff08;每次重试有不同的时间间隔&#xff09; var polly Policy.Handle<Exception>().WaitAndRetry(new[] { new TimeSpan(0, 0, 1), new TimeSpan(0, 0, 2), new TimeSpan(0, …

Java避坑案例 - 线程池使用中的风险识别与应对

文章目录 线程池的基本概念创建线程池的注意事项实例1&#xff1a; newFixedThreadPool 使用无界队列&#xff0c;可能因任务积压导致 OOM实例2&#xff1a; newCachedThreadPool 会创建大量线程&#xff0c;可能因线程数量过多导致无法创建新线程。 线程池参数设置的最佳实践线…

基于SSM+微信小程序的社区垃圾回收管理系统(垃圾1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于ssm微信小程序的社区垃圾回收管理系统&#xff0c;有管理员&#xff0c;回收员&#xff0c;用户三个角色。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;回收员管理&am…

确保组织决策权清晰的有效策略

在组织中&#xff0c;明确的决策权、有效的沟通机制、权责明确的结构是确定和维护清晰决策权的关键要素。明确的决策权确保了每个成员知道自己的职责和权限&#xff0c;有效的沟通机制促进了信息的流通和理解&#xff0c;权责明确的结构则为组织的运作提供了清晰的框架。明确的…

SpringBoot3+SpringSecurity6基于若依系统整合自定义登录流程

SpringBoot3SpringSecurity6基于若依系统整合自定义登录流程 问题背景 在做项目时遇到了要对接统一认证的需求&#xff0c;但是由于框架的不兼容性&#xff08;我们项目是springboot3&#xff0c;jdk17&#xff0c;springsecurity6.1.5&#xff09;等因素&#xff0c;不得不使…

WPF+MVVM案例实战(十四)- 封装一个自定义消息弹窗控件(下)

文章目录 1、案例效果2、弹窗空间使用1.引入用户控件2、按钮命令实现 3、总结4、源代码获取 1、案例效果 2、弹窗空间使用 1.引入用户控件 打开 Wpf_Examples 项目&#xff0c;在引用中添加用户控件库&#xff0c;在 MainWindow.xaml 界面引用控件库&#xff0c;代码如下&…

【论文精读】ID-like Prompt Learning for Few-Shot Out-of-Distribution Detection

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;论文精读_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 注&#xff1a;下文…

PIDNet(语义分割)排坑

PIDNet训练自己的数据集 1. 前言2. 准备工作3. 配置环境4. 排坑过程4.1.1 configs增加了VOC文件夹 并在里面写了yaml参数文件4.1.2 加载VOC格式数据集的类4.1.3 train.py调试 1. 前言 paper小修时reviewer说baseline太老&#xff0c;所以对CVPR2023的PIDNet进行复现&#xff0…

Google Recaptcha V2 简单使用

最新的版本是v3&#xff0c;但是一直习惯用v2&#xff0c;就记录一下v2 的简单用法&#xff0c;以免将来忘记了 首先在这里注册你域名&#xff0c;如果是本机可以直接直接填 localhost 或127.0.0.1 https://www.google.com/recaptcha/about/ 这是列子 网站密钥&#xff1a;是…

autMan奥特曼机器人-内置Redis

autMan内置了redis服务&#xff0c;有的脚本运行需要redis支持 几个注意事项&#xff1a; 启用redis服务后要重启autMan生效&#xff0c;关闭一样的道理。启用redis服务后会增加约200M的内存占用多个autMan的redis服务可以组成集群redis服务

五、快速入门K8s之Pod容器的生命周期

一、容器的初始化init ⭐️ init c &#xff1a; init contariner 初始化容器&#xff0c;只是用来初始化&#xff0c;初始化完成就会死亡可以大于的等于一也可以没有&#xff0c;每个init只有在前一个init c执行完成后才可以执行下一个、init容器总是运行到成功完成为止&#…

sqoop问题汇总记录

此篇博客仅记录在使用sqoop时遇到的各种问题。持续更新&#xff0c;有问题评论区一起探讨&#xff0c;写得有不足之处见谅。 Oracle_to_hive 1. main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTr…

C++对象模型:Function 语意学

Member 的各种调用方式 Nonstatic Member Function 使用C时&#xff0c;成员函数和非成员函数在性能上应该是等价的。当设计类时&#xff0c;我们不应该因为担心效率问题而避免使用成员函数。 实现&#xff1a;编译器会将成员函数转换为一个带有额外this指针参数的非成员函数…

二叉树中的深搜 算法专题

二叉树中的深搜 一. 计算布尔二叉树的值 计算布尔二叉树的值 class Solution {public boolean evaluateTree(TreeNode root) {if(root.left null) return root.val 0? false: true;boolean left evaluateTree(root.left);boolean right evaluateTree(root.right);return…

【Linux】环境ChatGLM-4-9B 模型部署

一、模型介绍 GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中&#xff0c; GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出超越 Llama-3-8B 的卓越性能。除了能进行多轮对话&#xf…

深入理解Java 线程并发编排工具: 概述和应用场景

目录 前言概述1. CountDownLatch2. CyclicBarrier3. Semaphore&#xff08;信号量)4. Condition 案例CountDownLatch-马拉松场景CyclicBarrier-马拉松场景Semaphore-公交车占座场景Condition-线程等待唤醒场景 前言 在 Java 的 java.util.concurrent (JUC) 包中&#xff0c;提…