硬核!30张图深入理解计算机应用层,附上例题,秒解子网规划,IP分址!

2023-05-16

网络层

已同步微信公众号:乐享Coding,欢迎各位的关注!

主要功能:实现主机与主机之间的通信,也叫点对点(end to end)通信。

思维导图附上

实现网络层任务,需要解决以下主要问题:

  • 网络层向运输层提供怎样的服务(可靠or不可靠)
  • 网络层寻址问题
  • 路由选择问题

两种服务

  • 面向连接的虚电路服务

双方必须建立网络层的连接-虚电路VC(Virtual Circuit),目的主机的地址记在连接建立阶段使用,之后每个分组的首部只携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。通信结束后,需要释放之前建立的虚电路。

  • 无连接的数据报服务(因特网选择)

双方通信不需要建立连接,每个分组可走不同的路径,每个分组的首部必须携带目的主机的完整地址,由于无连接,可能造成误码丢失重复失序等问题,由于不提供端到端的可靠传输服务,因此路由器可以做的比较简单,而且价格低廉,因特网最终选择了这种通信方式。

IPV4地址

IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32比特的标识符

IP地址由特定机构分配,我国用户可向其申请。2011年,IPv4地址宣布分配完毕。由于IPv4地址仅用32比特标识最多可满足43亿(2的32次方)个,实际上,IP 地址并不是根据主机台数来配置的,而是以网卡。像服务器、路由器等设备都是有 2 个以上的网卡,也就是它们会有 2 个以上的 IP 地址。让 43 亿台计算机全部连网其实是不可能的,更何况 IP 地址是由「网络标识」和「主机标识」这两个部分组成的,所以实际能够连接到网络的计算机个数更是少了很多。

表示方法:点分十进制

三个阶段

分类编址

五类地址 =「网络标识」+「主机标识」初步管理IP地址

注意事项:(官方规定)

  1. 只能分配给主机或路由器接口A类,B类和C类地址
  2. 主机号全为0的地址是网络地址,不能分配
  3. 主机号全为1的地址是广播地址,不能分配

TIPS:A类地址网络号不能包含127,因为已被占用作为本地软件换回测试!

根据以上规则,我们总结出以下规律:

子网划分

为什么需要进行子网划分?

假设一个企业需要为主机分配IP地址,如果申请C类网络地址,仅能获得254个分配名额,显然大公司是不够用的,只能申请B类网络地址,就能获得65534个分配名额,造成很大不必要的浪费,况且公司规模越大,就需要不同的网络为不同的分公司主机分配IP地址,可以称之为子网,如果子网还需要向官方申请新的B类网络,那么会造成时间和金钱成本的增加,也会使得路由表新增更多的记录,由于主公司分配了65534个名额,可能还有剩余,但再次申请变浪费了主公司已申请的剩余的B类地址。为解决上述问题,子网采用了从主机号借用了一部分作为子网号的方式。

划分子网虽然将之前已分配给主公司剩余的B类地址利用起来,但是又产生了一个新的问题:

计算机是如何知道主机号有多少位被借用作为子网号了呢?

子网掩码目的就是保留网络号和子网号,主机号清零。通过与子网掩码做逻辑与运算(只有1&1=1,其余均为0可以看成乘法)这样就可以知道主机号被借用了多少位。

例题解析:

已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,求子网数量和每个子网可分配的主机地址数量。

详细子网划分

注意:如果网络中没有设置子网掩码的情况不同类的网络会采用默认子网掩码。

无分类编址

划分子网在一定程度上缓解了因特网在发中遇到的困难,但是数量巨大的C类网络因为其地址空间太小并没有得到充分使用,因而因特网面临Ipv4地址的耗尽。

为此因特网工程任务组(官方)IETF又提出了采用无分类编址(CIDR)的方法来解决以上问题。

优势:

  • 消除了传统的A类,B类,C类地址,以及子网划分的概念;
  • 更加有效地分配IPv4的地址空间,为IPv6的广泛应用提供时间!

CIDR到底是什么呢?

CIDR采用斜线记法,实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”

斜线后面写上网络前缀所占的比特数量。

CIDR到底有什么用?

我们知道CIDR地址块中的任何一个地址,就可以知道该地址的全部细节(最小地址,最大地址,地址数量,聚合C类网络数量,地址掩码)。

TIPS:因为无分类,所以就没有了全0和全1不能分配主机的限制。

举例:

超网(路由聚合)

超网的引出:如图

可以看到R2的路由表将增加5条记录,但如果将共同前缀提出来,就可将5条记录综合成一条,减少了路由器的负担。如图:

聚合地址块 172.1.4.0/22

