为基于串行端口 AT 命令的调制解调器开发 Mac OSX 网络 Driver

Developing a Mac OSX Network Driver for a Serial Port AT Command Based Modem

首先请允许我说,我没有为 OSX 开发 drivers 的任何经验,也没有为 Windows 开发 drivers 的经验。所以,关于 driver 的工作原理,我有很多不明白的地方;我相信这在我的问题中会很明显。

我有一个调制解调器,可以使用 AT 命令打开和关闭 TCP/UDP 套接字。我想创建某种实现网络 driver 的程序(内核扩展?driver?),将网络接口调用转换为 AT 命令串行消息。

这就是它的基本原理。我实质上是在问是否有人可以指出正确的方向/给我一个关于他们将如何处理它以及 Apple 指南要关注的内容的高级概述。

与大多数网络堆栈一样,XNU 网络堆栈希望网络设备直接发送和接收 IP 数据包。它无法与在内部处理部分网络堆栈(如 TCP 或 UDP)的网络设备一起工作——不可能实现使用该设备的网络驱动程序。

您可能更幸运地将此设备公开为 SOCKS proxy。您将需要编写一个用户空间守护进程,它在本地主机(在计算机上)上的 TCP 端口上侦听并将流量中继到串行设备;完成后,您可以在网络控制面板中将计算机设置为将该设备用作 SOCKS 代理。

(顺便说一句:大多数实现此类接口的设备对打开的套接字数量的限制非常低——通常少于 10 个。它们不太可能处理由桌面 OS.)