我需要让运行 2.6.12.1 内核的旧 Linux 机器与正在使用的旧计算机通信:
ISO 8602 数据报(无连接服务)1987 12 15(第 1 版)
ISO 8073 第 4 类(面向连接的服务)
这些使用“非活动网络层”子集。(我很确定这意味着我不必担心路由问题。两个端点用它们的 MAC 地址互相攻击。)
我有一个实现无连接部分的内核模块。为了使面向连接的服务可操作,最好的方法是什么?我一直在参考 tcp 实现,将 struct proto_ops .connect、.accept、.listen 函数添加到我现有的无连接驱动程序中。
也许有更好的方法?我花了很多时间试图确定 tcp 代码在做什么,然后确定这是否与我的需求相关。例如,不需要 Nagle 算法,因为我没有传输少量数据。此外,我可能不需要很多错误恢复和流量控制的东西,因为我知道两个端点正在传输的数据以及它们传输的频率。我的计划是首先通过任何简单的(如果有的话)数据包重传、排序等来实现这一点,直到我的 Wireshark 看起来类似于我从实时系统中获得的 Wireshark 捕获。然后尝试使用真实的东西,然后添加任何似乎必要的错误恢复/重新传输的东西。换句话说,
我发现 \net\core\stream.c 说:
* 通用流处理例程。这些对于大多数
* 协议都是通用的。甚至IP。今晚 8-)。
* 这是因为 TCP、LLC(其他)层都具有大部分
* 相同的 sendmsg() 和 recvmsg() 代码。
*所以我们(将)在这里分享。
这向我暗示,也许我可以从一个更简单的流开始。有人可以推荐一个我应该从而不是 tcp 开始的更基本的流驱动程序吗?
有没有提供基本流实现的示例代码?