网络基础: 交换机和路由器的区别
2018-01-25 计算机网络
前言
本文中提到的交换机指的是 “二层交换机”,路由器指的是 “三层路由器”,三层交换机 (或者带有路由功能的交换设备等) 不在本文讨论范围内。
工作层次
- 交换机主要工作在数据链路层,主要用于组建局域网
- 路由器工作在网络层,主要用于将交换机组建的局域网相互连接起来,或者接入互联网
有个很形象的比喻:
交换机是小区看门大爷,路由器是快递小哥。
交换机
交换机是基于以太网设计的,实现了特定网络内的 数据帧 转发。
路由器
路由器是基于 IP 设计的,实现了不同网络之间的 数据包 转发。
路由器在转发网络包时,需要在前面加上 Mac 头部 (将 IP 报文包装进二层数据帧),委托数据链路层去传输数据 (传输到下一个路由器)。
创建 Mac 报文头部时,从路由表中查找出下一个路由器的 IP 地址,并通过 ARP 查询出对应的 Mac 地址,然后将 Mac 地址写入 Mac 报文头部中,表示 IP 对以太网的委托只是将包传输到下一个路由器就行了。
当包到达下一个路由器后,下一个路由器又会重新委托以太网将包传输到再下一个路由器,以此类推,包最终到达 IP 目标地址。
转发依据
- 交换机转发所依据的对象是 Mac 地址
- 路由转发所依据的对象是 IP 地址
Mac 地址通常是硬件实现的,由网卡生产商来分配,一般情况下不可修改。
IP 地址是在软件中实现的,描述的是设备所在的网络,通常由网络管理员或系统自动分配。
转发表的维护方式
- 交换机维护 Mac 表
- 路由器维护路由表
交换机对 Mac 地址表的维护是数据包转发操作中的一个 (顺带的) 步骤。
路由器对路由表的维护和数据包的转发操作相互独立的,也就是说,在转发数据包的过程中不需要对路由表的内容进行维护。
对路由表进行维护的方法有几种,大体上可分为以下两类。
- 由人手动维护路由记录
- 根据路由协议机制,通过路由器之间的信息交换,由路由器自行维护路由表的记录
转发规则
- 交换机在地址表中只匹配完全一致的记录
- 路由器只匹配网络号部分,忽略主机号部分
- 交换机不会校验包中的目标 Mac 地址,全部收下做转发
- 路由器会校验包中的目标 Mac 地址是不是自己,如果是的话存入内存缓冲区,否则丢弃
- 交换机匹配不到时广播消息
- 路由器匹配不到时丢弃消息
如果交换机在 Mac 地址表里找不到转发端口时,会选择广播。
如果路由器在路由表中无法找到匹配的记录,会丢弃这个包,并通过 ICMP 消息 (Destination Unreachable) 告知发送方。
两者的处理机制完全不同,原因在于网络规模的大小。
交换机连接的网络最多也就是几千台设备的规模,这个规模并不大。如果只有几千台设备,遇到不知道应该转发到哪里的包,交换机可以将包发送到所有的端口上,虽然这个方法很简单粗暴,但不会引发什么问题。
然而,路由器工作的网络环境就是互联网,它的规模是远远大于以太网的,全世界所有的设备都连接在互联网上,在如此庞大的网络中,如果将不知道应该转发到哪里的包发送到整个网络上,那就会产生大量的网络包,造成网络拥塞。因此,路由器遇到不知道该转发到哪里的包,就会直接丢弃。
端口和 Mac 地址
交换机只是将数据包转发到正确的端口,它自己并不会成为数据包的 (源) 发送方、(目标) 接收方。
路由器的各个端口都具有 Mac 地址和 IP 地址,因此能够成为数据链路层/以太网的发送方和接收方。从这个意义上来说,它和计算机的网卡是一样的。当转发数据包时,首先路由器端口会接收发给自己的以太网包,然后查询转发目标,再由相应的端口作为发送方将以太网包发送出去。
附录
前文中提到了交换机和路由器的几个区别,那么两者之间有哪些相同点呢?
路由器和交换机不考虑请求包和响应包之间的关联,而是将它们作为独立的包来对待,因此请求和响应有可能通过不同的路由来传输,具体走哪条路由,是由路由器的路由表和交换机的地址表中的配置来决定的。
服务器向客户端返回的响应消息 和 客户端向服务器发送的请求消息 不一定通过相同的路由传输。
三层交换机与路由器的比较
传统路由器的路由选择功能、分组转发以及管理功能等均由 CP U处理,管理功能负载的增加,就会带来分组转发能力的下降。
L3 交换机改善了这一缺点,将硬件设备内部分离成两个区域,即以路由选择、管理功能为主的控制平面,和以数据转发功能为主的数据平面,从而实现了能够高速转发分组的系统架构。