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

计网第四章(网络层)(二)

目录

IPV4地址编址

第一历史阶段(分类编址):

A类地址:

B类地址:

C类地址:

D类地址(多播地址):

E类地址(保留地址):

第二历史阶段(划分子网):

划分子网的工具(子网掩码):

第三历史阶段(无分类编址):

 路由聚合(构造超网):

最长前缀匹配:


IPV4地址编址

IPV4总共有32个比特。

第一历史阶段(分类编址):

分类编址的IPV4地址分为A、B、C、D、E五类。

其中只有前三类地址可以分配给网络中的主机或路由器的各接口。

总体上而言,是将地址的一部分作为网络号,另一部分作为主机号。不同的类分配的各部分的位数不同。

主机号为全0的为网络地址,不能分配给主机或者路由器的各接口。

主机号为全1的为广播地址,也不能分配给主机或者路由器的各接口。

注意:A类地址中还有一些特殊的地址也不能分配给主机或者路由器的各接口。这些在A类地址中说明。

地址0.0.0.0是一个特殊的IPV4地址,只能作为源地址使用,表示本网络的本主机。

地址255.255.255.255只能作为目的地址使用,表示只在本网络上进行广播(各路由均不转发)。

A类地址:

32个比特中,网络号占8位,主机号占24位;其中网络号最高位固定为0,即0xxxxxxx。

可以看到,当这个固定位变为1的时候,就不再是A类地址了。所以A类地址的网络号的范围为0~127。

在A类地址中,最小网络号0,保留不指派。最大网络号127,作为本地环回测试地址,不能指派。最小的本地环回测试地址为127.0.0.1(主机号为全0是网络地址,所以从1开始)。最大的本地环回测试地址为127.255.255.254(主机号为全1是广播地址,所以最大只能是254)。

所以第一个可以指派的网络号是1,网络地址为1.0.0.0 。最后一个可指派的网络号是126,网络地址为126.0.0.0 。

可指派的网络数量为2^{7}-2=126个,式中的7是因为A类地址最高位固定为0,并且网络号占8位,那么可以更改的只有后7位,所以是2^{7}个,减去2的原因是要去除前面所述的不能指派的两个网络号(0和127)。

每个网络中可分配的IP地址数量为:2^{24}-2= 16777214个,式中的24为主机号的位数,减2是因为主机号全1和主机号全0不能分配。

B类地址:

32个比特中,网络号占16位,主机号占16位;其中网络号最高位固定为10,即10xxxxxx。

B类地址网络号的第一个字节的范围为128~191。

在B类地址中,最小网络号也是第一个可以指派的网络号是128.0,网络地址为128.0.0.0 。最大的也是最后一个可指派的网络号为191.255,网络地址为191.255.0.0 。

可指派的网络数量为2^{14}=16384个,式中的14是因为B类地址最高位固定为10,并且网络号占16位,那么可以更改的只有后14位,所以是2^{14}个。

每个网络中可分配的IP地址数量为:2^{16}-2= 65534个,式中的16为主机号的位数,减2是因为主机号全1和主机号全0不能分配。

C类地址:

32个比特中,网络号占24位,主机号占8位;其中网络号最高位固定为110,即110xxxxx。

C类地址的网络号的第一个字节的范围为192~223。

在C类地址中最小网络号也是第一个可以指派的网络号是192.0.0,网络地址为192.0.0.0 。最大的也是最后一个可指派的网络号为223.255.255,网络地址为223.255.255.0 。

可指派的网络数量为2^{21}=2097152个,式中的21是因为C类地址最高位固定为110,并且网络号占24位,那么可以更改的只有后21位,所以是2^{21}个。

每个网络中可分配的IP地址数量为:2^{8}-2= 254个,式中的8为主机号的位数,减2是因为主机号全1和主机号全0不能分配。

D类地址(多播地址):

最高位固定为1110。

D类地址的网络号的第一个字节的范围为224~239。

E类地址(保留地址):

