路由器学习总结

2023-10-27

路由器在网络中的作用至关重要,就好像我们坐公交车到某个地方,公交车肯定不是一站直达的,中间要经过许多个公交站点,网络中数据的传输也是一样,源地址与目标地址之间并不是直接到达的,中间也要经过一系列的路由器转发,所以路由器的作用,就是用来转发数据包,使其到达正确的位置。
在这里插入图片描述
比如我跟踪一个数据包的传输路径,tracert+IP/域名的命令可以跟踪数据包转发的路径,发现一个数据包的转发要经过很多个站点,图片中第四列显示的就是经过的一系列站点的IP,这些站点实际上就是一个个路由器。

工作原理

在说工作原理 之前,先简单说一下路由表。
路由器转发数据包是根据路由器内部的路由表进行转发,当数据包到达路由器时,查询路由表,获取下一站的地址,然后进行转发,与之对应的每个公交站点都有一个站牌,告诉你下一站是哪里。
以华为路由器为例,说一下路由表的结构,其他型号的路由器大致也差不多。
华为路由表主要包含以下几个字段

  • destination/mask:用于描述目标网段,当前往目标网段有多个路径时,选择掩码最长的一条路径转发。
  • Protocol:表示路由运行的协议,路由表根据路由协议生成,包含三类路由
    直连路由:有链路层协议发现,开销小,表示与该路由器直连的路由,只能发现本接口所属网段的路由
    静态路由:由人工手动配置,IP router 129.1.0.0 16 10.0.0.2, 129.1.0.0表示目标网段,16表示掩码长度,10.0.0.2表示去往目标网段的下一个路由IP地址
    动态路由:根据各种路由协议算法发现,无需人工维护,但是开销较大,这也是生成路由表的主要方式
  • Preference:表示优先级,数值越小,优先级越高
  • Metric(Cost):开销,到达目标网络的代价,值越小,越优先
  • Interface:本端接口,表示数据包从本端那个接口转发出去
  • Nexthop:下一跳地址,互联网对端路由器的端口

当数据包到达路由器时,会进行下面几个操作

  • 读取目标地址的网络部分
  • 找到路由表中对应的地址的路由条目,将包转发到相应的路由器接口
  • 如果没有找到对应的路由条目,则将包转发到路由器对应的默认路由的接口,如果没有配置默认路由,将包丢弃,返回目标不可达信息
  • 到达下一个路由器时,在重复上述过程,直到到达目标地址对应的网段。

整个包传输过程,目标地址,源地址和端口号不会改变,但是MAC地址会发生变化,每经过一个路由器转发,MAC地址会被重新封装一次,封装为下一跳的MAC地址。

一般来说,静态路由的优先级最高,如果配置了静态路由,会优先使用静态路由转发。

由于路由转发的数据量非常大,所以不可避免的会出现路由环回(数据包在一个闭环的环路中不停的转发,始终到不了目标地址)的情况,避免这种情况的方法就是在数据包中封装一个TTL字段,该字段的意义就是最大转发跳数,一旦超过这个限制,便会将该数据包丢弃。

路由协议

之前说到有三类路由,直连路由,静态路由和动态路由,动态路由通过路由协议算法自动生成路由表,无需人工维护,那么路由协议又是什么呢?
路由协议就是满足路由器获取路由表需要而定义的一系列算法,目前有两类路由协议,内部网关协议(IGP)和外部网关协议(EGP)

内部网关协议包含多种不同的协议,常用的有:RIP-2,EIGRP,IS-IS,OSPF,前两种采用距离矢量算法,生成路由表,后两种采用链路状态算法生成路由表

外部网关协议只有一种,即BGP协议,采用距离矢量算法

再讲工作原理之前,先简单说一下自治域(AS)的概念
全球的互联网被分为多个自治域,运营商和公司都可以申请自治域号码,但是在中国自治域很少,只有几大运营商拥有自己的自治域,美国的很多公司都申请了自治域,这也在一定程度上说明我们国家的互联网发展使比较弱势的。
内部网关协议针对的是一个自治域内部的数据转发,外部网关协议则是针对不同自治域直接的数据转发。下面选取三个有代表性的路由协议,简单说明一下路由协议的工作原理

RIP-2

