当前位置: 首页 > news >正文

网络协议之路由是怎么回事?

写在前面

要想去外面的世界看看, 就离不了路由器,而路由器工作的原理就是路由,那么具体是怎么路由的呢?本文就一起来看下这部分内容。

1:路由的配置

配置一条路由无非就是在配置以下三个信息:

1:包要去哪里,即目的IP
2:从路由器的哪个网口出去
3:下一跳的IP地址是啥?

知道了以上信息,就能以在局域网环境中传输包方式来完成一跳了,还是ARP获取MAC,修改目标MAC等操作。
那么如何配置呢,最简单的方式就是直接配置,如下:

 ip route add 10.176.48.0/20 via 10.173.32.1 dev eth0

意思就是如果是包要去10.176.48.0/20,就要从eth0这个网口出去,下一跳的地址是10.173.32.1,就像这样:
在这里插入图片描述
当然这样子按照目的IP来配置路由器是完全可行的,但是一个个配置工作量还是蛮大的,所以也支持其他的配置方式,比如策略配置方式,即通过源IP,TOS等方式等方式来配置,如下根据源IP来进行配置:

ip rule add from 192.168.1.0/24 table 10 如果是来源IP是192.168.1.0/24则使用路由表10
ip rule add from 192.168.2.0/24 table 20如果是来源IP是192.168.2.0/24则使用路由表20

也可以配置多个出口,来实现负载均衡:

ip route add default scope global nexthop via 100.100.100.1 weight 1 nexthop via 200.200.200.1 weight 2

下一跳有俩,分别是100.100.100.1,权重1,200.200.200.1,权重2。
接着我们来看一个出口可以二选一的实际场景。
我家在有孩子之前只买了一家运营商的网络,因为我家对网络的要求不高,我跟我老婆基本上都不看视频什么的对网速要求比较高的网站,最多也就是看看新闻,查查工作中遇到的问题啥的,但是呢,后来有了孩子,孩子要上网课,所以我们又买了另一家运营商的网络,宽带呢更高,但是家里的路由器支持一个出网网口,即只能接一个外网,为此,我们还专门买了一个可以支持两个外网网口的更高级的路由器,最终,我们家的网络就像这样子:
在这里插入图片描述
其中eth2和eth3就是两个外网网口。
此时我们家的路由配置如下:

$ ip route list table main 
60.190.27.189/30 dev eth3  proto kernel  scope link  src 60.190.27.190
183.134.188.1 dev eth2  proto kernel  scope link  src 183.134.189.34
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.1
127.0.0.0/8 dev lo  scope link
default via 183.134.188.1 dev eth2

意思是:

如果是要去60.190.27.189/30,即运营商2则从eth3口出
如果是要去183.134.188.1,即运营商1则从eth2口出
如果是去内网192.168.1.0/24,则从eth0出,此时只是在局域网内,不到外网
如果是去127则走lo,回环网口,此时是自己跟自己玩
默认走eth2

因为我们需要孩子屋使用高速网络,我们屋使用低速网络,为此还要进行如下的配置:

  • 我们屋走低速网络
添加新的路由表:# echo 200 slow >> /etc/iproute2/rt_tables
配置slow路由表:# ip route add default via 60.190.27.189 dev eth3 table slow# ip route flush cache 
配置来自我们的IP走slow路由表:# ip rule add from 192.168.1.102 table slow

这样我们屋走路由表slow,而路由表slow走eth3网口,下一跳的IP的60.190.27.189。

  • 孩子屋走高速网络
添加新的路由表:# echo 200 fast >> /etc/iproute2/rt_tables
配置slow路由表:# ip route add default via 183.134.188.1 dev eth2 table fast# ip route flush cache 
配置来自我们的IP走slow路由表:# ip rule add from 192.168.1.101 table fast

这样孩子屋走路由表fast,而路由表fast走eth2网口,下一跳的IP是183.134.188.1。
当然简单的网络环境,比如我家里的网络,手动挡捣鼓捣鼓还是问题不大的,但是当网络环境比较复杂时,手动的方式就显得力不从心了,此时就需要自动的方式来进行了。

