计算机网络-第4章 网络层(2)
主要内容:网络层提供的两种服务:虚电路和数据报(前者不用)、ip协议、网际控制报文协议ICMP、路由选择协议(内部网关和外部网关)、IPv6,IP多播,虚拟专用网、网络地址转换NAT,多协议标记交换MPLS
4.5 互联网的路由选择协议
互联网采用的路由选择协议是自适应的(动态的)、分布式路由选择协议。
互联网采用分层次路由选择协议原因:1互联网规模大;2许多单位不愿公开内部网络细节,并希望连接互联网。基于此可把互联网分为小的自治系统AS。一个AS对其他AS表现出一个单一和一致的路由选择策略。一个大的ISP为一个自治系统。
路由选择协议分为两大类:内部网关协议IGP(RIP和OSPF)、外部网关协议EGP(BGP-4)。
路由信息协议RIP:一种分布式基于距离向量的路由选择协议,互联网标准协议;要求网络中的每一个路由器都维护自己到每一个目的网络的距离记录(这是一组距离,即距离向量)。距离也称跳数,没经过一个路由器,跳数加1.
RIP协议特点:1仅和相邻路由交换信息;2交换的信息是当前路由器所知道的全部信息,即自己现在的路由表;3按固定时间间隔交换。
路由器刚开始工作时,路由表是空的,先更新相连的路由器(距离为1,社交网络中的一度关系);若干次更新后,所有路由器都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
一般情况下,RIP协议可以收敛,且过程较快。收敛指AS中所有结点都得到正确的路由选择信息。
路由表更新原则找出每个目的网络的最短向量。该更新算法也叫距离向量算法。


RIP协议报文格式:
RIP协议采用运输层的用户数据报UDP进行传送。


RIP在网络出现故障时,要经过比较长的时间才能将信息传送到所有路由器;该特点也叫做:好消息传播得快,坏消息传播得慢。适用于小网络。
开放最短路径优先OSPF,为克服RIP缺点在1989年提出,最短路径优先是因为采用了Dijkstra得最短路径算法SPF。最主要特征为采用了链路状态协议,而非RIP的距离向量协议。
三个要点:1采用洪泛法(路由器通过所有输出端口向所有相邻的路由发送消息,每一个相邻路由再将此信息发给所有相邻的路由器)向本自治系统的所有路由器发送消息。2发送的消息为本路由器相邻的所有路由器的链路状态(链路状态为本路由器都和哪些路由器相邻,该链路的度量,如费用、距离、时延、带宽等,有时称度量为代价)。3只有当链路状态发生变化时,路由器才向所有路由器用洪范法发送此消息。
各路由器频繁交换链路状态信息,最终都能建立一个链路状态数据库,即全网的拓扑结构图。每一个路由器使用链路状态数据库中的数据,构造自己的路由表(Dijkstra最短路径算法)。
OSPF的更新过程收敛得快。OSPF将一个自治系统再划分为若干个更小得范围,叫做区域,减少整个网络的通信量。
OSPF使用层次结构的区域划分,上层区域为主干区域。
OSPF不用UDP,直接用IP数据报传送。OSPF分组使用24字节的固定长度首部。

OSPF特点:1允许管理员给每条路有指派不同的代价;对不同类型的业务可计算不同的路由。2到同一目的网路有多条相同代价的路由,可将通信量分配给这几条路由,也叫多路径间的负载均衡;3分组具有鉴别功能;4支持可变长的子网划分和无分类的编址CIDR;5每个链路状态都有32位序号。
OSPF五种分组:1问候;2数据库描述;3链路状态请求;4链路状态更新;5链路状态确认。
外部网关协议BGP,边界网关协议。背景:1互联网规模太大,自治系统AS之间路由选择非常困难。2自治系统AS之间的路由选择必须考虑有关策略。
BGP力求寻找一条能够到达网络且较好的路由,非最优,采用路径向量路由选择协议,不同于RIP、OSPF。
BGP发言人之间交换路由信息时,先建立TCP连接(端口号179),之后建立BGP会话。交换路由信息的两个BGP发言人位对方的邻站或对等站。
BGP报文首部:

路由器构成:一个具有多个输入端口和多个输出端口的专用计算机,其任务为转发分组。路由器的转发分组是网络层的主要工作。

路由器结构可分为:路由选择部分和分组转发部分。选择部分也叫控制部分,核心构件为路由选择处理机,任务为根据选定的路由选择协议构造出路由表,并定期更新。分组转发由三部分组成:交换结构、一组输入端口和输出端口。交换结构也称交换组织,作用为根据转发表对分组进行处理。
转发表由路由表得出,转发仅涉及一个路由器,路由表由许多路由器协同工作的结果,基于复杂的路由算法,网络的拓扑变化,动态改变路由,构建成路由表。路由表由软件实现,转发表由硬件实现。
转发表必须包含完成转发功能的所有信息,该表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息(如下一跳的以太网网址)的映射。
输入端口处理和输出端口处理:


