计算机网络 笔记 网络层1

 网络层功能概述

主要的任务是把分组从源端传输到目的端,为分组交换网上的不同主句提供通信服务,网络层的传输单位是数据报。

主要的功能;

1,路由选择:路由选择指网络层根据特定算法,为数据包从源节点到目的节点选择最佳传输路径。(控制平面:各种协议,用于控制和管理,长时,软件)

2,分组转发:传输层交付的报文通常较长,网络层会将其分割成较小的数据包(分组),并为每个数据包添加首部,包含源 IP 地址、目的 IP 地址等信息,以实现数据包独立传输与路由。(数据平面:对于数据处理过程中各种具体处理转发的过程,短时,硬件)

3,异构网络互联:不同网络(如以太网、令牌环网、无线局域网等)在传输介质、数据格式、传输速率等方面存在差异,网络层负责连接这些异构网络,实现不同网络间通信。

4,拥塞控制(开环控制,闭环控制):网络层实时监测网络流量与资源利用情况,判断是否发生拥塞。一旦检测到拥塞,网络层采取相应措施缓解,如:限制发送方发送速率;丢弃不重要数据包,为重要数据包腾出空间;调整路由,将部分流量引导到其他较空闲路径。

5,差错控制

网络层的两大平面 :

数据平面和逻辑平面

控制平面:

(传统、每路由器法):

路由选择算法会运行在每台路由器中,并且每个路由器都包含转发和路由选择两个功能

(SDN方法):

路控制平面和路由器分离,路由器仅仅实现转发,远程控制器通过计算和分发转发表来给路由器使用(这是一个可编程的一个软件)

SDN控制器可以去:1维护网络状态信息。2为网络控制应用程序提供信息

SDN的三个层次:

(1)北向API:和网络控制应用程序的接口,实现二者交互,让网络控制应用程序在状态管理层自检实现读写网络状态

(2)网络范围状态管理层:由SDN控制平面做出的最终控制决定,将要求控制器具有有关网络的主机,链路等状态信息(就是一个维护网络状态信息的层次)

(3)通信层:SDN控制器与受控网络设备之间的通信 (包括了南向API和通信协议)

网络控制应用程序:根据SDN控制器提供的方法,监控,编程,控制下面的网络设备(路由器)

数据平面:

完成转发,位于路由器中

路由算法:

静态路由算法(非自适应路由算法)管理员手动配置路由信息

优点:简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。

缺点:路由更新慢,不适合大规模网络

动态路由算法(自适应路由算法):路由器之间相互交换信息,按照路由优化算法算出路由项表

优点:路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。

缺点:算法复杂,增加网络负担。

动态路由算法分为 OSPF(全局性路由算法,使用的链路状态。适合大规模网络)和 RIP(分散性路由算法,使用的距离向量,适合小规模网络)

自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由。(因为部分单位不想过多的暴露自身协议)

在一个AS内,所有的路由器都必须联通

所以根据这个可以分为内部网关协议(IGP):RIP,OSPF 和 外部网关协议 (BGP)

RIP协议:

一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。

RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)

距离:通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达

RIP协议规定

路由器之和相邻的路由器交换信息

交换的信息只回交换自己的路由表(包括距离和下一跳的信息)

每30s回交换一次路由信息,当3分钟没有说到邻居路由器的通告,就会默认邻居没了,从途中删除掉邻居后重新更新路由信息

当各个节点更新完成后的状态叫做 :收敛

算法过程

1.修改相邻路由器发来的RIP报文中所有表项对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1。

2.对修改后的RIP报文中的每一个项目,进行以下步骤:

(1)R1路由表中若没有Net3,则把该项目填入R1路由表

(2)R1路由表中若有Net3,则查看下一跳路由器地址:

若下一跳是X,则用收到的项目替换源路由表中的项目

若下一跳不是X,原来距离比从X走的距离远则更新,否则不作处理。

