如果大家坚持看到了这里,那么恭喜大家,已经进入网络世界的大门了,这篇文章开始为大家正式介绍网络世界。

上期回顾

上篇文章为大家介绍了 OSI 参考模型,OSI 参考模型自下而上分别是,物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。我们想要了解互联网,就必须按照模型顺序,自下而上理解每一层的功能。本篇文章会介绍最下面两层——物理层和数据链路层。

「二层」前面有什么

通过第一篇文章我们了解到,想要组网,首先要把计算机连接在一起,无论是使用有形的光纤、电缆或网线,还是使用电磁波,都一定要实现计算机物理层面的连接,这也就是我们上一篇所讲到的 OSI 参考模型中的物理层。它的作用就是负责物理连接和传输比特流。

比特流就是 010101010……这样的字符串,表示的是电路的开合。但电路的开合本身无意义,我们只有给这些电信号造一个密码本,就像摩斯电码那样,每组信号表示一个字母,这样才能翻译出来,以太网就干了这样的事情——规定解读方式。以太网规定解读方式后,就需要有专门的设备来解读信息,这就轮到以太网交换机上场了。

二层交换机的「二层」是什么意思?

以太网交换机主要工作在 OSI 参考模型的第二层,我们经常听到的二层交换机就是指这种工作在 OSI 参考模型第二层的交换机,而偶尔看到被谈起的三层交换机那就是工作在第三层的交换机啦。

那什么是交换机呢?前面我们说可以认为它是路由器接口的扩展, 换个角度它就是将多台电脑连接在一起的设备,三层交换机则用于更庞大的场景,有更复杂连接需求的情况了,我们这里暂不展开介绍。那交换机是如何将多台电脑连在一起并进行数据传输的呢?接下来就和大家聊聊,交换机如何在 OSI 参考模型的第二层进行数据传输。

发送方和接受者是如何互相识别

说传输之前先说说信息的发送方和接受者是如何互相识别的。我们能上网,少不了一种叫做「网卡」的东西,每块网卡在出场的时候都会烧录一个独一无二的身份标识,它有一个名字叫做「MAC 地址」,中文名叫物理地址,一共有 48 位,如下图所示,

MAC 地址

前 24 位为制造商编号,后 24 位是产品序列号,制造商编号由 IEEE(电子与电气工程师协会)统一分配,所以制造商编号是需要去申请的哦,我们通过查询制造商编号就可以知道是哪个厂商生产的啦。MAC 地址具有全球唯一性,是设备的身份证号码。

理论上通过 MAC 地址就可以找到世界上的任何一张网卡,但现实世界中这么做是行不通的。我先介绍下另外两个概念——冲突域和广播域,相信大家就明白了。

交换机的一个端口就是一个冲突域

其实咱们的以太网是一种需要竞争的介质访问方法,网络中的所有主机共享带宽如果有一台以上的主机同时发送消息的话就会产生冲突,互相干扰,导致这些设备都必须重传。

大家想象一下这样的场景,我们在一个会议室里开会,会议规则是:没有主持人调度,以竞争的方式发言,谁先抢到谁先说,但是只要有一个人发言,其他人都必须处于聆听状态。如果有两个及两个以上的人同时发言,就会互相干扰,那就重说一遍。如果这个会议室里面人多了,产生冲突的概率就非常高,这个会产生冲突的区域就叫做冲突域

交换机的出现解决了这个问题,交换机的一个端口就是一个冲突域,而且交换机端口很多,完全可以一个端口只接一台设备,这就意味着一个冲突域里就只有一个设备,再也没人和他竞争,这时候就避免了冲突,用上面的例子来说,这时候每个人都处于一个单独的小房间,想要发消息,先找主持人(也就是交换机),主持人(交换机)会负责所有信息的传递

广播:向网络中所有主机发送数据

