数据通信——网络层(路由协议)

文章介绍了动态路由协议的重要性和工作原理,包括内部网关协议(IGP)如RIP,EIGRP,OSPF,IS-IS和外部网关协议(EGP)如BGP。动态路由能自动学习和适应网络变化,减少管理员配置工作。OSPF作为一种流行的协议,但作者认为IS-IS更为优秀。文章还讨论了距离矢量和链路状态协议的区别,以及路由选择中的最长匹配原则和出接口、下一跳的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

    之前介绍了很多的网络层的知识,接下来要讲的可是重头戏了!我们都清楚寄快递,我将物品包裹好,在快递小哥的帮助下写好信息。重点就是在于快递小哥怎么运送呢?快递小哥如何最快寻找到距离最近的中转站;还要在最短时间内寻找收件人和寄存点?小哥的体力也有限,在有限的时间里面能送出多少快递呢?

    网络也是一样,数据如何被准确发送到目标地点,如何最短时间内被发送到。。。。这些就是路由协议的作用了!

    之前不是提到过路由器吗?路由器有三种类型——直连路由,静态路由和动态路由。前两者没什么好探讨的,重点就是路由协议。

动态路由分类 

    在路由中,直连路由最为简单!静态路由通过管理员的配置也可以轻松完成,但是面对复杂的网络,管理员需要一个个的配对会极大的消耗时间。路由在联通时,一旦发生故障或者宕机,管理人员不仅还要重新配置路由器的路由条目,而且耽误了通信。多次的进行路由条目分配也会导致路由器的带宽和物理寿命极大的消耗(路由器的运作是要依靠CPU的)。因此动态路由协议是非常重要的。

动态路由可以自动发现并学习路由的位置,而且可以感知网络中的变化

 上图的网络还算是简单的,你一个个配多麻烦

动态路由工作区域分类

    IGP内部网关协议EGP外部网关协议。IGP可以在AS自治系统中运行,不建议在园区运行;而EGP可以在外运作。属于IGP的协议有:RIP,EIGRP,OSPF,IS-IS等;属于EGP的有BGP等。

(AS:代表有着相同设备和组织的集合,里面细分很多设备,但外界把他们看作一套整体的AS系统)

    白话解释一下什么是自治系统。你可以理解为,如果是省内的或者临近省的快递,无论是快递站点还是人员的调度都非常方便。因此你可以看成一个自治系统,快递的收发会异常流畅。但是如果你的快递很偏远(比如要送到新疆内蒙等偏远地区甚至是国外)那么快递的发送可不简单了。邮费问题,快递送达的时间问题,人员的调度问题。。。。因此你可以看成自治系统外的区域。

 大草原上送快递,能跟内地的运作流程一致吗?

动态路由协议算法分类

    DV 距离矢量协议——基于传文的形式(RIP,EIGRP,BGP)。DV代表我的相邻路由器告诉我,我的报文该去向哪条路经。

    其中距离矢量协议还分为两类:Classful 有类协议:更新的路由仅有网络号和度量值。 Classes 无类协议:更新的路由有网络号,掩码,下一跳,度量值等。

    LS 链路状态协议——基于拓扑的形式(OSPF,IS-IS)。LS代表我了解一个范围内的路径,可以自己进行路径的搜寻,而且可以辨别哪条路径更合适。

    也用白话解释一下这两个东西吧!快递员送快递,可是他发现自己迷路了,这时他有两种选择。第一个就是他可以问其他的快递员或者路人我该怎么走(距离矢量协议);还有一种就是我打开地图,自己走更合适的路(链路状态协议)。区别就在这里了!前者需要依靠他人的帮助才能走下去,失去了帮助我就无所适从了;后者需要地图做指引,如果走到地图没有显示的地方,他就懵了!

 

动态路由选择协议

    上面提到了很多动态路由协议,例如:RIP,EIGRP,OSPF,IS-IS,BGP等等。我们一般根据业务来进行不同的选择。我们也可以通过不同的优先级来配置协议的优先级。

在众多的动态路由选择协议中,OSPF比较流行。(不过OSPF远不如ISIS)

