MAC(Media AccessControl,介质访问控制)地址,也叫硬件地址,长度是48比特(6字节),由16进制的数字组成,分为前24位和后24位:
- 前24位叫做组织唯一标志符(Organizationally Unique Identifier,即OUI),是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家。
- 后24位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的。
MAC地址对应于OSI参考模型的第二层数据链路层,工作在数据链路层的交换机维护着计算机MAC地址和自身端口的数据库,交换机根据收到的数据帧中的“目的MAC地址”字段来转发数据帧。
其中第1字节的第8Bit(如图中00-50-BA-...对应的00000000-01010000-10111010-...,加粗字体的Bit)标识这个地址是组播地址还是单播地址。这是由以太网的传输协议高字节先传,但每一字节内低位先传的特性所决定的,见IEEE 802.3 3.2.3 Address fields: “The firstbit (LSB) shall be used in the Destination Address field as an address typedesignation bit to identify the Destination Address either as an individual oras a group address. If this bit is 0, it shall indicate that the address fieldcontains an individual address. If this bit is 1, it shall indicate that theaddress field contains a group address that identifies none, one or more, orall of the stations connected to the LAN. In the Source Address field, thefirst bit is reserved and set to 0.”。事实上这传输的顺序为000000000000101001011101...“The first bit (LSB)”即是前言的第8Bit。
网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。
也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一定是全球唯一的。比如,著名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(除了管这个外还管别的)(IEEE)(IEEE:电气和电子工程师协会)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。
形象地说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。
以太网的地址为48位,由ieee统一分配给网卡制造商,每个网卡的地址都必须是全球唯一的。共6个字节的长度
字节 5 4 3 2 1 0
位 47。。40 39。。32 31。。24 23。。16 15。。8 7。。0
例子 08 00 09 A0 4A B1
我们需要注意的是以太网地址的第40位是组播地址的标志位:
位 47。。33 32 31。。24 23。。0
制造厂商标识 组播标志位 制造厂商标识 系列号
共6个字节,其中前面3个字节(除了第40位),组成制造厂商的标识,每个制造厂商的前3个字节是不同的,如果两个网卡的前面3个字节是一样的,那么这个卡是同一个公司制造的。同时通过该3个字节就可以反过来知道这个卡是哪个厂制造的。后面3个字节为系列号,由制造厂商给自己生产的网卡分配一个号码,不同网卡的号码必须不同, 网卡地址的制造厂商的3个字节的标识中,例如上面的08:00:09 ,080009 是惠普公司的标识,表示这个卡是惠普公司制造的。3个字节的第一个字节,必须为偶数,上面的08是一个偶数,是因为第32位,就是第一个字节的最低位是组播标识,必须为0。
以下
X0:XX:XX:XX:XX:XX
X2:XX:XX:XX:XX:XX
X4:XX:XX:XX:XX:XX
X6:XX:XX:XX:XX:XX
X8:XX:XX:XX:XX:XX
XA:XX:XX:XX:XX:XX
XC:XX:XX:XX:XX:XX
XE:XX:XX:XX:XX:XX
为合法的以太网网卡地址。上面的X代表0-F中的任一个。如果你不是购买网卡,而是自己购买芯片制造,那么地址怎么办?可以自己使用一个还没有被ieee分配的厂商编号就可以了。就算是使用已经分配的厂商编号也没有不可,只要你能保证在你使用的局域网内,任何两个网卡的地址不一样就可以了。
地址 FF:FF:FF:FF:FF:FF 为广播地址,只能用在目的地址段,不能作为源地址段。目的地址为广播地址的数据包,可以被一个局域网内的所有网卡接收到。
地址
X1:XX:XX:XX:XX:XX
X3:XX:XX:XX:XX:XX
X5:XX:XX:XX:XX:XX
X7:XX:XX:XX:XX:XX
X9:XX:XX:XX:XX:XX
XB:XX:XX:XX:XX:XX
XD:XX:XX:XX:XX:XX
XF:XX:XX:XX:XX:XX
为组播地址,只能作为目的地址,不能作为源地址。组播地址可以被支持该组播地址的一组网卡接收到。组播地址主要用在视频广播,远程唤醒(通过发一个特殊的数据包使网卡产生一个中断信号,启动电脑),游戏(多个人在局域网里联机打游戏)里等。
以下是一些具体的组播地址:
地址 范围
01:00:5E:00:00:00---01:00:5E:7F:FF:FF 用于ip地址的组播
其他组播地址跟tcp/ip无关,不做介绍。
网卡可以接收以下3种地址的数据包:
第一种 目的地址跟自己的网卡地址是一样的数据包
第二种 目的地址为FF:FF:FF:FF:FF:FF广播地址的数据包
第三种 目的地址为跟自己的组播地址范围相同的数据包
//========================================
那么在以太网的应用当中,如果你希望你的数据包只发给一个网卡,目的地址用对方的网卡地址
如果你想把数据包发给所有的网卡,目的地址用广播地址
如果你想把数据包发给一组网卡,目的地址用组播地址。