最高位固定为1111。

E类地址的网络号的第一个字节的范围为240~255。

第二历史阶段(划分子网):

该阶段的核心思想就是在分类编址的基础之上,从主机号部分借用一部分作为子网号。这样的话就可以避免新增网络时,申请新的网络号会带来的弊端,比如,原有网络的IP地址大量浪费等。

此时,IPV4地址就从二级结构变为了三级结构:

 

划分子网的工具(子网掩码):

32位比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号。

子网掩码使用连续的比特1来表示网络号和子网号,使用连续的比特0来表示主机号。

从这一点结合不同类的地址网络号所占位数我们可以推理出,

A类地址的子网掩码至少为255.x.x.x ,B类地址的子网掩码至少为255.255.x.x  ,C类地址的子网掩码至少为255.255.255.x 。

将划分子网的IPV4地址与子网掩码进行逻辑与运算就能得到相应的IPV4地址所在子网的网络地址。

现在给你一个IP地址,根据逻辑与运算的特点,主机号部分最后全部会被清0,而网络号和子网号会被保留下来。由前面可以知道,主机号部分全为0即为所在网络的网络地址,所以就可以得知所在子网的网络地址。

其实要进行逻辑与运算最重要的是子网掩码中第一个不为255的字节,算出来这个地址的值,在它前面的字节照抄,后面的直接为0。  原因是因为掩码是用连续的比特1来表示网络号的,

比如:假设某个主机的IP地址为180.80.77.55,子网掩码为255.255.252.0,求主机所在子网的网络地址。

首先判断这是哪类地址,从IP地址进行判断,B类地址的网络号的第一个字节的范围为128~191。该IP地址的第一个字节为180,所以为B类地址。

直接找到掩码第一个不为255的字节,也就是第三个字节,相应地,IP地址的第三个字节为77。

转换为二进制后进行逻辑与,算出所在的子网的网络地址为180.80.76.0。

在此基础上再加一问,如果向其所在子网发送广播分组,则目的地址可以是?

从前面我们可以知道,广播地址应该是主机号全为1。如图:

 由此可以得出,目的地址可以是:180.80.79.255

第三历史阶段(无分类编址):

无分类域间路由选择CIDR消除了传统的A类地址、B类地址、C类地址,以及子网划分的概念。它可以更有效地分配IPV4地址空间。

CIDR采用斜线记法,又叫CIDR记法。即在IP地址后面加上斜线“/”,斜线后面写上网络前缀所占比特的数量(设为x)。   主机号所占比特的数量就等于32-x。

CIDR实际上是将网络前缀都相同的连续的IP地址组成了一个“CIDR地址块”。

在这个地址块中,只需要知道其中任何一个地址,就可以知道该地址块的全部细节:

1.地址块的最小地址和最大地址(这里并不区分是否为可分配的地址,所以最小地址应该是主机号全为0,最大地址应该是主机号全为1)。   

2.地址块中的地址数量(2^{n} 这里n为主机号的位数)。   

3.地址块中聚合某类(A类、B类、C类)网络的数量(\frac{2^{u}}{2^{v}} 其中2^{u}为地址块中的地址数量,u为主机号的位数,2^{v}为该类一个网络的地址的数量,A类应该为2^{24},B类应该为2^{16},C类应该为2^{8})。 

4.地址掩码(又称为子网掩码)(网络前缀用连续的比特1表示,主机号用连续的比特0表示)。

比如:CIDR地址块 128.14.35.7/20 的全部细节

首先得出网络前缀为20位,即前两字节加第三个字节的前四位为网络前缀,那么主机号的位数为12位。

 最小地址:主机号全为0 ,则最小地址为128.14.32.0

注意:人家要是问最小的可分配的地址,那就应该是128.14.32.1

 最大地址:主机号全为1 即最大地址为128.14.47.255

注意: 同上,最大的可分配地址应该为128.14.47.254

 地址块中的地址数量:2^{12}

 聚合C类网的数量:\frac{2^{12}}{2^{8}}=2^{4}=16