由此可见,地址块越小,路由越具体

若路由表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,因为这样的路由更具体。

例题详解

已知:
收到的分组的目的地址 D = 206.0.71.128
路由表中的项目:206.0.68.0/22        206.0.71.128/25 

问:分组发往哪个地址?

求解思路
子网掩码目的地址,确定该目的地址是否属于该子网内部。如果两者都属于,则选择网络前缀(掩码)最长的。

求解过程
1.先用 D 和第一个下一跳地址的子网掩码相与

结果说明206.0.71.128与206.0.71.128/25匹配。

​ 2.再用 D 和第二个下一跳地址的子网掩码相与

结果说明206.0.71.128与206.0.71.128/25也匹配。这个时候由于两个子网都匹配,选择最长的网络前缀匹配,也就是206.0.71.128/25。

IPv4地址规划

定长的子网掩码(FLSM)

将C类网络218.75.230.0划分5个子网,每个子网可分配的IP地址数量不得少于各自需求。

可以将3个主机位借用为网络位,一个可以产生2的3次方(8>5)个子网,因此每个主机可分配的IP地址数量为2的(8-3)次方的地址,足以满足上述分配,因此每个网络的子网掩码固定,都为255.255.255.224。可以看出,这种方法只能画出2的n次方个子网,每个子网所分配的IP地址数量相同,因此很容易造成IP地址的浪费。

变长的子网掩码(VLSM)

申请到的地址块218.75.230.0/24,使用变长的子网掩码给小型网络中的各设备分配IP地址。

可以看到,每个网络的子网掩码不是固定的,每个子网所分配的IP地址数量也不相同,218.75.230.0/24可分配的最小地址为218.75.230.0,最大地址为218.75.230.255.因此可以从起点按需分配这5个子网,多余的可剩下留作后续使用。

IP数据报首部格式

版本字段:表示IP协议的版本(IPv4或IPv6)

首部长度字段:IP数据报首部的长度,该字段的取值以4字节为单位。

区分服务:实际没使用

总长度:IP数据报的总长度

标识:属于同一数据报的各分片数据报应具有相同的标识。

标志:DF位:1表示不允许分片

​ 0表示允许分片

​ MF位:1表示“后面还有分片”

​ 0表示“这是最后一个分片”

​ 保留位:必须为0

片偏移:指出分片数据报的数据载荷部分偏移的与其原数据报的位置有多少,用于排序合并分片后的数据报

生存时间:以跳数(hop)为单位,每经过一个路由器转发,该值减1,如果为0就丢弃。

协议:指明数据部分是何种协议数据单元。

首部检验和:用来检测首部在传输过程中是否出现差错。

源IP地址和目的IP地址:指明源主机IP和目的主机IP。

为什么要进行分片?

分片的实例?

总长度与首部长度的区别?

常见的协议字段取值?

IPV6

IPv4的地址空间不够用,而子网、CIDR、超网等技术均治标不治本,因此出现了IPv6的格式。

1、IPv6将地址从32位(4B) 扩大到128位(16B) ,更大的地址空间。

2、IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。

3、IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。

4、IPv6支持即插即用(即自动配置),不需要DHCP协议。

5、IPv6首部长度必须是8字节的整数倍,IPv4首部是4B的整数倍。

6、IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。

7、ICMPv6:附加报文类型“分组过大”。

8、 IPv6支持资源的预分配,支持实时 视像等要求,保证- - 定的带宽和时延的应用。

9、IPv6取消了协议字段,改成下一个首部字段。

10、IPv6取消了总长度字段,改用有效载荷长度字段。

11、Pv6取消了服务类型字段。

表示方式

一般形式冒号十六进制记法:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170

压缩形式

4BF5:0000:0000:0000:BA 5F:039A:000A:2176

​ ↓

4BF5:0:0:0:BA5F:39A:A:2176

零压缩:一连串连续的0可以被一对冒号取代。

FFO5:0:0:0:0:0:0:B3

​ ↓

FFO5::B3

首部格式:如图

ICMP报文

主机或路由器使用ICMP来发送差错报告报文询问报文

ICMP报文被封装在IP数据报中发送。

共有以下五种:

终点不可达:

当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。

源点抑制:

当路由或主机由于拥塞而丢弃数据报时,就向源点发送抑制报文。

时间超过:

当路由器收到一个目的IP地址不是自己的数据报时,会将其生存时间TTL字段的值减1,若结果为0,除丢弃数据报外,还要向源点发送时间超过报文。

还有一种情况,当终点在预先规定的时间内不能收到一个数据报的全部数据片时,就把已收到的数据报全部丢弃,同样向源点发送时间超过报文。

