1 / 82
文档名称:

详细设计说明书示例.doc

格式:doc   页数:82页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

详细设计说明书示例.doc

上传人:顾生等等 2015/11/28 文件大小:0 KB

下载得到文件列表

详细设计说明书示例.doc

相关文档

文档介绍

文档介绍:

本说明书提供了freeswan各个模块部件的说明,以供编码人员具体实现及今后的维护工作。


在确定目标系统的过程中,主要遵循了以下几个原则:
目标系统基本上完整地实现IPSec协议族,完全支持VPN的要求;
目标系统的服务器端一定要建立在具有自主版权的内核操作系统之上;
目标系统的客户端使用方便、界面友好、配置和管理简单灵活。
软件结构
该软件由如下几个模块组成:
KLIPS模块――实现对进入或外出IP包的安全处理,如:加密、认证等(运行在内核空间)
Pluto模块――实现IKE协议,完成安全联盟的协商(运行在用户空间)
PF_KEY模块――实现pfkey2协议,完成上述两个模块间关于SA的通信


本程序由两大模块组成,一部分是klips,它运行在操作系统内核空间,主要负责安全联盟和密钥的管理工作,以及对数据报的加密、解密的处理工作;一部分是pluto,它是一个运行在用户空间的守护进程,主要负责安全联盟的协商工作。下面分别是它们的文件组成:
源文件目录
|―――freeswan
|――klips
|――libdes
|――pluto
|――utils
KLIPS(内核IPsec)详细设计
--―――klips ipsec的核心实现模块
|――net
|――ipsec
|―― 登记模块,并初始化
|――ipsec_tunnel. 数据包的处理并发送模块
|―― 数据包接收并处理模块
|―― 管理SA的模块
|―― sha1实现模块,
|――
|――
|―― 路由表的radix数的实现模块
|―― 对上个文件的改编
|―― 实现PF_KEY2协议的模块
|―― 对上个文件的改编
|――
|――utils
|―― 用户操作eroute表的模块
|―― 用户操作SA库的模块
|―― 同上
|―― 用户操作虚接口的模块
|――



向内核系统登记几个proc文件,以便于向内核空间中查询安全联盟和eoute表,以及虚接口的状况;
初始化SA数据库(tdb链);
初始化SPDB数据库(eroute表);
初始化pf_key(PF_KEY套接口);

: int ipsec_init(void)
: int ipsec_tdbinit(void)
: int ipsec_radijinit(void)
: int pfkey_init(void)

proc文件结构
将下列结构登记到内核系统中,则内核就可以通过proc文件系统向应用程序提供一个安全的界面来存取如SA、eroute表等资料。
struct proc_dir_entry ipsec_eroute ;
struct proc_dir_entry ipsec_spi ;
struct proc_dir_entry ipsec_spigrp ;
struct proc_dir_entry ipsec_tncfg ;
struct proc_dir_entry ipsec_spinew ;
struct proc_dir_entry ipsec_klipsdebug ;
notifier_block结构
struct notifier_block结构是在include/linux/:
struct notifier_block
{
int (*notifier_call)(struct notifier_block *self, unsigned long, void *);
struct notifier_block *next;
int priority;
};
/core/,是这样的:
int device_notifier(struct notifier_block *nb)
{