roo*_*ook 36 debugging networking tcp-ip
我是一名专有嵌入式操作系统的QA工程师.他们构建了自己的ATN堆栈并通过调试器踩到它是我在网络方面最开放的经验.看着堆栈的每一层构建他们的数据包的一部分是惊人的.然后最终能够看到线上构建的数据包有更多的意义.
作为一名教育工作者,我想与其他人分享这种经历.有谁知道通过TCP/IP堆栈踩一个直接的方法?理想情况下,我想比调试*BSD或Linux内核更容易,但如果这是唯一的选择,那么这个过程的一些提示和技巧会很好.用C/C++编写的参考堆栈可以用Visual Studio或Eclipse在用户模式下运行,这将是理想的选择.
par*_*tje 15
这一切都取决于你想要关注的内容.从您的问题来看,您最感兴趣的是整个不同层的数据流(用户空间流 - >电缆上的电压).
为此,我建议您使用http://www.csse.uwa.edu.au/cnet/,这是一个完整的网络模拟器.它允许您逐步遍历堆栈的所有级别.
真实系统将始终明确区分Layer3,Layer2和Layer1(片上以太网和CRC校验固件,硬件MAC).您将无法进入操作系统,并且一些实施细节将使学生感到混乱和困惑.对于Linux,您必须解释内核基础结构以理解TCP/IP堆栈设计.
如果您只对TCP/IP部分感兴趣,我建议您使用嵌入式TCP/IP堆栈,如http://www.sics.se/~adam/lwip/.您可以将其合并到一个简单的用户空间程序中,并完全构造TCP/IP数据包.
请注意,在单步执行TCP/IP堆栈时,您无法解决许多网络通信问题.在它们之间仍然存在MAC芯片,其调节介质访问,冲突等.在此之下,存在将所有内容转换成电/光信号的PHY芯片,并且甚至存在处理MAC和PHY之间的通信的协议.此外,您没有看到与排队,并发,操作系统资源分配相关的所有方面.完整图片应包括所有这些方面,这些方面只能在网络模拟器中看到.
gby*_*gby 13
我会在虚拟机中运行Minix并进行调试.这是完美的.
Minix是一个带有TCP/IP堆栈的完整操作系统,因此您可以获得所需的代码.然而,与Linux/BSD不同,它的根源和设计目标是成为一种教学工具,因此它避免了某种程度的复杂性,有利于明确.事实上,这是操作系统Linus Torvalds在开始使用Linux时开始入侵:-)
您可以在VM(例如VirtualBox或VMware)中运行minix并对其进行调试.网站上有说明:http://www.minix3.org/
Peo*_*eat 11
我个人使用DOS和SoftICE学习TCP/IP堆栈(哎呀,泄露我是一个老家伙).在虚拟机上使用DOS并通过TCP/IP驱动程序进行调试将更加简单,因为您的目标是了解TCP/IP的工作原理.现代操作系统在网络I/O上进行了大量优化,并且调试起来并不容易.
http://www.crynwr.com/有一堆开源数据包驱动程序.使用源代码进行调试应该会更容易一些.
这不完全是你想要的,但我希望这会有所帮助
1995年 - TCP/IP图解,第2卷:实施(与Gary R. Wright合作) - 国际标准书号0-201-63354-X
只需并排浏览代码即可.靠近经验.史蒂文先生也解释了关键变量.真棒.注意:自本书以来,代码可能已经更改,但仍然很棒.
可能lwIP项目正是您正在寻找的,因为它可以在没有操作系统的情况下运行.
至于调试Linux内核,有一个不是很简单但众所周知的方法.使用KGDB.在虚拟机或单独的框中安装Linux内核的调试版本.并将GDB远程连接到此计算机.可能你想使用一些GDB前端而不是纯文本界面.如果您需要更多有能力的人员进行内核调试的更多细节,只需在问题中添加"linux"标签即可.
归档时间: |
|
查看次数: |
5288 次 |
最近记录: |