Bootstrap

4.2.2 以太网技术(二) MAC地址和MAC帧的格式

4.2.2 以太网技术(二) MAC地址和MAC帧的格式

前面我们提出了两个问题中第一个是在总线式的广播信道中我们如何实现计算机之间一对一的通信?为了在总线上实现一对一的通信我们可以使每一台计算机都拥有一个和其他的计算机不同的地址,也就是说每一台计算机的地址是唯一的。

一、MAC地址

在以太网上采用的地址被称之为MAC地址,这种以太网的MAC地址为扩展的唯一标识符一共是四十八个比特位就是我们所说的六个字节,前三个字节是IEEE的注册管理结构负责给不同生产网卡的厂商所分配的代码,也称之为机构唯一标识符,后三个字节也就是第24位,是由各厂商自行指派给生产的适配器接口,我们称之为扩展标识符,并通过特定比特位设置来区分全局管理和本地地址的管理以及来区分单播地址和组播地址,MAC地址是厂商在生产时已经烧写好的,一般是不能改动的,如果一个计算机的网卡坏掉了,那么我们在更换网卡之后这台计算机的MAC地址就会变化。MAC地址

我们可以使用ipconfig命令查询当前计算机的MAC地址,网卡对网络上每收到一个MAC帧首先用硬件检查MAC帧中的MAC地址,如果是发往本站的MAC帧就接收下来再进行相应的后续处理,否则将数据帧丢弃不再进行其他处理,这样做的好处是不再浪费主机或者处理器、内存的资源。

二、发往本站的帧

这里我们要解释一下什么叫做发往本站的帧,发往本站的帧包括以下三种帧:

  1. 单播(unicast)帧(一对一),在48个比特位的MAC地址都是一致的,如此一来网卡就会把数据帧接收下来。
  2. 广播(broadcast)帧(一对全体),只要是某一个站点能够收到数据帧就应该真正的去接受这个数据。
  3. 多播(multicast)帧(一对多),某一个站点收到这样的数据帧后就要进行判定自己的网卡是否在这个多播组当中,如果是就接收数据,如果不在多播组当中就直接把数据帧丢弃。
三、MAC帧的格式

