交换机与路由器工作原理

前言

这篇博客的主要目的是为了聊一下路由器和交换机,以及它们各自的工作原理和对应的两张表。

交换机

1.简单介绍交换机

这里的交换机主要讲的是 二层交换机。它工作在OSI七层模型中的第二层,也就是数据链路层。因此就不得不说一下数据链路层的功能:

  • 数据链路的建立维护拆除
  • 帧包装帧传输帧同步
  • 帧的差错恢复
  • 流量控制

交换机主要有四个知识点需要掌握,其中分别是:

  • 交换机的初始状态
  • mac地址学习
  • 广播未知数据帧
  • 接收方回应

其实上面四个知识点后三个就是指代了交换机的工作原理

2.mac地址表

对于每一个交换机来说,为了能让局域网内的主机能够互相通信,其中都会有一张 mac地址表,这张表中纪录了mac地址,接口,以及对应的vlan,其中交换机的初始状态是空,它的mac地址表的内容是在不断地学习中进行补充的,而不是与生俱来。一个mac地址总共是48bit,工作中通常使用16进制表示,所以一般是HH:HH:HH:HH:HH:HH格式,但是也有这种HHHH:HHHH:HHHH,其中冒号可以用点分割,主要看不同的厂商。

3.交换机的工作原理

交换机的作用是组建局域网

在一个局域网内的两台主机通信前,源主机会向交换机发送一个单播报文,报文中包括源mac地址和目的mac地址,交换机拿到这个报文后,如果发现自己的mac地址表中没有这个源mac地址,会把源mac地址进行记录,然后寻找自己的mac地址表中是否有这个目的mac地址,如果有,就将报文直接单播丢给目的mac对应的主机,如果没有,就会将这个报文丢给这个局域中的所有主机,这个过程叫做 广播

此时,对于局域网中的所有主机来说,它们都会收到一个来自交换机的报文,如果它们自身的mac地址与目的mac地址不同,它们就会丢弃这个报文,如果相同,它就会给这个报文的源mac发送一个回应报文,此时的报文中,源mac变成了之前的目的mac,目的mac变成了之前的源mac。

结束了?没有!对于交换机中的mac地址表来说,它会先学习这个报文中的源mac地址,然后在mac表中找到目的mac(这个mac无论如何都是存在的,因为之前已经学习过了),将报文单播给目的mac对应的主机。

至此,整个过程才算结束,你明白了吗?

聪明如你,应该注意到了一个细节,在mac地址表进行学习时,并不是将源mac和目的mac都进行学习,而是只学习了一个源mac,这是因为对交换机来说,源mac能够将包发送给交换机,本身就说明有其对应的接口,而对于目的mac而言,未必就在这个局域网之中了,没有对应接口的情况下,纪录本身就毫无意义。

怎么样,很简单吧!

路由器

1.简单介绍路由器

路由器工作在OSI模型的第三层,网络层,路由器的功能是为了实现在不同局域网中主机之间的通信。

为了实现这个目的,路由器中引进的是路由表

2.路由表

路由表是在路由器中维护的路由条目的集合,通信时通过路由表进行路径选择。

路由表存储了接口信息和局域网标识(网络)信息,实际上包含了目标网段和自己的端口(或者下一跳地址)

路由表中的信息如何生成呢?

  1. 利用直连网络环境自动生成
  2. 利用手工配置方式(静态路由配置)
  3. 利用路由协议动态生成(动态路由配置)

3.路由及其路由类型

什么是路由?

路由不同于路由器,路由是指跨越从源主机到目标主机的一个互联网来转发数据包的一个过程。

路由类型

  • 直连路由:
  • 静态路由
  • 动态路由
  • 默认路由

路由优先级

直连》静态》动态》默认

4.路由器工作原理

对于两台主机的通信来说,无非是两种情况,一种属于同网段或者说是同局域网的通信,另一种则是不同局域网的通信

相同局域网的通信上面已经说过了,这里来说说不同局域网之间的通信。
交换机与路由器工作原理

让我们来看上面这幅图,左边是100网段的,右边是200网段

其中路由器0/0口配置的ip是192.168.100.1,0/1口配置的是192.168.200.1

这分别是两个网段的网络的网关

计算机上设置的默认网关实际上就是路由器上以太口的ip地址,如果局域网中的计算机需要与外界进行通信,只要把请求提交给路由器的以太口的就可以了,接下来的工作就将是路由器来完成。

此时由于路由器的两个接口都配置了ip地址并且**,路由表中就会产生直连路由项。如下:

交换机与路由器工作原理

所以对于此时来说,如果一个100网段的机器ping一个200网段的机器是可以ping通的

如图举个例子,当192.168.100.100给192.168.200.100请求通信,首先发送一个报文,其中源ip是192.168.100.100,目的ip是192.168.200.100,此时,还记得mac地址表中存放的一个vlan信息吗?经过mac地址表很轻易就能发现这是两个不同vlan的地址,也就是说,这是两个不同网段的通信。

判断完这一步,才能轮到路由器进行工作

于是,由于两个主机不在同一网段,主机最终将数据包发给了本网段的网关路由器,路由去判断目的ip的网段是否在路由表中,也即是说,100.100将数据包发给了100.1,从上面路由表的图中可以看到,路由表存在200网段的直连路由,于是,数据包通过0/1接口到达了200.100,同理200.100的回应报文以相反的途径和原理回到100.100,两个主机通信成功。

包发给了100.1,从上面路由表的图中可以看到,路由表存在200网段的直连路由,于是,数据包通过0/1接口到达了200.100,同理200.100的回应报文以相反的途径和原理回到100.100,两个主机通信成功。

这里需要注意的是,由于这里的两个网段连在一个路由器上,且配置了ip,因此是两方都连通的直连路由,如果是三个路由分割,自己配置静态ip,一定要足注意静态ip的来回性,要保证数据包有来有回,不然是无法进行通信的。