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

计算机网络第四章(3)——网络层《IPV4(子网划分、子网掩码)》

考试重中之重,会有70多道例题!!

一、子网划分

1)为什么要有子网划分

分析:

  • 原因1:一个公司分到一个网络号之后,公司内部可能还要划分【各个部分】,【各个部门】应该拥有【自己部门的一个范围的ip地址】划分;
  • 原因2:另外,即使使用C类ip地址(网络号占3字节,主机号最少),有的小公司依旧没有那么多的主机需要占用那么多ip的主机号,那样就会浪费这个网络号地址的主机分配
    • 比如:A公司只有3台电脑,结果使用C类ip、占有了【192.168.1.0这个ip网段,那么就3个设备却浪费【(2^8-2) - 3 = 251】个空余的ip地址

那么就诞生了子网划分,它的原理是在原有的网络位+【主机位】划分基础上【主机位】再【借n位】,从而能划分更多子网(划分的n位里每一位都可以是1、也可以是0)

总结:

2)子网划分的好处!!

主要注意的是,子网划分相当于原本把一个【路由器】连接的一个【广播域】:

  • 拆分成N个小的【广播域】!!!!!
    • (相当于局域网里划分 “虚拟局域网”一样,即使各个子网还是用集线器或交换机连接,但是逻辑上子网已经变成了一个【广播域】)
  • 还未子网划分的网络叫【二级编址】【一级网址】是网络号,【二级网址】是主机号
  • 划分了子网的网络叫【三级编址】【一级网址】是网络号,【二级网址】是子网号,【三级网址】是主机号
    • 【子网】仅仅在本网络内有效对于外部网络的视角,依旧是【二级编址】

3)例题

二、子网掩码

1)子网掩码作用

一个发送方如果发信息,要先判断【目的IP地址】

  • 如果发现是发给【别的网络】的主机,就需要把信息交给【默认网关】的路由器,再由路由器转发出去别的网络
  • 而如果是发给【和自己同属一个网络】的主机,则不需要经过【默认网关】,直接精准送达给同网络的接收方

【在没进行子网划分的时候】

那么发送方在检查【接收方的目的地址】和自己是否同属于一个网络时,

只需要看【网络号】是不是一样

【进行子网划分的时候】

而进行了【子网划分】后,即使网络号相同也不一定是在一个网络内了

所以,发送方在检查【接收方的目的地址】和自己是否同属于一个网络时,

要连同【子网号】一起检查

  • 但是要怎么从主机号范围提取出【子网号】?
  • 一个公司获得【网络号】后只有【网络号】固定不变,【主机号】可以随意变,你怎么保证在【主机位】随机变化下【子网号】保持不变???

那么此时【子网掩码】就发挥作用了

         那么你可以理解【子网掩码】是一把锁,他会锁住这一网段的网络号 + 子网号,允许剩下的主机号随意变化来分配ip地址

发送方使用它的规则是:

  • 将自己的【源地址】跟【子网掩码】用二进制形式进行【逐位相 “与&”提取出【网络号 + 子网号】(后面统称为【网络前缀】
  • 再将接收方的【目的地址】跟【子网掩码】用二进制形式进行【逐位相 “与&”提取出【网络号 + 子网号】(后面统称为【网络前缀】
  • 然后进行判断【网络前缀】是否一致一致则说明是一个子网内不一致则要转发给【默认网关】

2)子网掩码怎么表示?

  • 刚刚的例子我们知道了用【子网掩码】可以检测提取出【网络前缀】是不是同属一个子网,但是这个子网掩码究竟怎么得来的?

        子网掩码也是一个4个字节(32bit)的二进制码,转化成十进制的话,每个字节跟ip地址同样都是0~255范围。

然后重点,他的表示形式就是:

  • 网络前缀(网络号 + 子网号)】固定死,所以子网掩码【对应二进制位都是1
  • 反之,可以变化、分配的【主机号部分子网掩码【对应二进制位是0

        那么通过前面的解释可以发现,之所以子网掩码里【可变部分0】,是因为可变部分的ip地址不管是1还是0,和子网掩码【相与计算】后都是0,可以直接丢掉不管而【不可变部分1】,就可以完整还原出【网络前缀(网络号 + 子网号)

3)带子网划分的【IP地址完整形式】

我们前面已经知道了:【网络前缀】的二进制都是【1】剩下的主机位都是【0】

  • 那么专业的【IP地址完整形式】是:在最后加上【/ 子网掩码1的个数

