计算机网络:网络层

news2024/10/7 10:22:05

网络层

网络层主要是解决寻址连接问题,例如两个主机在网络上通过IP进行连接通信

1.网络层概述

  • 网络层的主要任务是实现网络互联,进而实现数据包在各网络之间的传输

  • 需要解决的主要问题:

    image-20221023203241718

  • 因特网

    • 使用TCP/IP协议栈
    • image-20221023203505547
    • 通过学习TCP/IP协议栈的网际层进行了解

2. 网络层提供的两种服务

2.1 面向连接的虚电路服务

image-20221023203905544

2.2 无连接的数据报服务

image-20221023204032355

tips:二者对比

image-20221023204123347

3. IP地址

3.1 IPv4地址概述

image-20221023204313720

image-20221023204341777

  • 因为IPv4地址不方便阅读,采用点分十进制表示法

举例

image-20221023205013858

因为位数固定,也可以用凑值法来确定

image-20221023205334578

3.2 分类编址的IPv4地址

image-20221023205525684
  • 只有ABC类地址可以分配给网络中的主机路由器中的各接口

  • 主机号为**全0(网络地址)和全1(广播地址)**的都不能分配给主机或者路由器的各接口

A类地址

image-20221024215652181

B类地址

image-20221024220056607

C类地址

image-20221024220318538

总结

image-20221024222212744

4.3.3 划分子网的IPv4地址

分配的IP地址数通常会存在空余,可以通过划分子网高效利用剩余IP,起到分类的作用

主机号可以被借用位数作为子网号

  • 32byte的子网掩码可以表明分类IP地址的主机号被借用了几个作为子网号

    • 子网掩码使用连续的比特1来对应网络号和子网号
    • 子网掩码使用连续的比特0来对应主机号

    image-20221025121339481

    • 将划分子网的IPv4地址子网掩码进行逻辑与运算

    image-20221025121350084

  • 默认子网掩码

image-20221025132616448

例:

image-20221025121510483

例题

image-20221025122153782

1.写出二进制子网掩码

image-20221025122217642

2.进行运算,写出主机的网络地址

image-20221025132039727

4.3.4 无分类编址的IPv4地址

数量巨大的C类网因为地址太小,没有得到充分使用,IPv4地址面临耗尽的问题

image-20221025150217483

  • CIDR使用斜线记法,在斜线后面写出网络前缀所占比特的数量

image-20221025150656440

image-20221025150950257

  • 路由聚合

