HUB
- HUB即集线器,有多个端口,完全工作在物理层
- HUB采用的是广播模式,会将自己收到的每一个字节,都复制到其他端口
- 广播模式存在问题,需要解决三个问题(在数据链路层解决)
- 数据包发给谁,由谁接收
- MAC地址
- 数据包谁先发,谁后发
- MAC子层,以太网为随机接入协议
- 如果发送时出现错误,应该怎么处理
- 以太网数据包的最后有CRC校验
- 数据包发给谁,由谁接收
数据链路层
- 数据链路层分成LLC(Logical Link Control)子层和MAC(Media Access Control)子层
- LLC子层实现数据链路层与硬件无关的功能,比如流量控制、差错恢复等
- MAC子层提供LLC子层和物理层之间的接口
- MAC地址解决了第一个问题:数据包发给谁,由谁接收
- MAC子层解决了第二个问题:数据包谁先发,谁后发的问题,学名为多路访问
- 可用方式:信道划分、轮流协议、随机接入协议(以太网)
- 这个与MAC地址没什么关系
数据包格式

- 开头为目标MAC地址和源MAC地址
- 接下来是类型,大部分的类型是IP数据包(0x0800),IP数据包里面会包含TCP、UDP、HTTP等内容(层层封装)
- 数据包中有目标MAC地址,数据包在链路上广播,目标MAC地址的网卡发现这个包是给它的,就会把数据包接收进来
- 然后打开数据包,发现是IP数据包,并且IP地址也是自己,再打开TCP包,发现目标端口是80,Nginx在监听80端口
- 于是将请求提交给Nginx,Nginx会返回一个网页,然后将网页发回请求的机器,经过层层封装,最后到了MAC层
- 原先的源MAC地址变成了目标MAC地址
- 对于以太网,数据包的最后是CRC(循环冗余校验,采用XOR异或算法)
- 计算整个数据包在发送过程中是否出现错误,这解决第三个问题
ARP协议
ARP:Address Resolution Protocol,已知IP地址,求MAC地址


交换机
- 交换机是二层设备,工作在数据链路层
- 学习过程
- 交换机有4个口,分别是A、B、C、D,有两台机器,MAC地址为MAC1和MAC2,MAC1连着A口,MAC2连着B口
- MAC1机器将数据包发送给MAC2机器,当数据包到达交换机的时候,并不知道MAC2机器连着交换机的哪个端口
- 因此,只能将该数据包转发给B、C、D口,但是交换机会记住MAC1连着A口
- 以后有数据包要发送给MAC1,直接转发到A口即可
- 交换机学习的结果叫转发表,有过期时间