地址掩码:

前两个字节不用犹豫,直接写255,第三个字节前四位变为1,剩余位数全部变为0。

则地址掩码为255.255.240.0。

 路由聚合(构造超网):

路由聚合可以减少路由记录对路由表的占用。其核心思想是找地址的共同前缀。

比如:

转发接口相同的4条路由表项,目的地址分别为35.230.32.0/21,35.230.40.0/21,35.230.48.0/21,35.230.56.0/21。进行路由聚合。

 

最长前缀匹配:

网络前缀越长,地址块也就越小,路由就越具体。

如果路由器查表转发分组时发现有多条路由可以选择,那么就选择网络前缀最长的那条。

相关文章:

计网第四章(网络层)(二)

目录 IPV4地址编址 第一历史阶段(分类编址): A类地址: B类地址: C类地址: D类地址(多播地址): E类地址(保留地址): 第二历史阶…...

原生微信小程序使用 wxs;微信小程序使用 vant-weapp组件

1.原生微信小程序使用 wxs 1.内嵌 WXS 脚本 2. 定义外链 wxs 3. 使用外连wxs 在这里插入图片描述 2. 微信小程序使用 vant weapp 1.安装步骤 2. 安装包管理(package.json)文件的方法 操作顺序 :文档地址 如果使用 typescript 需要操作步骤3,否则不…...

qml相关知识1