交换结构把分组从一个输出端口转移到某个合适的输出端口。实现这种交换有多种方法:

名词解释:
理想的路由算法:1正确和完整;2计算上简单;3适应通信量和网络拓扑的变化;4稳定;5公平;6最佳(合理);
静态和动态路由选择策略:通过能否根据网络通信量和拓扑自适应调整划分。前者也叫非自适应路由选择,后者叫自适应路由选择。
域间/域内路由选择:自治系统之间的路由选择,自治系统内部的路由选择;
区域边界路由器,主干路由器,自治系统边界路由器:通过名字理解,不解释了。
4.6 IPv6
IP是互联网的核心协议,IPv4再2011年已经用尽。结局IP地址耗尽的根本措施为采用更大地址空间的新版本IPv6.目前为止IPv6还只是草案标准阶段。
IPv6的变化;

IPv6的首部:


IPv6共有128位地址,采用冒号十六进制记法,每个16位的值用十六进制表示。
IPv6数据包到目的地址可以是以下三种基本类型地址之一:单播、多播、任播。
IPv6的地址分类:

IPv到IPv6的过渡:双协议栈、隧道技术。
双协议栈:IPv6数据报转到IPv4网络时,把首部换成4的首部。之后再恢复为6.某些字段无法恢复。

隧道技术:IPv6数据包要进入IPv4网络时,把6的数据报封装成4的数据报的数据部分。

4.7 IP多播
IP多播:一个源点发送到许多终点,即一对多通信。如实时信息的交付(如新闻、股市行情)、软件更新,交互式会议,多媒体通信。
能够运行多播协议的路由器为多播路由器。
单播与多播的对比:

IP多播需要两种协议:网际组管理协议IGP、多播路由选择协议
4.8 虚拟专用网VPN和网络地址转换NAT
互联网不安全,企业内部计算机内部连网,无连接互联网需求,分配本地地址,无需申请全球地址。
RFC1918指定了一些专用地址,只能用于内部通信,不用于互联网主机通信。互联网中的所有路由器对目的地址为专用地址的数据报一律不转发。
三个专用地址块:
(1) 10.0.0.0.到10.255.255.255
(2)172.16.0.0到172.31.255.255
(3)192.168.0.0到192.168.255.255
分别相当于1个A类,16个B类,256个C类
VPN通过公用互联网传送的数据必须加密。
VPN的虚拟指的是好像专用网,其实不是,并没有使用通信专线,效果上和专网一样。如机构需构建自己的VPN,需要购买专门的硬件和软件。
IP隧道,专网A的计算机与专网B的计算机通信,需要通过专网A的指定路由R1和专网B的指定路由R2,R1与R2之间像是一条直通的点对点链路,被抽象的认为“隧道”。R1,R2会对内部数据报进行加密和解密,以及重新添加数据报首部和解析首部。
外地出差的员工,通过个人电脑中的VPN软件远程接入公司VPN。
网络地址转换NAT
专用网内部的主机在分配到专用IP地址后访问互联网,需转换成全球IP。
在专用网连接互联网的路由器上装NAT软件,可进行上述转换,这种路由器叫NAT路由器。
NAT地址转换表:

网络地址与端口转换NAPT:为更有效的利用NAT路由器上的全球IP地址,在原来的基础上添加运输层的端口号;

