计算机网络 4-2-1 网络层(IPv4)

news2025/5/13 13:26:19
  • 2 IPv4分组

  • 各协议之间的关系

  • IP协议(Internet Protocol, 网际协议)是互联网的核心!

    ARP协议用于查询同一网络中的<主机IP地址,MAC地址>之间的映射关系

    ICMP协议用于网络层实体之间相互通知“异常事件”

    IGMP协议用于实现IP组播

    • 2.1 结构<首部+数据部分>

      • 看书的素图回忆各字段的作用

      • 首部固定部分20B,可变部分0~40B

      • 注意3个与“长度”相关的字段:418,首总偏

    • 补充:

         版本:v4:0100,v6:0110

         首部长度:固定部分20B,则是5*4=20B,为0101;最大60B,则15*4=60B,为1111

      一般首部长度默认为固定长度

         实际传输过程中, “数据部分”的长度受下一段链路的最短/最长帧长限制

      eg: 以太网帧有最短帧长、最长帧长限制

    • 2.2 命题重点

      • 2.2.1 分片问题

        • MTU (最大传送单元):一个链路层数据帧能承载的最大数据量

        • 如果一个IP数据报的总长度大于下一段链路的MTU,就需要将“数据部分”分片

        • 易错:除最后一个分片外,其他每个分片的“数据部分”必须是8B的整数倍

        • 易混

          • 标识16bit,用于区分每个分片原本属于哪个IP数据报

          • 标记3bit, 关注最低位MF、次低位DF

            • MF=1,表示后面还有分片

            • MF=0, 表示这是最后一个分片

            • DF=1,表示不允许被分片

            • DF=0,表示允许被分片

注意:

·IP数据报的“分片”可能在源主机、或任何一个路由器中发生

·只有目的主机才会对分片进行“重组”

·各分片有可能乱序到达目的主机

·由于首部的“片偏移”字段是以×8B为单位,因此,除了最后一个分片外,其他每个分片的数据部分必须是8B的整数倍(片偏移表示的是这个IP数据报它自己承载的数据在原始数据报当中的位置。)

      • 2.2.2 TTL字段

        • IP分组每经过一个路由器,TTL减1,如果已经减到0,该路由器就丢弃分组,并向源主机发送ICMP报文 (通知出现异常)

    • 不可达:

      TTL的初始值通常由源主机设置。

      每经过一个路由器,路由器就将TTL减1, 如果TTL减到0,就直接丢弃分组,并向源主机发送ICMP报文

      注:ICMP报文用于通知一个节点发生了某种“异常”

2.3 ip地址最初的分类方案 

  • 路由器和路由器连接的接口可以不分配IP地址,但路由器和其他节点连接的接口必须分配IP地址
  • 从属于同一个网络的所有主机、路由器接口的IP地址“网络号”都相同
  • 当一台新主机接入网络时,需要给它分配一个IP地址、并配置“默认网关”

H1给H7发送IP数据报(166.1.0.0--200.1.1.2):

        这个IP分组需要发送到另一个网络上,先交给默认网关这台路由器(H1的内部已配置:166.1.0.5)当H1知道了这个默认网关的IP地址之后。通过ARP协议查询到默认网关的IP地址所对应的MAC地址。把这个IP数据包封装成帧,把这个帧的目的MAC地址直接写成b2接口所对应的MAC地址对;

        接下来H1会把这个mac帧发送给交换机,交换机根据MAC地址逐层转发到路由器的b2这个接口,路由器检查目的网络的IP地址网络号,根据转发表查看,把这个数据报从b0接口转发出去。当转发这个IP数据报的时候,也会修改mac帧,把mac帧的目的地址修改为接口的MAC地址。所以会把这个IP数据包重新封装成帧,这个帧的目的MAC地址填写为c0。

        把帧从b0接口转发出去。公司的路由器就收到了这个IP数据包。检查IP数据包的目的地址,查看转发表,确定这个IP数据包接下来从c2这个接口转发出去。那同样根据ARP协议查询对应Mac地址重新封装成帧。

