什么是MAC层?
为了适应早期的多种局域网标准并存的局面,IEEE802委员会将数据链路层划分为两个子层:LLC(Logical Link Control)层和MAC(Medium Access Control)层。但随着TCP/IP和以太网的发展,现在局域网中LLC层已经消失了,只剩下MAC层,所以可以认为MAC层就是局域网中的数据链路(子)层。
什么是硬件地址?
硬件地址也叫物理地址,其实就是MAC地址(使用于MAC层、MAC帧),固定在适配器的ROM中,是局域网中适配器的唯一地址(主机可以有多个适配器从而有多个MAC地址,但一个适配器只有一个)
如何保证MAC地址的唯一性?
MAC地址由48位二进制组成,由IEEE的注册管理机构RA(Registration Authority)全球统一管理,其负责分配MAC地址的前三个字节(即高位24位),生产(MAC地址全球唯一的)局域网适配器的厂家必须向RA购买由这三个字节组成的号(组织唯一标识符OUI),其余三个字节由厂商自行指派(称为扩展标识符)。
如果不要求适配器的MAC地址全球唯一,也可以不向RA购买OUI,详细见书
什么是MAC帧?
MAC帧即以太网中MAC层(几乎等同于数据链路层)使用的帧,其有两种标准,一种为DIX Ethernet V2,一种为IEEE 802.3,但是后者少见,所以讨论DIX Ethernet V2标准下的MAC帧。LLC帧已经消失。
MAC帧的格式是怎样的?
首先强调的是以太网发送的数据都是采用的曼彻斯特编码,而曼彻斯特编码中每一个码元的中间都会有电压的变化(码元1是从低到高,码元0是从高到低),所以MAC帧中可以不需要帧结束定界符(发送方发送完一帧后就不发送码元,这样线路中就没了电压变化从而接收方知道帧已结束)。
MAC帧前面插入了8个字节的数据,其中最后一个字节是帧开始定界符(10101011),而前7个字节只是010101……,用途是给接收方缓冲时间来实现位同步(曼彻斯特编码的效果)。
MAC帧的开始是目的MAC地址和源MAC地址,通过目的地址的设定可以实现点对点的通信。
源MAC地址后的2个字节为类型段,类型段的值说明了网络上一层使用的协议类型,比如类型段为0x0800时表示上一层使用IP协议,数据部分为IP数据报。
数据部分之后是帧检验序列FCS
MAC帧的“字节填充”如何被接收方识别?
当帧长度低于规定限度时,需要对数据部分进行字节填充,但填充了多少字节并不归MAC层管理,而是由网络层负责,比如网络层使用IP协议时,IP数据报首部就有数据报长度的信息,因此可以知道数据报的真实长度,从而去掉字节填充部分。
※以太网的发展
早期的以太网采用的是总线结构,但随着传输媒介的进步,在20世纪90年代以太网发展为了使用集线器的星型结构
在星型以太网中,集线器扮演着很重要的角色,其特点是:
1.有许多接口来与不同主机相连
2.集线器工作在物理层,其接口只是简单的“转发”,收到什么就转发什么
由于集线器的第二个特点,所以从逻辑上来说星型以太网依然是总线型(广播信道)的,因此依然可能发生“碰撞”,也就是依然需要使用CSMA/CD协议。
如何扩展以太网?
扩展以太网就是令以太网的覆盖范围变大,要想实现这一点可以从两个层次去做,一个是物理层,另一个则是数据链路层。
在物理层扩展以太网的方法可概括为两个方法:
1.使用更好的传输媒介或转发器(如果铜线距离太长,信号会严重衰弱)
2.使用多个集线器
使用多个集线器来将原先独立的网络连接在一起是有一定缺点的:
1.原先独立的网络是一个个独立的碰撞域,但连接到一起后是一个更大的碰撞域了
2.由于集线器只是转发数据,所以无法将不同速率的以太网连接起来,即使连接起来也只能按最低速率的那个以太网的速率工作
在数据链路层扩展以太网的做法要更优于上述方法,也是目前常用的方法:
使用以太网交换机来替代集线器。
以太网交换机依然有多个接口用于连接不同主机,但其功能不仅是转发,还可以缓存帧、确定帧目的地、同时连通多个接口等。
因为交换机可以实现“确定帧目的地”,所以其可以实现真正的点对点通信,再加上缓存帧、同时连通多个接口的功能,所以使用交换机的以太网不会再出现“碰撞”现象(相当于交换机处理了这个现象),也就不再需要CSMA/CD协议。
※以太网交换机“确定帧目的地”的功能是通过查询交换机中所存的“转发表”来实现的,转发表中记录了不同目的MAC地址对应哪个接口,转发表的建立是“自学习”的,从而大大提升了交换机的方便性(自学习见书)
为什么使用交换机后以太网依然叫以太网?
虽然使用交换机后以太网不再有碰撞,也不再使用其标志性的CSMA/CD协议,但其使用的帧格式依然是一样的,所以依然叫做以太网。
什么是虚拟局域网VLAN?
先见图
图中物理上处于同一局域网的是三楼的(A4,B3,C3),二楼的(A3,B2,C2),一楼的(A1,A2,B1,C1)
但可能出于工作需要,用户们希望逻辑上分为三个工作组(局域网):(A4,A3,A2,A1),(B1,B2,B3),(C1,C2,C3)
此时逻辑上的局域网就称为“虚拟局域网”
如何实现虚拟局域网中的主机广播的信息只在虚拟局域网中可接收?
实现这一点的办法就是在MAC帧中扩展一个字段VLAN标记,交换机根据VLAN标记字段来确定该信息属于哪个VLAN,从而确定向哪些接口转发。
该方法其实就是IEEE 802.3ac标准,其定义了以太网帧的扩展,插入了VLAN表及字段的帧为802.1Q帧
交换机判断一个帧是MAC帧还是802.1Q帧的方法是检查源地址字段的后两个字节的内容,如果为0x8100则说明是802.1Q帧。图中VID为VLAN ID,用于说明属于哪个VLAN,局域网中的各VLAN的ID值唯一。
什么是PPPoE?
PPPoE就是PPP over Ethernet,也就是“运行在以太网上的PPP”,诞生的原因是人们希望通过以太网来进行宽带接入,而以太网的帧格式不能满足这一点,所以人们想出了将PPP帧再封装进以太网帧中的做法,也就是PPPoE。
FTTx宽带接入技术都使用了PPPoE
判断自己是否是通过PPPoE的以太网宽带接入的简单方法是看自己的电脑上网是否需要调制解调器,如果使用PPPoE则不需要,因为和自己同一局域网的用户统一接入到一个以太网交换机上,该交换机会扮演“调制解调器”的角色