浅谈MAC

来源:互联网 发布:hive sql union all 编辑:程序博客网 时间:2024/05/16 09:21

什么是MAC地址、什么是MAC表、什么是MAC帧?

1)MAC地址:MAC地址又称为硬件地址或者物理地址,指的是局域网中的每一台计算机中固化在适配器的ROM中的地址,第二层数据链路层则负责 MAC地址,一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的地址。MAC地址由48位二进制(6个字节)组成,采用十六进制表示。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”,后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。一个地址块可以生成224个不同的地址。MAC地址实际上就是适配器地址或适配器标识符EUI-48。IEEE规定字段的第一个字节的低位为I/G位,I/G位为0表示单个站地址,为1表示组地址(可以用于多播,组播)。如:00-50-BA-…..(00000000-01010000-10111010-…)第一段最后一位就是I/G。

2)MAC表:在二层进行数据转发工作时,需要点对点将数据发送到指定的端口位置,所以在二层的MAC表就是记录MAC地址和端口号的对应关系,得知目标的MAC地址而得知从哪一个端口送出报文数据。MAC地址表的老化的默认时间是300秒。

3)MAC帧:以太网MAC帧格式有2种,分别是DIX Ethernet V2 标准和IEEE 的 802.3 标准,最常用的 MAC 帧是以太网V2的格式。MAC帧是数据链路层的协议数据单元,它有帧头,数据部分,帧尾三个部分,其具体的帧结构见后面内容。

MAC地址查看

电脑:开始→运行→CMD 输入ipconfig/all 即可查看。
手机:打开设置,找到“关于手机”,状态信息栏中会有显示手机的MAC地址。

MAC表的运用

交换机二层网络连接
当主机B和主机C通信时,这时候所有的MAC表都是空的,通信的过程是怎样的:
1、首先主机B会发送数据包(数据包中的源MAC是自己,目的MAC是主机C)到主机C,Switch1接收到该数据包的时候同时会做记录,将主机B的MAC地址和对应的端口存到MAC表中;
2、Switch1在自己的MAC表没有发现目标MAC对应的端口信息,则Switch1会将这数据包以广播的形式发到除了收到数据包的那个端口以外的所有端口(即二层广播,也叫泛洪);
3、主机A收到该数据包发现目的MAC不是自己则丢弃不管;
4、Switch2收到这个数据包的时候发现自己的MAC表中也没有,同样的方式广播到每一个端口;
5、这时候主机C接受到该数据包,则给予回应;
6、这时候的Switch2收到回应,则将主机C的MAC地址和发送的端口对应起立,建立了又一个MAC表;

MAC帧

以太网V2的MAC帧
MAC帧由5个字段组成:
第一字段为目的地址:要到达的目的MAC地址,在数目包到达另一个局域网时MAC地址是会变化的;
第二字段为源地址:本地的MAC地址;
第三字段类型:标志上一层使用的协议类型,如0x0800为TCP协议,0x0806为ARP协议。
第四字段为数据:数据的长度为46~1500字节,因为帧长度最小为64,减去前(6+6+2)和后4(FCS校验码),剩下46字节;
第五字段为FCS:使用CRC校验的校验码;

MAC帧前之前还有前同步码和帧还是定界符,所以说一帧最大长度可以达到1526(=7+1+6+6+2+1500+4)字节,实际上抓包只能达到1514字节,因为在MAC帧到网卡的时候已经去掉了前字节和后面的校验码。