本章旨在将详细介绍路由控制以及实现路由控制功能的相关协议
在互联网这片汪洋大海中,数据就好似一叶扁舟,没有灯塔的指引,是难以寻得目的地的。这种进行正确方向引导的转发数据的处理,就叫做路由控制或路由。
路由器根据路由控制表转发数据包,具体则是依赖于数据包中目标主机的IP地址与路由器控制表比较得出下一个应该接收的路由器。所以,路由控制表的正确性,就相当重要了。
那么,是谁,又是怎样制作和管理路由控制表的呢?实际上,路由控制表分为静态和动态两种类型。
静态路由指事先设置好路由器和主机中的路由信息且固定住的一种方法。
动态路由则是指让路由协议在运行过程中自动设置路由控制信息的一种方法。
两种方法自然是各有利弊。静态路由需要手动设置,有多少个设置多少个,每新增一个,就需要将该信息追加设置在所有路由器上。不仅给管理者带来很大负担,且一旦有一个路由器故障,那么需要经由该路由器的数据都无法到达目标主机。

而是用动态路由呢,管理员需要先设置好路由器协议,设定复杂度与路由协议类型相关。如有有新网络入网,那么在需要在新增加网络的路由器上设置一个动态路由即可。对于路由器数量较多的网络,采用动态路由会减轻管理员的很多负担。而且,一旦有一个路由器故障,只要存在一个可绕路径,数据包就可以继续转发,路由器的设置也会重置。路由器会通过定期与其他路由交换必要的控制信息(会给网络带来一定程度的负担),来实现路径的备选。
实际上,静态路由与动态路由可以结合起来使用,这样效果往往更佳。
那么动态路由是如何实现动态呢?如下图所示,每个路由会给相邻路由器发送自己已知的网络连接信息,而这些信息也会传递给其他路由器,直至整个网络都了解时,路由制作表也就制作完成了。此时,就可以正确转发IP数据包了。

在此图中,能够运行的前提是该网络拓扑中没有循环(有循环需要另做处理)。
要对所有的网络统一管理,是不可能的事儿。因为,人们根据路由控制的范围常使用IGP(Interior Gateway Protocol)和EGP(Exterior Gateway Protocol)两种类型的路由协议。
接入互联网的各种组织机构,不仅包括语言不通的,甚至还有宗教信仰全然不同的组织。其中没有管理者,也没有被管理者,每个组织之间保持着平等的关系。
接下来要讲的概念叫做自治系统(AS:Autonomous System)或者路由选择域(Routing Domain),其是指制定自己的路由策略,并以此为准再一个或多个网络群体中采用的小型单位。这里举个例子说明会更加简单,比如一个公司,在架构网络的时候需要对公司以外的人士屏蔽企业内部的网络细节,也不必对这些细节上的更新请求做出回应。如下图所示。

区域网络,ISP(互联网服务提供商)等都是典型的例子。接入自治系统必须根据管理员的指示进行路由控制设定。
而自治系统内部动态路由采用的就是IGP(域内路由协议),自治系统之间的路由控制采用的则是EGP(域间路由协议)。
接下里就来了解一下IGP和EGP协议。
其实IGP起到的作用,和我们此前网络层中所讲的内容大体相似,还可以使用RIP(Routing Information Protocol,路由信息协议)、RIP2、OSPF(Open Shortest Path First,开放式最短路由优先)等众多协议。
而EGP,就想根据IP地址中的网络部分在网络之间进行路由选择、根据主机部分在链路内部进行主机识别一样,EGP可以在区域网络之间(或ISP之间)进行路由选择,可以根据IGP在区域网络内部(或ISP内部)进行主机识别。
路由协议可以被分为EGP和IGP两个层次,没有EGP就不会有世界上各个不同组织之间的通信,而没有IGP就不会有组织内部的通信。
书中给出了两种最具代表性的算法(肯定指的是动态路由),距离向量(Distance-Vector)算法和链路状态(Link-State)算法。
距离向量算法(DV),指根据距离和方向决定目标网络或者目标主机位置的一种方法,如下图所示

这个算法较为简单,需要路由器之间互换目标网络的方向以及其距离的相关信息,但也正是因为只有距离和方向信息,所以当网络构造变得分外复杂时,获得稳定的路由信息之前需要消耗一定时间,也很容易发生路由循环问题。
链路状态算法建立在路由器了解网络整体连接状态的基础上生成路由控制表的一种方法。在该方法中,每个路由器都必须保持同样的信息才能进行正确的路由选择。
距离向量算法中每个路由器掌握的信息不相同,通往每个网络的距离也是根据路由器的不同而不同,该算法的另一个缺点就是不太容易判断每个路由器上的信息是否正确。
链路状态算法中,对于每台路由器,网络拓扑是完全一样的,因此只要某一台路由器和其他路由器保持同样的路由控制信息,就一位置该路由器上的路由信息是正确的。只要路由器能尽快的与其他路由器同步路由信息,就可以使路由信息达到一个稳定的状态。即使网络结构复杂,每个路由器也都可以保持正确的路由信息,进行正确的路由选择。
而代价就是,如何从网络代理获取路由信息表。这一过程的复杂程度与网络结构的复杂程度呈正比,管理和处理代理信息需要高速CPU处理能力和大量内存。

下表中列出了几种主要的路由协议,由于EGP(是一种特定协议,二分此前所提的EGP)不支持CIDR(无类别域间路由),现在已经不再用做互联网的对外连接协议。在之后的篇章内将详细介绍RIP、RIP2、OSPF、BGP等协议的基础知识。

作为第七章开篇内容,本篇所介绍的多为一些概念性的内容。
路由控制分为两大类:
而两者往往是结合使用。
一个较为重要的概念是自治系统,通常为区域网络和ISP,自治系统内使用IGP(域内路由协议),自治系统间使用EGP(域间路由系统)。
路由算法中最具代表性的有两种:
之后要介绍的主要路由协议有RIP等,请听下回分解。
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上找到一个类似的问题
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的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
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
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