RIP-2协议采用距离矢量算法,采取最小跳数采取最佳转发路径,针对业务量较小的额网络是没有问题的,但是针对业务量较大的运营商网络,这种算法就显得有些捉襟见肘了。
每隔30秒将距离向量信息传送到相邻的路由器,路由表中只存储到目的地址最佳路径的下一跳地址,该路由协议允许的最大跳数为15跳,也就是说15次转发后还没有到达目的地址,那就将数据包丢弃。
该算法的优点是简单,但缺点也很明显,就是每个路由器只关心自己邻居的状态,无法获取的网络中其他路由器的状态,当关键位置的路由信息改变之后,就无法实时更新自身的路由表,现在使用的已经不多了。

IS-IS

IS-IS和OSPF是目前使用最多的内部网关协议,他们的工作原理也大致相同。
首先明确几个基本概念:

  • 最短路径算法(SPF):把每一台路由器作为一个根,计算到其他目的路由的距离,每一台路由根据统一的数据库计算AS拓扑结构图,即最短路径树,最短路径树的树干长度,即为路由器至每个路由的距离,即路由成本。
  • 链路状态协议:基于最短路径优先算法,该协议提供了整网的拓扑视图,根据拓扑图计算到达每个目标的最优路径;当网络变化是触发更新,发送周期性更新链路状态通告。
  • LSP:链路状态协议数据单元,包含有关邻居和通道成本的信息,接收路由器用LSA来维护其路由选择表
  • Hello报文:用于建立邻居关系,每10s发送一次,无效间隔时间40s,40s内没有接收到邻居的Hello报文,路由器就认为那个邻居不存在
  • LSR:链路状态请求信息,告知邻接路由器提供LSA信息
  • LSU:链路状态更新信息,一般用来响应LSR信息
  • LSAck:用来确认已收到LSU信息
  • LoopBack:类似于物理接口的逻辑接口,用于线路环回测试,或对路由器远程登录,一般将该地址作为路由器的RouteID
  • NET地址:包含三个部分
    Area ID:标识路由器所在区域,1–13个字节
    SYSTEM ID:AS里唯一标识一个路由器,固定6字节
    SEL:标识IS-IS应用的网络,固定1字节,设置为0是用于IP网络
    一个中间系统必须有一个NET,所有NET的SYSTEM ID必须相同,不同中间系统NET地址不能相同。

下面来看一下工作原理:

  • 建立邻接关系,相邻路由器互发Hello报文,验证相关参数,即可建立邻接关系
  • 链路状态信息泛洪:链路状态信息在整个网络中传播。
    发生链路状态变化的节点产生一条新的LSP信息,并通过组播地址发送给自己的邻居;
    邻居收到新的LSP,将LSP信息进行序列号相关的比较,将新的LSP安装到自己的LSP数据库中标记为flooding,并通过PSNP(部分时序协议数据单元)进行确认;
    邻居将新的LSP发送给自己所有邻居,完成扩散。由于单进程内路由器数量不多,通常完成一次泛洪时间很短;
  • 数据库中有缺少或需要更新的消息,会通过LSR,LSU,LSAck报文互相索取相应的资料
  • 完成泛洪后,每个路由器都能知道网络中其他路由器的链路状态信息,然后根据链路状态协议构建最短路径树,计算最短路径

BGP

BGP是唯一一个外部网关协议,首先先了解几个基本概念:

  • AS:自治域,AS之间协商部署BGP协议
  • BGP Spreaker和Peer:发送BGP消息的路由器称为BGP Spreaker,互相交换消息的BGP Spreaker称为对等体(Peer)
  • BGP连接类型:有两种方式,IBGP和EBGP,IBGP不一定要求物理连接,但要求逻辑连接,EBGP要求物理连接
  • BGP TTL:EBGP=1,IBGP=255
  • BGP AS_PATH:发送给BGP邻居时添加上自己的AS号码,防止出现路由环路,所以这个字段包含了所有经过的AS集合,如果有多条路径,会优先选择AS_PATH最短的路径。
  • RR路由反射器:一个AS内部有n台路由器,那么正常来说就要建立n(n-1)/2个连接,这对CPU资源消耗非常大,所以引进了RR路由反射器,他作为一个特殊的路由器,与每一个客户机之间建立IBGP连接,作用就是在其他路由器之间反射路由信息,这样其他路由器即使不建立连接,也可以通过RR路由反射器学习别的路由器的路由信息。
  • open报文:用于建立连接,类似于OSPF的HELLO报文
  • KeepAlive报文:用于保持连接,默认60s发送一次,hold time时间为180s,180s没有收到邻居的KeepAlive报文,则断开连接
  • Update报文:用于携带路由更新信息
  • Notification报文:在发现错误,或关闭与对等体连接时使用

