🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 以太网帧 ![](https://img.kancloud.cn/95/d5/95d5453c73587b5bbdee8e976615667d_1574x494.jpeg) 数据链路层接收来自网络层的IP数据报,通过一定的封装,让IP数据报能在数据链路层上传输。像这样,装好了的IP数据报,我们称之为以太网帧,也叫MAC帧。MAC帧由以下几个重要的部分组成: * **目的MAC地址**:MAC帧的目的地址占据6个字节,它标志了目标主机的地址。 * **源MAC地址**:和目的地址一样,源地址也占据6个字节,它标志的源主机的地址。 * **类型**:类型占据2个字节,它记录上层使用的协议0X0800表示IP协议。 * **数据部分**:数据部分自然是来自上层的IP数据报。 * **FCS**:FCS占据4个字节,它是用来进行差错检测的,如果一个MAC帧发生了错误,则不能发送到目的主机上。 ## 适配器 说到适配器,其实完全可联想一下生活中的适配器。比如我们给手机充电的时候需要有电源适配器,电源适配器无非就是转换的作用,或者作为一个载体,实现能量的转移。实际上,电脑里的适配器也是一样。结合下面这张图来理解: ![](https://img.kancloud.cn/29/a5/29a535b3587776bbbd2ca9d3fc24a24e_928x530.jpeg) 我们都知道,数据在外部媒介中的传输方式是串行传输,然而计算机处理内部指令的时候,用的是并行的方式。怎样把串行传输的数据转换成并行传输呢?这就需要适配器了。适配器就像是起到了桥梁的作用,通过它,就可以轻松实现数据传输方式的转换 ## CAM表 我们都知道交换机,交换机是一种多端口的网桥,在数据链路层使用MAC地址转发数据。在交换机类不实际存储以一张表,叫做CAM表。这张表记录了主机的MAC地址以及对应的接口,看看下面的这张图 ![](https://img.kancloud.cn/ce/4a/ce4aa5f539d3e9514fe9bf0b03bddf82_772x386.png) 有三台主机A,B,C和交换机连接在一起,最开始,CAM里没有存储任何信息。 突然有一天,主机A(源MAC)想要给主机B(目的MAC)发送消息。这个时候,交换机就会检查自己的CAM表里是否存储了主机A的信息,交换机一看没有A的信息,就把A的信息写进自己的CAM表里。现在,交换机的CAM表变成了这样: ![](https://img.kancloud.cn/99/ce/99ced643247ba6c43cf4febe8e20e6c7_1178x672.jpeg) 这个时候,交换机的CAM表里已经存储了主机A的信息,但是主机A却想要给主机B发送信息。这可怎么办呢?**首先**,交换机会检查自己的CAM表里是否存在B的信息,**如果存在**,就直接把信息转发给B。**如果不存在**,那又怎么办呢?犹豫了一下,交换机又有了一个想法,它把主机A发给主机B的消息以广播的形式发给了所有连在它身上的主机。主机C也收到了这条消息,但是主机C检查了一下目的地址,不是发给自己的,就果断丢弃了这条消息。主机B收到了这条消息后,同样也检查了收件人(目的地址),发现是给自己的消息,于是就收下了这条消息。之后,交换机就更新了自己的CAM表,上面增加了一条信息: ![](https://img.kancloud.cn/e5/38/e53819fba58d2e82db877444ad990044_1226x704.jpeg) 就这样,CAM表里存储了主机A,和主机B的信息。下一次,主机A想要给主机B发送信息的时候,交换机就不需要广播了。