1

我想在 C++ 中实现一个 IP 堆栈,作为我对 Linux 和网络世界的培训项目。我对 Linux IP 堆栈的工作原理有一些了解,但是,正如我所说,我想在 C++ 中实现一些具有良好设计而不是专注于性能的东西。

有谁知道我在哪里可以找到用 C++ 编写的 IP 堆栈的书面设计(一些 UML + 序列图)?

4

3 回答 3

1

我原以为 TCP/IP 堆栈的 UML 设计很少存在,但搜索确实找到了一些参考资料。但是,这些似乎都不是很广泛,而且我也不会真正推荐。

如果您可以找到 OO 语言的 IP 堆栈源代码,您应该能够提取有用的类并开始创建自己的模型。

显然,编写工作源代码是最终的目标,但如果您想了解网络协议,没有什么比阅读 RFC 或一本好书(例如 Comer 和 Stevens)并从头开始创建自己的模型更好的了。使用其他人的 UML 并创建代码似乎违背了练习的目的,即了解网络协议 - 如果不了解 RFC,您如何知道模型有多好?

Moy 写了一本很棒的书,名为“OSPF Complete Implementation”,其中包含 C++ 代码,但也有一些类图很好地贯穿了该模型接口和 LSA。

于 2009-12-10T09:30:11.640 回答
0

“TCP/IP Illustrated, Volumes 1-3”是这方面的权威著作。我记得,最初的 BSD 堆栈是基于第 2 卷实现的。第 1 卷详细解释了协议。RFC 标准文档对于普通程序员来说也很容易访问,如果你想要一个现代的、兼容的实现,你将需要它们,因为这些书很旧。多年来,这些标准已经有许多添加和更改,IPv6 是其中最重要的标准之一。

您可能需要考虑的另一件事是(通常)作为 IP 层基础的以太网协议。有书,但我没有读过足够的书来推荐一本。这些标准可从 IEEE 免费获得。 http://standards.ieee.org/getieee802/802.11.html

于 2009-12-10T09:52:44.460 回答
0

我不确定这是否是一个很好的例子,但您总是可以查看 Linux 和 FreeBSD IP 堆栈的源代码。

我建议您阅读 Douglas E. Comer 和 David L. Stevens的Internetworking with TCP/IP, Volume II: Design, Implementation, and Internals的副本。它将源代码呈现给 TCP/IP 实现,并通过大量注释对其进行了介绍。

于 2009-12-10T03:54:57.413 回答