3.若180s还没收到相邻路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为16。

4,返回

RIP报文:

首部部分:

命令字段:占 1 字节,用于指示报文的类型。常见取值有 1 和 2 ,1 表示请求报文,用于向相邻路由器请求其路由表信息;2 表示响应报文,用于向请求方或其他路由器发送路由信息。

版本字段:占 1 字节,标识 RIP 协议的版本,目前常用版本为 RIP v2,相比 RIP v1,它支持更多的功能,如子网掩码、认证等。

必须为 0 字段:占 2 字节,该字段在 RIP 报文中必须设置为 0,保留未用。

路由部分:

地址族标识符):占 2 字节,用于标识网络地址的类型,常见值为 2,表示 IP 地址。如果是 0xFFFF,则表示该路由条目用于宣告默认路由。

路由标记:占 2 字节,在 RIP v2 中可用于区分不同来源的路由,比如在引入外部路由时可设置特定的标记。

IP 地址:占 4 字节,指明该路由条目所对应的目的网络的 IP 地址。

子网掩码:占 4 字节,用于指定目的网络的子网掩码,在 RIP v1 中,该字段通常被忽略,因为 RIP v1 不支持可变长子网掩码。

下一跳:占 4 字节,指出去往目的网络的下一跳路由器的 IP 地址。如果该字段为 0.0.0.0,则表示下一跳就是发送该 RIP 报文的路由器。

度量值:占 4 字节,用于表示到达目的网络的距离,RIP 使用跳数作为度量值,取值范围为 1 到 15,16 表示目的网络不可达。

一个报文最多出线25个,RIP报文会塞入到UDP报文的用户数据部分

慢收敛:因为故障导致的路由器自己找不到自己的情况

OSPF协议:

结合SPF算法计的一个协议

基本原理

1.链路状态的感知与通告:OSPF 路由器会收集其周围网络的链路状态信息,包括与哪些路由器相连、链路的带宽、延迟等特性。每台路由器将这些信息封装成链路状态通告LSA,并向自治系统内的其他所有路由器进行泛洪。(广播)

2.构建链路状态数据库(LSDB):每台路由器接收来自其他路由器的 LSA 后,会将其存储在本地的链路状态数据库中。这个数据库实际上是对整个自治系统网络拓扑的完整映射。所有路由器的 LSDB 在稳定状态下应该是一致的.

3.最短路径计算:路由器基于 LSDB,使用 Dijkstra 算法来计算到达每个目的网络的最短路径。以自身为根节点,计算到其他所有节点的最短路径,从而构建出路由表。比如,在一个复杂的网络拓扑中,路由器通过 Dijkstra 算法找到前往各个子网的最优路径,并将这些路径信息添加到路由表中。

只有当链路发生变化后,才会交换信息

算法过程:

1,知道有哪些邻居(发现邻居节点,[HELLO]问候分组,其网络地址)

2,设置和邻居之间的距离

3,构造[DD数据库描述分组],向邻居发送自己的链路状态项目的信息

4  如果无需更新,就不做处理;如果需要更新or自己没有这些节点信息,就会发送[LSR链路状态请求分组],请求更新

5,收到[LSR链路状态请求分组],会发送对应的[LSU链路状态更新分组]

6,更新完毕就要返回确认信息[LSAck链路状态确认分组]

7,Dji更新自己这个节点到其他节点的最短路

当一个路由器的链路状态发生变化,就会

1,泛洪发送[LSU链路状态更新分组]让邻居进行更新

2,其他的节点返回[LSAck链路状态确认分组]

3,Dji更新

OSPF的区域:虽然是自治系统,但是OSPF会对自己这个区域进行划分,一个区域中最多200个

区域分为主干区域(0.0.0.0)和其他区域

路由器的划分:

1.主干路由器,在主干区域的路由器

2.区域边界路由器

