一、基于mac地址的socket通信(无需IP地址)
c
// PF_PACKET 表示创建链路层socket
// SOCK_RAW 接收的数据从mac层开始
// ETH_P_ALL 接受所有的协议类型数据
int fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
二、基于mac地址的网络广播通信
单播mac地址,第一个字节最低位为0(0x xxxxxxx0 XX XX XX XX XX),
组播mac地址,第一个字节最低位为1(0x xxxxxxx1 XX XX XX XX XX),
广播mac地址,mac地址为全F(FF:FF:FF:FF:FF:FF),
三、自定义网络协议的socket通信
例如 arp,udp,tcp,igmp等,都是网络层协议,
这里我们可以自定义协议来完成自定义数据的通信
linux下c语言使用mac地址进行socket通信
raw_socket用mac地址进行通信实例(C语言)
Linux小知识--原始套接字(raw socket)之自定义以太网帧发送与接收
如何区分MAC地址是单播、组播还是广播地址