计算机网络期末复习MAC
时间: 2024-12-31 16:21:28 浏览: 5
### 关于计算机网络中的MAC地址期末复习资料
#### 定义与作用
MAC (Media Access Control) 地址是一个用于识别连接到同一物理链路的设备的独特硬件编号。它通常由制造商分配给网络接口控制器(NIC),并存储在网络适配器的只读内存(ROM)中[^1]。
#### 结构特点
- 长度:48位二进制数,表示成十二个十六进制字符。
- 组织方式:前24位称为OUI(Organizationally Unique Identifier),用来标识生产厂商;后24位是由该厂家自行定义的产品序列号部分。
#### 工作原理
当数据包通过局域网传输时,在第二层即数据链路层上会封装源和目的节点的MAC地址信息。路由器依据目标IP地址决定转发路径之后,在到达目的地之前最后一个跳转点处将以太帧的目的MAC设置为目标主机的实际MAC地址[^2]。
#### 应用场景
在不同类型的计算机网络环境中,如广域网(WAN)、城域网(MAN)、局域网(LAN)以及个人局域网(PAN),MAC地址主要用于在同一子网内的通信过程中确保消息能够被正确发送至特定接收者手中。
#### ARP协议关联
为了实现从逻辑上的IP地址映射到底层物理层面的MAC地址转换过程,ARP(Address Resolution Protocol)起到了至关重要的桥梁作用。每当一台机器想要向另一台位于相同本地网络段内但只知道其IPv4地址而不知道对应MAC地址的目标发起通讯请求时就会广播一个ARP查询报文来获取所需的信息。
```python
import socket, fcntl, struct
def get_mac_address(ifname='eth0'):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', bytes(ifname[:15], 'utf-8')))
mac = ''.join(['%02X:' % b for b in info[18:24]])[:-1]
return mac.lower()
```
此Python脚本展示了如何在一个Linux系统上调用底层API以编程的方式取得指定网卡接口名称对应的MAC地址。
阅读全文