# MAC 地址、IP 地址以及 ARP 协议

MAC 地址是以太网的 MAC 子层所使用的地址(数据链路层)

IP 地址是 TCP/IP 体系结构网际层所使用的地址(网际层)

ARP 协议属于 TCP/IP 体系结构的网际层,其作用是已知设备所分配到的 IP 地址,使用 ARP 协议可以通过该 IP 地址获取到设备的 MAC 地址(网际层)

尽管 IP 地址和 ARP 协议属于 TCP/IP 体系结构的网际层 (而不属于数据链路层),但是它们与 MAC 地址存在一定的关系,并且日常网络应用都离不开 MAC 地址、IP 地址与 ARP 协议

# MAC 地址

使用点对点信道的数据链路层不需要使用地址

使用广播信道的数据链路层必须使用地址来区分各主机

当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址

在每个主机发送的帧中必须携带标识发送主机和接收主机的地址,由于这类地址是用于媒体接入控制 MAC,因此这类地址被称为 MAC 地址

  • MAC 地址一般被固化在网卡 (网卡适配器) 的电可擦可编程只读存储器 EEPROM 中,因此 MAC 地址也被称为硬件地址
  • MAC 地址有时也被称为物理地址。请注意:这并不意味着 MAC 地址属于网络体系结构中的物理层

一般情况下,用户主机会包含两个网络适配器:有线局域网卡(有线网卡)和无线局域网卡(无线网卡),每个网络适配器都有一个全球唯一的 MAC 地址。而交换机和路由器往往拥有更多的网络接口,所以会有更多的 MAC 地址。综上所述,严格来说,MAC 地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识

IEEE 802 局域网的 MAC 地址格式

一共 48 个比特

前三个字节:组织唯一标识符 OUI(由 IEEE 的注册管理结构分配)

后三个字节:网络接口标识符(由获得 OUI 的厂商自行随意分配)

扩展的唯一标识符 EUI,对于 48 比特 MAC 地址,可称为 EUI-48

MAC 地址标准表示方法:将每 4 个比特写成一个十六进制字符,一共 12 个十六进制字符,每两个字符一组,共六组,组之间用短线连接

其他表示方法:将组之间的短线改为冒号;还可以将四个字符分为一组,组之间用点链接

例如:00-0C-CF-93-8C-92;00:0C:CF:93:8C:92;000C.CF93.8C92

第一字节位分布:b7,b6,b5,b4,b3,b2,b1,b0

第一字节 b1 位第一字节的 b0 位MAC 地址类型地址数据占比总地址数量
00全球管理,单播地址,厂商生产网络设备(网卡,交换机,路由器)时固化四分之一2 的 48 次方
01全球管理,多播地址,标准网络设备所支持的多播地址,用于特定功能四分之一2 的 48 次方
10本地管理,单播地址,由网络管理员分配,覆盖网络接口的全球管理单播地址四分之一2 的 48 次方
11本地管理,多播地址,用户对主机的软件配置,以表明主机属于哪些多播组。注意:剩余 46 比特全为 1 时,就是 MAC 地址 48 比特全为 1,就是广播地址四分之一2 的 48 次方

对于使用 EUI-48 空间的应用程序,IEEE 的目标寿命为 100 年(直到 2080),但鼓励采用 EUI-64 作为替代

IEEE 802 局域网的 MAC 地址发送顺序

字节位分布:b7,b6,b5,b4,b3,b2,b1,b0

字节发送顺序:第一字节 -> 第六字节

字节内的比特发送顺序:b0->b7

例题

下列选项中,不属于物理层接口规范定义范畴的是(C)

A. 接口形状 B. 引脚功能 C. 物理地址 D. 信号电平

解析:物理地址即 MAC 地址属于数据链路层

# IP 地址

IP 地址是因特网上主机和路由器所使用的地址,用于标识两部分信息:

  • 网络编号:标识因特网上数以百万计的网络
  • 主机编号:标识同一网络上不同主机(或各路由各接口)

MAC 地址不具备区分不同网络的功能

  • 如果只是一个单独的网络,不接入因特网,可以只使用 MAC 地址(这不是一般用户的应用方式)
  • 如果主机所在的网络都要接入因特网,则 IP 地址和 MAC 地址都需要使用