例子1:

  • 假设一个C类ip地址是:192.168.1.1,子网掩码是:255.255.255.0
  • 那么转换成二进制就是
    • 网络地址是:11000000.10101000.00000001.00000001
    • 子网掩码是:11111111.11111111.11111111.00000000
  • 可以看到子网掩码有【24个1】,也就称为是一个24位掩码
  • 然后现在把网络地址和24位掩码组合就是【IP地址完整形式】

        那么也就是32位里有32 - 24 = 8可以任意变,于是根据二进制算法可以得出共2^8=256 种可能

        然后因为【主机号全是0的是网络地址】、【主机号全是1的是广播地址】不能用,所以可用的ip地址是 256 - 0 - 2 = 254 个

例子2:

  • 还是C类的ip网络地址:192.168.1.1,子网掩码换成:255.255.254.0
  • 那么转换成二进制就是
    • 网络地址是:11000000.10101000.00000001.00000001
    • 子网掩码是:11111111.11111111.11111110.00000000
  • 所以子网掩码是23位掩码
  • 【IP地址完整形式】就是:192.168.1.1 / 23

        那么可变位是9位,一共就是 2^9 = 512 种可能,然后因为【0.0 (主机号全是0的是网络地址)】、【1.255 (主机号是255的是广播地址)】不能用,那么最终可用的ip是 512-2 = 510   

 4)注意【路由转发表】区别

【不支持子网划分的路由转发表】

就只有各个节点【ip地址】+【转发接口】

【支持子网划分的路由转发表】

有各个节点【ip地址】+【子网掩码】+【转发接口】

那么可以发现,这几个例子里,【支持子网划分】的网络里,【路由转发表】要怎么记录接了【不支持子网划分的】网络的接口信息呢?

  • 只需要根据它是A、B、C哪一类网络,然后配上默认的子网掩码,这个默认子网掩码说白了就是固定【网络号位置全1、主机号位置全0】

这是【ABC三类标准IP地址】(不支持子网划分),对应的【默认子网掩码】的样子

【其他网络(不存在路由表的)ip地址】

        那么还是这个图片例子,现在要发一个信息给这个地址【111.2.3.4】,压根不知道这地址是哪来的地址,可能是发给美国、南极、月球、天王星.......反正没一个路由表记录了这个接收方【目的地址】

        那么我们前面提过。【ipv4的特殊地址】里,【网络号全0、主机号全0】是【本网络】,表示还没有记录这个节点的ip地址的时候默认的一个地址(任何地址一开始都可以是0.0.0.0

        那只需要对于【未知ip地址】,设置【默认网关是:0.0.0.0】那么【相与计算】后的结果必然是【0.0.0.0】,这个地址就对应了【默认位置IP地址:0.0.0.0】

        于是会从【对外接口】传出去,由别的路由器继续按这个步骤一直往外传,直到传到有记录了这个【111.2.3.4】未知地址的路由表的网络为止......

三、实际路由器的IP数据报转发过程

1、先看概括总结

2、结合交换机数据链路层MAC寻址回忆

1)网络层路由器IP寻址(开始状态)

(本人根据自己的总结叫豆包整理的)

2)数据链路层MAC寻址(开始状态)

那么数据链路层【数据帧】还会携带

  • 【源地址】+【目的地址】的【IP地址】
  • 发送方的【MAC地址】
  • 但是接收方【MAC地址】未知,但可以设置成默认的广播信号【全1地址(48位)】

然后由交换机进入【学习模式

  • 把发送方的【mac地址】记录到【交换机存储转发表】

然后交换机通过【网络层的ARP协议】进入【泛洪模式

  • 根据接收方的未知默认【广播信号】,向所有接口发出这个帧 (除了进来的接口)

3)接收方【网络层检查】+【数据链路层返回】

各个接口网络网络层会提取IP数据报的【目的地址IP地址】

  • 来根据【子网掩码】判断是不是给自己当前子网的信息
    • 如果这个IP地址是当前子网的,那么【ARP协议】根据数据链路层的【泛洪模式】发给各个主机
      • 然后各个主机在广播完信息之后,检查【目的ip地址】是不是给自己的,是自己的就接收,不是给自己的就丢弃
      • 当接收方发现该信息是给自己的之后,会接收、并马上响应ARP应答数据回去,而此时【接收方】就已经转变成了【发送方】
      • 然后此时交换机将【发送方(刚才的接收方)MAC地址】记录入【存储转发表】               
      • 然后交换机的进入【转发模式,开始根据【存储转发表】里记录的各个主机的MAC地址正式开始【点对点精准转发

  • 如果这个IP地址不是当前子网的,那么网络层的路由器再根据对应【网络前缀】的【网络号】的接口传出去,不用到达自己网络的数据链路层
    • 如果压根【路由转发表】就没有这个接口信息,那也用【默认路由:0.0.0.0】发出去

