057 Linux网络子系统datagram模块分析报告
                    联系方式 Email: lw510@qq.com      QQ: 497053418       MSN: lw510@qq.com
以下仅为该设计的基本说明介绍,若需要完整的设计和论文,建议您购买本设计.
057 Linux网络子系统datagram模块分析报告样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
 

本设计包含内容:源代码+毕业论文
论文大概:
 
 
 
 

目     录
1引言………………………………………………………….……………………3
2代码分析………………………………………………………………………….5
2.1等待包函数分析……………………………………………………………..6
2.2套接口缓冲区接收的数据报结构分析……………………………………..8
2.3套接口缓冲区复制到IOVECTOR的数据报函数…………………………..10
2.4套接口缓冲区校验复制到IOVECTOR数据报……………………………..14
2.5 datagram_poll函数分析char *name)……………………………………16
3结束语……………………………………………………………………….…...19
参考文献……………………………………………………………………..……..19
附 录….……………………………………………………………………….……20
 
 
 
 
 
 
 
关于Linux网络子系统datagram.c模块分析
                          作者:潘明   指导老师:陈国顺

摘 要:Linux系统的使用越来越广泛,为Linux编制系统工具和应用软件的开发人员也越来越多。Linux的最大优势就在于它是一种开放标准,任何人都可以自由访问它的源代码。分析代码可以对系统运作有深入的了解,并能提高自身阅读和编写程序的能力。本文主要介绍的就是Linux网络子系统中datagram模块中几个主要的函数,对其结构、实现功能和流程进行了分析。
关键词:Linux;datagram;代码分析;流程图
               The Analysis of Datagram in Linux
  Abstract: The use of Linux system is more and more extensive, more and more developers are throwing themselves into working out to the systematic tool and the application software for the Linux system. The biggest advantage of Linux is that it has an open standard, so that everyone can get the source code freely. Analyzing the source code is helpful to comprehend how the operating system running, and is also helpful to read and write programs. This text introduces some of the structures, functions, and flow of the datagram.c in Linux.
Key words: Linux; datagram; analysis on source code; flow chart
 
 
 