工作原理:

  • 首先建立BGP连接,这一步需要人工配置对等体,建立在TCP协议之上
  • 注入路由,初始状态的路由表为空,只能人工手动导入,两种方式可以导入路由:
    通过命令将IGP路由导入BGP路由,Origin属性为IGP路由属性
    将路由重分布进BGP路由表,Origin属性为Incomplete
  • 路由通告,将获取到的BGP路由信息告知别的对等体,只把自己使用的路由通告给别的对等体,从EBGP获取的路由会向所有BGP对等体通告,从IBGP获取的路由依据IGP与BGP同步情况,决定是否向所有BGP对等体通告。
  • 路由更新,
    初始化时发送所有的路由给BGP对等体。
    本地保存发送的信息。
    当本地收到新的路由信息时,与保存的信息进行对比,未发送过或发送的信息与本地保存的信息不一致,则发送该路由信息,并更新本地保存的路由信息。
    发现一条路由失效信息,则向对等体发送一个路由撤销信息。
    只发送路由增量信息,保证最小通信量。
  • 避免路由环路,AS之间通过携带AS_PATH标记所走过的AS,避免产生环路;AS内部,BGP在AS内部学到的路由信息不再通告给AS内部的BGP邻居,避免产生环路。

以上就是路由器学习的一些总结,构建网络结构,离不开一台台路由器之间的相互配合,选择一个合适的路由协议算法,是保证网络安全性和高效率的必要条件,互联网中每时每刻都有成千上万个数据包在传输,这些数据包不产生冲突,不产生路由环回的情况下,选择一条最优的路径,需要各个学科之间的相互配合。
尤其是数学,网络结构实际上就是一个数学上的拓扑结构,所以用研究数学的方法,来研究网络,会产生事半功倍的效果,这也是华为任正非非常强调数学的作用的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路由器学习总结 的相关文章

  • socket局域网测试是可以的,但是在腾讯云/阿里云上报错“[Errno 99] Cannot assign requested address”

    现在云服务器一般都是只有内网地址 通过公网IP访问时 由云服务器运营商映射到内部网络的 因此 如果部署socket服务时 配置server ip应该是内网IP 解决方法 服务端的ip填服务器的私网ip 客户端填公网ip
  • Windows平台下MingGW的网络socket编程模型

    Windows平台下MingGW的网络socket编程模型 1 TCP服务器 include
  • read tcp 192.168.0.106:56298->185.199.111.153:80: wsarecv: An existing connection was forcibly close

    解决 read tcp 192 168 0 106 56298 gt 185 199 111 153 80 wsarecv An existing connection was forcibly close 问题 问题描述 问题原因 解决办
  • Kali如何配置静态IP,并且实现网络访问

    1 本地网络配置 我是使用VMware workstation的桥接网络 配置IP要根据对应的网络模式下对应的网络段进行配置 才能保证Kali与别的主机正常通信 桥接网络模式 我需要先看一下宿主机的网络IP地址 WIN r输入cmd 回车
  • 为什么要接入高防IP,到底有什么作用呢

    首先我们要了解什么是高防IP DDOS高防IP是为了应对互联网的DDOS攻击而产生的一款付费增值产品 根据不同的业务接入的方法也不同 在开通这款DDOS高防IP时服务商会给到对应的高防IP作为对外IP和业务IP使用 游戏业务就需要将之前配置
  • TCP/IP、UDP协议

    TCP IP协议是Internet最基本的协议 Internet国际互联网络的基础 由网络层的IP协议和传输层的TCP协议组成 通俗而言 TCP负责发现传输的问题 一有问题就发出信号 要求重新传输 直到所有数据安全正确地传输到目的地 而IP
  • C# 远程唤醒(远程开机)

    C 远程唤醒 远程开机 近日 小白要用到远程开机的功能 网上大多介绍的是Magic Packet的工具 实际上 此Magic Packet是AMD公司开发的 请在google cn中搜索Magic Packet Technology 原理上
  • 浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO

    https blog csdn net lihao21 article details 67631516 ref myread https blog csdn net D Guco article details 71373381 一 基本
  • 网络通信TCP协议三次握手

    TCP是什么 TCP Transmission Control Protocol 传输控制协议 是一种面向连接 连接导向 的 可靠的 基于IP的传输层协议 TCP在IP报文的协议号是6 TCP是一个超级麻烦的协议 而它又是互联网的基础 也是
  • ubuntu 下实现 docker+ovs+quagga搭建网络---bgp

    注 本机上现有quagga镜像 ovs虚拟交换机 2 9 1 docker 18 09 7 实现bgp网络搭建 1 sudo ovs vsctl add br br1 增加一个ovs网桥br1 2 sudo docker images 查看
  • TCP/IP网络编程 第五章:实现基于TCP的服务端/客户端(2)

    回声客户端的完美实现 在上一章中 我们提出了实现的回声客户端存在的问题 这里我们来解决一下 先给出对应的服务端和客户端代码 while str len read clnt sock message BUF SIZE 0 write clnt
  • OSI七层模型以及各层的作用

    OSI七层模型 OSI七层模型包括 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 具体作用 物理层 主要定义物理设备标准 如网线的接口类型 各种传输介质的传输速率等 主要作用是传输bit流 主要设备 集线器 数据链路层 主要将
  • DHCP的配置(以华为eNSP为例)

    如有错误 敬请谅解 此文章仅为本人学习笔记 仅供参考 如有冒犯 请联系作者删除 基础知识介绍 络组建步骤 1 拓扑设计 2 IP地址规划 按照拓扑中划分的 络范围 规划 络位不同的IP地址 3 配置 1 配置各个节点的IP地址 2 路由 全
  • 交换机与路由器工作原理

    前言 这篇博客的主要目的是为了聊一下路由器和交换机 以及它们各自的工作原理和对应的两张表 交换机 1 简单介绍交换机 这里的交换机主要讲的是 二层交换机 它工作在OSI七层模型中的第二层 也就是数据链路层 因此就不得不说一下数据链路层的功能
  • OSI与TCP/IP协议

    OSI七层模型 OSI7层模型分别是 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 数据的封装与解封装过程 OSI模型vsTCP IP模型 TCP IP协议族的组成 每层常见的协议 应用层的协议 HTTP协议 HTTPS协议
  • 路由器简单认识

    路由器 是一个三层设备 可以解析到三层 第一层是比特流 电压 电信号 第二层是数据帧 从比特流到数据帧的过程也叫格式化 可以看到MAC地址 第三层是数据包 IP地址 网络层 交换机 网桥 二层设备 区别 1 交换机基于硬件处理 网桥基于软件
  • LWIP学习笔记(2)---IP协议

    IP首部 最高位在左边记为 bit 最低位在右边 记为31 bit 传输顺序 先0 7bit 在8 15bit 然后16 13 最后24 31bit 这种方式称为 big endian 也叫网络字节序 版本 ipv4 或 6 ipv6 首部
  • 无需公网IP!Apache服务器本地部署与内网穿透实现公网访问

    Apache服务安装配置与结合内网穿透实现公网访问 文章目录 Apache服务安装配置与结合内网穿透实现公网访问 前言 1 Apache服务安装配置 1 1 进入官网下载安装包 1 2 Apache服务配置
  • AUTOSAR从入门到精通-面向服务的中间件SOME/IP(二)

    目录 前言 几个高频面试题目 基于信号的通信和面向服务的通信特点和差异
  • IP地址定位技术成为遏制网络水军的重要突破口

    随着互联网的普及 网络水军成为一种新兴的势力 他们通过散播虚假信息 恶意评论等行为 严重影响了网络环境的健康有序 为了遏制网络水军的活动 许多技术手段和法律制裁手段被广泛应用 其中 IP地址定位技术成为了关键突破口 首先 通过识别网络水军的

