在嵌入式物联网的开发视野中,网络编程往往止步于 Socket 的常规应用——TCP 建连、HTTP 请求、MQTT 上报。然而,当我们需要穿透应用层,直接操控网络链路本身时,原始套接字(Raw Socket)便成为了一把锋利的钥匙。本课作为网络编程专题的第八课,正是带你从“使用网络”走向“解析与控制网络”的关键转折。
课程伊始,我们将重新审视数据包的底层构成。在现代网络协议栈中,数据从上层向下封装,最终形成一个个具体的比特流。通过详解 IP、TCP、UDP 以及链路层以太网帧的头部结构,你将理解为什么我们有时需要绕过标准的 Socket API,直接读取或构造这些原始字节。这种能力是开发抓包工具、网络诊断软件乃至安全审计工具的基石。
紧接着,课程进入实战环节。我们将手把手编写一个 MAC 地址分析器。这不仅仅是一个代码练习,更是理解二层通信本质的过程。你将学会如何创建一个 AF_PACKET 类型的原始套接字,如何绑定网卡接口,以及如何从内核态拷贝出完整的数据帧并进行解析。在这个过程中,混杂模式(Promiscuous Mode)的概念将被引出:默认情况下,网卡只接收目的地址为本机的数据帧,而开启混杂模式后,网卡会将链路上传输的所有数据包都上报给 CPU,这是实现网络监听的前提。
为了更深入地控制系统层面的配置,我们将重点讲解 ioctl 函数的使用。这是一个历史悠久且功能强大的系统调用,常用于获取或修改网络接口的配置信息,如 IP 地址、子网掩码、广播地址以及开启/关闭混杂模式等。课程通过具体的代码示例,解析 ioctl 在 SIOCGIFFLAGS 和 SIOCSIFFLAGS 等操作中的实际用法,帮助你掌握 Linux 网络编程中这一底层 but essential 的工具。
最后,我们将目光聚焦于 ARP 协议。作为连接 IP 地址与 MAC 地址的桥梁,ARP 的运行机制及潜在的安全漏洞是嵌入式安全领域的重要话题。我们将详细剖析 ARP 请求与响应的报文格式,并通过两个阶段的实战,独立编写一个纯手工的 ARP 客户端。这不仅巩固了套接字编程技巧,更让你看清 ARP 欺骗(Arp Spoofing)的原理——即攻击者如何通过发送伪造的 ARP 响应,将自己插入到两台主机之间的通信链路中,从而实现对流量的劫持或中间人攻击。
学完本课,你不仅能写出具备网络嗅探能力的程序,更能从比特层面理解局域网内的通信逻辑与安全边界,为后续深入探讨更复杂的网络攻防或自定义协议开发打下坚实基础。
课程目录
课程目录10 集
- 1-1 [原始套接字快速入门] 原始套接字简介 (10:38).mp4
- 1-2 [原始套接字快速入门] 各种数据包构成详解 (22:21).mp4
- 1-3 [原始套接字快速入门] 实战:手把手写mac底子分析器 (20:55).mp4
- 1-4 [原始套接字快速入门] 启动网卡混杂模式 (17:43).mp4
- 1-5 [原始套接字快速入门] ioctl的使用 (45:15).mp4
- 1-6 [原始套接字快速入门] ioctl使用距离 (48).mp4
- 1-7 [原始套接字快速入门] arp协议 (07:25).mp4
- 1-8 [原始套接字快速入门] 案例:手把手写arp客户端 (33:31).mp4
- 1-9 [原始套接字快速入门] 案例:手把手写arp客户端2 (13:05).mp4
- 1-10 [原始套接字快速入门] arp欺骗原理与实现方法 (09:07).mp4