H1给H6发送IP数据报(166.1.0.0--166.1.4.4):

        先检查源IP和目的IP是否属于同网段,同属同网段就不需要转发到默认网关;h1通过ARP协议查询到h6对应的MAC地址,直接把这个数据包封装成mac帧,把帧发送给交换机,交换机根据mac帧,转交给下一台交换机,交换机再根据mac帧转发到下一个节点,

        该结点是集线器。集线器收到帧之后,会把帧无脑的转发给与之相连的所有结点,h6收到帧查看确认是自己接收,H5查看不是自己不接收丢弃

注意:以上这些特殊地址不能指派给网路中的任何一台主机或路由器“私用”

重要结论:前两行说明,如果一个网络中,主机号占Nbit,那么这个网络中,最多支持台主机&路由器

2.4 子网划分 & 子网掩码

  • 2.4.1 子网划分技术

    • ✅子网划分
      • 原理:若某单位租用了一个IP地址段,假设原本主机号占 n bit,那么可以将前k bit抠出来作为子网号,用剩余的n-kbit作为主机号,这样就能划分出2^k个子网(每个子网包含的IP地址块大小相等)

      • 子网划分前,IP地址为两级结构=<网络号,主机号>

      • 子网划分后,IP地址为三级结构=<网络号,子网号,主机号>

      • 注意:每个子网地址中,主机号不能分配为全0/全1 

        • 全0表示子网本身,全1为子网广播地址

    •  

    • 子网划分作用:让一个很大的IP地址块划分成几个相互独立的这种地址块,从而提升IP地址资源的利用率。

    • ✅子网掩码
      • 作用

        • 子网掩码、IP地址“逐位与”,算出<网络号,子网号>(可合称为“网络前缀”)

        • 只有网络前缀相同的IP地址,才归属于同一个网络 (或子网)

      • 注意

        • 如果一个网络内部进行了子网划分,那么这个网络中的每台主机、每个路由器接口都需要配置IP地址、默认网关、子网掩码

        • 如果一台路由器支持子网划分技术,那么在它的转发表中, 需要包含<目的网络号,子网掩码,转发接口>

    • ✅默认子网掩码
      • 如果一个传统网络 (A/B/C类)内部没有进行子网划分,那么可以将对应此网络的转发表项设置为“默认子网掩码”

        • A类默认255.0.0.0 B类默认255.255.0.0 C类默认255.255.255.0

    • ✅默认路由
      • 默认路由 (默认转发表项)设置:<目的网络号全0,子网掩码全0>

      • 在路由器转发表中,如果所有表项都不匹配,那么将从“默认路由”转发出去

  • 2.4.2 主机发送IP数据报的过程

    • 一、判断目的主机和本机是否属于同一个网络

      • ①检查本机IP地址和目的IP地址的网络前缀是否相同(需要用本机配置的子网掩码“逐位与”)

      • ②若网络前缀相同,说明目的主机和本机属于同一个网络;若网络前缀不同,说明不属于同一网络

    • 二、将IP数据报封装成MAC帧并发送到链路上

      • 如果目的主机与本机属于同一个网络,就通过ARP协议找到目的主机的MAC地址,再将IP数据报封装成帧,并将帧发送给目的主机

      • 如果目的主机与本机不属于同一个网络,就通过ARP协议找到默认网关的MAC地址,再将IP数据报封装成帧,并将帧发送给默认网关

  • 2.4.3 路由器转发一个IP数据报的过程

    • 一、路由器的某个接口收到一个IP数据报

    • 二、对IP数据报首部进行校验,并从中找到目的IP地址

    • 三、查“转发表”

      • 转发表的表项包含<目的网络号,子网掩码,转发接口>

      • 检查目的IP地址与每个表项能否匹配(将目的IP地址、子网掩码“逐位与”,匹配表项中的目的网络号)

      • 注:至少“默认路由”表项一定是可以匹配成功的

    • 四、转发

      • 根据查转发表的结果,将IP数据报从匹配的接口转发出去

      • 注:如果匹配的“转发接口”和该IP数据报的入口相同,就不用再把IP数据报转发回去

 

