《TCP/IP详解 卷2:实现》 —1.13 源代码组织
1.13 源代码组织
图1-15所示的是Net/3网络源代码的组织,假设它位于目录/usr/src/sys。
图1-15 Net/3源代码组织
本书的重点在目录netinet,它包含所有TCP/IP源代码。在目录kern和net中我们也可找到一些文件。前者是协议无关的插口代码,而后者是一些通用联网函数,用于TCP/IP例程,如路由代码。
包含在每个目录中的文件简要地列于下面。
i386:Intel 80x86专用目录。例如,目录i386/isa包含专用于ISA总线的设备驱动程序。目录i386/stand包含单机引导程序代码。
kern:通用的内核文件,不属于其他目录。例如,处理系统调用fork和exec的内核文件在这个目录。在这个目录中,我们只考察少数几个文件—用于插口系统调用的文件(插口层在图1-3)。
net:通用联网文件,例如,通用联网接口函数,BPF(BSD分组过滤器)代码、SLIP驱动程序和路由代码。在这个目录中我们考察一些文件。
netccitt:OSI协议接口代码,包括HDLC(高级数据链路控制)和X.25驱动程序。
netinet:Internet协议代码,包括IP、ICMP、IGMP、TCP和UDP。本书的重点集中在这个目录中的文件。
netiso:OSI协议。
netns:施乐(Xerox)XNS协议。
nfs:Sun公司的网络文件系统代码。
sys:系统头文件。在这个目录中我们考察几个头文件。这个目录中的文件还出现在目录/usr/include/sys中。
ufs:Unix文件系统(有时叫伯克利快速文件系统)的代码。它是标准磁盘文件系统。
vm:虚拟存储器系统代码。
图1-16所示的是源代码组织的另一种表现形式,它映射到我们的三个内核层。忽略netimp和nfs这样的目录,在本书中我们不关心它们。
图1-16 映射到三个内核层的Net/3源代码组织
在每个表格框底下的数字是对应功能的C代码的近似行数,包括源文件中的所有注释。
我们不考察图中所有的源代码。显示目录netns与netiso是为了与Internet协议比较。我们仅考虑有阴影的表格框。
- 点赞
- 收藏
- 关注作者
评论(0)