将五个网络通过一个路由器进行转发:(找共同前缀,后面添加斜线

image-20221025151418894

image-20221025151809953

只能分配两个IP,所以至多两个主机

4.3.5 IPv4地址的应用规划

  • 定长的子网掩码FLSM

    • 使用同一个子网掩码来划分子网
    • 每个子网所分配的IP地址数量相同造成IP的浪费

    子网号决定分类数目主机号决定分配的IP个数

  • 变长的子网掩码VLSM

    • 根据不同IP地址的需求分配主机号,剩余编码可以作为网络前缀

    image-20221025153450491

    优先分配地址需求数量较大的地址

    image-20221025153904264

4.4 数据报的发送和转发过程

主机判断 目的主机是否与自己在同一个网络

将两个IP地址进行 运算,不相等则不在同一个网络

image-20221025155107315

  • 默认网关(设置默认路由器的IP对数据进行转发)

image-20221025155306375

  • 路由器收到数据报如何转发
image-20221025155924952

收到数据报中的信息后进行查表转发

4.5 静态路由配置及其可能产生的环路问题

4.5.1 静态路由配置

image-20221025162231754

  • 使用静态路由配置可能导致产生路由环路的错误
    • 配置错误
    • 聚合了不存在的网络
    • 网络故障

image-20221025162608645

R2不知道黄色的地址,所以可以手动配置(先转到R1路由器,再由R1进行转发)

4.5.2 静态路由配置错误导致路由环路

  • 在静态配置错误后,路由器进行循环转发

image-20221025163611788

防止这种问题设置了TTL字段

image-20221025163751919
  • 聚合了不存在的网络导致路由环路

防止这种问题设置了黑洞路由

image-20221025164408046

4.6 路由器

4.6.1 路由器选择协议

  • 静态路由选择
image-20221025165147401
  • 动态路由选择
image-20221025165156077

因特网采用的路由选择协议的主要特点

image-20221025165747374

  • 常见的路由选择协议

    • 内部网关(路由)协议
    • 外部网关协议

    image-20221025180638132

  • 路由器的基本结构

    image-20221025181017616

4.6.2 路由信息协议RIP的基本工作原理

RIP认为好的路由就是距离短的路由

路由信息协议RIP要求AS内内的每一个路由器都要维护子自己到AS内其他每一个网络的距离纪录记录,这组距离称为:“距离向量D-V

image-20221101213347512

当距离相同时,可以进行等价负载均衡(平分信息量)

  • 三个要点

    image-20221101214512757

  • RIP路由器的更新规则

image-20221101215039746

缺陷

  • RIP存在路由环路或距离无穷计数问题

image-20221101220017842

通过以下措施减少该问题的出现概率:

  • 可以限制最大路径举例为15

4.6.3 开放最短路径优先(OSPF)的基本工作原理

  • OSPF是为了是为了克服RIP算法的缺点提出的
    • 最短路径优先:使用了Dijkstra的最短路径算法SPF

image-20221108170913698

image-20221108170534952
  • OSPF相邻路由器之间通过交互Hello分组,建立和维护邻居关系

image-20221108171306470

  • 使用OSPF的每个路由器都有一个链路状态数据库LSDB,存储

生产链路通告(LSA):记录直连网络的链路状态信息邻居路由器的链路状态信息

LSDB中的数据,进行SPF计算,计算出最短路径,构建出路由表

  • OSPF有五种分组
image-20221108174228445

由于每个相邻路由器之间都需要交换分组,交换信息数目过多n*(n-1)/2

为了减少分组,进行了以下优化

image-20221108174849323 image-20221108175018718
  • OSPF为了能够适配很大规模的网络,将很大的网络划分成小区域
image-20221108175807424

6.4 边界网关(BGP)的基本工作原理

自制系统之间需要使用外部网关协议EGP这一类协议,使用较多的为BGP-4

image-20221108180421750

  • 在不同自治系统内,度量路由代价可能不同,因此通过OSPF寻找最佳路由不可行

  • 自治系统之间的路由必须考虑(考虑政治、经济、安全等)

  • BGP只能是找到一个较好的路由路径

每个系统都有自己的BGP发言人

建立连接使用TCP报文段中进行连接

image-20221108194910497
  • BGP发言人交换了网络可达性信息后,分别根据各自收到的路由信息找到较好的路由

  • 构建连通图

    image-20221108194948073
  • 封装RIP、OSPF、BGP 报文协议

image-20221108202442263

7. IPv4数据报的首部格式

前置知识:

IPv4在传输时,需要与MTU比大小判断,如果大于MTU需要进行分片处理

例:MTU=1500,下述表需要被分成3份

image-20221108215845518

IPv4数据报具体内容:

image-20221108205923193

版本

  • 占4比特,表示IP协议的版本
  • 通信双方使用的IP协议的版本必须一致

首部长度

  • 占4比特,表示IP数据报首部的长度。
  • 最小十进制取值为5 bytes(表示IP数据报首部只有20字节固定部分
  • 最大取值为15bytes(表示IP数据报首部包含固定部分可变部分

区分服务

  • 一般不使用

总长度字段

  • 占比16 bytes,表示IP数据报的总长度(首部+数据载荷

image-20221108211857206

标识、标志、片偏移

  • 三个字段共同作用于IP数据报分片
image-20221108213124407

tips:片偏移结果必须为整数,不然需要重新分组

  • 例题:具体应用
image-20221108220420975

生存时间TTL

占8 bytes,最大生存周期为255秒;路由器转发时,将
生 存 时 间 − 本 路 由 器 耗 费 时 间 ≠ 0 生存时间-本路由器耗费时间 \ne0 =0
则转发,否则丢弃

协议

  • 表明数据部分是哪种协议数据单元

  • 常用协议数据单元

    image-20221108221353815

首部检验和(IPv6中不再使用)

  • 占16 bytes,用来是否在传输过程出现错误

源IP地址和目的IP地址

  • 各占32bytes,用来填写发送主机接收主机地址

  • 例题:

因为偏移量要取整,所以要进行合理分配

首先使用MTU=800(最大传输大小),但是不整除,向下取整进行计算

image-20221108223853273

4.8 网际控制报文协议(ICMP)

为了更有效地转发IP数据报和提高交付成功的机会使用ICMP

ICMP发送:差错报告报文询问报文,被封装在IP数据报中发送

  • ICMP差错报告报文种类:

终点不可达

当路由器或主机不能交付数据报时,发送该报文

源点抑制

当路由器或主机由于拥塞而丢弃数据报时,发送该报文

时间超过

当路由器收到IP地址不是自己的IP数据报,将其生存时间TTL减一

结果为0则丢弃

参数问题

传输中首部出现误码,就丢弃该数据报,并且向源点发送参数问题

改变路由(重定向)

路由器把改变路由报文发送给主机,让主机优化路线

tips:以下情况不应发送ICMP差错报告报文

image-20221109161422742
  • ICMP询问报文:

回送请求和回答

用来测试目的站是否可达及了解其有关状态

时间戳请求和回答

进行时钟同步和测量时间

  • 应用举例

PING命令:查看是否连通

image-20221109162224258

traceroute:

image-20221109162240578

4.9 虚拟专用网络(VPN)与网络地址转化(NAT)

VPN

利用公用的因特网做诶本机构各专用网之间的通信载体

VPN专用网中的IP是本机构可分配的专用地址

image-20221110095640580

将左边换为个人也是如此

NAT

该方法缓解了IPv4地址耗尽的问题

  • 流程

1.传输过去

image-20221110100227144

2.返回

image-20221110100543539

  • 延伸NAPT:将端口号与IP地址一起进行转换(一个IP可以使多个主机与外界进行通信)

image-20221110101303578

所以根据以上路由器的工作原理,只能由内网发起(不然路由器里面就没有对应记录 )

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

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

相关文章

Nginx:handler 模块的实现

文章目录1、模块的分类2、模块的基本结构2.1、模块配置结构2.2、模块配置命令2.3、模块上下文结构2.4、模块的定义3、http 请求处理3.1、请求处理阶段3.2、获取用户请求3.3、发送响应4、例:流量限制模块4.1、操作共享内存4.1.1、红黑树4.1.2、双向链表4.2、编写模块…

APS排程软件在压铸行业的应用

压铸是一种金属铸造工艺,其特点是利用模具内腔对融化的金属施加高压。模具通常是用强度更高的合金加工而成的,这个过程有些类似注塑成型。大多数压铸铸件都是不含铁的,例如锌、铜、铝、镁、铅、锡以及铅锡合金以及它们的合金。根据压铸类型的…

js:判断文本溢出隐藏生效text-overflow: ellipsis

效果展示 参数汇总 看上图,不难发现,文字有超出的条件是 target.scrollWidth > target.offsetWidth可以通过js判断是否生效,参考element-ui的代码实现 https://github.com/ElemeFE/element/blob/dev/packages/table/src/table-body.js#…

RocketMQ的主要组件及其功能

一、RocketMQ部署的组件 RocketMQ是啥就不多说了,一个基于主题的订阅发布机制的消息中间。下面就是我们部署时的架构,NameServer和Broker需要部署在服务器上,对于消费者和生产者则是我们在自己的程序里启动,去push/pull消息。 消…

rust变量与常量

变量绑定 在rust里有个核心原则,那就是所有权。在其它语言中,我们可以把一个值赋值给变量。但是在rust里,是把值绑定到变量上。任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这块内存绑定给一…

路由器的工作原理,详细介绍

1、路由器的作用 路由器: router 作用:实现跨网段通信,不同的网络之间通信 交换机: switch 作用:组建局域网,就是将电脑通过网络连起来 交换机的原理参考文档:计算机网络之交换机的工作原理…

前端React项目的Next.js项目通过CSS引入自定义字体文件

最近在Web3的项目,需要引入自定义字体,做下记录: 1、 如果是下载的字体文件,直接能使用的就不需要转换,如果是TTF格式则需要转换成eot、svg、woff、woff2,这里提供一个网站Font Squirrel | Create Your Ow…

ROS之话题通信

文章目录理论模型分析流程1. 发布方2. 订阅方3.配置 CMakeLists.txt4.执行5.注意参考理论模型 话题通信实现模型是比较复杂的,该模型如下图所示,该模型中涉及到三个角色: ROS Master (管理者)Talker (发布者)Listener (订阅者) ROS Master 负责保管 Talker 和 Li…

简化javabean开发-->Lombok

目录 一.Lombok 1.Lombok 介绍 1.1Lombok 作用 1.2SpringBoot 和 IDEA 官方支持 2.Lombok 常用注解 3.Lombok 应用实例 3.1在 pom.xml 引入 lombok 3.2. 修改 Furn.java 3.3在 idea 安装 lombok 插件 一.Lombok 1.Lombok 介绍 1.1Lombok 作用 1. 简化 JavaBean 开…

Camtasia2023喀秋莎录屏软件下载操作教程

Camtasia软件2023最新版是一款电脑屏幕录制与视频剪辑的软件,功能强大且操作简单。可以使用该软件对视频进行添加滚动字幕的效果,并且还可以选择注释标注的样式、主题以及形状等。在内置的视频编辑器中对视频进行剪辑时还可以拖放文本、添加效果、添加过…

VTK-vtkImplicitFunction及其子类介绍

简介:本文主要介绍vtkImplicitFunction接口及其子类的实现原理和用途。 目录 1. vtkPlane 2. vtkPolyPlane 1. vtkPlane 描述:vtkPlane提供了各种平面的计算方法,包括点到面的投影,计算点到面的距离及面的法向量等。 Evaluat…

解析分布式数据库的技术框架及其在金融行业中的应用规划

早期银行业务系统处理的主要是交易型数据,数据量较少,传统关系型数据库(如Oracel、DB2等)已足够应对。随着互联网金融业务的快速发展,业务系统需要处理的数据呈爆炸式增长,传统数据库无法满足业务系统越来越高的数据处理能力要求。于是,新型的分布式数据库系统应运而生。…

Linux安装Redis 手把手教程

文章目录安装步骤1. 创建安装目录/usr/local/redis2. 进入安装包目录3. 编译环境准备:4. 下载redis 源码包5. 解压文件6. 进入到解压好的redis-5.0.2目录下,进行编译与安装7. 启动并指定配置文件8. 配置允许远程连接(选做)9. 启动…

文献|敬畏这种情绪,居然可以让世界变得更美好

Hello,大家好~ 这里是壹脑云科研圈,我是青书~ 在介绍今天推荐的文献之前,要先和大家宣布一个非常棒的消息,我们的第二季21天情绪文献对赌营圆满结营啦~ 在本期活动里,各位参加的小伙伴都有属于自己的收获&#xff1…

容器基础镜像的编写及最佳实践

1 基本概念 1.1 Docker系统组成 整体Docker的系统包括以下主要组成部分,包括Dockerclient、Dockerdaemon、Docker registry、Docker镜像、Docker容器,他们之间的关系如下图: Docker架构主要分为客户端和服务端,客户端负责发起请求,服务端负责接受,解析和处理请求,图示中…

【Linux】操作题大全

目录 1.若下达 # rmdir test 命令来删除某个已存在的目录,但无法成功,请说明可能的原因 2.请用shell中的while循环输出1-100的和 两种执行bash文件的方法 3. 请用shell中的for循环输出1-100 4.请用shell中的while循环输出1-100 5.计算输入的参数1和参…

jquery中 offset()计算的偏移量 和 原生Dom计算的偏移量不一致;

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.需求:有一个表格,单元格宽度不相等,单元格上面覆盖着一个input输入框。想要通过相对位置计算 输入框到底在表格的第几列。 思路:通过循环表格第一行单元格计算左边偏移…

Twitter群推王:推特全方位营销利器

Twitter群推王是专为Twitter运营提供的一款全方位营销工具,可以自动发帖、自动私信、自动转发、自动关注、自动点赞、自动改资料、自动注册、数据采集等,解决营销中的三大难题:账号问题、同一Ip环境问题、批量自动化问题,是个人、…

【数据结构Note4】-串、数组和广义表(kmp算法详解)

串、数组和广义表 顺序表和链表分别是线性表的两种存储结构。 栈和队列是操作受限的线性表。 串、数组和广义表是内容受限的线性表。 1. 串 1.1 串的概念和结构 串(String)—零个或多个任意字符组成的有限序列 所谓串是内容受限的线性表。就是要求该线性…

[ 常用工具篇 ] 解决kali英文操作不方便的问题 -- kali 设置中文界面

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…