链路层:MAC 地址
禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取!
MAC 地址
硬件地址
在局域网中,并不是主机或路由器具有链路层地址,而是它们的适配器(网络接口)具有链路层地址。适配器本来是在主机箱内插入一块网络接口板,但是现在的计算机主板上都嵌入了适配器。计算机与外界局域网的通信就是通过适配器进行的,要做到这一点,适配器需要具备以下功能:
- 数据进行串行/并行传输的转换。
- 对数据进行缓存。
- 在计算机的操作系统安装设备驱动程序。
- 实现以太网协议。
硬件地址又称为物理地址或 MAC 地址,硬件地址存在于适配器的 ROM 中。IEEE 802 标准所说的“地址”严格地讲应当是每一个站的“名字”或标识符,它规定 MAC 地址字段可采用 6 字节(48位)或 2 字节(16 位)这两种中的一种。
适配器可能是由不同地区的不同公司生产的,怎么保证没有适配器具有相同的 MAC 地址呢?IEEE 的注册管理机构对 MAC 地址空间进行管理,他们负责向厂家分配地址字段 6 个字节中的前三个字节 (即高位 24 位),称为组织唯一标识符OUI。地址字段 6 个字节中的后三个字节 (即低位 24 位) 由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。一个地址块可以生成 2^24 个不同的地址,这种 48 位地址称为 MAC-48,它的通用名称是 EUI-48。生产适配器时,6 字节的 MAC 地址已被固化在适配器的 ROM,因此 MAC 地址也叫做硬件地址 (hardware address)或物理地址。
IEEE 规定地址字段的第一字节的最低位为 I/G 位,IEEE 只分配地址字段前三个字节中的 23 位。。当 I/G位 = 0 时地址字段表示一个单站地址,当 I/G位 = 1 时表示组地址,用来进行多播。当 I/G 位分别为 0 和 1 时,一个地址块可分别生成 223 个单个站地址和 223 个组地址。所有 48 位都为 1 时为广播地址,只能作为目的地址使用。
IEEE 把地址字段第一字节的最低第 2 位规定为 G/L 位(以太网几乎不管这个位)。当 G/L位 = 0 时是全球管理(保证在全球没有相同的地址),厂商向 IEEE 购买的 OUI 都属于全球管理。当 G/L位 = 1 时是本地管理,这时用户可任意分配网络上的地址。
适配器检查 MAC 地址
适配器具有过滤功能,适配器从网络上每收到一个 MAC 帧时,就首先用硬件检查 MAC 帧中的 MAC 地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。“发往本站的帧”包括以下三种帧:
- 单播帧(一对一):收到的帧的 MAC 地址与本站的硬件地址相同;
- 广播帧(一对全体):发送给本局域网上所有站点的帧(全 1);
- 多播帧(一对多):发送给本局域网上一部分站点的帧。
所有的适配器都至少能够识别前两种帧,即能够识别单播地址和广播地址,有的适配器可用编程方法识别多播地址,只有目的地址才能使用广播地址和多播地址。以太网适配器还可以以混杂方式 (promiscuous mode) 工作,以该方式运行的以太网适配器只要“听到”有帧在以太网上传输就都接收下来。
MAC 帧的格式
常用的以太网 MAC 帧格式有 DIX Ethernet V2 标准和 IEEE 的 802.3 标准,最常用的 MAC 帧是以太网 V2 的格式。
以太网 V2
以太网 V2 的格式有 5 个字段,目的地址、源地址字段有 6 字节。类型字段 2 字节,类型字段用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。第四个字段是数据字段,长度在 46 ~ 1500 字节(最小长度 64 字节 - 18 字节的首部和尾部 = 数据字段的最小长度 46字节)。最后一个字段是帧检验序列 FCS 字段,长度是 4 字节。
当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的 MAC 帧长不小于 64 字节。
当一个站刚开始接收 MAC 帧时,若适配器时钟未与到达的比特流达成同步时,帧的接收就有可能出错。因此为了达到比特同步,在传输媒体上实际传送的要比 MAC 帧还多 8 个字节。在帧的前面插入(硬件生成)的 8 字节中,第一个字段共 7 个字节是前同步码,用来迅速实现 MAC 帧的比特同步。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。
无效的 MAC 帧
出现以下情况之一的帧,即为无效的 MAC 帧:
- 数据字段的长度与长度字段的值不一致;
- 帧的长度不是整数个字节;
- 用收到的帧检验序列 FCS 查出有差错;
- 数据字段的长度不在 46 ~ 1500 字节之间(有效的 MAC 帧长度为 64 ~ 1518 字节之间)。
帧间最小间隔
因为以太网传送帧时,各帧之间必须有一定间隔,因此接收端只需要找打帧开始定界符,其后面到达的比特流就都属于一个 MAC 帧。由此可见,以太网并不需要结束定界符。帧间最小间隔为 9.6 us,相当于 96 bit 的发送时间。一个站在检测到总线开始空闲后,还要等待 9.6 us 才能再次发送数据。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
IEEE 802.3 MAC 帧格式
与以太网V2 MAC 帧格式相似,区别在于:
- IEEE 802.3 规定的 MAC 帧的第三个字段是“长度 / 类型”。当这个字段值大于 0x0600 时(相当于十进制的 1536),就表示“类型”,这样的帧和以太网 V2 MAC 帧完全一样。当这个字段值小于 0x0600 时才表示“长度”。
- 当“长度/类型”字段值小于 0x0600 时,数据字段必须装入上面的逻辑链路控制 LLC 子层的 LLC 帧。
IP 地址与硬件地址
IP 地址与硬件地址是不同的地址,简单地说 MAC 地址决定下一跳,IP 地址决定终点在哪。从层次的角度看,硬件地址(或物理地址)是数据链路层和物理层使用的地址。IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)。
发送数据时,数据从高层下到低层,然后再到通信链路上传输。使用 IP 地址的数据报到达数据链路层时,就被封装为 MAC 帧。
在 IP 层抽象的互联网上只能看到 IP 数据报,图中的 IP1 → IP2 表示从源地址 IP1 到目的地址 IP2 ,两个路由器的 IP 地址并不出现在 IP 数据报的首部中。 对于路由器而言,路由器只根据目的站的 IP 地址的网络号进行路由选择。 在具体的物理网络的链路层中,只能看见 MAC 帧而看不见 IP 数据报。
IP 层抽象的互联网屏蔽了下层很复杂的细节。在抽象的网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或主机和路由器之间的通信。
参考资料
《计算机网络(第七版)》 谢希仁 著,电子工业出版社
《计算机网络 自顶向下方法》 [美] James F.Kurose,Keith W.Ross 著,陈鸣 译,机械工业出版社