我需要让运行2.6.12.1内核的旧Linux机器与使用以下命令的旧计算机进行通信:
ISO 8602数据报(无连接服务) 1987 12 15 (第一版)
ISO 8073 4类(面向连接的服务)
这些都是使用“非活动网络层”子集。(我非常确定这意味着我不必担心路由问题。这两个端点正在使用它们的mac地址互相攻击。)
我有一个实现无连接部分的内核模块。为了使面向连接的服务可操作,最佳方法是什么?我已经采取了一种方法,通过引用proto_ops实现将.connect,.accept,.listen函数添加到我现有的无连接驱动程序中。
也许有更好的方法?我花了很多时间来决定tcp代码在做什么,然后决定这是否与我的需求相关。例如,不需要Nagle算法,因为我没有要传输的少量数据。此外,可能还有许多我不需要的错误恢复和流控制内容,因为我知道两个端点正在传输的数据以及它们传输数据的频率。我的计划是首先通过任何简单的(如果有的话)包重新传输、排序等来实现这一点。直到我的wireshark看起来与我从实时系统中捕获的wireshark类似。然后在真正的东西上尝试我的,然后添加任何必要的错误恢复/重传内容。换句话说,试图确定我想要复制的tcp/stream实现的核心是什么,而不是我可能永远不需要的额外的纠错/流控制东西,这是一件痛苦的事情。
我找到了\net\core\stream.c,上面写着:
*通用流处理例程。这些对于大多数人来说都是通用的
*协议。甚至是IP。今晚8-)。
*这是因为TCP、LLC (其他也是)层都有大部分
*相同的sendmsg()和recvmsg()代码。
*所以我们(将)在这里分享它。
这向我暗示,也许有一种更简单的流东西可以让我开始。有人能推荐一个更基本的streams驱动程序,我应该从它开始而不是tcp吗?
有没有提供基本流实现的示例代码?
发布于 2016-01-09 10:28:41
我做了一个用户级库来实现这个协议,提供了我自己的打开/读/写/选择等版本。如果其他人关心,你可以在http://pnwsoft.com上找到我
请勿尝试使用openss7。这完全是浪费时间。
https://stackoverflow.com/questions/29859881
复制相似问题