我想在C ++中实现一个IP堆栈,作为Linux和网络世界的培训项目。我对Linux IP堆栈的工作方式有一些了解,但正如我所说,我想用C ++实现一些设计好而不是专注于性能的东西。
有谁知道我在哪里可以找到用C ++编写的IP堆栈的书面设计(一些UML +序列图)?
答案 0 :(得分:1)
我原本认为TCP / IP堆栈的UML设计很少,但搜索确实找到了一些参考。然而,这些似乎都不是非常广泛的,也没有我真正推荐的。
如果您能够以OO语言找到IP堆栈的源代码,您应该能够提取有用的类并开始创建自己的模型。
显然编写工作源代码是最终的终极游戏,但是如果你想了解网络协议,那么就没有什么比阅读RFC,或者好书(如Comer和Stevens)以及创建自己的模型更好的了。刮。拿别人的UML和创建代码似乎打败了练习的目的,即了解网络协议 - 如果不理解RFC,你怎么知道模型有多好?
Moy有一本很棒的书叫做“OSPF完整实现”,它有C ++代码,但是在整个模型接口和LSA中也有很多类图。
答案 1 :(得分:0)
我不确定这些是否是好的示例,但您可以随时查看Linux和FreeBSD IP堆栈的源代码。
我建议使用Douglas E. Comer和David L. Stevens的一份使用TCP / IP进行网络互连,第二卷:设计,实现和内部的副本。它提供了TCP / IP实现的源代码,并通过大量评论进行了讨论。
答案 2 :(得分:0)
“TCP / IP Illustrated,第1-3卷”是关于该主题的权威性工作。我记得,原始的BSD堆栈是基于第2卷实现的。第1卷详细解释了协议。普通的程序员也可以很容易地访问RFC标准文档,如果你想要一个现代的,合规的实现,你将需要它们,因为那些书是旧的。多年来,标准有了许多新增和变化,IPv6是最重要的标准之一。
您可能需要考虑的另一件事是以太网协议(通常)是IP层的基础。有书,但我没有阅读足够的任何书推荐一本。这些标准可从IEEE免费获得。 http://standards.ieee.org/getieee802/802.11.html