计算机网络•自顶向下方法:链路层编址、ARP协议、以太网
链路层编址
MAC地址(Media Access Control Address):
-
MAC地址是链路层编址的标准,广泛应用于以太网、Wi-Fi等网络技术。
-
它是一个48位的地址,通常用12个十六进制数字表示,格式如下:
00:1A:2B:3C:4D:5E
-
MAC地址分为两部分:
- 前24位(前6个十六进制字符):表示制造商识别码(OUI,Organizationally Unique Identifier),由IEEE分配给设备制造商
- 后24位(后6个十六进制字符):表示该设备在其制造商分配的MAC地址池中的唯一序号
每个适配器有一个MAC地址
MAC地址类型
帧的目的MAC地址有三种类型:
- 单播地址:适配器的MAC地址,地址最高比特为0
- 多播地址:标识一个多播组的逻辑地址,地址最高比特为1
- 广播地址:
ff:ff:ff:ff:ff:ff
网络适配器仅将发送给本节点的帧交给主机:
- 目的地址为适配器MAC地址的单播帧
- 所有广播帧
- 指定接收的多播帧
若将适配器设置成混收模式,适配器将收到的所有帧交给主机
MAC地址和IP地址
世界上先有MAC地址,后有IP地址
在TCP/IP(互联网)出现之前,只使用MAC地址在单个的物理网络中寻址
为什么有了MAC地址,还需要IP地址?
- MAC地址是扁平结构的,无法在因特网范围内快速确定接口的位置
- IP地址是有结构的,可以在因特网范围内快速确定网络接口的位置
IP地址与MAC地址没有固定的关联关系:
- MAC地址与网卡绑定,与节点在哪个子网无关
- IP地址与所在子网有关,与网卡没有关系
ARP协议(地址解析协议,Address Resolution Protocol)
为什么需要ARP协议
在计算机网络中,尤其是在以太网(Ethernet)或其他局域网中,通信需要依赖两种地址类型:
- IP地址:用于网络层的通信,帮助设备跨越不同的网络进行定位(如
192.168.1.1
)。 - MAC地址:用于数据链路层的通信,帮助设备在本地网络内唯一标识,并决定数据帧的目标(如
00:1A:2B:3C:4D:5E
)。
这两种地址是不同层次的地址,IP地址工作在网络层,而MAC地址则工作在数据链路层。虽然在网络中,设备通常知道目标设备的IP地址,但当设备需要通过数据链路层进行通信时,它需要知道目标设备的MAC地址。ARP协议正是为了解决这种IP地址与MAC地址之间的映射问题。
ARP报文格式
- 硬件类型:硬件接口类型。对于以太网,该值为“1”
- 协议类型:高层协议地址类型。对于IP地址,该值为 ( 0800 ) 16 (0800)_{16} (0800)16
- 操作:ARP请求为1,ARP响应为2
- 在以太网上,ARP报文封装在以太帧中传输
地址解析的过程
A想知道B的MAC地址:
-
A构造一个ARP请求,在发送方字段填入自己的MAC地址和IP地址,在目标字段填入B的IP地址
-
A将ARP请求封装在广播帧中发送
-
每个收到ARP请求的节点用目标IP地址与自己的IP地址比较,地址相符的节点进行响应(B响应)
-
B构造一个ARP响应,交换发送方与目标字段内容,在发送方硬件地址字段填入自己的MAC地址,修改操作字段为2
-
B将ARP响应封装在单播帧(目的地址为A的MAC地址)中发送
ARP缓存(ARP Cache)
ARP缓存是网络设备(如路由器、计算机等)用来存储已解析的IP地址与MAC地址映射的临时表。缓存存储着设备最近查询到的IP地址和相应的MAC地址,从而避免频繁地发送ARP请求,减少网络负载和延迟。
- 每个节点在内存中维护一个地址映射(绑定)表,称ARP缓存
- 每次发送数据报前先查询ARP缓存,若找不到则发送ARP请求,并在收到ARP响应后将地址映射缓存起来
- ARP缓存中的信息,在超时(一般为15~20分钟)后删除
主动学习(Proactive Learning)
主动学习是一种提高ARP效率的策略,指的是设备通过主动查询网络中其他设备的ARP信息,而不是被动等待ARP请求的回复。这种方法在交换机和路由器等设备中尤其常见,它有助于减少ARP请求和响应的数量。
从ARP请求中获取地址绑定信息:
- 每个节点可以收到全部的ARP请求报文,可将发送节点的地址映射缓存到自己的ARP表中
节点在启动时自动广播自己的地址映射:
- 节点A在启动时主动广播一个ARP请求,在目标字段内填入自己的IP地址
- 收到ARP请求的节点将A的地址映射缓存起来
- 若A收到ARP响应,报告IP地址重复错误
以太网
以太帧结构
- Preamble(前导码):
- 7个10101010字节,后跟一个10101011字节,用于在发送方和接收方之间建立时钟同步
- 一般不计入以太帧的长度
- Dest Address/Src Address:目的/源MAC地址
- Type(2字节): 指出Data所属的高层协议(如IP、ARP等),每个协议有一个编号
- Data:46~1500字节,不足46字节填充至46字节
- CRC(4字节): 对dest addr.、src addr.、type和data四个字段计算得到的CRC码
无连接、不可靠的数据传输
无连接:
- 发送方网卡与接收方网卡之间没有握手
不可靠:
- 接收方网卡不发送确认
- 接收方网卡丢弃CRC错误的帧
- 依靠上层协议(TCP或应用)进行错误恢复