训练一:H3→H6(同一子网内的两台主机):在局域网的内部就完成了IP数据包的传送   

             H3要检查目的地址与源是否从属于同一个网络:用配置的子网掩码和目的地址逐位相与。网络前缀都相同这个目的地址和源从属于同一个网络之内。h3直接把这个IP数据包封装成mac帧,并且在mac帧当中直接说明h6的这个MAC地址。到达集线器,集线器会把帧无脑的转发给h5和h6两台主机。h5主机不会接收这个mac帧,因为目的地址和自己的mac地址不相同,而h6主机会接收这个帧,拆掉mac帧的首部和尾部,得到IP数据包。由于IP地址和自己的IP地址是匹配的,所以h6这台主机就会接收这个IP数据包

训练二:H1→H3(不同子网内的两台主机)

        要判断目的地址和的源IP地址是否同属于同一个网络,把目的地址和源的IP地址和本机内配置好的子网掩码进行逐位与运算,得到两个IP地址的网络前缀。由于二者的网络前缀不相等。

所以就说明这个目的结点和源不在同一个网络内。于是h1需要把这个IP数据包发送给默认网关,让他帮忙转发。转发给b3路由器

        路由器的网络层需要决定这个地址应该往哪转发。首先要和转发表的子网掩码进行相与。相与的结果再和目的网络号进行比较,可以看出和第二行匹配,就会从b2接口把这个IP数据包转发出去。

训练三:H1→H7(采用子网划分技术的网络→传统网络)

        如果它没有进行子网划分,设置默认子网掩码

训练四:H7→H1(传统网络→采用子网划分技术的网络)

训练五:主机H1发往Internet的某个IP数据报如何传输?(设目的IP地址=111.2.3.4)

  • 2.5 CIDR无分类编址

    • 2.5.1 基本原理

      • 取消了IP地址传统的A/B/C/D/E 分类。采用无分类编址CIDR,IP地址块分配更灵活,利用率更高,一定程度上缓解了IP地址耗尽 (时代背景:1993年)

      • IP地址={<网络前缀>,<主机号>},其中网络前缀不定长

      • CIDR记法

        • 128.14.32.153/30, 表示在这个IP地址中,网络前缀占30bit, 主机号2bit

    • 2.5.2 CIDR地址块的子网划分

      • 定长子网划分

        • 在一个CIDR地址块中,把主机号前k bit抠出来作为定长子网号,这样就能划分出2^k个子网 (每个子网包含的IP地址块大小相等)

        • 缺点:每个子网都一样大,不够灵活,IP地址利用率低,浪费有限的IP地址资源

      • 变长子网划分

        • 在一个CIDR地址块中,划分子网时,子网号长度不固定(每个子网包含的IP地址块大小不同)

      • 注意:在每个子网中,主机号全0、全1的IP地址不能分配给特定节点私用

    • 2.5.3 子网划分解题技巧

      • CIDR地址块的子网划分技巧:可以利用类似于“从根到叶构造二叉哈夫曼树”的技巧

        • ⚠️原始CIDR地址块作为根节点(假设可以自由分配的主机号占 h bit)

        • ⚠️每个分支节点必须同时拥有左右孩子,左0,右1(反过来也行)

        • ⚠️每个叶子结点对应一个子网,根据根节点到达叶子结点的路径来分析子网对应的IP地址块范围

        • ⚠️整棵树的高度不能超过h-1(因为即便最小的子网也至少要保留2bit主机号)

例子: 

注意:路由器和主机相连的链路,需要给路由器节点也分配一个ip地址

​​​​​​​

  • 2.6 路由聚合

    •         对于一个路由转发表,如果几条路由表项的转发接口相同,部分网络前缀也相同,那么可以将这几条路由表项聚合为一条。这种地址的聚合称为路由聚合,也称构成超网。

      • 缺点:

                ● 路由聚合可以减少路由表的大小。

                ● 路由聚合可能会引入额外的无效地址。

存在1: 目的IP地址和转发表多个表项匹配--最长前缀匹配原则

        目的地址128.14.32.131与路由器转发表均匹配,则采用最长前缀匹配原则进行匹配,表项2匹配的长度最长,则从G3转发出去

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

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