2:动态路由配置

其实我们抽象的来看所有路由器,组成的其实就是一个图,而路由器无非就是找到一条最短路径而已,所以动态路由配置其实就是转化为了图的最短路径问题了,而解决最短路径问题,主要是Bellman-Ford 算法和Dijkstra 算法。具体在动态路由配置算法有以下两种。

  • 距离矢量路由算法
    该算法基于bellman-ford,适用于小型网络。
  • 链路状态路由算法
    该算法基于dijkstra算法。适用于大型网络。
    但是只有算法还是工作不起来的,还需要具体协议的支持,毕竟先干嘛后干嘛还是要有一个规范的吗,所以就有了以下的具体协议:
  • 基于链路状态路由算法的 OSPF
    OSPF(Open Shortest Path First,开放式最短路径优先)就是这样一个基于链路状态路由协议,广泛应用在数据中心中的协议。由于主要用在数据中心内部,用于路由决策,因而称为内部网关协议(Interior Gateway Protocol,简称 IGP)。
    即,这是一个内网环境的路由协议。
  • 基于距离矢量路由算法的 BGP
    这是一个外网环境的路由协议。我们称为外网路由协议(Border Gateway Protocol,简称 BGP)。
    网络世界一个独立的内网环境,比如一个公司网络,我们称为一个AS(Autonomous System),自治系统分为以下几类:
Stub AS:对外只有一个连接。这类 AS 不会传输其他 AS 的包。例如,个人或者小公司的网络。
Multihomed AS:可能有多个连接连到其他的 AS,但是大多拒绝帮其他的 AS 传输包。例如一些大公司的网络。
Transit AS:有多个连接连到其他的 AS,并且可以帮助其他的 AS 传输包。例如主干网。 

每个AS之间都有边界路由器。BGP分为eBGP和iBGP,其中AS之间使用eBGP通信,AS内部使用iBGP,如下图:
在这里插入图片描述

写在后面

参考文章列表

网络协议之不能老在家里晃悠,也得出去看看啊! 。

http://www.dtcms.com/a/310343.html

相关文章:

  • 电商项目_性能优化_数据同步
  • 18.若依框架中的xss过滤器
  • Java 24 新特性解析与代码示例
  • 牛客——取数游戏2
  • UE5 动态扫描波
  • 【C#学习Day15笔记】拆箱装箱、 Equals与== 、文件读取IO
  • iPhone查看App日志和系统崩溃日志的完整实用指南
  • 深入理解C语言指针:从回调函数到数组指针笔试题全解析(下)
  • 遥控器信号捕获
  • [CISCN 2022 初赛]online_crt
  • 基于react的YAPI实战指南
  • JavaWeb--Student2025项目:增删改查
  • 光纤网络FTTx(光接入网的应用类型)
  • 标准项目-----网页五子棋(4)-----游戏大厅+匹配+房间代码
  • Qt Quick 性能优化方法
  • WPF TreeView自带自定义滚动条
  • 云计算k8s集群部署配置问题总结
  • 铁皮矫平机冷知识·第三弹
  • 网站QPS多少才算高并发
  • A∗算法(A-star algorithm)一种在路径规划和图搜索中广泛使用的启发式搜索算法
  • 利用CompletableFuture优化查询效率
  • 1.2.4 砌体结构设计构造要求
  • Dify知识库分段策略详解:通用分段 vs 父子分段
  • 开源框架推荐:API数据批处理与爬虫集成
  • 前端开发一百问(动态更新)
  • 【0基础PS】PS工具详解--仿制图章工具
  • RustFS:高性能文件存储与部署解决方案(MinIO替代方案)
  • MySQL锁的分类 MVCC和S/X锁的互补关系
  • QT6.5.3 vs2022 pcl1.14.1窗体界面打开pcd点云文件
  • PAT 1022 Digital Library