router和router switch有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了router和router switch有啥区别相关的知识,希望对你有一定的参考价值。
说通俗一点,我知道router是路由器
路由器与交换机的主要区别体现在以下几个方面:(1)工作层次不同 最初的的交换机是工作在OSI/RM开放体系结构的数据链路层,也就是第二层,而路由器一开始就设计工作在OSI模型的网络层。由于交换机工作在OSI的第二层(数据链路层),所以它的工作原理比较简单,而路由器工作在OSI的第三层(网络层),可以得到更多的协议信息,路由器可以做出更加智能的转发决策。 (2)数据转发所依据的对象不同 交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。而路由器则是利用不同网络的ID号(即IP地址)来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络,有时这些第三层的地址也称为协议地址或者网络地址。MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而IP地址则通常由网络管理员或系统自动分配。 (3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域 由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。
(4)路由器提供了防火墙的服务 路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。 交换机一般用于LAN-WAN的连接,交换机归于网桥,是数据链路层的设备,有些交换机也可实现第三层的交换。 路由器用于WAN-WAN之间的连接,可以解决异性网络之间转发分组,作用于网络层。他们只是从一条线路上接受输入分组,然后向另一条线路转发。这两条线路可能分属于不同的网络,并采用不同协议。相比较而言,路由器的功能较交换机要强大,但速度相对也慢,价格昂贵,第三层交换机既有交换机线速转发报文能力,又有路由器良好的控制功能,因此得以广泛应用。 参考技术A SWITCH和ROUTER的主要区别大概:
是工作层次不同:SWITCH基于DataLink层,而ROUTER基于Network层
数据转发所依据的对象不同:SWITCH利用MAC地址,而ROUTER是IP地址
SWITCH只能分割Collision
Domain,不能分割Broadcast
Domain;ROUTER就可以分割Broadcast
Domain
ROUTER提供了Firewall
Service。SWITCH一般用于LAN-WAN的连接,ROUTER是WAN-WAN的
总的说就是ROUTER的功能较SWITCH强,但速度相对也慢,价格也较SWITCH贵 参考技术B router switch因该是指带路由功能的交换机,最简单的比如家庭常用的宽带路由器就可以看作是router switch,它不仅提供了路由上网的功能,还提供了4个口的交换机功能.简单router是用来连接不同网段的,而switch是用来连接同一网段的.本回答被提问者和网友采纳 参考技术C 两个一个意思
“express.Router”和使用“app.get”的路由有啥区别?
【中文标题】“express.Router”和使用“app.get”的路由有啥区别?【英文标题】:What is the difference between "express.Router" and routing using "app.get"?“express.Router”和使用“app.get”的路由有什么区别? 【发布时间】:2014-06-29 16:46:44 【问题描述】:我有一个带有以下路由代码的应用:
var router = express.Router();
router.post('/routepath', function(req, res) );
现在我必须将路由代码放在不同的文件中,所以我尝试使用 this 方法,但它不工作可能是因为它使用的是 express.Router()
而不是:
app.post("/routepath", function (req, res) );
如何使用express.Router()
将路由放在不同的文件中?
为什么app.get
、app.post
、app.delete
等在使用express.Router()
后无法在app.js
中工作?
【问题讨论】:
问***.com/questions/28305120/… 【参考方案1】:这是一个简单的例子:
// myroutes.js
var router = require('express').Router();
router.get('/', function(req, res)
res.send('Hello from the custom router!');
);
module.exports = router;
// main.js
var app = require('express')();
app.use('/routepath', require('./myroutes'));
app.get('/', function(req, res)
res.send('Hello from the root path!');
);
这里,app.use()
正在将Router
实例安装在/routepath
,因此添加到Router
实例的任何路由都将相对于/routepath
。
【讨论】:
非常适合 res.send 感谢,但在 main.js 中声明的函数对于 myroutes.js 中的路由无法访问 如果您有这样的共享代码,那么将该代码放在一个单独的文件/模块中(例如 common.js),然后在 main.js 和 myroutes.js(以及任何地方)中简单地 require() 它们否则)。 Express 4.0 没有app.router
@RavishankarRajendran require('express').Router()
!= app.router
@RavishankarRajendran app.router
与 require('express').Router
无关(这是 Express 4 的事情)。它们是分开的东西。安装单独的路由器可以让您更好地组织您的路线。我的回答中显示了一个简单的例子。以上是关于router和router switch有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
react-router 4.0、react-router-dom 和 react-router-redux 有啥区别?
react-router-redux 的“push”方法和 react-router 的“browserHistory”有啥区别?
“express.Router”和使用“app.get”的路由有啥区别?
browserHistory.push() 和 context.router.push() 有啥区别
`yarn add react-router-dom` 和 `yarn add @types/react-router-dom` 有啥区别?