相关文章

Python----机器学习(模型评估:准确率、损失函数值、精确度、召回率、F1分数、混淆矩阵、ROC曲线和AUC值、Top-k精度)

一、模型评估 1. 准确率&#xff08;Accuracy&#xff09;&#xff1a;这是最基本的评估指标之一&#xff0c;表示模型在测试集上正确 分类样本的比例。对于分类任务而言&#xff0c;准确率是衡量模型性能的直观标准。 2. 损失函数值&#xff08;Loss&#xff09;&#xff1…

Linux工作台文件操作命令全流程解析(高级篇之vim和nano精讲)

全文目录 1 简单易用的 Nano (入门之选)1.1 适用场景1.2 安装命令1.3 基础操作1.4 优点 2 功能强大的 Vim2.1 适用场景2.2 安装命令2.3 模式说明‌2.4 常用命令2.4.1 普通模式2.4.2 编辑模式2.4.3 可视模式2.4.4 命令行模式 3 参考文献 写在前面 作为运维或者研发&#xff0c;日…

大数据产品销售数据分析:基于Python机器学习产品销售数据爬虫可视化分析预测系统设计与实现

文章目录 大数据产品销售数据分析&#xff1a;基于Python机器学习产品销售数据爬虫可视化分析预测系统设计与实现一、项目概述二、项目说明三、研究意义四、系统总体架构设计总体框架技术架构数据可视化模块设计图后台管理模块设计数据库设计 五、开发技术介绍Flask框架Python爬…

VS2022 Qt配置Qxlsx

目录 1、下载QXlsx&#xff0c;并解压文件夹 ​编辑2、打开VS2022配置QXlsx 3、VS配置Qxslx库 方法一&#xff1a;常规方法 方法二&#xff1a;直接使用源码 方法三&#xff1a;将QXlsx添加到Qt安装目录&#xff08;暂时尝试未成功&#xff09; 1、下载QXlsx&#xff0c;…

OSPF案例

拓扑图&#xff1a; 要求&#xff1a; 1&#xff0c;R5为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4作为企业边界路由器&#xff0c; 出口公网地址需要通过PPP协议获取&#xff0c;并进行chap认证 2&#xff0c;整个OSPF环境IP基于172.16.0.0/16划分&#xff1b;…

《用MATLAB玩转游戏开发》贪吃蛇的百变玩法:从命令行到AI对战

《用MATLAB玩转游戏开发&#xff1a;从零开始打造你的数字乐园》基础篇&#xff08;2D图形交互&#xff09;-&#x1f40d; 贪吃蛇的百变玩法&#xff1a;从命令行到AI对战 &#x1f3ae; 欢迎来到这篇MATLAB贪吃蛇编程全攻略&#xff01;本文将带你从零开始&#xff0c;一步步…

【数据结构与算法】图的基本概念与遍历

目录 一、图的基本概念 1.1 图的基本组成 1.2 图的分类 1.3 顶点的度数 1.4 路径与回路 1.5 子图与特殊图 二. 图的存储结构 2.1 邻接矩阵 2.2 邻接表 三、深度优先遍历 3.1 原理 3.2 实现步骤 3.3 代码实现 四、广度优先遍历 4.1 原理 4.2 实现步骤 4.3 代码…

Linux云服务器配置git开发环境

文章目录 1. 安装 git2. git clone3. git add .4. git commit -m 提交记录5. git push&#x1f351; 异常原因&#x1f351; 解决办法 6. git pull7. git log8. git rm9. git mv10. git status 1. 安装 git sudo yum install git -y2. git clone 此命令的作用是从远程仓库把代…

手机浏览器IP归属地查询全指南:方法与常见问题解答

在当今数字化时代&#xff0c;手机浏览器已成为人们日常生活中不可或缺的工具之一。然而&#xff0c;在使用手机浏览器的过程中&#xff0c;有时我们需要了解当前网络连接的IP归属地信息&#xff0c;那么&#xff0c;手机浏览器IP归属地怎么查看呢&#xff1f;本文将详细介绍几…

