当前位置: 首页 > 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.lryc.cn/news/607206.html

相关文章:

  • [buuctf-misc]百里挑一
  • 雷达微多普勒特征代表运动中“事物”的运动部件。
  • SD-WAN在煤矿机械设备工厂智能化转型中的应用与网络架构优化
  • Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
  • forceStop流程会把对应进程的pendingIntent给cancel掉
  • C++ --- stack和queue的使用以及简单实现
  • 【AI问答】PromQL中interval和rate_interval的区别以及Grafana面板的配置建议
  • UE5 动态扫描波
  • python入门第一天---变量+数据类型及注释的使用
  • SpringAI智能客服Function Calling兼容性问题解决方案
  • LRU缓存淘汰算法的详细介绍与具体实现
  • 简单打包应用
  • pve 删除集群
  • AI+向量化
  • 超算中尝试安装dify(失败)
  • Windows编译安装ffmpeg和sdl
  • 电子电气架构 --- 软件项目变更管理
  • Squid服务配置代理
  • 荣耀平板儿童限制
  • 温度影响的材料合成与生长-属于动力学控制还是热力学控制
  • 美团进军折扣超市,外卖未平、超市大战再起?
  • 什么是三防平板电脑?三防平板有什么作用?
  • Qt-----初识
  • Cesium性能优化
  • android MVC/MVP/MVVM/MVI架构发展历程和编写范式
  • W3D引擎游戏开发----从入门到精通【10】
  • 蚂蚁开源团队发布的2025大模型开源开发生态发展情况速览
  • androidstudio调试apt
  • Ubuntu 系统下使用 lsusb 命令识别 USB 设备及端口类型详解
  • LS-DYNA 分析任务耗时长,企业如何科学提升许可证使用效率?