routers,routersploit
Routers and switches
A router is a computer networking device that forwards data packets across a network toward their destinations, through a process known as routing. Routing occurs at layer 3 (the Network layer e.g. IP) of the OSI seven-layer protocol stack.
A router acts as a junction between two or more networks to transfer data packets among them. A router is different from a switch. A switch connects devices to form a Local area network (LAN).
One easy illustration for the different functions of routers and switches is to think of switches as neighborhood streets, and the router as the intersections with the street signs. Each house on the street has an address within a range on the block. In the same way, a switch connects various devices each with their own IP address(es) on a LAN.
However, the switch knows nothing about IP addresses except its own management address. Routers connect networks together the way that on-ramps or major intersections connect streets to both highways and freeways, etc. The street signs at the intersection (routing table) show which way the packets need to flow.
So for example, a router at home connects the Internet Service Provider's (ISP) network (usually on an Internet address) together with the LAN in the home (typically using a range of private IP addresses, see network address translation) and a single broadcast domain. The switch connects devices together to form the LAN. Sometimes the switch and the router are combined together in one single package sold as a multiple port router.
In order to route packets, a router communicates with other routers using routing protocols and using this information creates and maintains a routing table. The routing table stores the best routes to certain network destinations, the "routing metrics" associated with those routes, and the path to the next hop router. See the routing article for a more detailed discussion of how this works.
Routing is most commonly associated with the Internet Protocol, although other less-popular routed protocols are in use.
The first router was created at Stanford University by a staff researcher named William Yeager in January of 1980. His boss at the time told him that he was the "network guy" and to find a way to connect the computers in the computer science department, medical center and department of electrical engineering. He first wrote a network operating system and routing code to run on a DEC PDP-11/05. He used Alan Snyder's Portable C compiler but it generated too much code so he modified the compiler to improve the code generators. That still wasn't good enough so he wrote an optimizer for PDP-11/05 assembler that reduced the code size further.
In the original era of routing (from the mid-1970s through the 1980s), general-purpose mini-computers served as routers. Although general-purpose computers can perform routing, modern high-speed routers are highly specialised computers, generally with extra hardware added to accelerate both common routing functions such as packet forwarding and specialised functions such as IPsec encryption.
Other changes also improve reliability, such as using DC power rather than line power (which can be provided from batteries in data centers), and using solid state rather than magnetic storage for program loading. Large modern routers have thus come to resemble telephone switches, with whose technology they are currently converging and may eventually replace, whilst small routers have become a common household item.
A router that connects clients to the Internet is called an edge router. A router that serves solely to transmit data between other routers, e.g. inside the network of an Internet service provider, is called a core router.
A router is normally used to connect at least two networks, but a special variety of router is the one-armed router, used to route packets in a virtual LAN environment. In the case of a one-armed router, the multiple attachments to different networks are all over the same physical link.
In mobile ad-hoc networks every host performs routing and forwarding by itself, while in wired networks there is usually just one router for a whole broadcast domain.
In recent times many routing functions have been added to LAN switches (a marketing term for high-speed bridges), creating "Layer 2/3 Switches" which route traffic at near wire speed.
Routers are also now being implemented as Internet gateways, primarily for small networks like those used in homes and small offices. This application is mainly where the Internet connection is an always-on broadband connection like cable modem or DSL. These are routers in the true sense because they join two networks together - the WAN and the LAN – and have a routing table. Often these small routers support the RIP protocol, although in a home application the routing function does not serve much purpose since there are only two ways to go - the WAN and the LAN. In addition, these routers typically provide DHCP, NAT, DMZ and Firewall services. Sometimes these routers can provide content filtering and VPN. Typically they are used in conjunction with either a cable modem or DSL modem, but that function can also be built-in.
Modern routers support wireless networking (generally using 802.11 standards) and can come with a variety of features, including USB ports for connecting plug-n-play printers, jacks for connecting stereo systems, etc.
路由器(Router)是一种用来传递资料封包的网路装置,而传递资料封包的过程称为路由。路由发生於七层OSI模型中的第三层。
路由通常是基於IP(Internet Protocol,即互联网协议),但亦会出现在其他较少见的网路协定之上,例如IPX协议。
在1960年代,路由器是由普通的电脑扮演。虽然普通的电脑可以达成路由的作用,但现代的高速路由器是由专门为路由而设计的硬件组成的。这些路由器除可提升路由速度外,亦能发挥其他网路功能,如IPsec加密。
其他的一些改变也提升了路由器的可靠性,例如使用直流电而不是交流(直流电可以由数据中心的电池提供),使用固态存储而不是磁性存储介质来载入程序。现代大型路由器变得越来越象电话交换机,随着使用这些技术,两者变得越来越相似也许最终路由器将取代电话交换机,同时一些小型路由器正在成为家用电器。
第一个现代(专门,独立的)路由器是Fuzzball Routers。
一个路由器可以用来至少连接两个网络或是移动无线网络(mobile ad-hoc network)。一种特殊类型的路由器(one-armed-router)用来在虚拟局域网(Virtual LAN-VLan)环境中传递数据包。一个one-armed-router上的连接的多个网络都位于同一个物理链路上。
将客户连接到Internet的路由器被称为边缘路由器(edge router)。在其他路由器之间传送数据的路由器被称为核心路由器(core router)。
路由器创建并/或维护一张表,称为“路由表”。里面存放了到特定网络目的地的最佳路由以及相应的“路由属性”。参见相关的路由(Routing)文章以获得关于其如何工作的更详细的讨论。
近来,许多路由的功能被加入到了局域网交换机上,从而创造出“三层交换机”,可以以接近线速的速度来转发流量。
路由器也被当作Internet闸道,主要用在小型网络中如家庭或小型办公室。这种设备使用的Internet连接往往是一直在线的宽带连接如线缆调制解调器和DSL。这些并不是真正意义上的路由器,但是它所使用的术语和“网络地址转换”发生了混淆。
vue-router 可以根据 URL 来获取 routers 定义的 name 属性吗
可以的。this.$route.name 就可以获取到对应的name了
主要有以下几个步骤:
(1) 设置好路由配置
router.map({
'/history/:deviceId/:dataId': {
name: 'history', // give the route a name
component: { ... }
}
})
这里有2个关键点:
a)给该路由命名,也就是上文中的 name: 'history',
b)在路径中要使用在路径中使用冒号开头的数字来接受参数,也就是上文中的 :deviceId, :dataId;
(2)在v-link中传递参数;
a v-link="{ name: 'history', params: { deviceId: 123, dataId:456 }}"history/a
这里的123,456都可以改用变量。
比如该template所对应的组件有2个变量定义如下:
data: function() {
return {
deviceId:123,
dataId:456
}
}
此时上面那个v-link可以改写为:
a v-link="{ name: 'history', params: { deviceId: deviceId, dataId: dataId }}"history/a
(3)在router的目标组件上获取入参
比如在router目标组件的ready函数中可以这么使用。
ready: function(){
console.log('deviceid: ' + this.$route.params.deviceId);
console.log('dataId: ' + this.$route.params.dataId);
}

