路由器和交换机的区别:交换机主要是实现大家通过一根网线上网,但是大家上网是分别拨号的,各自使用自己的宽带,大家各自上网没有影响,哪怕其他人在下载,对自己上网也没有影响,并且所有使用同一条交换机的电脑都是在同一个局域网内。路由器比交换机多了一个虚拟拨号功能,通过同一台路由器上网的电脑是共用一个宽带账号,大家之间上网是相互影响的,比如一台电脑在下载,那么同一个路由器上的其他电脑会很明显的感觉到网速很慢。同一台路由器上的电脑也是在一个局域网内的。
==== 从 普通用户用途 的角度来划分:
交换机用来将一根网线变为多根,如果网络需要登录大家各自分别登录。
路由器用来将一条网络变为多条,分出的多条网络共享主线的网络带宽。
// 这里以普通用户视角描述,用词不准确,谢绝打脸
实际情况是大部分家用路由由路由器和交换机两部分组成,交换机用于内部网络数据传输,路由器利用 NAT 转发数据与外部网络通信。
==== 从 课本上的定义 的角度来划分:
交换机
用于同一网络内部数据的快速传输
转发决策通过查看二层头部完成
转发不需要修改数据帧
工作在 TCP/IP 协议的二层 —— 数据链路层
工作简单,直接使用硬件处理
路由器
用于不同网络间数据的跨网络传输
转发决策通过查看三层头部完成
转发需要修改 TTL ,IP 头部校验和需要重新计算,数据帧需要重新封装
工作在 TCP/IP 协议的三层 —— 网络层
工作复杂,使用软件处理
// 应该说,这个定义已经很过时了,三层(多层)交换机早就已经普遍使用了,但是天知道什么原因,至少我手头的某一本课本还是这样说的。
这是许多课本上的标准解答,在传统上来讲也是正确的。
由于交换机只需要查看 二层数据帧 的头部即可决策转发地址,策略十分简单,可以直接通过硬件芯片实现相应功能,所以可以做到廉价高速,被大量应用在接入层。
而路由器由于需要处理跨网络的连接,必须在接收到完整的 IP数据包 后才能转发数据,路由协议又比较复杂,所以只能使用软件的方式实现相应的功能,要达到高性能只能付出更高的价格。
另外,由于二层转发只需要查看 帧头部 即可开始转发,也使得 (二层)交换机 有了一项独门功夫:直通转发。简单说就是只接收数据帧头部就开始转发,从而达到更高的性能。
==== 从 转发模式 的角度来划分:
Tips: 这里只讨论三层(多层)交换机,二层同上一条
交换机
硬件处理交换 (转发) 过程
一次路由(寻路),多次交换(转发)
路由器
软件处理交换 (转发) 过程
一次路由(寻路),一次交换(转发)
// 据说也有纯软件转发的三层交换机,暂不讨论
虽然上面写的是软/硬件的区别,实际上更多的是工作模式上的区别:
三层(多层)交换机并非纯硬件工作,而是有单独的路由引擎,但是路由引擎并非一直工作,而是在第一次通信的时候通过路由引擎查询路由表,建立转发表,之后的数据不再经过路由引擎,而是通过与二层类似的交换引擎进行转发。
由于工作内容简单,转发引擎可以使用专门的硬件芯片来达到廉价高性能。
而路由器对每一个数据包都进行路由查询,占用大量资源,所以寻路效率较低,
由于路由协议复杂,无法通过纯硬件芯片处理,造成大量数据转发时性能比不上三层(多层)交换机。
Tips: 事实上路由器方面也有类似的,例如思科快速转发机制(CEF-Cisco Express Forwarding)
也正是工作模式上的差异,造成了他们在实际应用时的一些区别:
三层(多层)交换机的路由引擎较弱,相比路由器支持的路由协议有限。
同样由于三层(多层)交换机的路由引擎较弱,且转发表有限,不适合复杂的多网络互联。
因为并不是每一个包都会经过路由引擎,三层(多层)交换机的路由策略功能较弱。
三层(多层)交换机更适合网络结构简单,交换数据量大的情景下使用(例如小型网络的汇聚层)
路由器更适合复杂的多网络互联的核心交换区域。
……