关于链路层的网络数据处理总结

一、基于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地址是单播、组播还是广播地址

相关推荐
草莓熊Lotso5 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
kekekzt16 小时前
TCP协议的粘包问题介绍,IP分片,MTU,MSS,滑动窗口的概念及之间的关系
网络·网络协议·tcp/ip
Brilliantwxx19 小时前
【C语言】 初入嵌入式C语言复习(基础+进阶面试题)
c语言·开发语言
wuminyu19 小时前
深入剖析 Panama Off-heap 的性能损耗与开销
java·linux·c语言·jvm·c++
rhythm-ring20 小时前
宏定义续行符 \ 的使用与踩坑
c语言·c++
老当益壮梁奶奶21 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
「QT(C++)开发工程师」21 小时前
C++11 std::unique_ptr — 独占所有权的智能指针
c语言·开发语言·c++·qt
不正经学生21 小时前
C语言动态内存管理(上):堆上的自由与责任
c语言·开发语言·c++·算法·面试
Learn-Share_HY1 天前
[IT Network]如何配置反向路徑過濾器(rp_filter),以解決路由不對稱問題?
linux·嵌入式硬件·物联网·网络协议·tcp/ip·http·iot
布莱克6051 天前
队列详解:定义、分类、应用场景及与栈的区别(C/C++ 代码讲解)
c语言·开发语言·c++·队列