从网络体系结构看 IP 地址与 MAC 地址

网络层首部应封装了源 IP 地址和目的 IP 地址

数据链路层首部应封装了源 MAC 地址和目的 MAC 地址

数据包转发过程中 IP 地址与 MAC 地址的变化

数据包的转发 -

数据包转发过程中源 IP 地址和目的 IP 地址保持不变

数据包转发过程中源 MAC 地址和目的 MAC 地址逐个链路 (或逐个网络) 改变

习题

习题

解析:由于源 MAC 地址和目的 MAC 地址在逐个链路中传输时都需要改变,因此,H1 发出的目的 MAC 地址应该为 00-1a-2b-3c-4d-51,H2 收到的源 MAC 地址应该为 00-a1-b2-c3-d4-61,选 D

# ARP 协议

  • 源主机在自己的 ARP 高速缓存表中查找目的主机的 IP 地址所对应的 MAC 地址,若找到了,则可以封装 MAC 帧进行发送;若找不到,则发送 ARP 请求(封装在广播 MAC 帧中)
  • 目的主机收到 ARP 请求后,将源主机的 IP 地址与 MAC 地址记录到自己的 ARP 高速缓存中,然后给源主机发送 ARP 响应(封装在单播 MAC 帧中),ARP 响应中包含有目的主机的 IP 地址和 MAC 地址
  • 源主机收到 ARP 响应后,将目的主机的 IP 地址与 MAC 地址记录到自己的 ARP 高速缓存表中,然后就可以封装之前想发送的 MAC 帧并发送给目的主机
  • ARP 的作用范围:逐段链路或逐个网络使用
  • 除 ARP 请求和响应外,ARP 还有其他类型的报文(例如用于检查 IP 地址冲突的 "无故 ARP、免费 ARP")
  • ARP 没有安全验证机制,存在 ARP 欺骗(攻击)问题

注意:

  • ARP 高速缓存的记录分为两种类型
    • 动态:自动获取,生命周期默认为两分钟
    • 静态:手工设置,不同操作系统下生命周期不同,例如系统重启后不存在或系统重启后依然有效

# 集线器与交换机区别

  • 早期的总线型以太网(淘汰)
  • 使用双绞线和集线器 HUB 的星型以太网
    • 使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是 CSMA/CD 协议
    • 集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测(由各站的网卡检测)
    • 集线器一般都有少量的容错能力和网络管理功能
  • 使用集线器 HUB 在物理层扩展以太网

集线器扩展以太网

  • 以太网交换机
    • 以太网交换机通常由多个接口。每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式(发送帧和接受帧可以同时进行)
    • 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用 CSMA/CD 协议)
    • 以太网交换机一般都具有多种速率的接口
    • 以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的 MAC 地址所对应的接口号,然后通过该接口转发帧
    • 以太网交换机是一种即插即用设备,其内部的帧交换表时通过自学习算法自动地逐渐建立起来的
    • 帧有两种转发方式
      • 存储转发
      • 直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查帧是否有差错)

对比集线器和交换机

  • 集线器 HUB
    • 早期以太网的互连设备
    • 工作在 OSI 体系结构的物理层
    • 对接收到的信号进行放大、转发
    • 使用集线器作为互联网的以太网仍属于共享总线式以太网、集线器互连起来的所有主机共享总线带宽,属于同一个碰撞域和广播域
  • 交换机 SWITCH
    • 目前以太网使用最广泛的互连设备
    • 工作在 OSI 体系结构的数据链路层(也包括物理层)
    • 根据 MAC 地址对帧进行转发
    • 使用交换机作为互连设备的以太网,称为交换机以太网。交换机可以根据 MAC 地址过滤帧,即隔离碰撞域
    • 交换机的每个接口是一个独立的碰撞域
    • 交换机隔离碰撞域但不隔离广播域(VLAN 除外)

# 以太网交换机自学习和转发帧的流程

以太网工作在数据链路层(也包括物理层)

以太网交换机收到帧后,在帧交换表中查找帧的目的 MAC 地址所对应的接口号,然后通过该接口转发帧

