全部博文(41)
分类: LINUX
2009-07-24 14:43:34
图1.1 Linux
Linux
drivers文件夹:存放与设备驱动相关的文件,Linux
include/linux文件夹:存放网络协议栈涉及的头文件,主要定义了协议的数据结构和涉及到的宏。
net 文件夹:存放网络协议的具体实现代码。Net/unix下是有关unix的域代码,unix域是模拟网络传输方式在本机范围内用于进程间数据传输的一种机制,此子文件夹不涉及网络部分;net/inet下是有关网络各协议实现的代码;net/protocols.c文件定义了链路层所使用协议的初始化函数;net/socket.c文件中定义的函数是做为网络协议栈的最上层实现函数,是系统调用层和网络协议栈函数集合的接口层,实现比较简单,大多数实现的功能只是调用下一层函数进行处理。
头文件详细介绍如表2.1头文件功能列表。
表2.1头文件功能列表
头文件名 |
最后修改日期 |
说明 |
etherdevice.h |
1994-04-18 16:38 |
以太网协议相关函数声明 |
icmp.h |
1993-12-01 20:44 |
ICMP 协议结构定义 |
if.h |
1994-12-01 03:53 |
接口相关结构定义 |
if_arp.h |
1995-02-05 20:27 |
ARP 协议结构定义 |
if_ether.h |
1995-02-02 02:03 |
以太网首部及标志位定义 |
if_plip.h |
1995-02-13 03:11 |
并行线网络协议 |
if_slip.h |
1994-05-07 19:12 |
串行线网络协议 |
igmp.h |
1995-01-24 21:32 |
IGMP 协议结构定义 |
in.h |
1995-02-23 19:32 |
协议号定义 |
inet.h |
1995-01-27 18:17 |
INET 域部分函数声明 |
interrupt.h |
1995-01-26 13:38 |
|
ip.h |
1995-04-17 18:47 |
IP 协议结构定义 |
ip_fw.h |
1995-03-10 02:33 |
防火墙相关结构定义 |
ipx.h |
1995-01-31 15:36 |
IPX 包交换协议结构定义 |
net.h |
1995-02-23 19:26 |
INET 层关键结构定义 |
netdevice.h |
1995-02-05 19:48 |
设备相关结构定义 |
notifier.h |
1995-01-07 18:57 |
事件响应相关结构定义 |
ppp.h |
1994-08-11 00:26 |
点对点协议结构定义 |
route.h |
1994-08-11 00:26 |
路由结构定义 |
skbuff.h |
1995-01-24 21:27 |
数据包封装结构定义 |
socket.h |
1995-02-02 02:03 |
常数选项定义 |
sockios.h |
1995-01-24 21:27 |
选项定义 |
tcp.h |
1995-04-17 18:47 |
TCP 协议结构定义 |
timer.h |
1995-01-23 03:30 |
定时器相关结构定义 |
udp.h |
1993-12-01 20:44 |
UDP 协议结构定义 |
un.h |
1994-06-17 12:53 |
UNIX 域地址结构定义 |
文件功能:实现表示层的功能,表示层的工作是对某些字段进行检查后向下层继续传递请求,该文件提供的函数主要是做为接口函数,通过调用传输层函数来实现功能。
sk_inuse函数:检测一个端口号是否已被使用,端口的存储结构是哈希表。对于不同的协议使用相同的端口号不会有任何问题。
get_new_socknum函数:获取一个新的未使用的端口号。
put_sock函数:将一个新的sock结构插入到对应的链表中。使用本地掩码进行了地址排序。
remove_sock函数:从链表中删除一个指定端口号的sock结构。
destroy_sock函数:销毁一个套接字连接,包括该套接字对应的sock结构。销毁之前进行相应的内存释放。
inet_fcntl函数:设置和获取套接字的信息。目前本函数只实现了套接字的属主功能。设置功能需要超级用户权限。
inet_setsockopt函数:选项的设置。
inet_getsockopt函数:选项的读取。
inet_autobind函数:自动绑定一个本地端口号。
inet_listen函数:将sock结构的state字段设置为TCP_LISTEN,此函数无需调用底层函数。
def_callback1、def_callback2、def_callback3函数:三个回调函数目前实现的功能主要是唤醒相关的进程。
inet_create函数:用于创建一个套接字对应的sock结构并对其进行初始化,此函数被上层sock_socket函数调用。
inet_dup函数:复制一个socket,通过调用inet_create函数来实现。该函数主要被服务器端调用,当服务器端调用accept函数时需要创建一个新的套接字,这个新套接字的初始值是通过listen套接字复制过来的,复制过程要通过次函数来实现。
closing函数:检测套接字的状态。当状态为TCP_FIN_WAIT1、TCP_CLOSING、TCP_LAST_ACK、TCP_FIN_WAIT2时表示本地套接字已处于关闭状态。
inet_release函数:被sock_release函数调用,进一步完成套接字的关闭操作,解除socket结构和sock结构的互引用关系。
inet_bind函数:被sock_bind函数调用,完成本地地址绑定,本地地址包括IP地址和端口号,如未指定系统会自动分配。
inet_error函数:返回套接字通信过程中的错误。返回前会清楚当前的错误值。
inet_connect函数:被sock_connect调用,完成套接字的连接操作。
978计划工作组