(主干路由器和其他区域连接的既是主干路由器,也是区域边界路由器)

3,区域内部路由器

4,自治系统边界路由器,和其他自治系统连接的路由器

OSPF的分组时靠IP数据报发送的

其他特点:

1.每隔30min,要刷新一次数据库中的链路状态。

2.由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因s而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议 RIP好得多。

3.OSPF不存在坏消息传的慢的问题,它的收敛速度很快

BGP协议:

1.和其他的AS邻站发言人交换信息

2.交换的信息是网络可达性的信息:

BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列AS。当 BGP 发言人互相交换了网络可达性的信息后,各 BGP发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。(也就是交换的路径向量)

3.网络发生变化的时候交换信息

一个BGP发言人要与其他自治系统交换信息的时候要先建立TCP连接.通过TCP传送,在TCP连接上交换BGP报文来建立一个BGP会话,利用BGP会话交换信息

BGP特点
1,BGP 支持 CIDR,因此 BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。

2,在 BGP刚刚运行时,BGP的邻站是交换整个的 BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

BGP -4的四种报文

1.OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方。

2.UPDATE(更新)报文:通告新路径或撤销原路径。

3.KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性;也作为OPEN的确认。

4.NOTIFICATION(通知)报文:报告先前报文的差错:也被用于关闭连接。

三种协议的总结:

RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息。

OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而是直接采用IP.

BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rubyer-WPF:打造优雅、精致的 WPF 用户界面

在桌面应用开发领域,WPF(Windows Presentation Foundation)凭借其强大的 UI 设计能力和丰富的功能,始终是开发者们青睐的工具之一。今天,我将为大家介绍一款专注于 WPF UI 设计的优秀项目——Rubyer-WPF,它…

设计模式 行为型 访问者模式(Visitor Pattern)与 常见技术框架应用 解析

访问者模式(Visitor Pattern)是一种行为设计模式,它允许你在不改变元素类的前提下定义作用于这些元素的新操作。这种模式将算法与对象结构分离,使得可以独立地变化那些保存在复杂对象结构中的元素的操作。 假设我们有一个复杂的对…

继承多态语法糖

抽象类(通用) 子类继承父类方法后,这个子类对象如果执行方法的话,只要子类重写了就执行子类的,不执行父类的。 /*** 功能:* 作者:IT伟* 日期:2025/1/13 19:20*/ // 抽象类 A abstract class A {// 构造函…

MarS:一个由生成基础模型驱动的金融市场模拟引擎

“MARS: A FINANCIAL MARKET SIMULATION ENGINE POWERED BY GENERATIVE FOUNDATION MODEL” 项目主页:https://mars-lmm.github.io/ 论文地址:https://arxiv.org/pdf/2409.07486 Github地址:https://github.com/microsoft/MarS/ 摘要 生成…

macOS 使用 FreeRDP 远程访问 Windows:完整指南20250109

🖥️ macOS 使用 FreeRDP 远程访问 Windows:完整指南 引言 随着远程办公需求的快速增长,跨平台远程管理已经成为不可或缺的技能之一。作为一款开源轻量的远程桌面协议实现工具,FreeRDP 为 macOS 用户提供了一个简单、高效的解决…

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库

目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的,所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意:直接git pu…

计算机图形学【绘制立方体和正六边形】

