上海网站推广费用,北京网站设计公司youx成都柚米科技15,汽车网站开发毕业设计论文,wordpress企业网站模板破解有多种不同的工具可以用于配置linux众多可用的网络功能#xff0c;如本章开头所述#xff0c;你可以通过使用这些工具对内核巧妙的处理#xff0c;以便于学习以及发现做这样的修改后的影响。 下面是在本书中将会经常涉及的工具#xff1a; iputils 除了经常使用的ping命令外… 有多种不同的工具可以用于配置linux众多可用的网络功能如本章开头所述你可以通过使用这些工具对内核巧妙的处理以便于学习以及发现做这样的修改后的影响。 下面是在本书中将会经常涉及的工具 iputils 除了经常使用的ping命令外iputils还包括arping(用于产生ARP请求)网络路由器发现 守护函数rdisc以及其他程序 net-tools 这是一组网络工具其中有著名的ifconfig, route, netstats以及arp还有ipmaddr, iptunnel, ether-wake和netplugd等。 IPROUTE2 这是新一代的网络配置套件同一个多用途的命令ip这个套件可以配置IP地址以及路由 还有其他各种高级功能如邻居协议等等。 IPROUTE2的源代码可以从http://linux-net.osdl.org/index.php/iproute2下载而其他组件可以从大多数linux发行版本的下载服务器上下载。 大多数linux发行版中都默认包含这些组件当你不了解内核代码如何处理来自用户空间的命令时看看用户空间工具的源代码以了解用户所下达的命令是如何打包并传给内核的。 在下列URL中可以发现很好的文档说明如何使用上述工具包括邮件列表mailing list 如果想追踪网络代码的最新修改可以关注下列邮件列表 linux网络开发论坛档案库 第二章 关键数据结构 linux网络代码中有些关键数据结构随处可见本章介绍下列数据结构同时说明操作这些数据结构的一些函数和宏。 struct sk_buff 一个封包就存储在这里所有的网络分层都会使用这个结构来存储报头有关用户数据的信息以及用来协调其工作的其他内部信息。 struct net_device 在linux内核中每种网络设备都用这个数据结构表示包括软硬件的配置信息第八章详细描述了net_device数据结构分配的时机以及分配的方式。 linux网络所用的另一个关键数据结构是struct sock用于存储套接字的网络信息因为本书不涉及套接字故本章没有吧sock包含在内。 套接字缓冲区:sk_buff结构。 这可能是linux网络代码中最重要的数据结构代表已经接受或者政要传输的数据的包头此结构定义在include/linux/skbuff.h 头文件中巨大的变量堆组成 在内核的进化历程中这个结构多次变动不断增加新选项同时也重组了现存的字段使得布局更为清晰其字段可粗略划分为下列几种类型。 布局layout 通用General 功能专用 Feature-specific 管理函数 多个不同的网络分层MAC 或者L2分层上的另一种链路层协议L3的IP以及L4的TCP或者UDP都会使用这个结构 而且当该结构从一个分层传到另一个分层时其不同的字段会随之发生变化L4在传给L3之前会附加一个报头.而L3再传给L2之前又会加上一个自己的包头附加包头比起把数据从一个分层拷贝到另一个分层更为高效由于要在一个缓冲区开端新增空间--也就是要改变指向该缓冲区的变量--是一种复杂的运算内核提供了skb_reserve函数来执行这一操作所以当缓冲区往下传经每个分层时每层的协议首先要做的就是调用skb_reserve 函数为该协议的包头预留空间后续数据预留和对齐 skb_reserve,skb_put,skb_push以及skb_pull 中国呢我们会看到的一个实例说明缓冲区穿越每个分层时内核如何确保缓冲区头部有足够的空间预留下来允许每个分层都能加 上自己的包头。 当缓冲区网上经传每个网络分层时每个源自于旧分层的包头就不再有用处例如,L2包头只由处理L2协议的设备驱动程序使用所以对L3而言并无用处不过并没有把L2的包头从缓冲区中删除而是把志向有效载荷开端的指针向前移动到L3包头的开端。这样只需要很少的CPU周期。