计算机网络 笔记 网络层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。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决计算机管理无法连接远程电脑

症状 有时,我们会想用计算机管理(Computer Management)连接到一台远程Windows服务器,因为我们不想直接登录到远程服务器上操作。 然而,绝大多数情况下,如果你初次尝试连接,会得到如下的错误。 …

【Uniapp-Vue3】Prop校验与prop默认值用法及循环遍历数组对象

一、prop校验 如果我们在想要限制prop的类型,就可以在接收prop的时候对接收类型进行限制: defineProps({ 属性名:{ type:类型 } }) 需要注意类型的首字母大写 但是设置了传入参数类型限制并不能严格限制,只会在后台进行提示: 二、…

解决WordPress出现Fatal error: Uncaught TypeError: ftp_nlist()致命问题

错误背景 WordPress版本:wordpress-6.6.2-zh_CN WooCommerce版本:woocommerce.9.5.1 WordPress在安装了WooCommerce插件后,安装的过程中没有问题,在安装完成后提示: 此站点遇到了致命错误,请查看您站点管理…

qt-C++笔记之自定义继承类初始化时涉及到parents的初始化

qt-C笔记之自定义继承类初始化时涉及到parents的初始化 code review! 参考笔记 1.qt-C笔记之父类窗口、父类控件、对象树的关系 2.qt-C笔记之继承自 QWidget和继承自QObject 并通过 getWidget() 显示窗口或控件时的区别和原理 3.qt-C笔记之自定义类继承自 QObject 与 QWidget …

ElasticSearch | Elasticsearch与Kibana页面查询语句实践

关注:CodingTechWork 引言 在当今大数据应用中,Elasticsearch(简称 ES)以其高效的全文检索、分布式处理能力和灵活的查询语法,广泛应用于各类日志分析、用户行为分析以及实时数据查询等场景。通过 ES,用户…

Java聊天小程序

拟设计一个基于 Java 技术的局域网在线聊天系统,实现客户端与服务器之间的实时通信。系统分为客户端和服务器端两类,客户端用于发送和接收消息,服务器端负责接收客户端请求并处理消息。客户端通过图形界面提供用户友好的操作界面,服务器端监听多个客户端的连接并管理消息通…

【Redis学习 | 第5篇】Redis缓存 —— 缓存的概念 + 缓存穿透 + 缓存雪崩 + 缓存击穿

文章目录 完成任务1. 什么是缓存2. 添加商户缓存3. 缓存更新策略3.1 主动更新 4. 缓存穿透5. 缓存雪崩6. 缓存击穿6.1 使用互斥锁查询商铺信息6.2 使用逻辑过期查询商铺信息 7. 封装 Redis 工具类 完成任务 1. 什么是缓存 缓存:数据交换的缓冲区(Cache…

单元测试概述入门

引入 什么是测试?测试的阶段划分? 测试方法有哪些? 1.什么是单元测试? 单元测试:就是针对最小的功能单元(方法),编写测试代码对其正确性进行测试。 2.为什么要引入单元测试&#x…

微服务的配置共享

1.什么是微服务的配置共享 微服务架构中,配置共享是一个重要环节,它有助于提升服务间的协同效率和数据一致性。以下是对微服务配置共享的详细阐述: 1.1.配置共享的概念 配置共享是指在微服务架构中,将某些通用或全局的配置信息…

基于改进粒子群优化的无人机最优能耗路径规划

目录 1. Introduction2. Preliminaries2.1. Particle Swarm Optimization Algorithm2.2. Deep Deterministic Policy Gradient2.3. Calculation of the Total Output Power of the Quadcopter Battery 3.OptimalEnergyConsumptionPathPlanningBasedonPSO-DDPG3.1.ProblemModell…

HQChart使用教程30-K线图如何对接第3方数据44-DRAWPIE数据结构

HQChart使用教程30-K线图如何对接第3方数据44-DRAWPIE数据结构 效果图DRAWPIEHQChart代码地址后台数据对接说明示例数据数据结构说明效果图 DRAWPIE DRAWPIE是hqchart插件独有的绘制饼图函数,可以通过麦语法脚本来绘制一个简单的饼图数据。 饼图显示的位置固定在右上角。 下…

Wi-Fi Direct (P2P)原理及功能介绍

目录 Wi-Fi Direct (P2P)介绍Wi-Fi Direct P2P 概述P2P-GO(P2P Group Owner)工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct &#xff…

树莓派-5-GPIO的应用实验之GPIO的编码方式和SDK介绍

文章目录 1 GPIO编码方式1.1 管脚信息1.2 使用场合1.3 I2C总线1.4 SPI总线2 RPI.GPIO2.1 PWM脉冲宽度调制2.2 静态函数2.2.1 函数setmode()2.2.2 函数setup()2.2.3 函数output()2.2.4 函数input()2.2.5 捕捉引脚的电平改变2.2.5.1 函数wait_for_edge()2.2.5.2 函数event_detect…

【数据库】四、数据库管理与维护

文章目录 四、数据库管理与维护1 安全性管理2 事务概述3 并发控制4 备份与恢复管理 四、数据库管理与维护 1 安全性管理 安全性管理是指保护数据库,以避免非法用户进行窃取数据、篡改数据、删除数据和破坏数据库结构等操作 三个级别认证: 服务器级别…

Observability:将 OpenTelemetry 添加到你的 Flask 应用程序

作者:来自 Elastic jessgarson 待办事项列表可以帮助管理与假期计划相关的所有购物和任务。使用 Flask,你可以轻松创建待办事项列表应用程序,并使用 Elastic 作为遥测后端,通过 OpenTelemetry 对其进行监控。 Flask 是一个轻量级…

Python双指针

双指针 双指针:在区间操作时,利用两个下标同时遍历,进行高效操作 双指针利用区间性质可以把 O ( n 2 ) O(n^2) O(n2) 时间降低到 O ( n ) O(n) O(n) 反向扫描 反向扫描: l e f t left left 起点,不断往右走&…

python无需验证码免登录12306抢票 --selenium(2)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示:这里可以添加本文要记录的大概内容: 就在刚刚我抢的票:2025年1月8日…

软件系统安全逆向分析-混淆对抗

1. 概述 在一般的软件中,我们逆向分析时候通常都不能直接看到软件的明文源代码,或多或少存在着混淆对抗的操作。下面,我会实践操作一个例子从无从下手到攻破目标。 花指令对抗虚函数表RC4 2. 实战-donntyousee 题目载体为具有漏洞的小型软…

解决nginx多层代理后应用部署后访问发现css、js、图片等样式加载失败

一般是采用前后端分离部署方式,被上一层ng代理后,通过域名访问报错,例如:sqx.com.cn/应用代理路径。 修改nginx配置,配置前端页面的路径: location / {proxy_pass http://前端页面所在服务器的IP:PORT;pro…

小程序textarea组件键盘弹起会遮挡住输入框

<textarea value"{{remark}}" input"handleInputRemark" ></textarea> 如下会有遮挡&#xff1a; 一行代码搞定 cursor-spacing160 修改后代码 <textarea value"{{remark}}" input"handleInputRemark" cursor-spacin…