参数问题:

当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就会丢弃该数据报,并向源点发送参数问题报文。

改变路由(重定向):

路由器把改变路由报文发送给主机,让主机知道下次应将书纪宝发送给另外的路由器,因此可以找到更好的路由。

应用举例

PING命令 -windows系统下

用来测试主机或路由器间的连通性,应用层直接使用网络层,没有通过UDP和TCP,同时使用ICMP回送请求和回答报文。

tracert命令 -winows系统下

用来测试IP数据报从源主机到达目的主机经过哪些路由器。

tracert命令实现原理?

通过设置不同的TTL时间触发超时向源主机发送类型为时间超过的ICMP报文。

路由配置

静态路由配置

人工配置的下一跳网络,记录在路由表上,直连网络路由器自动配置。

TIPS:人工配置不能适应网络的变化动态做出配置,而且一旦配置出错,可能造成路由环路的问题,即IP数据包重复在两个网络之间发送。但是这种配置操作简单,开销小。一般应用小规模网络。

动态路由配置

由于人工配置的上述缺点,引出了动态路由选择的出现,动态路由配置通过路由选择协议自动获取路由信息,但这种方式也有缺点,配置比较复杂,开销大。一般应用大规模网络。

路由选择协议

本章重点讨论内部网关协议中的RIPOSPF

RIP

每一个协议都有严格的规则,RIP要求自治系统AS内的每一个路由器都要维护从他自己到AS内其他每一个网络的距离记录,称位距离向量(DV)。使用跳数(Hop)来衡量到达目的网络的距离。直连网络的距离为1,路由器到非直连网络的距离定义为所经过的路由器数加1,一条路径最多允许包含15个路由器,因此,距离=16相当于不可达。

  • 工作原理

OSPF

OSPF是基于链路状态的,采用SPF算法计算路由,不限制网络规模,更新效率高,收敛(达到稳态)速度快。链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)。

代价:综合费用,距离,时延,带宽等等数据使用特定算法计算代价

1.OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系,Hello分组封装在IP数据报中,发往组播地址。周期为10秒,40秒未收到Hello分组,被认为邻居不可达。

2.使用OSPF的每个路由器都会产生链路状态通告(LSA)

3.每个路由器都有一个链路状态数据库LSDB。用于存储LSA,各路由器互相发送自己封装了LSA的LSU分组,最终各路由器的LSDB将达到一致。如图,以R2为例:

4.各路由器基于LSDB进行最短路径优先SPF算法计算,构建出最短路径的路由表。

更新同步原理

出现的问题:

OSPF在多点接入网络中,因为互为邻居关系所以组播要发送大量的Hello分组来维持邻居关系,如图:

为解决这个问题,通过选定指定路由器DR和备用指定路由器BDR,规定所有的非DR/BDR只与DR/BDR来建立邻居关系,大大减少了hello分组的数量。如图:


TIPS:为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统划分为若干的更小范围,叫做区域(Area)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

