静态路由是指用户或网络管理员手工配置的路由信息。当网络拓扑结构或链路状态发生改变时,需要网络管理人员手工修改静态路由信息,适合于小型、简单的网络环境
默认路由是一种特殊的静态路由,当路由器不知道该把包往哪里转发时就会往默认路由指定的下一跳位置进行转发

按照图示标志为PC配置好IP地址,掩码和网关,接着分别进入三个路由器为其接口配置对应IP地址与掩码
R1:
<Huawei>system-view //进入系统视图
[Huawei]undo info-center enable //关闭消息提醒
[Huawei]sysname R1 //修改设备名称
[R1]interface e0/0/0 //进入e0/0/0接口
[R1-Ethernet0/0/0]ip address 192.168.10.254 24 //设置接口IP地址与掩码长度
[R1-Ethernet0/0/0]int s0/0/0
[R1-Serial0/0/0]ip address 10.0.12.1 24
R2:
<Huawei>system-view
[Huawei]undo info-center enable
[Huawei]sysname R2
[R2]interface s0/0/1
[R2-Serial0/0/1]ip address 10.1.12.2 24
[R2-Serial0/0/1]interface s0/0/0
[R2-Serial0/0/0]ip address 10.0.23.2 24
R3:
<Huawei>system-view
[Huawei]undo info-center enable
[Huawei]sysname R3
[R3]interface s0/0/1
[R3-Serial0/0/1]ip address 10.0.23.3 24
[R3-Serial0/0/1]interface e0/0/0
[R3-Ethernet0/0/0]ip address 192.168.20.254 24
此时PC1与PC2相互ping不通,因为路由器隔离了广播域且此时各个路由器上都只有直连路由。PC1 ping PC2的请求到达R1后,R1不知道如何进行转发,因此此时无法建立通路
我们可以通过在每个路由器上设立静态路由来帮助建立通路,告诉路由器该如何转发数据
R1:
//要去192.168.20.0/24网段就走10.1.12.2这条路
[R1]ip route-static 192.168.20.0 255.255.255.0 10.1.12.2
R2:
//要去192.168.20.0/24网段就走10.0.23.3这条路
[R2]ip route-static 192.168.20.0 255.255.255.0 10.0.23.3
此时我们便配置好了从PC1至PC2的路径,我们尝试一下是否能够ping通

我们对R3的s0/0/1进行抓包查看当前情况

端口收到请求报文,说明数据确实往这里转发并且被接收了。但是若要ping通,PC1还需要收到来自PC3的响应报文,而从PC3到PC1的路由我们并没有配置,因此路由器不知道如何转发,所以PC1收不到响应报文,即请求超时
为了让响应报文找到回去的路径,我们还需要对路由器配置响应报文的路由
R2:
//要去192.168.10.0/24网段就走10.0.12.1这条路
[R2]ip route-static 192.168.10.0 255.255.255.0 10.0.12.1
R3:
//要去192.168.10.0/24网段就走10.1.23.2这条路
[R3]ip route-static 192.168.10.0 255.255.255.0 10.0.23.2
此时我们再令PC1 ping PC2可发现请求/响应报文皆有路可寻,因此可以ping通

此时还存在一个问题,如果此时PC2与R3之间的链路出现故障,我们要进行排查究竟哪段链路发生故障便无从下手,因为此时PC1 ping R3的s0/0/1端口不通【我们并未配置此条路由】,此时PC1 ping PC2也不通,无法锁定具体目标。为了防止这种情况,在帮路由器配置静态路由时最好将链路中所有的目的地都配置上去,以增加网络的可靠性,便于我们排查故障。
或者我们可以选择使用默认路由,当路由器不知如何进行转发时就会走默认路由指定的下一跳位置,在减少配置工作量的情况下还能增加网络的可靠性
R1:
//来到R1的数据如果不知道往哪里转发就走10.1.12.2这条路
[R1]ip route-static 0.0.0.0 0 10.1.12.2
R3:
//来到R3的数据如果不知道往哪里转发就走Serial 0/0/0这条路【等同于IP地址】
[R3]ip route-static 0.0.0.0 0 Serial 0/0/0

R2不配置默认路由,因为其转发路径不是唯一的,若假设强行为R2配置默认路由指向R3的s0/0/1接口,则会在这段链路形成路由环路。若此时PC1 ping了一个不存在的地址,则报文会走默认路由,R2转发给R3,R3又转发给R2,直至耗尽报文生存时间字段TTL才将此报文丢弃
我们还可以通过设置黑洞路由控制路由器丢弃指定报文
R1:
//当目的地址192.168.30.0/24的报文来到R1时直接丢弃,像黑洞一样吞噬此报文
[R1]ip route-static 192.168.30.0 255.255.255.0 null0
本实验取自华为公司《HCNA网络技术实验指南》,此书对于新手学习计算机网络协议以及熟悉eNSP操作十分友好,强烈推荐!!!
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上找到一个类似的问题
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden