路由器和交换机的区别

587 阅读4分钟

交换机

  1. 计算机的⽹卡本身具有 MAC 地址,并通过核对收到的包的接收⽅ MAC 地址判断是不是发给⾃⼰的,如果不是发给⾃⼰的则丢弃;相对地,交换机的端⼝不核对接收⽅ MAC 地址,⽽是直接接收所有的包并存放到缓冲区中。因此,和⽹卡不同,交换机的端⼝不具有 MAC 地址。
  2. 将包存⼊缓冲区后,接下来需要查询⼀下这个包的接收⽅ MAC 地址是否已经在 MAC 地址表中有记录了。 举个例⼦,如果收到的包的接收⽅ MAC 地址为 00-02-B3-1C-9C-F9 ,则与图中表中的第 3 ⾏匹配,根据端⼝列的信息,可知这个地址位于 3 号端⼝上,然后就可以通过交换电路将包发送到相应的端⼝了。所以,交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端⼝。
  1. 如果MAC 地址表找不到指定的 MAC 地址,这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备⼀段时间没有⼯作导致地址被从地址表中删除了。这种情况下,交换机⽆法判断应该把包转发到哪个端⼝,只能将包转发到除了源端⼝之外的所有端⼝上,⽆论该设备连接在哪个端⼝上都能收到这个包
  2. 缓存:发送了包之后⽬标设备会作出响应,只要返回了响应包,交换机就可以将它的地址写⼊ MAC 地址表,下次也就不需要把包发到所有端⼝了。

路由器

⽹络包经过交换机之后,现在到达了路由器,并在此被转发到下⼀个路由器或⽬标设备。这⼀步转发的⼯作原理和交换机类似,也是通过查表判断包转发的⽬标。

8.1 路由器和交换机的区别

因为路由器是基于 IP 设计的,俗称三层⽹络设备,路由器的各个端⼝都具有 MAC 地址和 IP 地址;⽽交换机是基于以太⽹设计的,俗称⼆层⽹络设备,交换机的端⼝不具有 MAC 地址

8.2 路由器的包发收操作

  1. 路由器的端⼝具有 MAC 地址,因此它就能够成为以太⽹的发送⽅和接收⽅;同时还具有 IP 地址,从这个意义上来说,它和计算机的⽹卡是⼀样的。当转发包时,⾸先路由器端⼝会接收发给⾃⼰的以太⽹包,然后路由表查询转发⽬标,再由相应的端⼝作为发送⽅将以太⽹包发送出去
  2. 检查数据包MAC 头部中的接收⽅ MAC 地址,看看是不是发给⾃⼰的包,如果是就放到接收缓冲区中,否则就丢弃这个包。总的来说,路由器的端⼝都具有 MAC 地址,只接收与⾃身地址匹配的包,遇到不匹配的包则直接丢弃。

8.3 查路由表确定输出端⼝

如上图,举个例子假设地址为 10.10.1.101 的计算机要向地址为 192.168.1.100 的服务器发送⼀个包

  1. 这个包先到达图中的路由器。判断转发⽬标的第⼀步,就是根据包的接收⽅ IP 地址查询路由表中的⽬标地址栏,以找到相匹配的记录。每个条⽬的⼦⽹掩码和 192.168.1.100 IP 做 & 与运算后,得到的结果与对应条⽬的⽬标地址进⾏匹配,如果匹配就会作为候选转发⽬标,如果不匹配就继续与下个条⽬进⾏路由匹配。
  2. 实在找不到匹配路由时,就会选择默认路由,路由表中⼦⽹掩码为 0.0.0.0 的记录表示「默认路由」。

8.4 路由器的发送操作

  1. ⾸先,我们需要根据路由表的⽹关列判断对⽅的地址。如果⽹关是⼀个 IP 地址,则这个IP 地址就是我们要转发到的⽬标地址,还未抵达终点,还需继续需要路由器转发。如果⽹关为空,则 IP 头部中的接收⽅ IP 地址就是要转发到的⽬标地址,也是就终于找到 IP 包头⾥的⽬标地址了,说明已抵达终点。
  2. 知道对⽅的 IP 地址之后,接下来需要通过 ARP 协议根据 IP 地址查询 MAC 地址,并将查询的结果作为接收⽅ MAC 地址。路由器也有 ARP 缓存,因此⾸先会在 ARP 缓存中查询,如果找不到则发送 ARP 查询请求。发送出去的⽹络包会通过交换机到达下⼀个路由器。经过层层转发之后,⽹络包就到达了最终的⽬的地。