第16章 linux内核中网络部分 结构

第16章 linux内核中网络部分 结构

ID:34478932

大小:499.10 KB

页数:17页

时间:2019-03-06

第16章 linux内核中网络部分 结构_第1页
第16章 linux内核中网络部分 结构_第2页
第16章 linux内核中网络部分 结构_第3页
第16章 linux内核中网络部分 结构_第4页
第16章 linux内核中网络部分 结构_第5页
资源描述:

《第16章 linux内核中网络部分 结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第16章Linux内核中网络部分结构以及分布第16章Linux内核中网络部分结构以及分布第5~15章介绍了Linux环境下的用户层网络编程知识,基本上可以满足应用程序开发的需要。从本章开始,第16章和第17章将介绍Linux内核层网络架构,主要介绍如何基于netfileter框架在Linux的内核层挂接自己的网络数据处理函数,对内核层网络数据进行过滤。本章介绍内核层网络架构的基本知识,主要包括以下内容。内核中网络相关代码的基本情况:内核层的网络代码分布情况,内核层的网络处理流程,内核层提供的用户处理网络数据的可插入点,内核层的数据结构及编程框架等处理内核层网络数据

2、的基本技术;简单介绍netfilter框架;介绍Iptables,如何使用Iptables控制netfilter;内核层的软中断报文队列处理方式;中断处理下半部的要点和方式;与一个socket有关的数据如何在内核层处理。16.1概述Linux网络协议栈的实现在内核代码中,了解Linux内核的网络部分代码有助于深刻理解网络编程的概念。Linux内核层还提供了网络防火墙的框架netfilter,基于netfilter框架编写网络过滤程序是Linux环境下内核层网络处理的常用方法。16.1.1代码目录分布Linux的内核源代码可以从http://www.kernel.o

3、rg/pub/Linux/kernel/网站上下载,本书使用Linux-2.6.26.3版本(可能不是最新版本,读者可以去下载最新的版本),其代码目录结构参见图16.1。Documentation:这个目录下面没有内核的代码,有一套有用的内核文档。其中的文档质量良莠不齐,有很多内核文档的质量很优秀并且相当完整,例如文件系统;但是有的则完全没有文档,例如进程调度。在这个目录里不时可以发现有用的东西。·471·第3篇Linux内核网络编程图16.1Linux内核的源代码结构arch:此目录下的所有子目录的东西都是体系结构特有的代码。每个体系结构特有的目录下面至少包含3

4、个子目录:kernel,不同体系结构内核特有的实现方式,如信号量、计时器、SMP等;lib,不同体系结构下的高性能通用代码实现,如memcpy·472·第16章Linux内核中网络部分结构以及分布等;mm,不同体系结构特有的内存管理程序的实现。drivers:内核的驱动程序代码。此部分的代码占内核代码的大部分,包括显卡、网卡、PCI等外围设备的驱动代码。fs:文件系统代码。包含ext2、ext3等本地文件系统,CD-ROM、isofs等镜像系统,还有NFS等网络文件系统,以及proc等伪文件系统。include:此目录中包含了Linux内核中的大部分头(*.h)文

5、件。init:内核初始化过程的代码。ipc:进程间通信代码。kernel:这部分是Linux内核中最重要的,包含了内核中平台无关的基本功能,主要包含进程创建、销毁和调度的代码。lib:此目录中主要包含内核中其他模块使用的通用函数和内核自解压的函数。mm:此目录中的代码实现了平台无关的内存管理代码。scripts:此目录下是内核配置时使用的脚本,当使用makemenuconfig或者makexconfig命令时,会调用此部分代码。net:此目录中包含Linux内核的网络协议栈的代码。在子目录netfilter下为netfilter的实现代码,netfilter构建了

6、一个框架,允许在不重新编译内核的情况下,编写可加载内核,在指定的地方插入回调函数,以用户自己的方式处理网络数据。子目录ipv4和ipv6为TCP/IP协议栈的IPv4和IPv6的实现,主要包含了TCP、UDP、IP协议的代码,还有ARP协议、ICMP协议、IGMP协议、netfilter的TCP/IP实现等代码实现,以及如proc、ioctl等控制相关的代码。本书的重点集中在这个目录中的相关技术。图16.2所示是源代码组织的另一种表现形式,它映射到Linux代码的3个内核层。图16.2映射到Linux代码的3个内核层的源代码组织如图16.2所示,以太网相关的为本书

7、涉及的部分,其他(例如SLIP、IRDA等)部分是为了比较而用。·473·第3篇Linux内核网络编程16.1.2内核中网络部分流程简介网络协议栈是由若干个层组成的,网络数据的流程主要是指在协议栈的各个层之间的传递。在第7.2节里介绍了TCP网络编程的流程,一个TCP服务器的流程按照建立socket(),绑定(bind())地址端口,侦听端口listen(),接收连接accept(),发送数据send(),接收数据recv(),关闭socket()的顺序来进行。与此对应内核的处理过程也是按照此顺序进行的,网络数据在内核中的处理过程主要是在网卡和协议栈之间进行:从网

8、卡接收数据

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。