我:度娘度娘,交换机和路由器的区别是什么呢?
度娘:一个工作在第二层数据链路层,一个工作在第三层网络层。
我:哈?那工作在不同层会有什么区别?为什么要工作在不同层?
度娘:一个用于组建局域网,一个用于连接互联网。
我:哦......好像有点懂,那还有什么不同?
度娘:交换机没有MAC地址,路由器有MAC地址。
我:哈???交换机不是工作第二层,为什么没有MAC地址???
度娘:交换机中是MAC表,而路由器中是路由表。
我:???
0 前言
关于交换机和路由器的区别,百度谷歌都看了很多,但一直感觉是一知半解,似懂非懂,所以今天决定将这块知识点从底层进行一个详细梳理,毕竟这也是面试的超高频问题。不过,阅读本文需要至少明白TCP/IP四(五)层模型,明白网络包的数据帧结构。
这篇文章通过交换机和路由器的本身结构,一点点揭露了两者本质上的区别,在写交换机时,还感觉得心应手,每一句话前后都有很强的关联性,但是在写路由器的过程中,发现一旦涉及到ip网络层,相关联的东西有点多,导致的结果就是需要的东西越写越多,不写使得文章不能够通俗易懂,写了又使得文章的知识密度极具增大,复杂性增高,可读性变差。所以思前想后,决定先在这篇文章中的路由器部分粗略介绍部分涉及计算机内部的知识,有不懂的任何问题都可以在评论区提出,然后会在另一篇文章中进行详细的扩展阐述。
1. 集线器和交换机
1.1 起源
最初人们的通话方式如下图,就是简单的一根线,连接两个传话筒。这样声音就能通过这跟线从一边传到另一边。我们这样设计的目的是:将声音尽可能原样的传送到目的地。
但是上述的传话方式只能在两者之间传输,为了能够让更多的人可以听到,后来的通信方式设计成类似这样:
多人传声筒
其实这形式已经非常接近以太网最初的模样了,只不过以太网中的信号是以数据包的形式存在,数据包的最外层裹着一层又一层不同的包头。大致如下图:
扯远了,不过先要知道,集线器和交换机最初设计的目的是:将载有信息的网络包尽可能原样的转发到目的地。真正以太网最初的原型如下图(a)。通过一个主干线将所有的计算机连接起来,每个计算器通过收发器来接收和发送消息到主干线上。它最主要的特点就在于,任何一台计算机发送信息到主干线后,所有的计算机都能够接收到(这一点很重要在后续会经常提到)。不过这个形态有个缺点是,一旦主干线出现问题,所有计算机的通信便被中断无法进行。所以后来演变为图(b)的形态。它将主干线换成了中继式集线器,将收发器网线替换成了双绞线,其中中继式集线器就是我们常说的集线器。不过,虽然网络的结构发生了变化,但集线器依然保留着原有的特性,即一台计算机发送的信息会被所有的计算机设备接收。而一直到图(c),交换式集线器(也就是我们常说的交换机)的出现,才改变了信号发送给所有设备这一性质,能够实现将信号发送到特定设备中。具体是怎么实现特定发送的呢?后续再说,我们先看集线器。
以太网基本结构
1.2 集线器
集线器的内部构造如图左侧所示(看的人多的话图片后续会重新绘制):
集线器网卡连接图(注意左侧集线器内部结构)
集线器
网卡
在集线器中,基本就分为三部分,RJ-45接口,PHY模块,中继电路。其中RJ-45接口就是我们日常常见的网卡的水晶头接口,RJ-45接口和PHY模块通过不同的接线方式配合,使得RJ-45接口有的用来和计算机相连,有的用来和另一个集线器相连。其中RJ-45的作用就是用来连接网线,而PHY模块的作用是将网线上传过来的不同格式的电信号转换为通用的格式发给中继电路,或者将要发送的电信号转换为可在网线上传输的格式。