前端路由(二)
前面我们做到了切换路由不发送请求,现在我们要 把路由和组件对应起来达到渲 染。
? ? ? ? 接下来介绍的是VueRouter的原理,它是怎么做到的这个功能的。其会在 根Vue 上注册2个全局 函数式组件 router-link router-view,在根Vue原型上 定义$route(当前路由Route对象)和$router(传入newVue的router对象列表)两个属性(所有子Vue实例会继承)。?
? ? ? ??router-link,作为一个子组件,初始化渲染时会去执行render函数,主要做了 其 内部属性 (tab标签,activeClass等)的 处理 ,在点击时会去 执行router.push做url变化 。它不涉及渲染,逻辑比较简单。
? ? ? ? 执行router.push(replace)做url变化和初始化VueRouter时都会去触发 transitionTo方法做路径切换 。这个方法里做了很多事情,接下来会介绍。它执行完毕的成功回调中会切换url。
? ? ? ? 最重要的问题是渲染组件 , router-view如何知道去渲染哪个组件 ?我们手头有一个按文档规定写的new VueRouter({ routers })列表,传给了根Vue,VueRouter通过它做了很多事情。
????????首先在new VueRouter()时,会去执行其构造函数,其中 createMatcher 方法,会递归遍历routers把每个router对象进行重新描述得到 RouteRecord 对象,并由它们得到3个列表( pathList (路由path列表), pathMap (路由path: record列表), nameMap (路由name:record列表)),这3个列表是为导航守卫服务的我们先不管它。createMatcher最后返回2个方法,1、 addRoutes ,动态对上面3个列表修改。2、 match ,根据传入的位置和当前的路径,计算出新的路径为 Route对象。
????????transitionTo路径切换时,会去执行 match 函数计算新路径Route对象,其有一个属性值 matched ,是从当前RouteRecord向上(parent)查找直到根RouteRecord的到的RouteRecord数组,这样得到一个 层级关系 。我们在router-view的render函数中会标志flag表示是router-view组件,我们上(父组件)查找有flag标志就 会把 depth++,最后得到 当前router-view的深度 。我们通过 $route.matched [depth]就可以 找到router-view需要去渲染的组件。
? ? ? ? 这里还有一个问题, 我们怎么知道当前$route是哪个? 在初始化routerVue,init()中规定了所有子组件的实例的$route属性指向根Vue的$route属性,根Vue的$route属性又等于this._router.history.current。而current这个值又是在路径切换时会变化的。也就是说我们路径变化会把当前$route指为当前组件路由的route路径对象,这个我们不用担心。
??????? ?概括: 就是做路径切换时,我们会根据我们写的路由表,把当前路由往上到根路由的路由对象组成一个数组,描述一个 层级关系List 。router-view是函数式组件,它有标志flag,我们也会从它往上查找router-view直到根vue,有就depth++,得到当前router-view 层级位置depth 。 List[depth].component就是我们要渲染的组件。
? ?????? 我们知道router-view要去渲染哪个组件,它是怎么做到更新视图的? 更新视图肯定也要符合Vue渲染原理呀,要把1个数据响应式化,get时收集订阅者Watcher并初始化渲染,set时派发更新 把订阅该数据的Watcher重新渲染。这个响应式数据是谁呢?就是定义在根Vue的_route,子Vue的$route也都指向它。router-view函数render执行的时候,会去取$route相当于访问根Vue的_route,会触发订阅者Watcher收集并初始化渲染。做路径切换时,会修改_route(即记录当前路由路径的this._router.history.current)。
触发点 :router-link 提供了"下一个位置参数",准备去切换url时,触发transitionTo方法去做路径切换。
响应式化数据 :history.current。记录当前路径Route对象(由当前路由和下一个位置计算出来),收集订阅者,派发更新渲染,都围绕它进行。
路由配对组件 :当前路径Route对象(由当前路由和下一个位置 计算出来)和我们写的路由表,得到当前路径Route对象到根路径的 路由路线 数组,router-view肯定在这之内,不会比其更深层,所以在这数组之内可以用depth取到。
? ?????? 守卫导航是怎么做到的 ?守卫导航就是transitionTo方法做路径切换时执行的一系列钩子函数。
????????这些钩子函数 有些定义在全局 ,用 this.router.xxx可以取到。
? ?????? 有些定义在组件内 ,通过前面的Routed.matched,即将离开路由的matched列表和当前路由的matched列表,从头对比到第一个不同,得到 updated (目标RouteRecord和当前RouteRecord相同,前面重复的部分)、 activated( 目标RouteRecord和当前RouteRecord不同,后面不同的部分 ) 、 deactivated( 当前RouteRecord和目标RouteRecord不同,后面不同的部分 ) 三个RouteRecord数组。 通过这些RouteRecord去取定义在组件中的导航守卫 。
? ?????? 有些定义在路由中 ,也通过这些 RouteRecord去取。
到这里就完成了,接下来会分析前端路由在实际开发中的运用,比如页面权限设置!
请问路由器有什么作用
路由器的基本功能如下:
第一,网络互连:路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
第二,数据处理:提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
第三,网络管理:路由器提供包括路由器配置管理、性能管理、容错管理和流量控制等功能。
拓展资料
路由器是互联网络中必不可少的网络设备之一,路由器是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读”懂对方的数据,从而构成一个更大的网络。 路由器有两大典型功能,即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、系统配置、系统管理等。
要解释路由器的概念,首先要介绍什么是路由。所谓“路由”,是指把数据从一个地方传送到另一个地方的行为和动作,而路由器,正是执行这种行为动作的机器,英文名称Router。
路由器是什么东西
router)是一种负责寻径的网络设备,它在互连网络中从多条路径中寻找通讯量最少的一条网络路径提供给用户通信。路由器用于连接多个逻辑上分开的网络。对用户提供最佳的通信路径,路由器利用路由表为数据传输选择路径,路由表包含网络地址以及各地址之间距离的清单,路由器利用路由表查找数据包从当前位置到目的地址的正确路径。路由器使用最少时间算法或最优路径算法来调整信息传递的路径,如果某一网络路径发生故障或堵塞,路由器可选择另一条路径,以保证信息的正常传输。路由器可进行数据格式的转换,成为不同协议之间网络互连的必要设备。
路由器使用寻径协议来获得网络信息,采用基于“寻径矩阵”的寻径算法和准则来选择最优路径。按照osi参考模型,路由器是一个网络层系统。路由器分为单协议路由器和多协议路由器。
internet由各种各样的网络构成,路由器是其中非常重要的组成部分,整个internet上的路由器不计其数。intranet要并入internet,兼作internet服务,路由器是必不可少的组件,并且路由器的配置也比较复杂。
(一)路由器的寻址和路由选择
在互连网上交换信息的一个基本要求是每个站都具有可达的唯一地址。像邮政编址类似,互连网地址也由几部分组成。在互连网上,通常要求使用网络地址、主机地址和计算机上运行的应用。
规定了地址之后,接下来便是如何选择路径到达报文的终点。路由选择涉及规定路由选择参数以及如何获得这些参数。
在互连网中使用的地址是32位的ip地址,该地址由网络号和主机号组成。ip地址分为下述3类:
a类地址使用7位来标识网络,24位用来规定网络上的主机;
b类地址使用14位来标识网络,16位用来标识主机;
c类地址使用21位来标识网络,8位用来标识主机。
路由器在选择路径时常用的算法有两种:一是距离向量;二是链路状态。前一种由路由选择信息协议(rip)使用,后一种由开放式最短路径优先协议(ospf)使用。
现举例来说明路由器如何工作。假设由一个路由器连接了三个子网,子网地址(掩码)分别为1000、2000
和
3000,相互通信的两个站的地址分别是1400和2034。
假定编址为1400的站向2034发送报文。信源站首先将其网络地址掩码(1000)与终点网络地址掩码进行比较,因为两者不同,源站认识到报文接收者不在同一lan上,
不能直接发送到接收者。于是该源站便从其路由选择表中把它所连接的路由器1的地址和该报文置于一个信封内,并将信封发给路由器
1。
路由器1收到报文,丢掉信封,观察报文的终点地址,将其与它具有的3个网络地址掩码(1000,2000
和
3000)比较。由于与2000相同,
路由器便将报文直接发送给接收者。当然,这个例子是互连网络中最简单的一种,但基本原理是一样的。
(二)路由器与网桥的差别
路由器在网络层提供连接服务,用路由器连接的网络可以使用在数据链路层和物理层完全不同的协议。由于路由器操作的osi层次比网桥高,所以,路由器提供的服务更为完善。路由器可根据传输费用、转接时延、网络拥塞或信源和终点间的距离来选择最佳路径。路由器的服务通常要由端用户设备明确地请求,它处理的仅仅是由其它端用户设备要求寻址的报文。
路由器与网桥的另一个重要差别是,路由器了解整个网络,维持互连网络的拓扑,了解网络的状态,因而可使用最有效的路径发送包。
网桥和路由器之间功能上的差别经常很模糊。由于网桥变得越来越复杂,它们现在能处理一些以前由路由器处理的日常杂务,这样使很多路由器失了业。执行路由功能的网桥有时也称为网桥路由器(brouters)。
什么是路由器
路由器(Router)是一种典型的网络层设备,对经过的分组进行处理,同时它还要运行路由协议,生成路由表,对每一个分组进行寻路,并转发到相应的输出端口。
路由器用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器来完成。因此,路由器具有判断网络地址和选择路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。它不关心各子网使用的硬件设备,但要求运行与网络层协议相一致的软件。
一般说来,异种网络互联与多个子网互联都应采用路由器来完成。
路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据――路径表(Routing Table),供路由选择时使用。路径表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路径表可以是由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主机控制。
1、静态路径表
由系统管理员事先设置好固定的路径表称之为静态(Static)路径表,一般是在系统安装时就根据网络的配置情况预先设定的,当网络结构的改变时需管理员手工改动相应的表项。
2、动态路径表
动态(Dynamic)路径表是路由器根据网络系统的运行情况而自动调整的路径表。路由器根据路由选择协议(Routing Protocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。
二、路由器的功能
1、协议转换:能对网络层及其以下各层的协议进行转换。
2、路由选择:当分组从互联的网络到达路由器时,路由器能根据分组的目的地址按某种路由策略,选择最佳路由,将分组转发出去,并能随网络拓扑的变化,自动调整路由表。
3、能支持多种协议的路由选择:路由器与协议有关,不同的路由器有不同的路由器协议,支持不同的网络层协议。如果互联的局域网采用了两种不同的协议,例如,一种是TCP/IP协议,另一种是SPX/IPX协议(即Netware的传输层/网络层协议),由于这两种协议有许多不同之处,分布在互联网中的TCP/IP(或SPX/IPX)主机上,只能通过TCP/IP(或SPX/IPX)路由器与其他互联网中的TCP/IP(或SPX/IPX)主机通信,但不能与同一局域网中的SPX/IPX(或TCP/IP)主机通信。多协议路由器能支持多种协议,如IP,IPX及X.25协议,能为不同类型的协议建立和维护不同的路由表。这样不仅能连接同一类型的网络,还能用它连接不同类型的网络。
4、流量控制:路由器不仅具有缓冲区,而且还能控制收发双方数据流量,使两者更加匹配。
5、分段和组装:当多个网络通过路由器互联时,各网络传输的数据分组的大小可能不相同,这就需要路由器对分组进行分段或组装。即路由器能将接收的大分组分段并封装成小分组后转发,或将接收的小分组组装成大分组后转发。如果路由器没有分段组装功能,那么整个互联网就只能按照所允许的某个最短分组进行传输,大大降低了其他网络的效能。
6、网络管理:路由器是连接多种网络的汇集点,网间分组都要通过它,在这里对网络中的分组、设备进行监视和管理是比较方便的。因此,高档路由器都配置了网络管理功能,以便提高网络的运行效率、可靠性和可维护行。
三、路由器的工作流程
传统上路由器工作于网络7层协议的第三层,其主要任务是接收来自一个网络接口的分组,根据其中所含的目的地址,决定转发到哪一个下一个目的地址(可能是路由器也可能就是目的主机),并决定从哪个网络接口转发出去。这是路由器的最基本功能――分组转发功能。为了维护和使用路由器,路由器还需要有配置或者说控制功能。
根据TCP/IP协议,路由器的分组转发具体过程是:
1、网络接口接收分组。这一步负责网络物理层处理,即把经编码调制后的数据信号还原为数据。不同的物理网络介质决定了不同的网络接口,如对应于10Base-T以太网,路由器有10Base-T以太网接口,对应于SDH,路由器有SDH接口。
2、根据网络物理接口,路由器调用相应的链路层(网络7层协议中的第二层)功能模块以解释处理此分组的链路层协议报头。这一步处理比较简单,主要是对数据完整性的验证,如CRC校验、帧长度检查。近年来,IP over something的趋势非常明显,IP(处于网络层――网络7层协议中的第三层)跳过链路层而被直接加载在物理层之上。
3、在链路层完成对数据帧的完整性验证后,路由器开始处理此数据帧的IP层。这一过程是路由器功能的核心。根据数据帧中IP包头的目的IP地址,路由器在路由表中查找下一跳(NextHop)的IP地址,IP分组头的TTL(TimetoLive)域开始减数,并计算新的校验和(checksum)。如果接收数据帧的网络接口类型与转发数据帧的网络接口类型不同,则IP分组还可能因为最大帧长度的规定而分段或重组。
4、根据在路由表中所查到的下一跳IP地址,IP数据包送往相应的输出链路层,被封装上相应的链路层帧头,最后经输出网络物理接口发送出去。