1、引 言
Linux作为一个完全免费的网络操作系统,据不完全统计,在全世界已经有近800万用户,其中中国用户大约有近10万人,Linux目前的优越之处在于网络服务器领域,Linux+Apache已经成为网络上最普遍的服务器架构模式。
随着无数编程者对Linux代码的不断扩充和完善,Linux的源代码已经是非常庞大了,对其源代码的解读工作也变得越来越被重视。正如Linux的创始人在一篇新闻投稿上所说的,要理解一个软件的真正运行机制,一定要阅读其源代码(RTFSC-READ THE FUCKING SOURCE CODE)。
Linux的发展在国内还刚刚开始,各种看法层出不穷,可谓百花齐放,但是到目前为止,还没有一个确定的发展模式;Linux的出现,使我们开发自已的操作系统有了一个很高的起点,因为它的开放性,使我们与国外的发展几乎是同步进行的;Linux的出现正符合我们的所有要求,因为源代码公开,我们可以立刻加入开发,不仅开发速度大大快于任何商业操作系统,并且可以保证操作系统中不存在任何黑洞和隐蔽的问题,永远不会受制于人。因为Linux是国际化的,我们也不必考虑兼容性问题,永远不会同国际脱轨。
拥有一个自已的操作系统,对于我国各项事业来说都具有极高的战略意义。当前,开放源码的Linux为发展我国自主操作系统提供了一个难得的机遇。Linux是一个性能优越、技术上处于前沿的操作系统,它的源代码公开、可以被广大专业人员甚至业余爱好者所阅读、分析、学习和掌握。所以我国基于Linux开发自已的操作系统,或者说开发自已的Linux操作系统势在必行,也只有在此基础上才能构建中国自主的、比较完善的软件产业体系。为此,需要培养和造就一大批深入理解操作系统原理并有丰富实践经验的学者和工程师。
可是由于操作系统技术本身的复杂性,要深入钻研Linux的代码,把它读懂并融会贯通,实非易事。在此前提下,市场上出现了一大批关于Linux源代码分析的书,其中毛德操和胡希明老师所著的《Linux内核源代码情景分析(上、下册)》便是其中最优秀的作品之一,它覆盖了Linux内核以及有关操作系统理论(除网络外)的几乎所有方面;在所涉及的各个方面,都深入分析到具体的代码、包括汇编代码并加以讲解;在讲解中采取了独特的、以情景为基础的方法,使读者对整个过程有比较完整、比较全面的了解,从而可以把各方面的知识有机地融会贯通、加深理解。
近来与linux系统相关的课题数量也在不断增加。
在linux源代码分析方面,惠州学院信息科学与技术重点教学实验室有做过关于Linux环境下USB子系统实现框架源代码分析和Linux的消息函数的分析。
西安邮电学院有做过关于Linux文件系统的代码分析、关于Linux内核进程调度与控制的代码分析、关于Linux防火墙的实现分析的毕业设计课题。
除了做这些代码分析的课题以外,在互联网上涌现了一大批由国内编程爱好者,其中不乏一些优秀的编程人员,他们在网络论坛上发表科技文章,研究系统代码,比较著名的论坛有中国LINUX论坛http://www.linuxforum.net/和LINUX伊甸园http://www.linuxeden.com/等。
阅读源代码对提高自己的编程水平是非常有帮助的。这个帮助至少体现在三个方面。
第一个方面是学会大型软件项目设计的模式。这样的模式是真实可靠的第一手资料,这样学来的模式要比从书本上,用日常语言陈述的模式,更能深入到你的脑海中去。而且它的真实性和可靠性都是有保证的。并且这样的模式还非常的具体。
阅读源代码的第二个好处,是增加自己的自信心。就象学习英语,要和别人谈话,要看看别人的文章,不能只是看教科书上的简单的例子。类似的,只有当我们看过大型软件项目的源代码,作过修改,摸爬滚打之后,我们才能对于自己的编程能力更有信心。
阅读源代码的第三个好处,是对于过去学过的知识有复习和巩固的作用。在阅读过程中可以复习到C++,数据结构,网络与通信等方面学过的知识,并且能接触到一些新的知识。
我这次的毕业设计是Linux网络子系统datagram模块的分析,主要分析研究的linux系统版本为2.6.10,内容包括:datagram.c及其所调用到的头文件主要有module.h、types.h、kernel.h、mm.h、interrupt.h、errno.h、sched.h、inet.h、tcp.h、tcpnetdevice.h、  rtnetlink.h、poll.h、highmem.h、skbuff.h、socket.h、uaccess.h、system.h、protocol.h、  sock.h、checksum.h,还有这些头文件中包含调用的另外头文件,在此不一一罗列。由此可见分析该代码是一项工作量非常庞大,而且非常烦琐的工程。
为了能顺利进行代码分析,我使用了代码分析软件Source Insight v3.5,从而实现了对代码中一些函数、变量的定义跟踪、调用跟踪等,对我的代码分析工作起到了非常重要的意义。这是一个Windows环境下的读代码的工具,安装与一般的软件没有什么区别,它的使用简单介绍如下:
先选择Project菜单下的new,新建一个工程,输入工程名,接着按要求把欲读的源代码加入(可以整个目录加)后,该软件就会分析所加的源代码。分析完后,就可以进行阅读了。
对于打开的阅读文件,如果想看某一变量的定义,先把光标定位于该变量,然后点击工具条上的相应选项,该变量的定义就显示出来。对于函数的定义与实现也可以同样操作。
Reference功能是Source Insight的特色之一,它可以在速度极快的在整个工程中找到所有的标记,并且在该行程序的前边加上红色箭头的小按钮作为链接标志。一个Reference搜索后的结果,它可以有两种模式,一种集中显示结果模式,在这种模式下,可以通过前边的红色箭头小按钮进入;另外一种模式,该标记的具体的所在处,也可以通过标记的具体所在处点击红色箭头小按钮进入警种模式,还可以通过工具条上的两个红色小箭头直接在第二种模式下前后移动,察看相应信息。它的这个强大的功能使得阅读Linux源程序有如神助。但是要注意的是,当进行了第二次“Reference”时,它会提示将结果集附加在第一个结果集的后边还是取代第一个结果集。如果选择前者,不能对结果集根据前后两次搜索结果进行分类,然后在其子类里进行移动,只能在整个结果集里移动;如果,选择后者,结果集将会被替换为第二次搜索的结果,略微有些不方便。
就我个人的使用感觉,总体来讲,使用是很方便的,但是有一些定义会找不到,不知道是我自己的原因(比如设置不对,或者源代码没有找全),还是软件本身能力有限。

2、代码分析
datagram.c代码中所有定义的函数功能结构有
连接基础函数(connection_based)
等待包函数(wait_for_packet)
套接口缓冲区接收的数据报结构(skb_recv_datagram)
套接口缓冲区清空的数据报函数(skb_free_datagram)
套接口缓冲区复制的数据报函数(skb_copy_datagram)
套接口缓冲区复制到IO VECTOR的数据报函数(skb_copy_datagram_iovec)
套接口缓冲区复制和校验的数据报函数(skb_copy_and_csum_datagram)
套接口缓冲区校验并复制到IO VECTOR的数据(skb_copy_and_csum_datagram_iovec)
数据报轮询函数(datagram_poll)
这里挑选了其中比较重要的几个函数,等待包函数、套接口缓冲区接收的数据报结构、套接口缓冲区复制到IOVECTOR的数据报函数、套接口缓冲区校验并复制到IOVECTOR的数据和数据报轮询函数。

 
057 Linux网络子系统datagram模块分析报告
 

关闭窗口

与本站联系的时候,为了提高效率,请告诉本站您需要的设计编号与题目。如:001VBAC人事管理系统
编码说明:001VBAC人事管理系统,其中001VBAC 为该毕业设计的编号,VB代表开发语言,AC代表数据库(ACCESS)
版权所有:510计算机论文网:http://www.lw510.com/程序制作:510论文
Email: LW510@QQ.COM  QQ: 497053418   MSN: LW510@QQ.COM