在网络编程中,链路层(Layer 2)用于数据链路层(如以太网)进行数据帧的传输。链路层的地址通常是指 MAC 地址(硬件地址),这些结构体用于原始套接字(RAW socket)编程和一些底层网络操作。以下是常见的用于链路层地址的结构体,它们主要用于处理以太网(Ethernet)或其他低层协议的网络地址。
常用链路层(以太网)地址结构体
-
struct sockaddr_ll
(Linux 系统)- 用于处理链路层(如以太网)的地址。它包括链路层协议类型、接口索引和硬件地址(通常是 MAC 地址)。
struct sockaddr_ll { unsigned short sll_protocol; // 协议类型(如 ETH_P_IP) int sll_ifindex; // 网络接口的索引 unsigned short sll_hatype; // 硬件类型(例如以太网) unsigned char sll_halen; // 硬件地址长度 unsigned char sll_add