工具介绍 OpenGL:一个跨语言的图形API,用于渲染2D和3D图形。它提供了绘制图形所需的底层功能。 GLUT:OpenGL的一个工具库,简化了窗口创建、输入处理和其他与图形环境相关的任务。 使用的函数 1. glClear(GL_COLOR_BUFFER_BIT |…

springboot高校教室资源管理平台

Spring Boot高校教室资源管理平台是一个基于Spring Boot框架开发的高校教室资源管理系统。 一、平台背景与意义 随着高校规模的不断扩大,教室资源的管理变得日益复杂。传统的管理方式往往依赖于人工记录和纸质文件,不仅效率低下,而且容易出…

[笔记] 使用 Jenkins 实现 CI/CD :从 GitLab 拉取 Java 项目并部署至 Windows Server

随着软件开发节奏的加快,持续集成(CI)和持续部署(CD)已经成为确保软件质量和加速产品发布的不可或缺的部分。Jenkins作为一款广泛使用的开源自动化服务器,为开发者提供了一个强大的平台来实施这些实践。然而…

正点原子STM32F103战舰版电容触摸键学习

一、tpad.h代码 #ifndef __TPAD_H #define __TPAD_H#include "./SYSTEM/sys/sys.h"/******************************************************************************************/ /* TPAD 引脚 及 定时器 定义 *//* 我们使用定时器的输入捕获功能, 对TPAD进行检…

JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)

1,ZGC(JDK21之前) ZGC 的核心是一个并发垃圾收集器,所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节(TB)级内存,设计了基…

zerox - 使用视觉模型将 PDF 转换为 Markdown

7900 Stars 478 Forks 39 Issues 17 贡献者 MIT License Python 语言 代码: https://github.com/getomni-ai/zerox 主页: OmniAI. Automate document workflows 更多AI开源软件:AI开源 - 小众AI zerox基于视觉模型 API 服务,提供了将 PDF 文档转化为 Mar…

JAVA:Spring Boot 集成 JWT 实现身份验证的技术指南

1、简述 在现代Web开发中,安全性尤为重要。为了确保用户的身份,JSON Web Token(JWT)作为一种轻量级且无状态的身份验证方案,广泛应用于微服务和分布式系统中。本篇博客将讲解如何在Spring Boot 中集成JWT实现身份验证…

[论文阅读] (35)TIFS24 MEGR-APT:基于攻击表示学习的高效内存APT猎杀系统

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…

目标检测中的Bounding Box(边界框)介绍:定义以及不同表示方式

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

openEuler22.03系统使用Kolla-ansible搭建OpenStack

Kolla-ansible 是一个利用 Ansible 自动化工具来搭建 OpenStack 云平台的开源项目,它通过容器化的方式部署 OpenStack 服务,能够简化安装过程、提高部署效率并增强系统的可维护性。 前置环境准备: 系统:openEuler-22.03-LTS-SP4 配置&…

Leecode刷题C语言之统计重新排列后包含另一个字符串的子字符串数目②

执行结果:通过 执行用时和内存消耗如下: void update(int *diff, int c, int add, int *cnt) {diff[c] add;if (add 1 && diff[c] 0) {// 表明 diff[c] 由 -1 变为 0(*cnt)--;} else if (add -1 && diff[c] -1) {// 表明 diff[c] 由 0 变为 -…

uniapp 微信小程序webview与h5双向实时通信交互

描述: 小程序webview内嵌的h5需要向小程序实时发送消息,有人说postMessage可以实现,所以试验一下,结果是实现不了实时,只能在特定时机后退、组件销毁、分享时小程序才能接收到信息(小程序为了安全等考虑做了…

pycharm-pyspark 环境安装

1、环境准备:java、scala、pyspark、python-anaconda、pycharm vi ~/.bash_profile export SCALA_HOME/Users/xunyongsun/Documents/scala-2.13.0 export PATH P A T H : PATH: PATH:SCALA_HOME/bin export SPARK_HOME/Users/xunyongsun/Documents/spark-3.5.4-bin…

fast-crud select下拉框 实现多选功能及下拉框数据动态获取(通过接口获取)

教程 fast-crud select示例配置需求:需求比较复杂 1. 下拉框选项需要通过后端接口获取 2. 实现多选功能 由于这个前端框架使用逻辑比较复杂我也是第一次使用,所以只记录核心问题 环境:vue3,typescript,fast-crud ,elementPlus 效果 代码 // crud.tsx文件(/.ts也行 js应…