随机推荐

  • 油盐微服务——声明式服务调用Feign

    文章目录 Feign快速入门 参数绑定 继承特性 Ribbon配置 Hystrix配置 对于前面的Ribbon和Hystrix的介绍 Spring Cloud Feign基于Netflix Feign实现 封装整合了以上两个工具 来简化开发
  • Apache mod_wsgi模块简介

    Apache HTTP服务器的mod wsgi扩展模块 实现了Python WSGI标准 可以支持任何兼容Python WSGI标准的Python应用 出于安全的考虑 建议使用mod wsgi 3 5及以后的版本 最新版本是2017年1月发
  • [C/C++]内存管理,对内存进行操作

    目录 一 内存结构 二 内存拷贝函数 三 栈空间与堆空间 四 变量的四种存储类型 五 函数返回值使用指针 六 常见错误总结 个人主页 北 海 CSDN新晋作者 欢迎 点赞 评论 收藏 收录专栏 C C 希望作者的文章能对你有所帮助 有不足的
  • Python写2048小游戏全部代码及所用图片

    鉴于有很多朋友要图片 把整个项目上传了 自行去取吧 资源地址 https download csdn net download qq 44651842 20009590 游戏效果 游戏用到的图片 数字图片都是90像素的正方形 游戏代码 20
  • python外星人入侵添加音效_Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践 基础课程终于看完了 现在跟着做三个小项目 第一个是外星人入侵的小游戏 一 Pygame pygame 是一组功能强大而有趣的模块 可用于管理图形 动画乃至声音 让你轻松的开发出想要的游戏 二 安装Pyga
  • sqlite的事务和锁,很透彻的讲解 【转】

    原文 sqlite的事务和锁 http 3y uu456 com bp 877d38906bec097sf46se240 1 html 事务 事务定义了一组SQL命令的边界 这组命令或者作为一个整体被全部执行 或者都不执行 事务的典型实例是
  • 概念题3

    SaaS的意思是软件服务化 Software as a Service Windows上的共享文件传输使用哪个端口137 138 139 445 我国PCM数字设备间的传输接口码型是HDB3 调制解调的目的是 MVC全名是Model Vie
  • 基于SSM的在线考试系统

    全网粉丝20W csdn特邀作者 博客专家 CSDN新星计划导师 java领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java技术领域和毕业项目实战 文末获取项目下载方式 一 项目背景介绍 在线考试借助于
  • 全网最详细,Fiddler抓包实战 - 网页浏览器https请求(超详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Qt-D指针和Q指针及使用

    阅读Qt的源代码的时候 我们经常看Q D Q Q Q DECLARE PRIVATE Q DECLARE PUBLIC这几个宏 这几个宏是干什么用的呢 其实这几个宏就是实现D指针和Q指针的宏 D指针在Qt的源码中大量使用 根本目的在于解决二
  • Cocoapods方式导入OC库和swift库

    Cocoapods 是 iOS 应用的包管理程序 它简化了第三方库的导入并且将帮你处理库之间的依赖 在这个教程中 我们将会使用 cocoa pods 导入 Alamofire swift库 和AFNetworking OC库 这两个个第三方
  • Spring Cache详解

    第一节 Spring Cache介绍 1 Spring Cache 简介 从3 1开始 Spring引入了对Cache的支持 其使用方法和原理都类似于Spring对事务管理的支持 Spring Cache是作用在方法上的 其核心思想是这样的
  • 机器学习 加利福尼亚房价预测

    学习目标 提示 导入包 例如 import pandas as pd import numpy as np from sklearn datasets import fetch california housing from sklearn
  • 【web开发】6、Django(1)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 Django是什么 二 使用步骤 1 安装Django 2 创建项目 3 创建app 4 快速上手 数据库操作 1 安装第三方模块 2 自己创建数据库 3 DJ
  • Linux问题—主机与虚拟机相互通信及虚拟机访问外网

    相互通信指的是 主机 host 和虚拟主机 Vhost 能相互访问 宿主机及同一个局域网中的其他计算机能够访问到虚拟机 虚拟机也能访问到网络中的其它机器 当然包括宿主机 在我们接触的应用中 最常见的应该是互传文件了 比如 校内ftp 几秒钟
  • 利用Python查询IP地址

    听说最近抖音快手都可以看IP地址了 肯定还有很多同学不知道怎么查询吧 一文讲清楚 从http freeapi ipip net和http ip api com json 这两个网站提供的免费调用接口查询IP地址归属地 接口调用方法是在url
  • 实战干货!用 Python 爬取股票实时数据!

    今天我们一起来学习一个 Python 爬虫实战案例 我们的目标网站就是东方财富网 废话不多说 开搞 网站分析 东方财富网地址如下 http quote eastmoney com center gridlist html hs a boar
  • openGL之API学习(三十八)投影变换公式

    原文在https blog csdn net gggg ggg article details 45969499 这里只记录几个重要结论 1 正交投影变换 1 1一般形式 1 2常用形式 2 透视投影 2 1一般形式 2 2常用形式 经过投
  • Git修改代码并提交上传

    1 创建本地git 仓库 在本地磁盘创建一个文件夹 用来存放需要push到coding上的文件 打开此文件夹 单击右键 git bash here 输入 git init 此步操作完成后 会在此文件夹下生成一个隐藏的 git后缀文件 2 添
  • 路由器学习总结

    路由器在网络中的作用至关重要 就好像我们坐公交车到某个地方 公交车肯定不是一站直达的 中间要经过许多个公交站点 网络中数据的传输也是一样 源地址与目标地址之间并不是直接到达的 中间也要经过一系列的路由器转发 所以路由器的作用 就是用来转发数