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

计算机网络——IPv4(25王道最新版)

网络层

    • 前言
  • IPv4 分组(数据报)
    • 格式
    • IP数据报的“分片”问题
      • 分片大小与片偏移问题
  • IP地址(分类编址,最初阶段)
    • 分析传输过程(非常重要)
      • 一些特殊用途的IP地址
  • 子网划分和子网掩码(重难点)
    • 子网划分
    • 子网掩码
      • 默认路由
      • 小节
    • 结语

前言

  • 对于网络层这一章里面 最重要的就是IPv4 是最高频的考点 同时也是比较难以理解的知识点 常常在真题里面结合答题进行考察
  • 学习顺序:
  • IP分组——最初的IP地址——子网划分与子网掩码——CIDR(无分类编址)——NAT(网络地址转换)(符合时代的发展顺序)
    在这里插入图片描述

IPv4 分组(数据报)

  • 首先我们需要知道的是IPv4 到底是什么东西 我们要有一个认知
  • 它其实是需要拆成 IP 与 v4两部分来理解的
  • IP指的是IP协议 v4指的是这个协议的版本号
  • 这里如果你已经学完了网络层的知识 在回过头来看下面这张图片的时候就不那么难绷了
  • 对于我们一直说的ARP协议 就是建立一个主机IP地址与MAC地址的映射(类似于Map)
  • 举个例子 我们如果传输了一个无效的IP数据报时(比如当一个大的数据报需要分片 但是DF=1的时候) 路由器就会将这个IP数据报丢弃 同时需要给源主机发送ICMP报文 通知异常情况

在这里插入图片描述

格式

  • 第一层
    在这里插入图片描述

  • 第二层
    在这里插入图片描述

  • 第三层
    在这里插入图片描述

IP数据报的“分片”问题

在这里插入图片描述

分片大小与片偏移问题

  • 案例
  • 对于分片大小:
  • 如下图所示 我们在链路二上传输的时候 发现MTU 仅仅为1500(我一般记忆为max transmit unit)
  • 此时我们就需要对IP数据报进行分片 这里的每一个分片都是一个新的IP数据报 其同样遵循我们前面所提到的IP数据报的格式 也就是首部+数据部分
  • 我们就假设首部为最小的20B 则实际上我们前两个1500B大小的数据报里面只有1480B的数据 所以最后一个IP数据报的数据部分大小自然而然的就是(3980-1480-1480=1020B)

在这里插入图片描述

  • 对于片偏移的问题:

在这里插入图片描述

  • 引入片偏移字段本质上就是帮助我们的目的主机能够按顺序 对于这些乱序到达的分片进行重组

  • 再次观察分片问题的图 我们发现 第一个分片的片偏移量=0 这个不难理解 但是第二个就变成了185

  • 这个是怎么来的呢?

  • 这是由于第一个数据部分的大小是1480B 也就说明了 我们的第二个分片的数据部分在原始的数据报中是从1480开始存储的 而片偏移的单位是8B 所以1480/8 =185 第三个同理

  • 小节
    在这里插入图片描述

IP地址(分类编址,最初阶段)

在这里插入图片描述

  • 这里的默认网关可以理解为一个路由器 表示这个主机需要向互联网上发送IP数据报的时候 他就会知道应该先发给默认网关 然后这个路由器会帮他继续转发到互联网上

分析传输过程(非常重要)

  • 在这之前我们需要知道一个很重要的事情:
  • 我们要知道交换机实现的是物理层和数据链路层的功能 所以 我们的主机和我们的交换机的传输都是以帧为单位的 也就是我们对于每个IP数据报 都需要将它封装成帧来进行传输
  • 例如 此时H1需要向H7发送一个数据报
  • 我们来分析一整个完整的流程:
  • 由于发现H1与H7并不属于一个网络 此时H1就需要将这个数据报封装成帧发送给默认网关(因为他知道是需要先由这个路由器来帮忙转发出去) 而这个路由器的IP地址是我们一开始就配置好的
  • 我们依据ARP协议得到它的MAC地址 H1将这个数据报封装成帧的时候 可以将这个帧的目的MAC地址设置为B2接口所对应的MAC地址 经过交换机逐层转发到达路由器的B2接口
  • 学校的路由器就会去根据IP数据报的目的地址 查询转发表 发现应该从B0接口 转发出去 同时将MAC帧的目的MAC地址修改为C0
  • 到达公司路由器 它同样去查表 发现应该从C2转发出去 同时将目的MAC地址修改为H7 这样就顺利的经过交换机成功抵达H7 传输成功
  • 为什么公司的路由器知道H7的MAC地址呢?
  • 类似的 还是根据ARP协议 这个协议可以使得同一个网络内的主机路由器之间能够根据彼此的IP地址查询到对应的MAC地址
    在这里插入图片描述