此时,我们需要定义一些东西!

模糊匹配

    路由器再转发的时候要确定目的网络,他要基于主机想要访问的目的网络去寻找路由。这里有个算法可以算出目的网络的所属网络号目的主机的IP地址与子网掩码进行与运算就可以知道目的主机所属网络号了路由器会用路由表中所有的条目一条条匹配数据包的所发送给目的主机的IP地址。经过运算,只要匹配上了路由表中的条目,立刻向其转发,并停止后续的匹配。但是没有找到的话,说明该信息不能通过该路由器去往该目的网络,因此会进行丢包。

    注:当有多条路径可以前往目的主机时,优先采用长度最长(最长指的是子网掩码大的),最精准的路由来转发——最长匹配原则

出接口和下一跳

    不过我之前提到过路由表是基于CPU统一调度,一次次查表的时候会出现很多的问题。为了避免问题,我们尽量需要安排出接口到下一个路由器的路径。因此就是下一跳的重要性。

一般而言,出接口分为两种:

    MA(多路访问)一个路由器连接多个节点,需要设置下一跳的路径

    P2P(点到点)一个路由器对应一个节点,下一跳固定

    因此,数据会根据下一跳分配到对应的路由器上,而如何确定下一跳是谁,那就看管理者设置的是谁或者路由器再动态路由选择协议的辅助下选择的路径。

    ECMP(等价负载均衡)大部分路由器支持这个协议。当我认为去往两个路径都一样好的时候,我会都加入表中。但在发送报文的时候,会均分给两条路径来做一个附带均衡转发。

    例如:我去往网络X中主机a的数据走路径1,去往网络X的主机B走路径2,但他们都可以到达目的地,只不过路径不同 。

    注:有些特殊情况不支持负载均衡!!!

 

 后续

    对这些有所了解后,马上就要开启网络协议了,这是ICT路由交换方向的大重点,我尽可能的用通俗的语言讲一讲,不过难免可能有错误的地方,希望大家多指点

### Spring Boot 整合 MyBatis不到数据库的原因分析 在 Spring Boot 中整合 MyBatis 并配置数据库连接时,如果遇到无法到数据库的情况,可能是由于以下几个原因引起的: #### 1. **数据源配置错误** 如果 `application.properties` 或 `application.yml` 文件中的数据源配置项填写错误,则可能导致程序无法正确连接到目标数据库。常见的错误包括但不限于: - 数据库 URL 错误(例如拼写错误或端口号不对)[^2]。 - 用户名或密码错误。 正确的数据源配置应类似于以下形式: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` #### 2. **依赖版本冲突** 如果项目中引入的 MyBatisSpring Boot 的版本不兼容,可能会导致初始化失败或者无法正常加载数据库资源。建议检查项目的 `pom.xml` 文件,确保使用的依赖版本匹配。例如: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.0</version> </dependency> ``` #### 3. **未启用 Mapper 接口扫描** 如果没有正确配置 `@MapperScan` 注解来指定 Mapper 接口所在的包路径,MyBatis 将无法识别这些接口,从而引发异常。可以通过以下方式解决此问题[^3]: ```java @SpringBootApplication @MapperScan("com.example.mapper") // 替换为实际的 mapper 路径 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 4. **数据库服务不可用** 当本地开发环境下的 MySQL 或其他数据库服务未启动时,也会报出类似的 “不到数据库” 错误。可以尝试通过命令行或其他工具手动测试数据库连通性,确认其状态是否正常运行。 #### 5. **IDEA 缺乏 SQL 提示支持** 若开发者希望获得更友好的编码体验,在 IDEA 上完成相应设置后能够享受智能补全功能带来的便利。具体做法可参照文档说明调整插件选项以便增强用户体验效果[^4]。 --- ### 解决方案总结 针对上述可能存在的各类状况逐一排查即可定位根本所在;同时注意保持各组件间良好的协作关系以减少不必要的麻烦发生几率。 ```java // 示例代码片段展示如何定义一个简单的 DAO 层类 public interface UserMapper extends BaseMapper<UserEntity> {} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咕噜跳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值