我正在尝试在微控制器上使用 LTE 调制解调器,到目前为止,道路崎岖不平。
主要是因为我不习惯处理这些低级 TCP/IP 细节。我必须承认,在这个(对我而言)新领域了解更多信息既是一段痛苦的旅程,也是非常有趣的。
我想了解的是,像 lwip 这样的 tcp/ip 堆栈如何适合 OSI 模型(还考虑到我想在 pppos 模式下使用 LTE 调制解调器从/向 lwip 读取/写入字节。
我知道在 OSI 模型中,有几个层将它们自己的标头附加到现有数据包中。
- 应用层,仅由数据组成。
- 传输层,例如添加 TCP 标头
- Internet 层,添加例如 IP 标头
- 网络层,它添加了一个标头(我猜是mac地址信息等)。
当我在微控制器上使用调制解调器时,我会发送 AT 命令来控制调制解调器。我可以选择在调制解调器上使用 TCP/IP 堆栈(在我的例子中是 mqtt 堆栈),通过发送命令连接到服务器和端口,调制解调器将处理其余的。
但是当我将调制解调器设置为 ppp 模式时,我会直接从调制解调器接收原始字节。但这究竟是什么意思?OSI 模型的哪些层已经发挥了作用?哪些标头已从消息/数据中删除/删除?
当我收到这些字节时,我应该将它们直接提供给 lwip。lwip 做了哪些剩余的 OSI 层?我读到 lwip 实现了 tcp 和 udp。所以我假设当我将接收到的字节传递给 lwip 时,lwip 将同时处理传输层和应用程序层。
也许是一个愚蠢的问题,但例如 IP 地址,当消息到达传输层时,它是否仍然是标头/正文的一部分?
我正在寻找一些“冗长”的答案/文档,这将使我有机会更深入地了解比赛场地的细节。
更新:例如,当我查看此页面时,它显示了(TCP)数据包是如何由示例定义的。当我看到这一点时,我试图了解是哪个软件在这里进行了所有的解释?我会在 ppp 模式下从调制解调器接收所有这些字节吗?或者像调制解调器这样的“硬件”是否已经剥离了 ETHER 和 IP 标头?