Microsoft Azure DevOps针对Angular项目创建build版本的yaml

Azure DevOps针对Angular项目创建build版本的yaml&#xff0c;并通过变量控制相应job的执行与否。 注意事项&#xff1a;代码前面的空格是通过Tab控制的而不是通过Space控制的。 yaml文件中包含一下内容&#xff1a; 1. 自动触发build 通过指定code branch使提交到此代码库的…

Linux系统管理与编程16:PXE自动化安装部署centos7.9操作系统

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 0.准备 1&#xff09;防火墙和SELinux systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config (很不好的…

如何通过ABAP获取SAP生产订单的目标成本

SAP存储生产订单成本的主要底表包括&#xff1a; COBK: CO凭证表头COEP: CO凭证行项目COSS: 来自CO内部的汇总数据COSP: 来自CO外部部的汇总数据 先说结论&#xff1a;SAP 对生产订单的目标成本是没有保存到底表的。那么如何通过代码的方式获取呢&#xff1f; K_KKB_KKBCS_O…

【leetcode100】最长重复子数组

1、题目描述 给两个整数数组 nums1 和 nums2 &#xff0c;返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出&#xff1a;3 解释&#xff1a;长度最长的公共子数组是 [3,2,1] 。示例 2&…

基于Django框架的股票分红数据爬虫和展示系统

项目截图 一、项目简介 本项目是一个基于 Django 框架的股票分红数据爬虫和展示系统。它可以从东方财富网站爬取股票分红数据&#xff0c;并将数据存储到 Django 数据库中&#xff0c;同时提供数据查询、导出和图表展示功能。该系统为用户提供了一个方便的平台&#xff0c;用于…

QT高级(1)QTableView自定义委托集合,一个类实现若干委托

自定义委托集合 1同系列文章2 功能3 源码 1同系列文章 QT中级&#xff08;1&#xff09;QTableView自定义委托&#xff08;一&#xff09;实现QSpinBox、QDoubleSpinBox委托 QT中级&#xff08;2&#xff09;QTableView自定义委托&#xff08;二&#xff09;实现QProgressBar委…

小芯片大战略:Chiplet技术如何重构全球半导体竞争格局?

在科技飞速发展的今天&#xff0c;半导体行业作为信息技术的核心领域之一&#xff0c;其发展速度和创新水平对全球经济的发展具有举足轻重的影响。然而&#xff0c;随着芯片制造工艺的不断进步&#xff0c;传统的单片集成方式逐渐遇到了技术瓶颈&#xff0c;如摩尔定律逐渐逼近…

普通IT的股票交易成长史--股价起伏的真相-缺口(2)

声明&#xff1a;本文章的内容只是自己学习的总结&#xff0c;不构成投资建议。价格行为理论学习可参考简介中的几位&#xff0c;感谢他们的无私奉献。 送给自己的话&#xff1a; 仓位就是生命&#xff0c;绝对不能满仓&#xff01;&#xff01;&#xff01;&#xff01;&…

MindSpore框架学习项目-ResNet药物分类-模型优化

目录 5.模型优化 5.1模型优化 6.结语 参考内容&#xff1a; 昇思MindSpore | 全场景AI框架 | 昇思MindSpore社区官网 华为自研的国产AI框架&#xff0c;训推一体&#xff0c;支持动态图、静态图&#xff0c;全场景适用&#xff0c;有着不错的生态 本项目可以在华为云modelar…

Kubernetes(k8s)学习笔记(八)--KubeSphere定制化安装

1执行下面的命令修改上一篇中yaml文件来实现定制化安装devops kubectl edit cm -n kubesphere-system ks-installer 主要是将devops几个配置由False改为True 然后使用下面的命令查看安装日志 kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l …

养生:为健康生活筑牢根基

养生并非遥不可及的目标&#xff0c;而是贯穿于日常生活的点滴之中。从饮食、运动到心态调节&#xff0c;每一个环节都对我们的健康有着重要意义。以下为你详细介绍养生的实用策略&#xff0c;助力你开启健康生活模式。 饮食养生&#xff1a;科学搭配&#xff0c;滋养生命 合…