我将 USB 调制解调器检测为设备设备文件 ( /dev/ttyACM0
)。将 AT 命令重定向到设备文件似乎在调制解调器响应时起作用。
我采用以下假设,上半部分表示控制信道。通过它可以拨号、设置调制解调器、取消连接……一般来说,无需实际处理data
. 我的意思是所有不受控制data
的东西(例如 HTTP 数据包)。
数据流发生在哪里?如果是通过同一个文件,那是如何复用的?
同样理想的是,人们希望调制解调器只是一种底层“服务”,它提供一个带有 IP 的网络接口,因此可以将其抽象出来并使用 TCP/IP 套接字。套接字在内核中实现。
/dev/ttyACM0
一旦调制解调器暴露在用户空间中,这将如何适应图片?
使用 AT 式调制解调器“接口”的设备在多种状态下运行:
调制解调器以命令模式启动,并响应
AT
带前缀的命令。一旦他们建立连接(ATD
例如,在通过拨号和握手模式之后),他们就会切换到数据模式,并且发送给他们的任何数据都会传输到他们所连接的设备。要切换回命令模式,发送方需要暂停数据流一段时间,发送+++
,然后再次暂停;调制解调器切换回命令模式并AT
再次开始响应命令(并且数据流被中断)。一些调制解调器不需要暂停,这意味着如果数据包含,数据将被解释为命令序列
+++
(因此+++ATH0
IRC 上的恶作剧)。要在调制解调器数据连接之上提供另一种协议,您需要使用另一种工具。您使用哪种工具取决于另一端期望的协议(SLIP、PPP、PPPoE...);例如,您将
ppp
用于 PPP(最好集成到您的发行版中,因此设置最终大部分是透明的)。这将提供某种形式的 IP 封装,然后您就可以像往常一样使用 IP。所涉及的工具将使用与调制解调器通信所需的任何设备(/dev/ttyACM0
在您的情况下),并公开系统其余部分可用于网络目的的另一个接口(一般来说,网络接口,例如ppp0
)。