论文部分内容阅读
Linux操作系统在当今服务器市场上占有相当大的份额,这说明它的网络协议栈的设计是成功和高质量的。同时,Linux作为一个开放源码的操作系统,它不仅继承了UNIX系统的大部分优良特性,而且将当今最先进的技术融入其中,比如支持最大数量的流量控制算法、最新的TCP拥塞控制算法的实现,防火墙设计的高度模块化……。所以研究Linux操作系统的网络协议栈就能较快地掌握最先进的计算机技术、获得大量有益的经验。继而将这些技术运用到国产操作系统、嵌入式软件和信息安全产品的开发和设计上来。最终打破国外公司在这些领域的垄断地位,将中国的民族软件业真正地发展起来,走上独立自主的道路。 由于Linux是一个宏内核的操作系统,网络协议栈属于内核的一部分,而且它是建立在进程管理系统、存储管理系统、文件系统、进程间通信和设备驱动之上的。所以要完成本课题的任务实际上需要对整个Linux操作系统内核进行研究。针对论文的撰写,鉴于篇幅和重点,本论文先从总体上对Linux2.4.x网络协议栈的分层实现进行深入剖析,并与标准的TCP/IP协议栈的设计进行对比。接着对内核中协议栈的初始化过程进行深入分析,这主要包括套接字层初始化、各种协议模块的初始化、网络接口设备的初始化以及流量控制和防火墙模块的初始化几个过程。然后按照协议栈的从低到高顺序分为四个专题,对其重要部分的实现用理论与具体实现相结合的方法加以研究。第一个专题是网卡驱动,主要讲述NE2000网卡的硬件特性与具体的软件驱动程序设计。第二个专题是流量控制,主要讲述两大理论模型和内核中流量控制模块的具体设计,以及FIFO的一个实例。第三个专题是内核防火墙的具体设计与实现,主要讲述整个防火墙框架的建立和包过滤子系统的设计。第四个专题是TCP协议的拥塞控制,主要对Linux的TCP拥塞控制状态机的设计、Linux拥塞控制的重要特征、Linux的TCP实现和IETF规范异同之比较进行深入研究。这四个专题基本上覆盖了Linux网络协议栈设计的重要特征,融合了当今最先进的计算机技术,是非常值得借鉴和学习的。