一些特殊用途的IP地址

这个结论需要重点记忆 后面在学习更复杂的知识时需要用到
在这里插入图片描述

子网划分和子网掩码(重难点)

子网划分

  • 引入
  • 对于16bit的主机号所能表示的主机数量为2^16-2(除去全0和全1的特殊情况)但是现实情况却用不了这么多IP地址
  • 假如学校有四个校区就可以在剩余16比特里面扣出2比特作为子网号
  • 根据子网划分技术 给每个校区分配一个独立的子网 从而提高了IP地址利用率

在这里插入图片描述

子网掩码

  • 为什么需要引入子网掩码?

  • 在思考这个问题之前不妨先想一下 在一台主机传输IP数据报之前 首先需要干嘛

  • 是不是需要先判断我们的目的IP和我们的当前主机的IP地址是否从属于一个网络

  • 如果不是 我们就交给路由器帮助我们转发

  • 对于传统的IP地址 我们只需要根据类型(A,B,C)来对比前8,16,24 bit是否一致就行

  • 但是现在划分子网之后 我们只有网络号+子网号都一致 才能说明从属于一个网络

  • 以两个子网为例(也就是子网号占1bit 表示0/1 ) 此时网络号+子网号=16+1=17bit
    在这里插入图片描述

  • 好了现在回答最开始的问题

  • 子网掩码就是帮助我们判断是否从属于一个网络

  • 我们将子网掩码的前17位全部设置为1 后面15位(因为我们不关心 主机号)所以设置为0

  • 转换成10进制 8个bit一组 也就是255.255.128.0 这是我们熟悉的格式

  • 我们现在的逻辑是这样的 :

  • 就是对于我们的目的IP地址和源IP地址在一开始都与子网掩码进行一次与操作 取得各自的高17位进行对比 如果一样则说明从属于一个网络 这样的话 我们就可以借助ARP协议得到目的地址对于的MAC地址 封装成帧 成功送达目的主机

  • 这里需要补充一个点 我记得是在计组里面学过——与运算 简单回忆一下运算规则就行——任何数 与上0 都是0 任何数 与上1 都是他本身 这也解答了我们为什么上面这样设置子网掩码

默认路由

在这里插入图片描述

小节

在这里插入图片描述

结语

对于计算机网络层和数据链路层的知识真的是杂乱繁多 而且理解起来并不容易 所以我在每个小点都附上了注释 希望能够帮助大家理解
在这里插入图片描述

http://www.lryc.cn/news/593106.html

相关文章:

  • python的第三方库的基本运用
  • RISC采用的3种流水技术的功能和区别分析
  • Xss-labs 1-8以及利用python自动sq8注入
  • 定时器与间歇函数
  • 【C++】入门阶段
  • 时序数据库选型实战:Apache IoTDB技术深度解析
  • UniApp 优化实践:使用常量统一管理本地存储 Key,提升可维护性
  • 一站式PDF转Markdown解决方案PDF3MD
  • MyBatis动态SQL实战:告别硬编码,拥抱智能SQL生成
  • 【iOS】编译和链接、动静态库及dyld的简单学习
  • JMeter 元件使用详解
  • k8s快速部署(亲测无坑)
  • Jmeter系列(7)-线程组
  • uniapp相关地图 API调用
  • 考研复习-数据结构-第七章-查找
  • 考研408《计算机组成原理》复习笔记,第三章(5)——磁盘存储器
  • UniApp 自定义导航栏:解决安全区域适配问题的完整实践
  • 基于springboot的考研互助小程序
  • 如何解决Flink CDC同步时间类型字段8小时时间差的问题,以MySQL为例
  • 我做的基础服务项目,是如何实现 API 安全与限流的(短信、邮件、文件上传、钉钉通知)
  • lazyvim配置
  • 实验-华为综合
  • fclose 函数的概念和使用案例
  • MySQL详解二
  • HTML零基础快速入门教程(详细篇)
  • 【取消分仓-分布式锁】
  • LVS的简介以及架构
  • 【Unity编辑器开发GUI.Window】
  • Vite的优缺点(精简版)
  • Java-77 深入浅出 RPC Dubbo 负载均衡全解析:策略、配置与自定义实现实战