硬核!30张图深入理解计算机应用层,附上例题,秒解子网规划,IP分址! 的相关文章

  • linux/mm/memory.c/try_to_share()

    try to share checks the page at address 34 address 34 in the task 34 p 34 to see if it exists and if it is clean If so s
  • 通过 Telnet 在 Linux 终端中观看ASCII 星球大战

    打开终端并使用以下命令安装 telnet xff1a span class token function sudo span span class token function apt span span class token funct
  • 追逐鼠标光标的好奇小猫咪

    Oneko 是一个有趣的命令 xff0c 它将常规光标变成鼠标 xff0c 并创建一只好奇的小猫 xff0c 一旦移动光标 xff0c 小猫就会追逐它 它不仅限于终端 当猫追逐光标时 xff0c 还可以继续工作 使用以下命令安装 Oneko
  • Linux 中的旧扣簧键盘(Bucklespring 键盘)声音

    Ubuntu 可以使用 Snap 轻松安装它 运行以下命令 xff1a span class token function sudo span snap span class token function install span buck
  • PDF已加密,可以打开但是不能编辑不允许打印的解决办法

    文章目录 文档打开口令和许可口令解除加密方法一 FreeMyPdf xff1a http freemypdf com http freemypdf com 方法二 绿色小软件 xff1a PDF Password Remover 文档打开口
  • 如何在 Ubuntu 和其他 Linux 发行版中查看 MAC 地址

    文章目录 使用命令行查找MAC地址获取蓝牙的MAC地址 使用 GUI 获取 MAC 地址 在学习网络或对其进行故障排除时 xff0c 需要知道 MAC 地址 一台计算机可以有多个 MAC 地址 因为MAC地址是联网的核心部分 xff0c 每
  • 卸载流氓透明APP,帮老人清理手机弹窗广告

    症状 xff1a 只要解锁手机 xff0c 就时不时弹出广告视频 xff0c 声音还开到最大 xff0c 无法关闭 尤其是 xff0c 每点开一个app xff0c 都会弹出广告视频 xff0c 接打电话也不例外 xff0c 导致无法正常通
  • 无法翻译此网页的解决办法 - GoogleTranslateIpCheck

    2022年9月末 xff0c 网页翻译工具谷歌翻译停止了中国区服务 GitHub 地址 xff1a https github com Ponderfly GoogleTranslateIpCheck 我用的是win10系统 xff0c 所以
  • 树莓派4B(aarch64,arm64)bullseye安装Qt5、GStreamer

    简介 本文描述树莓派 4B Raspberry Pi OS xff08 64位 xff09 完成启动后 xff0c 进行的第一个编译安装任务 xff1a Qt5 43 GStreamer xff0c 同时也是OpenCV编译安装前的准备工作
  • 51单片机:蜂鸣器

    小白向单片机笔记二 xff1a 蜂鸣器 前言一 蜂鸣器原理二 蜂鸣器原理图1 蜂鸣器代码2 代码解释1 为什么蜂鸣器响 xff0c 和LED6闪烁中有两个delay 函数 xff1f 2 为什么BEEP 61 1是关闭LED6 而i 61
  • 多目标跟踪算法中之图匹配——匈牙利算法和KM算法详解

    目录 一 匈牙利算法1 算法背景及思想2 最大匹配3 最优匹配 完美匹配4 增广路径5 代码实现6 匈牙利算法总结6 1 深度优先6 2 广度优先 二 KM算法思想及局限性代码示例1 定义KM方法类2 定义权重数值 xff0c 执行主函数
  • linux/mm/memory.c/int share_page(unsigned long address)

    share page tries to find a process that could share a page with the current one Address is the address of the wanted pag
  • sumo教程 Hello World

    sumo教程 Hello World 注意事项 确保安装的sumo版本至少为1 4 0 以便能够使用本教程中显示的所有功能 要求 sumo gui和netedit的版本大于等于1 4 0 介绍 这个教程服务于第一次使用sumo的人员 我们准
  • 教程——OSMWebWizard

    教程 OSMWebWizard 有关事宜 osm web wizard提供一种最简单的方式开始sumo 基于一种openstreetmap的摘抄 你可以配置随机流量需求和可视化一种场景在sumo gui 这个教程可以指导你一步步从选择地图类
  • sumo-绕圈行驶

    绕圈行驶 在本教程中 xff0c 我们将使用 netedit 构建一个简单的圆形网络 xff0c 并使用重路由器使车辆绕圈行驶 所有定义文件都可以在 lt SUMO HOME gt docs tutorial circles 目录中找到 本
  • 教程——sumolympics

    SUMOlympics 本教程针对不同的交通模式设置了比赛 xff08 集体 100 米冲刺 xff09 您将学习如何在 netedit 中创建特殊车道和 xff08 非常简单的 xff09 红绿灯 xff0c 使用不同的车辆类别来定义车辆
  • sumo 教程——高速公路

    本教程涵盖了在多车道高速公路上创建异构流以及修改和保存视图设置的非常基本的元素 修建高速公路 编辑几何点 打开 netedit 创建一个虚构的高速公路 我们一开始就保持这个非常简单 xff0c 并考虑一个没有入口或出口的路段 按e进入边创建
  • sumo教程——Manhattan

    介绍 本教程介绍了如何在 SUMO 中构建曼哈顿移动模型 在这个模型中 xff0c 固定数量的车辆在曼哈顿电网网络上随机行驶 所有文件也可以在 lt SUMO HOME gt docs tutorial manhattan 目录中找到 创建
  • 基于51单片机的双通道DHT11温湿度显示器(LCD1602)

    基于STC89C51单片机的双通道DHT11实时温湿度显示系统 xff08 LCD1602 xff09 前言题目要求实现的功能思路介绍 代码部分注意事项驱动部分LCD1602驱动按键驱动 主要模块初始化DHT11驱动中断服务程序显示函数主函
  • 【21-7-25笔记】SR(Segment Routing)详解

    第一卷 第一章 简介 1 11 SRv6 SRv6 将SR框架应用到IPv6数据平面 SRv6对IPv6的价值至关重要 xff0c 将极大地影响未来的IP基础设施部署 xff0c 无论是在数据中心 xff0c 大规模汇聚网络 xff0c 还

随机推荐