当前位置: 首页 > 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.dtcms.com/a/287414.html

相关文章:

  • 从丢包到恢复:TCP重传机制的底层逻辑全解
  • Java-77 深入浅出 RPC Dubbo 负载均衡全解析:策略、配置与自定义实现实战
  • nginx.conf模版
  • 使用DataGrip连接安装在Linux上的Redis
  • Datawhale AI数据分析 作业
  • TinyMCE 富文本编辑器在 vue2 中的使用 @tinymce/tinymce-vue
  • Django母婴商城项目实践(八)- 数据渲染与显示之首页
  • windows wsl2-05-docker 安装笔记
  • Vue 3 中封装并使用 IndexedDB 的完整教程(含泛型、模块化、通用 CRUD)
  • 【C# in .NET】20. 探秘静态类:抽象与密封的结合体
  • Spring AI 1.0版本 + 千问大模型之 文本记忆对话
  • LeetCode中等题--167.两数之和II-输入有序数组
  • MySQL基础教程
  • XSS漏洞----基于Dom的xss
  • 力扣24:两两交换链表中的节点
  • SQLALchemy
  • 单元测试学习+AI辅助单测
  • 计算机网络:(十一)多协议标记交换 MPLS
  • GaussDB union 的用法
  • Java NIO Selector高并发场景下CPU占用飙升问题排查与解决方案
  • NIO零拷贝
  • MySQL的union、union all导致排序失效
  • 低输入电源5.5V/2A同步降压转换器具有多种模式选择
  • roslaunch 文件的核心语法和使用技巧
  • (LeetCode 每日一题) 1233. 删除子文件夹 (排序)
  • TCP/UDP协议深度解析(四):TCP的粘包问题以及异常情况处理
  • 7.19 换根dp | vpp |滑窗
  • 医养照护与管理实训基地建设:创新模式与突破路径
  • 扭蛋机系统开发:打造多元化娱乐生态的新引擎
  • 响应式单位rpx及搭配使用UI产品工具