发送数据的时候如果不知道目标在哪儿怎么办?这时候会向网络中所有主机发送数据,主机会查看是不是找自己的,如果是就接收,如果不是就会丢弃。这个操作就叫广播,广播所能到达的地方就叫广播域交换机并不能够隔离广播,而且还会转发和产生广播

如果这个广播域中主机非常多,就会产生很多的广播数据,但真正需要接受数据的只有某一台或者某几台特定的主机,如此庞大的广播会耗尽网络资源,使得正常的数据无法发送,这也就是我们为什么不能够只使用 MAC 地址去通信的原因。如果两个主机不在同一个子网当中,是无法通过这种方式找到对方的,MAC 地址只能标识所属厂商,并不能标识网络。这就导致了网络层的出现,「子网」、「网络层」等词汇会在下一篇文章为大家介绍。

交换机 MAC 地址数据库建立过程

当有了交换机后,数据的传输过程也略有不一样了。前面说到,被交换机连接的所有主机,发送数据前会先发给交换机。交换机里面会存着一张表,记录着如何处理来自主机的数据,我们假设已知目的 MAC 地址,交换机刚刚上电。

第一步,交换机上电完成后,表是空的,如图一所示。

图一

第二步,这时候 X1 开始发数据了,目的地为 X2,交换机在自己的表中记录下来,X1 对应这个我的 1 口,如图二所示。

图二

第三步,同时交换机会向 1 口(收到数据的端口)以外的所有端口发送该数据,这个过程就是泛洪,如图三所示。

图三

第四步,X2 收到数据后如果给 X1 回复,那回复的源地址是 X2,目的地址是 X1,当然也是需要先发送到交换机上的,交换机会根据这个回复在自己的 MAC 地址表中记录下端口和 MAC 地址的对应关系,如果是不需要回复的数据包,交换机通过不断重复步骤 1-3 也可以完成这条表项的记录。

图四

第五步,如果网络中没有人符合这个 MAC 地址,那这个数据包依旧会被丢弃。

以上就是交换机 MAC 数据库的建立过程,MAC 数据库建立好了之后就可以点对点通信,节约资源也提高效率。如果没有新设备加入,网络结构没有变更,交换机会一直按照这个对应关系转发数据。

二层交换机如何寻找 MAC 地址

上面说交换机 MAC 地址学习的时候,大家是不是很奇怪,为什么一开始就知道对方的 MAC 地址了呢?其实这都是 ARP 的功劳。

为了方便大家理解,我先告诉大家,网络层中用 IP 地址来标识主机,而数据链路层使用的是 MAC 地址,当数据从网络层到数据链路层后,我们需要一种协议通过 IP 地址获取到 MAC 地址,负责将 IP 地址解析为 MAC 地址的叫做 ARP(Address Resolution Protocol),地址解析协议。每个主机中都会存一张 ARP 表,记录着 IP 地址和 MAC 地址的对应关系,方便主机进行数据传输。

地址解析协议就是使用广播的一个典型例子,在网络中想要通信一定是知道对方 IP 地址的,我们以这个为前提,当一台主机想要访问另一台主机的时候,并不知道目的 MAC 地址是多少,就会向整个网络里面发送消息,消息中会有目的 IP。网络里面所有主机包括网关都可以收到这个消息,大家会对比自己的 IP 地址和消息中的目的 IP 是否一致,只有一致的主机才能接收这个消息,目的主机收到后会给源主机回复自己的 MAC 地址。双方都会在自己的 ARP 表中记录下对应关系,下次就可以直接通过 MAC 地址发送数据啦。


这篇文章和大家说了在 OSI 参考模型的第二层是如何进行数据传输的,但也和大家引入了一些新的问题,接下来的文章会带大家了解,小伙伴是如何通过网络找到你的,Wi-Fi 是什么,最后会给大家讲一个真实的组网案例。

扩展阅读

入网指南 01 | 一文读懂你身边的「网络」

入网指南 02 | 当你发消息的时候,发生了什么