草庐IT

网络基础(七)--- 动态路由

不会敲代码的HZ 2024-02-07 原文

目录

1. 静态路由和动态路由优缺点

1.1 静态路由

1.2 动态路由

2. AS自治系统

2.1 动态路由协议基于AS分类

2.2 IGP协议基于算法分类

3. RIP路由信息协议

3.1 Bellman - Ford贝尔曼·福特算法

3.2 RIP的版本


路由器获取未知网段的路由信息的方法:

  • 静态路由:由网络管理员手工添加的路由条目
  • 动态路由:所有路由器运行相同的路由协议,之后通过路由器之间的交流,沟通,自己计算出到达未知网段的路由信息。

1. 静态路由和动态路由优缺点

1.1 静态路由

优点:1. 因为静态路由所有的选路都是由人来指定的,所以,选出来的路径更合理;

2. 静态路由不会占用额外的资源(带宽);

3. 静态路由更加安全。

缺点:1. 配置麻烦;2. 静态路由无法基于拓扑结构的变化而自动收敛。

1.2 动态路由

优点:1. 配置简单;

2. 动态路由可以基于拓扑结构的变化而自动收敛

缺点:1. 由于动态路由的选路是通过算法计算出来的,所以存在不合理性;

2. 动态路由会用额外的资源;

3. 因为设备之间存在信息传递,所以更容易被利用,出现安全问题。

总结:1. 静态路由更适用于简单的小型网路当中;

2. 动态路由更适用于复杂的中大型网络中。

2. AS自治系统

由单一的机构或组织所管理的一些列IP网络及其设备组合的集合。

AS号:自治系统的编号,本质是16位二进制构成,范围1 - 65535;现在也存在拓展版的AS号,由32位二进制构成。

2.1 动态路由协议基于AS分类

  • IGP内部网关协议:应用在AS内部的动态路由协议

        RIPOSPF,IS-IS,EIGRP(Cisco的)等……

  • EGP外部网关协议:应用在AS之间的动态路由协议

        BGP

2.2 IGP协议基于算法分类

  • 距离矢量型协议(DV):路由器之间直接发送路由条目信息,典型的是RIP协议,贝尔曼·福特算法——“依据传闻的路由协议”
  • 链路状态型协议(LS):路由器之间传递的是链路状态信息,典型的是OSPF协议——LSA链路状态通告,使用SPF最短路径优先算法,可以将图形结构转换为树型结构。

3. RIP路由信息协议

邻居:在RIP中,相邻的两台路由器,彼此之间具备通信条件,则他们可以被称为是邻居关系。

Cost开销值:是动态路由协议的重要的选路依据,开销值的评判标准是越小越好。

       华为定义的RIP的默认优先级为100,静态路由的优先级更高。

       不同的动态路由协议开销值的评判标准是不一样的,所以,不同的动态路由协议之间的开销值是没有可比性的。

       RIP是以跳数作为开销值的评判标准的。因为RIP本身存在很多问题,所以在设计之初,就将其定义于使用在小型网络环境当中,并且,给RIP规定了一个工作半径是15跳。当一条路由信息的开销值达到16跳时,则判定该目标网段不可达。

       RIP开销值的计算规则:传输的开销值 = 本地路由表中的开销值 + 1

3.1 Bellman - Ford贝尔曼·福特算法

       1. AR2发送2.2.2.0/24网段的路由信息给R1,但是,R1本地路由表中并没有去往2.0网段的路由信息,则将直接把该路由信息刷新到本地路由表中。

       2. AR2发送2.2.2.0/24网段的路由信息给R1,但是,R1本地的路由表中具有去往2.0网段的路由信息,并且下一跳就是R2。则将直接把新的这条路由信息刷新到本地的路由表中。

       3. AR2发送2.2.2.0/24网段的路由信息给R1,但是,R1本地的路由表中具有去往2.0网段的路由信息,下一跳并不是R2。则将比较开销值,如果原本的这条路由的开销值大于R2发来的,则将R2发送的这条路由信息刷新到路由表中。

       4. AR2发送2.2.2.0/24网段的路由信息给R1,但是,R1本地的路由表中具有去往2.0网段的路由信息,下一跳并不是R2。则将比较开销值,如果原本的这条路由的开销值小于R2发来的,则不刷新

3.2 RIP的版本

RIPV1,RIPV2 ----- IPV4;RIPNG ----- IPV6

RIPV1和RIPV2的区别:

1. RIPV1是有类别的路由协议,RIPV2是无类别的路由协议;

       RIPV1在发送路由信息时不携带子网页掩码;RIPV2在发送路由信息时携带子网掩码。

2. RIPV1不支持手工认证,RIPV2支持手工认证;

3. RIPV1使用广播的形式发送信息,RIPV2使用组播的形式发送信息。

       RIPV2默认的组播地址:224.0.0.9

       RIPV1和RIPV2协议传输层使用的都是UDP,使用的端口号都是520端口

       RIPNG使用的是521端口。        

有关网络基础(七)--- 动态路由的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  4. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  5. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  6. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  7. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  8. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  9. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

  10. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

随机推荐