文章目录
路由器工作在 OSI 参考模型的网络层,它的重要作用是为数据包选择最佳路径,最终送达目的地
在只有一个网段的网络中,数据包可以很容易地从源主机到达目的主机,但如果一台计算机要和非本网段的计算机通信,数据包可能就要经过很多路由器
这就要面临一个很重要的问题——如何选择到达目的地的路径?
数据包从一台主机到达另一台主机有很多条路径选择,但是显然,这些路径中在某一时刻总会有一条路径是最好(最快)的
因此,为了尽可能的提高网络访问速度(效率),就需要有一种方法来判断从源主机到达目的主机所经过的最佳路径,从而进行数据转发这就是路由技术
这就是路由技术
路由器的工作原理是根据路由表转发数据。在路由表中,包含该路由器掌握的所有目的网络地址,以及通过此路由器到达这些网络的最佳路径。这个最佳路径指路由器的某个接口或下一跳路由器的地址。正是由于路由表的存在,路由器才可以高效地进行数据包的转发。以下图为例,介绍路由器转发数据包的过程:

(1) 主机1.1要发送数据包给主机4.1,因为IP地址不在同一-网段,所以主机会将数据包发送给本网段的网关路由器A。
(2)路由器A接收到数据包,先查看数据包IP首部中的目标IP地址,再查找自己的路由表。数据包的目标IP地址是4.1,属于4.0网段,路由器A在路由表中查到40网段转发的接口是S0接口。于是,路由器A将数据包从SO接口转发出去。
(3)网络中的每个路由器都是按这样的步骤转发数据的,直到到达路由器B,再用同样的转发方法从EO接口转发出去,最后主机4.1接收到这个数据包。
在转发数据包的过程中,如果在路由表中没有找到数据包的目的地址,则根据路由器的配置转发到默认接口或者给用户返回“目标地址不可达”的信息。
上述是路由器最基本的工作原理。
路由表是在路由器中维护的路由条目的集合,路由器根据路由表做路径选择。 在直连网段中,路由器配置了接口的IP地址,端口为up状态,形成直连路由;非直连网段就需要使用静态路由或者动态路由来将这些网段以及如何转发写到路由表中。

静态路由是由管理员在路由器中手动配置的固定路由,除非网络管理员干预,否则静态路由不会发生变化。由于静态路由需要管理员逐条写入,而且不能对网络的改变做出反应,所以一般来说,静态路由用于网络规模不大、拓扑结构相对固定的网络中
1、它允许对路由的行为进行精确的控制
2、减少了网络流量
3、是单向的
4、配置简单
5、缺乏灵活性

默认路由,是对IP数据包中的目的地址找不到存在的其他路由时,路由器所选择的路由。目的地不在路由器的路由表里的所有数据包都会使用默认路由。如果没有默认路由,那么目的地址在路由表中没有匹配的表项的数据包将被丢弃。

1路由器通过查询路由表,实现数据包转发
2路由表的形成有静态添加和动态学习的二种方式
3静态路由是由管理员手工添加的路由信息
4默认路由是由一种特殊的静态路由

封装的过程;
1、主机A在网络层讲来自上层的报文封装成IP数据包,其首部包含了源地址和目的地址。源地址即本机的IP地址192.168.1.2,目的地址为主机B的IP地址192.168.2.2。
2、主机A通过ARP请求获得默认网关路由器A的E0接口的MAC地址00-11-12-21-22-22。在数据链路层主机A将IP数据包封装成以太网数据帧,以太网帧首部的源MAC地址为11-11,目的MAC地址为网关E0接口的MAC地址为22-22。
3、路由器A从E0接口接收到数据帧,把数据链路层的封装去掉。路由器A查找自己的路由表,寻找与目标地址192.168.2.2相匹配的路由表项,然后根据路由表的下一跳地址将数据包转发到E1接口。
4、在E1接口路由器A重新封装成以太网帧,此时源MAC地址为路由器A的E1接口MAC地址33-33,目的MAC地址为与之相连的路由器B的E1接口MAC地址44-44。
5、路由器B从E1接口接收到数据帧,同样会把数据链路层的封装去掉,对目的IP地址进行检查,并与路由表进行匹配,然后根据路由表的下一跳信息将数据包转发到E0接口。路由器B发现目的网段与自己的E0接口直接相连,通过ARP广播,路由器B获得HostB以太口的MAC地址66-66。
6、路由器B再将IP数据包封装成以太网帧,源MAC地址为路由器B的E0接口的MAC地址55-55,目的MAC地址为主机B的MAC地址66-66。封装完毕,将以太网帧从E0接口发往主机B。
全过程经历三次封装,两次解封装。
封装:主机A,路由器A,路由器B
解封装:路由器A,路由器B
路由器在数据包封装过程中IP地址始终不变,MAC地址始终在变。
拿到一台路由器首先配置接口ip地址 掩码,网关
sys ###进入系统模式
undo info-center enable ###关闭提示信息
sys R1 ###命名路由器
int g/0/0/0 ###配置节点
ip address ###配置IP地址
display this ###显示IP信息
undo shutdown ###检查节点是否配置成功(un sh)
display ip routing-table ###查看路由地址
display interface brief ###查看整个路由器的IP地址
ip route-static 网络号 子网掩码 下一跳ip //静态路由配置
un ip route-static ###删除路由地址
q ###退出
atic 网络号 子网掩码 下一跳ip //静态路由配置
un ip route-static ###删除路由地址
q ###退出
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上找到一个类似的问题
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的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
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
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
路由有如下代码: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个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。