4)总结

注意,ARP协议主体是路由器,他只是用于在数据链路层通过IP地址来寻找MAC地址

四、例题

这题跟上面一样,他没有给出一开始申请时的子网掩码的长度是多少,那么我就先按照ABC三类对比,很明显是C类又往后借了1位

题目明确给出了一开始申请ip地址块的时候就是22位的子网掩码,而且看ip地址是在128.0.0.0~191.0.0.0,所以这应该是在B类ip网络上的一个变形网段,我们只需要注意一点:如果后期要划分子网的话,我们只能在这个22位的基础上继续往后借位,而不是往前,这个子网掩码就是最初定好给这个公司的了

 2)具体划分案例

先看下面这个例子

那么现在捋一下要求,我们可以知道:

  • 1、我们现在至少要划分出3个子网用于给3个部门
  • 2、其中一个部门最多的主机是50台,那么我们划分的每一个子网分配ip的数量至少不能少于50个

那么根据二进制算法(其实也是排列组合的知识点):

;

假如我们向主机位借N位作为子网号,那么至少可能有2^N种子网可能(包括了主机号全0、主机号全1的两个非用地址)

;

假如我们的主机位是M位,那么借了N位作为子网号,那就还剩M-N位是主机号,可分配的ip也就是2^(M-N) - 2个(不包括了主机号全0、主机号全1的两个非用地址)

;

所以,而划分的子网数量应该是:2^N >= 3,也就是N=2,就能得到00、01、10、11,4个子网完全够3各部门使用了

每个子网可划分的ip主机地址应该:2^(8-N) - 2 >= 50,也能得出N=2,主机号是6位,每个子网都有62个ip地址可分配,也够每个部门所有设备都分配得到了

3)确定新的子网掩码

再确定了划分几位为子网号之后,这借的的子网位也将重新归入到子网掩码里,还是刚刚的案例,一个C类的ip的子网掩码本来是24位(前3个字节),但是现在确定借了2位为子网位,所以现在新的子网掩码是:24 + 2 = 16位,对应的二进制和十进制如下图:

4)确定网络地址、广播地址

前面我们说过,网络地址就是主机号全0,广播地址就是主机号全1,那么那只是简单的概念,现在我们加入子网划分之后再来看

我们应该对应划分的几个子网,然后每一个子网的子网位不动,剩下的主机号全是0才是网络地址

最终这个公司ip地址分配就是这样

http://www.xdnf.cn/news/1162477.html

相关文章:

  • 模型系列(篇一)-Bert
  • Python Locust库详解:从入门到分布式压力测试实战
  • 5道挑战题writup
  • 跨端分栏布局:从手机到Pad的优雅切换
  • 将 RustFS 用作 GitLab 对象存储后端
  • 前后端分离项目进阶1---前端
  • Ubuntu 22.04 使用 Docker 安装 Redis 5 (安装包形式)
  • 设备虚拟化技术-IRF
  • 电子数据取证领域的双轮驱动——手工分析 vs 自动化分析
  • SpringSecurity 详细介绍(认证和授权)
  • 复制docker根目录遇到的权限问题
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(二)
  • docker磁盘空间不足解决办法
  • MongoDB 查询时区问题
  • linux定时器使用
  • 3、Spring AI_DeepSeek模型-多轮对话
  • 江苏思必驰科技25Java实习面经
  • HTTP,HTTPS
  • 服务器系统时间不准确怎么办?
  • 图论基本算法
  • 部署Zabbix企业级分布式监控
  • 【Unity基础】Unity中2D和3D项目开发流程对比
  • Unity 插件Resize Pro 最快的 Texture2D 调整大小工具
  • Elasticsearch 是 NVIDIA Enterprise AI Factory 验证设计中推荐的向量数据库
  • 数据结构堆的实现(C语言)
  • Web3.0 能为你带来哪些实质性的 改变与突破
  • Vue 脚手架——render函数
  • 【算法笔记】树状数组
  • Linux学习之Linux系统权限
  • 《C++》函数内联,auto关键字