我是一个专有嵌入式操作系统的QA工程师。他们构建了自己的ATN stack,并使用调试器逐步通过它,这是我在网络方面最令人大开眼界的经历。看着堆栈的每一层构建自己的数据包部分是令人惊叹的。然后,终于能够在线路上看到构建的数据包,这更有意义。
作为一名教育工作者,我想与其他人分享这一经验。有没有人知道一种直接通过TCP/IP堆栈的方法?理想情况下,我希望有一些比调试*BSD或Linux内核更简单的东西,尽管如果这是唯一的选择,那么这个过程的一些提示和技巧将是很好的。用C/C++编写的可以在用户模式下与Visual Studio或Eclipse一起运行的参考堆栈将是理想的。
发布于 2012-01-05 21:19:54
这完全取决于你想要关注的是什么。根据您的问题,您最感兴趣的是穿过不同层的数据流(电缆上的用户空间流->电压)。
为此,我建议您使用http://www.csse.uwa.edu.au/cnet/,这是一个完整的网络模拟器。它允许您单步执行堆栈的所有级别。
真正的系统将始终在Layer3、Layer2和Layer1 (以太网和CRC校验芯片固件、硬件MAC)之间有明确的区别。你将很难进入操作系统,而且一些实现细节会让学生们感到混乱和困惑。对于Linux,您必须解释内核基础结构才能理解TCP/IP堆栈设计。
如果您只对TCP/IP部分感兴趣,我建议您使用像http://www.sics.se/~adam/lwip/这样的嵌入式TCP/IP堆栈。您可以将其合并到一个简单的用户空间程序中,并完整地构造TCP/IP数据包。
请注意,在单步执行TCP/IP堆栈时,您无法解决许多网络通信方面的问题。在这两者之间仍然有一个MAC芯片,它调节介质访问、冲突等。在它下面,有一个PHY芯片,它将所有的东西转换成电/光信号,甚至还有一个协议来处理MAC和PHY之间的通信。此外,您还没有看到与排队、并发、操作系统资源分配ea相关的所有方面。完整的图景应该包括所有这些方面,只有在网络模拟器中才能看到。
发布于 2012-01-03 16:23:25
我会在虚拟机中运行Minix并对其进行调试。它非常适合这一点。
Minix是一个具有TCP/IP堆栈的完整操作系统,因此您可以获得所需的代码。然而,与Linux/BSD不同的是,它的根源和设计目标是作为一种教学工具,因此它避免了一定程度的复杂性,而更倾向于清晰。事实上,这是Linus Torvalds开始使用Linux时开始使用的操作系统:-)
您可以在VirtualBox或VMware等VM中运行minix并对其进行调试。网站上有以下说明:http://www.minix3.org/
发布于 2011-12-30 02:36:24
我个人使用DOS和SoftICE学习了TCP/IP协议栈(哦,泄露了我是个老家伙)。在虚拟机上使用DOS并通过TCP/IP驱动程序进行调试将会简单得多,因为您的目标是了解TCP/IP的工作原理。现代操作系统对网络I/O进行了大量的优化,调试起来并不容易。
http://www.crynwr.com/有一堆开源的包驱动程序。使用源代码进行调试应该会更容易一些。
https://stackoverflow.com/questions/8646731
复制相似问题