前面我们已经提到一共有两种局域网MAC帧的结构,一种是以太网的DIX第二版本定义的MAC帧结构,另外一种是IEEE 802.3或ISO8802-3标准定义的MAC帧结构,这两种帧结构定义的主要区别在于地址字段的长度或者长度类型这个字段有一点点小小的区别,在这里我们以DIX的第二版本的MAC帧结构进行分析。MAC地址

  1. 从图中我们可以看到在帧结构中有目的地址(destination)、源地址(source)这两个字段各占六个字节,这里面就是单独存放的MAC地址,目的地址就指明了期望发往的目的地,可以是单播、多播、广播的地址都是可以的,源地址则是指发送数据帧的节点的地址,当然如果这是一个应答帧时这个目的地址和源地址需要位置对调。

  2. 第二个字段是类型字段,占2个字节,在DIX第二版本中规定了数据的类型字段是用来标识该帧的上一层使用的是什么协议,以便把收到的MAC帧交给上一层相应的协议当中,这个字段的用法就相当于查表了,如当前的类型字段的值是0X0800(16进制)就代表了上层携带的是IP数据报的内容,如果类型字段值是

    Ethertype ( 十六进制 ) 协议
    0x0000 - 0x05DC IEEE 802.3 长度
    0x0101 – 0x01FF 实验
    0x0600 XEROX NS IDP
    0x0660 0x0661 DLOG
    0x0800 网际协议(IP)
    0x0801 X.75 Internet
    0x0802 NBS Internet
    0x0803 ECMA Internet
    0x0804 Chaosnet
    0x0805 X.25 Level 3
    0x0806 地址解析协议(ARP : Address Resolution Protocol)
    0x0808 帧中继 ARP (Frame Relay ARP) [RFC1701]
    0x6559 原始帧中继(Raw Frame Relay) [RFC1701]
    0x8035 动态 DARP (DRARP:Dynamic RARP) 反向地址解析协议(RARP:Reverse Address Resolution Protocol)
    0x8037 Novell Netware IPX
    0x809B EtherTalk
    0x80D5 IBM SNA Services over Ethernet
    0x 80F 3 AppleTalk 地址解析协议(AARP:AppleTalk Address Resolution Protocol)
    0x8100 以太网自动保护开关(EAPS:Ethernet Automatic Protection Switching)
    0x8137 因特网包交换(IPX:Internet Packet Exchange)
    0x 814C 简单网络管理协议(SNMP:Simple Network Management Protocol)
    0x86DD 网际协议v6 (IPv6,Internet Protocol version 6)
    0x880B 点对点协议(PPP:Point-to-Point Protocol)
    0x 880C 通用交换管理协议(GSMP:General Switch Management Protocol)
    0x8847 多协议标签交换(单播) MPLS:Multi-Protocol Label Switching )
    0x8848 多协议标签交换(组播)(MPLS, Multi-Protocol Label Switching )
    0x8863 以太网上的 PPP(发现阶段)(PPPoE:PPP Over Ethernet )
    0x8864 以太网上的 PPP(PPP 会话阶段) (PPPoE,PPP Over Ethernet)
    0x88BB 轻量级访问点协议(LWAPP:Light Weight Access Point Protocol)
    0x88CC 链接层发现协议(LLDP:Link Layer Discovery Protocol)
    0x8E88 局域网上的 EAP(EAPOL:EAP over LAN)
    0x9000 配置测试协议(Loopback)
    0x9100 VLAN 标签协议标识符(VLAN Tag Protocol Identifier)
    0x9200 VLAN 标签协议标识符(VLAN Tag Protocol Identifier)
    0xFFFF 保留

  3. 下一个字段就是用户的数据(data)字段,这个字段的长度是从46个字节到1500个字节之间,它存放的是高层的协议数据单元里面真正的内容,即我们的数据内容。网络层的IP数据报整个作为用户数据字段的内容,所以IP数据报在以太网中的长度是有限制的,这个我们在网络层中也会进行讲解,也就是说我们后面会学习到以太网中的最大传送单元MTU的值不能超过1500个字节,数据报如果要经过MTU值小于数据包长度的网络时要把数据拆解成若干个较小的分片。当数据字段的内容如果小于46个字节时,还需要进行相应的填充,当用户数据字段长度小于46个字节时,此时必须采用填充无用字符的方式,来保证有效帧长度不能小于46个字节。

  4. 最后一个字段是帧校验序列FCS,占4个字节,当采用循环冗余码的方式来校验的话此时的生成多项式是CRC-32,当传输媒体的误码率是 1 0 − 8 10^{-8} 108时,我们使用MAC子层循环冗余码的校验方式可以使未检测到的差错小于 1 0 − 14 10^{-14} 1014

  5. 为了达到比特的同步,在传输媒体上实际传送时比MAC帧还要多了8个字节,在帧的前面插入的8个字节的第一个字段称之为前导符字段,这个字段占7个字节,它的格式很简单就是图中所示1010…就是我们二进制的1和0的交替,一共出现了7个字节,前导符的作用是为了接收方快速的进入同步的状态,以便做好接收数据帧的准备;第二个字段称之为帧开始标志符,占1个字节,一个字节的8个比特位是10101011,在这里要注意的是最后两个比特位是11,在前导符的后面一单是出现了10101011之后就表示后面的比特开始就是一个数据帧的真正的开始,也就是前面说的目的MAC地址(destination)就开始了。

这样我们就解决了在总线式的广播信道中如何实现计算机之间一对一通信的第一个关键技术问题,在掌握了帧格式和工作方式之后我们后续就可以学习以太网的工作原理了。

四、小结

我们重点掌握MAC地址的概念以及在局域网中寻址的重要性,掌握以太网的帧格式,这个是以太网数据链路层传输的基本单位,下一节我们将通过具体的网络传输实例强化对帧结构的理解和应用。

;