qml相关知识1 QtQuick.Controls 哪个版本支持TreeModel 和 TreeItemqt5.12开始,TreeItem 类被删除,无法使用delegate 什么时候可以用Qt5.15中没有 import QtQuick.Controls 1吗,哪个版本有control1qml如何两种版本的controls混用(…...

linux+c+qt杂记

虚拟机网络选择; 桥接模式:设置window宿主机的IP/dns,把虚拟机设置为桥接即可。 切换到终端:我的是 ctrlaltFnF1? 问题解决: Ubuntu系统下载(清华大学开源软件镜像站)(ubuntu-20.…...

shouldComponentUpdate有什么作用?

触发时机 当props或state发生变化时,shouldComponentUpdate() 会在渲染执行之前被调用。 作用 根据shouldComponentUpdate()的返回值,判断react组件的输出是否受当前state或props更改影响。默认行为是state每次发生变化组件都会重新渲染。 shouldCompo…...

华为OD-滑动窗口最大值

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例一 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输出…...

Linux:ansible自动化运维工具

环境介绍 当前所有执行权限我是在root下执行的,如果提示权限之类的,可以在每句命令前 加上 sudo ansible主服务器 192.168.0.194 另外两个客户端分别为 192.168.0.193 192.168.0.192 软件只需要在主服务器上安装,客户端不需…...

前端如何使用WebSocket发送消息

系列文章目录 文章目录 系列文章目录前言一、WebSocket的基本原理二、在前端使用WebSocket1.创建WebSocket实例2.监听事件3.发送消息三、实际应用场景总结前言 WebSocket是一种在Web应用程序中实现双向通信的技术,它允许服务器和客户端之间实时交换数据。在本篇博客中,我们将…...

纸贵科技连续三年蝉联IDC中国 FinTech 50榜单

近日,国际权威市场研究机构IDC公布了“2023 IDC中国FinTech 50榜单”。作为领先的区块链技术和解决方案服务商,纸贵科技凭借过硬的区块链技术和丰富的金融科技创新成果,连续第三年荣登IDC中国FinTech 50榜单。 IDC中国FinTech 50榜单是金融科…...

台积电美国厂施工现场混乱,真令人头痛 | 百能云芯

近日,英伟达公司的财报表现异常亮眼,摩根士丹利不仅点名了台积电成为最大的受益者,还预测每售出一颗H100英伟达芯片,台积电就能获得900美元的利润。然而,美国媒体却曝出了一则不利的消息,称美国亚利桑那州的…...

React绑定antd输入框,点击清空或者确定按钮实现清空输入框内容

其实实现原理和vue的双向绑定是一样的,就是监听输入框的onChange事件,绑定value值,当输入框内容发生变化后,就重新设置这个value值。 示例代码:我这里是统一在handleCancel这个函数里面处理清空逻辑了,你们…...

Springboot整合liquIbase组件

liquIbase方式 1、添加依赖 <!-- Liquibase 依赖 --> <dependency><groupId>org.liquibase</groupId><artifactId>liquibase-core</artifactId> </dependency>2、添加配置项 spring:# datasource 数据源配置内容&#xff0c;对应…...

Apache Paimon 实时数据湖 Streaming Lakehouse 的存储底座

摘要&#xff1a;本文整理自阿里云开源大数据表存储团队负责人&#xff0c;阿里巴巴高级技术专家李劲松&#xff08;之信&#xff09;&#xff0c;在 Streaming Lakehouse Meetup 的分享。内容主要分为四个部分&#xff1a; 流计算邂逅数据湖 Paimon CDC 实时入湖 Paimon 不止…...

计算机网络(10) --- 高级IO

计算机网络&#xff08;9&#xff09; --- 数据链路层与MAC帧_哈里沃克的博客-CSDN博客数据链路层与MAC帧https://blog.csdn.net/m0_63488627/article/details/132178583?spm1001.2014.3001.5501 1.IO介绍 1.IO本质 1.如果数据没有出现&#xff0c;那么读取文件其实会被阻塞住…...

学习中ChatGPT的17种用法

ChatGPT本质上是一个聊天工具&#xff0c;旧金山的人工智能企业OpenAI于2022年11月正式推出ChatGPT。那么&#xff0c;ChatGPT与其他人工智能产品相比有什么特殊呢&#xff1f; 它除了可以回答结构性的问题&#xff0c;例如语法修正、翻译和查找答案之外。最关键的是它能够去解…...

融合CDN 如何有效的抵抗DDoS攻击

绝大部分对外网站所有者都离不开CDN的支持&#xff0c;据统计&#xff0c;全球高达70%的互联网流量都是通过CDN来进行缓存和加速的&#xff0c;不论是国外知名的CDN厂商&#xff1a;如Cloudflare、AWS、Akamai等&#xff0c;还是国内主流的CDN厂商阿里云华为云腾讯云等&#xf…...

Git 原理与使用

1.版本控制器 所谓的版本控制器&#xff0c;就是能让你了解到⼀个⽂件的历史&#xff0c;以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统&#xff0c;同时也⽅便多⼈协同作业。 ⽬前最主流的版本控制器就是 Git 。Git 可以控制电脑…...

如何批量加密PDF文件并设置不同密码 - 批量PDF加密工具使用教程

如果你正在寻找一种方法来批量加密和保护你的PDF文件&#xff0c;批量PDF加密工具是一个不错的选择。 它是一个体积小巧但功能强大的Windows工具软件&#xff0c;能够批量给多个PDF文件加密和限制&#xff0c;包括设置打印限制、禁止文字复制&#xff0c;并增加独立的打开密码。…...

【Unity 工程化】unity一些资源路径用途

Resources Resources 目录用于存放可以通过 Unity 的 Resources.Load 函数进行加载的资源。这些资源会在构建时被打包为一个单独的资源包&#xff0c;因此它们必须满足一些 Unity 所要求的命名和文件夹结构规则。由于这些资源被打包在一起&#xff0c;因此在构建后的游戏中可以…...

使用Docker进行模型部署

一、常见的模型部署场景 实时的、小数据量的预测应用 部署方式&#xff1a;采用python-httpserve应用部署&#xff08;如flask, fastApi, django&#xff09;&#xff0c;缺点是可能需要跨环境&#xff0c;从Java跨到Python环境实时的、大数据量的预测应用 部署方式&#xff1…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Matlab | matlab常用命令总结

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

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...