【问题标题】:How to program the OSI reference model in language如何用语言编写 OSI 参考模型
【发布时间】:2011-01-16 13:46:44
【问题描述】:

我正在研究网络和 OSI 模型以及所有 7 层。 就像每一层如何放置自己的标头然后在接收端移除一样。

有什么方法可以让我在 java、c 或 c++ 中创建程序,并且我手动执行在层上完成的每个步骤,以便我真正知道它是如何工作的

编辑: ok 先本地考虑 例如,我有数据字“hello”,我想将它发送到另一个正在运行的模拟 OSI 模型的程序。这个词会传遍所有层,它们会像 OSI 一样添加它们的标题和内容,然后其他正在运行的程序将接收它。

我认为基本上 TCP/ip 协议必须编程,但可能有经验的人可以做得更好

然后我可以手动更改位以检查错误控制是否正常

【问题讨论】:

  • OSI 模型不是真正的程序(甚至不是一组真正的协议)。这只是一个模型。你希望你的程序做什么?
  • 其实 TCP/IP 不适合 OSI 模型 (en.wikipedia.org/wiki/TCP/IP_model)。
  • 您可能想尝试使用开源 TCP/IP 堆栈来研究数据包的处理方式。有很多可供选择,但像 opentcp.cvs.sourceforge.net/viewvc/opentcp/opentcp 这样的轻量级实现可能更容易开始。
  • 你正在研究一个失败的项目和一个失败的网络堆栈架构的实现模型,这一切都已经过时了二十年。你应该研究的是TCP模型。

标签: java c networking osi


【解决方案1】:

由于 OSI 模型有 7 层:

  1. 物理
  2. 链接
  3. 网络
  4. 交通
  5. 会话
  6. 演示文稿
  7. 应用

如果您想在 Java(或可能是 C)环境中模拟它,那么您将需要做适量的工作。

出于模拟的目的,您可能会将普通 TCP/IP 套接字层视为物理层 - 在您的模拟中,它实现了端点之间的连接。它是一个非常可靠的物理层,但你不能拥有一切。

然后,您可以使用适当的代码模拟每个连续的层 - 链路、网络、传输、会话、表示、应用程序 - 层,这些层将数据放入数据包或拆分数据包,并添加标头和校验和等。除应用程序外的每一层都有两个接口:向下接口(到编号较低的层)和向上接口(到编号较高的层)。您需要为每一层决定适当的操作。最小集合可能是:打开、关闭、读取、写入。

我会从简单的开始 - 底部或顶部(任何一个方向都可以)。由于无论如何您都需要一个应用程序(如果没有别的,请测试代码),您可以从那里开始。您将不断完善代码,添加额外的层,确保之前的功能继续工作。您必须弄清楚应用层如何将所需的信息传递给数据链路层 - 以便可以进行正确的套接字调用等。

玩得开心。

【讨论】:

  • 谢谢哥们,我尝试从 linux 中使用 c 的 tcp/ip implementationstion 得到这个想法,但是代码/数据结构很难理解
  • leffler .. 通过这样做并向其他 pc 发送数据包,操作系统将再次执行网络层或其他层的工作...除了应用程序层之外的其他层在计算机中实现..我们能绕过它吗..
  • 你可以绕过双重工作,但前提是你知道的足够多,不会一开始就问这个问题。我不能轻易做到;我会做很多我不想做的工作。幸运的是,我不必通过 TCP(或其他任何方式)模拟 OSI。
猜你喜欢
  • 1970-01-01
  • 2019-02-10
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多