以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表时空的,随着网络中各主机的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表

以太网交换机自学习和转发帧的流程:

  • 收到帧后进行登记,登记的内容为帧的源 MAC 地址及进入交换机的接口号
  • 根据帧的目的 MAC 地址和交换机的帧交换表对帧进行转发,有以下三种情况:
    • 明确转发:交换机知道应当从哪个 (或哪些) 接口转发该帧(单播、多播、广播)
    • 盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)
    • 明确丢弃:交换机知道不应该转发该帧,将其丢弃
  • 帧交换表的每条记录都有自己的有效时间,到期删除,原因如下:
    • 交换机的接口改接了另一台主机
    • 主机更换了网卡

习题

习题

解析:

交换机 1交换机 2交换机 3
B->C登记,盲目转发(B,2)登记,盲目转发(B,2)登记,盲目转发(B,2)
D->A登记,盲目转发(D,4)登记,盲目转发(D,1)登记,盲目转发(D,2)
G->D收不到登记(G,4),明确转发 1登记(G,4),明确转发 2
E->H登记(E,4),盲目转发登记(E,3),盲目转发登记(E,2),盲目转发
C->B登记(C,3),明确转发 2收不到收不到
F->G收不到收不到登记(F,1),明确转发 4

2、以太网交换机进行转发决策时使用的 PDU 地址是(A)

A. 明确物理地址 B. 目的 IP 地址 C. 源物理地址 D. 源 IP 地址

解析:PDU 是协议数据单元,它是计算机网络体系结构中对等实体间逻辑通信的对象。以太网交换机工作在数据链路层(也包括物理层),它接收并转发的 PDU 通常称为帧。以太网交换机收到帧后,在帧交换表中查找帧的目的 MAC 地址所对应的接口号,然后通过该接口转发帧

3、

习题

解析:选 B,第一次发送数据帧到达交换机时,交换机中没有目的信息,因此盲目转发,转发给 2 和 3,并进行登记,当发送的确认帧到达交换机时,由于上一次已经登记,因此,交换机知道把确认帧转发给端口 1。

# 以太网交换机的生成树协议 STP

  • 如何提高以太网的可靠性

  • 添加冗余链路可以提高以太网的可靠性

  • 但是,冗余链路也会带来负面效应 —— 形成网络环路

  • 网络环路会带来以下问题:

    • 广播风暴
      • 大量消耗网络资源,使得网络无法正常转发其他数据帧
    • 主机收到重复的广播帧
      • 大量消耗主机资源
    • 交换机的帧交换表震荡(漂移)
  • 以太网交换机使用生成树协议 STP,可以增加冗余链路来提高网络可靠性的同时又避免网络环境带来的各种问题

    • 不论交换机之间采用怎样的物理连接,交换机能够自动计算并构造一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树形的(无逻辑环路)
    • 最终生成的树形逻辑拓扑要确保连通整个网络
    • 当首次连接交换机或网络拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算

# 虚拟局域网 VLAN 概述

  • 以太网交换机工作在数据链路层(也包括物理层)

  • 使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域

  • 随着交换式以太网规模的扩大,广播域相应扩大

  • 巨大的广播域会带来很多弊端

    • 广播风暴:浪费网络资源和各主机的 CPU 资源
    • 难以管理和维护
    • 潜在的安全问题

网络中会频繁出现广播信息

  • TCP/IP 协议栈中的很多协议都会使用广播
    • 地址解析协议 ARP(已知 IP 地址,找出其相应的 MAC 地址)
    • 路由信息协议 RIP(一种小型的内部路由协议)
    • 动态主机配置协议 DHCP(用于自动配置 IP 地址)
  • NetBEUI:Windows 下使用的广播型协议
  • IPX/SPX:Novell 网络的协议栈
  • Apple Talk:Apple 公司的网络协议栈

分割广播域的方法:

  • 使用路由器可以隔离广播域
    • 路由器的成本较高
    • 虚拟局域网 VLAN 技术应运而生

虚拟局域网 VLAN 是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求

# 虚拟局域网 VLAN 的实现机制

# IEEE 802.1Q 帧

