1 MAC层的硬件地址
硬件地址又称为物理地址或者MAC地址。IEEE 802标准为局域网规定了一种48位的全球地址用来区分每一个主机,该地址也就是我们常说的MAC地址,固化在适配器中的ROM中。
IEEE的注册管理机构RA负责局域网全球地址的管理,发负责分配地址字段六个字节中的前三个字节,世界上任意一个要生产局域网网络适配器的厂家都必须要向IEEE购买着三个字节的构成的字段号码,字段号码正式名称称为:组织唯一标识符OUI,通常也叫做公司标识符,例如华为公司生产的适配器的MAC地址前三个字节为:00-14-22(华为设备),00-16-3E(华为无线设备),所有使用华为适配器的设备在查看他们的MAC地址时,前三个字节都是这两个其中的一个。地址字段的后面三个字节则是由厂家自行定义的。称为扩展标识符。用这种方式得到的48位全球地址不会重读,这也就是我们平时说的:MAC地址是全球唯一的,不会重复。
2 MAC帧的格式
常用的MAC帧格式有两种,一种是以太网V2标准,另一种是IEEE的802.3标准,目前我们在日常生活中常用的是以太网V2标准。我们这里也只学习以太网V2标准的MAC地址帧格式。
前2个字段分别是6字节长度的目的地址和源地址字段,用来记录源MAC地址ihe目的MAC地址;
第3个字段为2字节长度的类型,用来表支上一层使用的什么协议,以便把收到的MAC帧的数据上交给上一层的协议,例如:当类型字段为0x0800,则表示上层使用的IP协议,当为0x8137,则表示该帧是由Novell IPX发过来的;
第4个字段是数据字段,通常长度在46到1500字节之间,46为最小长度64-18字节的首、尾字节;
最后一个字节为FCS,帧检验序列,用来进行冗余检测。
举个栗子:下图为真实的数据包截图我们一起来看下
第1个字段:54 16 51 56 6f de,表示目的地址,我要访问的MAC地址
第2个字段:10 63 c8 c5 a2 73,表示源地址,也就是我本低电脑MAC
第3个字段:08 00,表示使用的IP协议(IPv4)
第4个字段:45 00 00 28 22 f0 40 00 80 06 39 15 c0 a8 6f 61 1b dd 52 e4 9c dd 01 bb 34 4c 44 f9 00 eb ca 47 50 10 01 fe 2b 00 00,表示IP层数据
我们能看见,没有第5个字段FCS,这是因为当网卡(网络适配器)在收到一个数据帧时,首先要进行的就是FCS冗余性检测,当检测通过后,才会接受,检测不通过则丢弃;我所使用的抓包软件:wireshark,只能抓取检测通过的数据流。
3 无效的MAC帧
IEEE规定出现下列以下情况的即为无效的MAC帧:
(1)帧的长度不是整数个字节;
(2)用收到的帧检验序列FCS查出有差错;
(3)收到的帧的MAC客户端数据字段的长度不在46-1500字节之间。也就是说有效的MAC帧长度为64-1518字节之间。(帧头和帧尾长度一共18字节)。
对于检查出的无效MAC帧直接丢弃,不负责重传丢弃的帧。