缺点:NAPT属于网络层,需要访问和转换运输层的端口号,没有严格按照层次关系。
名词解释:
本地互联网/专用互联网/专用网:采用专用IP地址的互联网络。ip专用地址也叫可重用地址;
虚拟专用网VPN:利用公用互联网作为本机构各专网的通信载体,这样的专用网即为虚拟专用网;
内联网、外联网:专网内部网络;有外部机构接入的内网。
相关文章:
计算机网络-第4章 网络层(2)
主要内容:网络层提供的两种服务:虚电路和数据报(前者不用)、ip协议、网际控制报文协议ICMP、路由选择协议(内部网关和外部网关)、IPv6,IP多播,虚拟专用网、网络地址转换NAT,多协议标…...
重学SpringBoot3-WebMvcAutoConfiguration类
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-WebMvcAutoConfiguration类 是什么什么用生效条件作用 自定义配置的三种方式自定义配置举例1. 自定义 DispatcherServlet 配置2. 静态资源配置3. 自定义…...
探索数据结构:深入了解顺序表的奥秘
✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元…...
苍穹外卖学习-----2024/03/010---redis,店铺营业状态设置
1.Redis入门 2.在Java中操作Redis 3.店铺营业状态设置 BUG!!! 今天在启动项目时,用到了Redis缓存数据库,但是却出现了报错信息: ERR Client sent AUTH, but no password is set。Caused by: io.lettuce.core.RedisCommandExecutionException…...
RUST 每日一省:发布到crates.io
github是开源代码分享的地方,rust的开源项目除了github,我们还可以将其发布到 crates.io 上,然后其它用户就可以使用cargo进行安装使用了。其实步骤很简单,只有三条命令了,我们一次来看一下。 1、cargo package 首先&a…...
String类及其常用方法
文章目录 1.String类的特性与使用1.1 String类的特性1.2 String对象的创建方式1.3 String 的使用(不同的拼接操作) 2.String常用方法2.1 String的常用方法一2.2 String常用方法二2.3 String常用方法三 1.String类的特性与使用 1.1 String类的特性 Stri…...
1094. 拼车
说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不…...
Docker进阶:深入了解容器数据卷
Docker进阶:深入了解容器数据卷 一、前言二、容器数据卷的作用三、容器数据卷的使用方法四、实战--使用docker部署前端项目(数据卷挂载)4.1 重要:准备工作,先在本地创建挂载目录4.2 启动一个临时的nginx容器࿰…...
升级版本彻底解决bootstrap-table-fixed-columns固定列后行对不齐问题
升级到bootstrap-table和bootstrap-table-fixed-columns版本都升级到v1.22.3版本以上,即可解决该问题 bootstrap-table:bootstrap-table/dist/bootstrap-table.min.css at develop wenzhixin/bootstrap-table GitHub bootstrap-table-fixed-columns&…...
打破边界:深入探索STUN在实现无缝NAT穿越和WebRTC通信中的核心作用
引言 STUN是一个网络协议,设计用于帮助在网络地址转换(NAT)后面的设备发现其公网地址和端口号。通过允许这些设备发现自己从外部看到的地址,STUN使得它们能够在NAT或防火墙背后建立端到端的通信,这对于VoIP、视频会议…...
浅谈 前端的动态绑定属性
目录 前言1. 基本知识2. Demo 前言 作为Java开发者,从开发转到全栈,前端好些细节都需要科普,这不就来个动态绑定属性 起因是这个: <uni-tr> <uni-td align"center" :rowspan"checkTypesCount 1"…...
Sklearn支持向量机
支持向量机(Support Vector Machine, SVM)是一种常用的分类算法,它可以用于解决二分类和多分类问题。在Python中,你可以使用Sklearn库来实现SVM。下面是一个简单的例子,展示了如何使用Sklearn进行SVM分类。 # 导入必要…...
【Lazy ORM】 小工具 acw 本地客户端 你负责点击页面,他负责输出代码
介绍 wu-smart-acw-client 简称acw-client,是一个基于Lazy ORM定制的客户端代码生成小工具 Lazy ORM 小工具 acw 本地客户端 你负责点击页面,他负责输出代码安装 <dependency><groupId>top.wu2020</groupId><artifactId>wu-sma…...
《详解:鸿蒙NEXT开发核心技术》
我们现在都知道鸿蒙作为一个国产的全栈自研系统,经过国家主推后。已经引起人们很大的关注,其中作为开发者来说;许多一线大厂已经与其华为鸿蒙展开原生应用的合作了,目前了解到已经有200家。而之后出现了很多的高薪鸿蒙开发岗位&am…...
快速排序 刷题笔记
思路 分治双指针 在每个区间选定一个基准目标 两个指针从数组的两边向中间推进 使用 while循环判断 do {i;}while(q[i]<x); do{j--;}while(q[j]>x); 每次这样做完就会找到q[i]>x,,,,q[j]小于x 此时我们交换 q[i] ,q[j]于是小于x的数分到了小于x的一侧 大…...
DAY by DAY 史上最全的Linux常用命令汇总----man
man是按照手册的章节号的顺序进行搜索的。 man设置了如下的功能键: 功能键 功能 空格键 显示手册页的下一屏 Enter键 一次滚动手册页的一行 b 回滚一屏 f 前滚一屏 q 退出man命令 h 列出所有功能键 /word 搜索word字符串 注意:…...
十六、接口隔离原则、反射、依赖注入
接口隔离原则、反射、特性、依赖注入 接口隔离原则 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 五种原则当中的i 上一章中的接口,即契约。 契约就是在说两件事,甲方说自己不会多要,乙方会在…...
Docker 进阶
1、容器数据卷 什么是容器数据卷? 就是当容器内存在了mysql,在里面书写了数据,如果容器删除了,那么数据也就没有了,通过容器数据卷的技术,可以让容器内的数据持久化到Linux服务器上 操作 #docker run -…...
科研学习|论文解读——一种修正评分偏差并精细聚类中心的协同过滤推荐算法
知网链接 一种修正评分偏差并精细聚类中心的协同过滤推荐算法 - 中国知网 (cnki.net) 摘要 协同过滤作为国内外学者普遍关注的推荐算法之一,受评分失真和数据稀疏等问题影响,算法推荐效果不尽如人意。为解决上述问题,本文提出了一种改进的聚类…...
云计算项目十一:构建完整的日志分析平台
检查k8s集群环境,master主机操作,确定是ready 启动harbor [rootharbor ~]# cd /usr/local/harbor [rootharbor harbor]# /usr/local/bin/docker-compose up -d 检查head插件是否启动,如果没有,需要启动 [rootes-0001 ~]# system…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