IEEE 802.1Q 帧对以太网的 MAC 帧格式进行了扩展,插入了 4 字节的 VLAN 标记

VLAN 标记的最后 12 比特称为 VLAN 标识符 VID,它唯一地标志了以太网帧属于哪一个 VLAN

  • VID 的取值范围为 0-4095
  • 0 和 4095 都不用来表示 VLAN,因此用于表示 VLAN 的 VID 的有效取值范围是 1-4094

802.1Q 帧是由交换机来处理的,而不是用户主机来处理的

  • 当交换机收到普通的以太网帧时,会将其插入 4 字节的 VLAN 标记转变为 802.1Q 帧,简称 "打标签"
  • 当交换机转发 802.1Q 帧时,可能会删除其 4 字节 VLAN 标记转变为普通以太网帧,简称 "去标签"

# 交换机的端口类型

交换机的端口类型有以下三种

  • Access

    • Access 端口一般用于连接用户计算机
    • Access 端口只能属于一个 VLAN
    • Access 端口的 PVID 值与端口所属 VLAN 的 ID 想通(默认为 1)
    • Access 端口接收处理方法:
      • 一般只接受 "未打标签" 的普通以太网 MAC 帧,根据接收的端口 PVID 给帧 "打标签",即插入 4 字节 VLAN 标记字段,字段中的 VID 取值与端口的 PVID 取值相等
    • Access 端口发送处理方法:
      • 若帧中 VID 与端口的 PVID 相等,则 "去标签" 并转发该帧,否则不转发
  • Trunk

    • Trunk 端口一般用于交换机之间或交换机与路由器之间的互连

    • Trunk 端口可以属于多个 VLAN

    • 用户可以设置 Trunk 端口的 PVID 值。默认情况下,Trunk 端口的 PVID 值为 1

    • Trunk 端口发送处理方法:

      • 对 VID 等于 PVID 的帧,"去标签" 再转发
      • 对 VID 不等于 PVID 的帧,直接转发
    • Trunk 端口接收处理方法:

      • 接收 "未打标签" 的帧,根据接收帧的端口的 PVID 给帧 "打标签",即插入 4 字节 VLAN 标记字段,字段中的 VID 取值与端口的 PVID 取值相等
      • 接收 "已打标签" 的帧
  • Hybrid

    • Hybrid 端口即可用于交换机之间或交换机与路由器之间的互连(同 Trunk 端口),也可用于交换机与用户计算机之间的互连(同 Access 端口)
    • Hybrid 端口可以属于多个 VLAN(同 Trunk 端口)
    • 用户可以设置 Hybrid 端口的 PVID 值,默认情况下,Hybrid 端口的 PVID 值为 1(同 Trunk 端口)
    • Hybrid 端口发送处理方法(与 Trunk 端口不同)
      • 查看帧的 VID 是否在端口的 "去标签" 列表中:
      • 若存在,则 "去标签" 后再转发
      • 若不存在,则直接转发
    • Hybrid 端口接收处理方法(同 Trunk 端口):
      • 接收 "未打标签" 的帧,根据接收帧的端口的 PVID 给帧 "打标签",即插入 4 字节 VLAN 标记字段,字段中的 VID 取值与端口的 PVID 取值相等
      • 接收 "已打标签" 的帧

交换机各端口的缺省 VLAN ID

  • 在思科交换机上称为本征 VLAN
  • 在华为交换机上称为 Port VLAN ID,即端口 VLAN ID,简记为 PVID

习题

习题

解析:

第一题:

  • A 发送广播帧,被 G,H 错误接收,被 B 正确接收
  • A 发送广播帧,被 B,E,F 正确接收
  • A 发送广播帧,被 B,E,F 正确接收
  • A 发送广播帧,被 B,E,F 正确接收

第二题:

  • C 发送广播帧,被 D,G,H 正确接收

  • C 发送广播帧,被 E,F 错误接收,被 D 正确接收

  • C 发送广播帧,被 D,G,H 正确接收

  • C 发送广播帧,被 D,G,H 正确接收

结论:互连的 Trunk 端口的 PVID 值不等,可能会造成转发错误