在Linux下实现comer的TCP/IP协议--写在前面的话

来源:互联网 发布:看图软件 for mac 编辑:程序博客网 时间:2024/05/30 05:42

写在前面的话:

学习TCP/IP的经典教材有两部,一部是Ramadas Shanmugam的《TCP/IP详解》三卷,一部就是comer的《用TCP/IP进行网际互联》三卷。我选择了后者,原因很简单,前者太厚了,绑在一块儿从二楼扔下去都可以砸死人。我人懒,太厚的书从来看不完,所以还是跟着comer学吧。

 

Comer《用TCP/IP进行网际互联第二卷:设计、实现与内核》中的讲解浅明易懂,但有两个缺陷:一是使用的系统是xinu。这不是个很通用的操作系统,用的人很少,我们学校的教授都是用它来做演示讲操作系统原理。这样就造成了大家看了代码,却少了一个通用的试验平台。其二,comer在完成TCP/IP每个模块后,没有给出使用这个模块的例子,这样的结果是,读完全书,各个模块在脑袋里绞成了一团乱麻,分不清谁调用谁,又是怎样调用的,没有直观的印象。于是,我决定将它移植到linux下,通过移植来学习其内部实现原理。

 

这项工作对我来说,挑战性很大。首先,我是个非常业余的coder,不是科班出身,虽然编了几年程序,但代码功底仍然很弱;其次,从来没用过linux(嘿嘿,够业余吧,只在windows下编过程),更不要提在它下面写程序。尽管如此,我还是决定在linux下写,原因很简单,我没用过,所以我要学习……

 

在下面的文章中,我记录了协议栈的移植过程,并会在每一个模块后给出一个调用该模块功能的实例,加深对协议栈的理解。如果你和我一样,也在使用comer的书学习TCP/IP的实现,那我的文章或许对你有一些帮助。在此之前,我有一些读下文的建议:首先,你应该看过comer的《用TCP/IP进行网际互联第一卷:原理、协议与结构》或者对TCP/IP原理有一定了解,其次应该有一个linux平台做试验(强烈推荐用VMware虚拟机安装Linux),最后你应该有一个方便的编程环境。如果你使用虚拟机安装的linux,又和我一样对linux下的vi使用不惯的话,我建议你在windows下用soure insight进行编程,然后在linux下编译执行。用soure insight的好处在于它能方便的查看源码,并且在编程时有颜色提示以及IDE集成开发环境中的自动完成功能,非常方便。对了,你还应该从comer提供的网站(ftp://ftp.cs.purdue.edu/pub/comer/TCPIP-vol2.dist.tar.Z)上下一份TCP/IP协议栈的源码作为参考。

 

我所使用到的工具和库:Turbo Linux7(内核2.4.18) libpcap0.8.3 libnet1.1.1 Source InsightVMware Workstation

原创粉丝点击