易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux网络接口的源码分析

一.前言
 Linux的源码里,网络接口的实现部份是非常值得一读的,通过读源码,不仅对网络协议会有更深的了解,也有助于在网络编程的时候,对应用函数有更精确的了解和把握。
 本文把重点放在网络接口程序的总体结构上,希望能作为读源码时一些指导性的文字。
 本文以Linux2.4.16内核作为讲解的对象,内核源码可以在http://www.kernel.org上下载。我读源码时参考的是http://lxr.linux.no/这个交差参考的网站,我个人认为是一个很好的工具,如果有条件最好上这个网站。
二.网络接口程序的结构
 Linux的网络接口分为四部份:网络设备接口部份,网络接口核心部份,网络协议族部份,以及网络接口socket层。
 网络设备接口部份主要负责从物理介质接收和发送数据。实现的文件在linu/driver/net目录下面。
 网络接口核心部份是整个网络接口的关键部位,它为网络协议提供统一的发送接口,屏蔽各种各样的物理介质,同时有负责把来自下层的包向合适的协议配送。它是网络接口的中枢部份。它的主要实现文件在linux/net/core目录下,其中linux/net/core/dev.c为主要管理文件。
 网络协议族部份是各种具体协议实现的部份。Linux支持TCP/IP,IPX,X.25,AppleTalk等的协议,各种具体协议实现的源码在 linux/net/目录下相应的名称。在这里主要讨论TCP/IP(IPv4)协议,实现的源码在linux/net/ipv4,其中 linux/net/ipv4/af_inet.c是主要的管理文件。
 网络接口Socket层为用户提供的网络服务的编程接口。主要的源码在linux/net/socket.c
三.网络设备接口部份
 物理层上有许多不同类型的网络接口设备, 在文件include/linux/if_arp.h的28行里定义了ARP能处理的各种的物理设备的标志符。网络设备接口要负责具体物理介质的控制,从物理介质接收以及发送数据,并对物理介质进行诸如最大数据包之类的各种设置。这里我们以比较简单的3Com3c501 太网卡的驱动程序为例,大概讲一下这层的工作原理。源码在Linux/drivers/net/3c501.c。
    我们从直觉上来考虑,一个网卡当然最主要的是完成数据的接收和发送,在这里我们来看看接收和发送的过程是怎么样的。
 发送相对来说比较简单,在Linux/drivers/net/3c501.c的行475 开始的el_start_xmit()这个函数就是实际向3Com3c501以太网卡发送数据的函数,具体的发送工作不外乎是对一些寄存器的读写,源码的注释很清楚,大家可以看看。
 接收的工作相对来说比较复杂。通常来说,一个新的包


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

Linux程式设计

 
http://www.openchess.org/noitatsko/programming/ (2001-05-24 16:47:48)
信号处理
--------------------------------------------------------------------------------
信号处理概说 
送出信号 
接收信号 
信号的处理 
任务控制 
----------------------------------- ......

解开linux下的tar.z和.tgz还有bz2格式的包

 1,解开tar.z的压缩包
     # tar xvfz backup.tar.Z
     或# uncompress backup.tar.Z
        #tar xvf backup.tar
 2,解开.tgz的文件
    #gunzip backup.tgz
 3,如何压缩和解压.bz2的文件
&nbs ......

Linux用户管理

 一.添加用户:
su命令使用root权限
修改/etc/passwd,添加用户记录
pwconv让/etc/passwd和/etc/shadow同步
修改/etc/group
创建用户的主目录,并把用户启动文件夹复制到用户的主目录
cp -R /etc/skel /home/xxj
改变新增用户的属主和权限
chown xxj:xxj /home/xxj
ls -ld /home/xxj
chmod 700 /home/xxj
设 ......

用Vmware安装linux提示未找到任何驱动器

 
screen.width*0.7)
{this.resized=true; this.width=screen.width*0.7; this.alt='Click here
to open new window\nCTRL Mouse wheel to zoom in/out';}"
onmouseover="if(this.width>screen.width*0.7) {this.resized=true;
this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='C ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号