密级:秘密
文档编号:D0000-PPA-EBD00001-SD-2010-00014-01
DHCP模块概要设计报告
版本:1.0.0-0.0.0
2009-12-8
东软集团股份有限公司 人才实训中心
(版权所有,翻版必究)
文件修改控制
修改编号 |
版本 |
修改条款及内容 |
修改日期 |
1 |
1.0.0-0.0.0 |
创建 |
2009-12-8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
目 录
1 文档概述
1.1 文档目的和范围
主要用于实现动态IP地址
1.2 术语/缩略语
列出文档中使用的术语和缩略语,可以采用下面的表格形式:
序号 |
术语/缩略语 |
说明 |
1 |
DHCP |
动态主机配置协议 |
2 |
UDP |
用户数据包协议 |
1.3 参考文档
列出所参考的式样或者文档等
序号 |
文档名 |
作者 |
时间 |
版本 |
1 |
需求分析矩阵 |
|
|
|
2 |
|
|
|
|
2 模块概述
模块主要功能是从DHCP服务器动态获取IP地址,从而为使用TCP/IP协议进行数据传输奠定前提
2.1 模块功能定义
记述本模块的功能点
序号 |
功能点 |
功能点详细内容 |
1 |
形成、发送报文 |
按照DHCP协议的规定产生结构体类型的报文,调用UDP提供的函数发送报文给服务器 |
2 |
解析报文 |
根据报文类型,解析报文并进行相应的处理 |
3 |
报文类型转换 |
将接受到的数组类型的报文转换成结构体类型的数据,并将要发送的结构体类型的报文转换成数组类型 |
|
|
|
2.2 模块结构
以本模块为中心,画出模块间结构及模块内结构图。对于模块内细分的小模块也最好列表说明各小模块的功能。
例
模块名称 |
模块类型 |
概要说明 |
Aba1 |
接口 |
XXXX |
Aba2 |
接口 |
XXXXXX |
Aba3 |
内部模块 |
XXXXXXXXXXXXX |
|
|
|
2.3 模块动作时序
主要描述模块间动作时序图,可以直接在VISIO文件中记述(如果直接在VISIO中记述,这里说明「参考XXXXXX.vsd」)。
3 接口说明
3.1 数据结构定义
#define MESSAGE_LENGTH 300 dhcp报文长度
#define ALL_MESSAGE_NUM 4 收发报文的数量
#define DHCP_DISCOVER 0 dhcpDiscover 发送报文
#define DHCP_OFFER 1 dhcpOffer 接收报文
#define DHCP_REQUEST 2 dhcpRequest发送报文
#define DHCP_ACK 3 dhcpAck接受报文
DHCPMessage DHCP协议结构体
DHCPFlageInfo DHCP协议信息标志
3.2 函数
给出模块所有对外接口的函数声明及说明。
函数说明的方式可以参见下面的形式。
3.2.1 模块间接口函数
3.2.1.1 getDynamicIP
函数名 |
getDynamicIP |
|||
文件名 |
../DHCP |
|||
功能概要 |
动态获取IP地址 |
|||
记述形式 |
int getDynamicIP () |
|||
参数 |
||||
类型 |
变量名 |
I/O |
说明 |
|
void |
- |
- |
- |
|
返回值 |
类型 |
int |
说明 |
|
值 |
1 |
成功获得IP |
||
0 |
失败 |
|||
详细说明 |
||||
获得IP地址,供主模块初始化时使用 |
||||
使用注意事项 |
||||
主模块初始化时首先调用的函数 |
3.2.1.2 parseMessage
函数名 |
parseMessage |
|||
文件名 |
../DHCP |
|||
功能概要 |
解析从服务器得到的响应报文 |
|||
记述形式 |
int parseMessage(INT8U *p , INT16U len) |
|||
参数 |
||||
类型 |
变量名 |
I/O |
说明 |
|
INT8U * |
p |
I |
指向服务器响应报文的头部 |
|
INT16U |
len |
I |
解析报文的长度 |
|
返回值 |
类型 |
int |
说明 |
|
值 |
1 |
成功解析数据 |
||
0 |
解析数据失败 |
|||
详细说明 |
||||
供UDP调用,处理从服务器传来的响应报文信息 |
||||
使用注意事项 |
||||
UDP收到DHCP报文后调用 |
3.2.2 模块内接口函数
3.2.2.1 DHCP_init
函数名 |
DHCP_init |
|||
文件名 |
../DHCP |
|||
功能概要 |
初始化一个报文 |
|||
记述形式 |
Void DHCP_init(DHCPMessage* message) |
|||
参数 |
||||
类型 |
变量名 |
I/O |
说明 |
|
DHCPMessage* |
Message |
I |
指向一个报文的首地址 |
|
返回值 |
类型 |
Void |
说明 |
|
详细说明 |
||||
根据DHCP协议对报文格式的规定,初始化一个报文,存放在message所指的结构体内 |
||||
使用注意事项 |
||||
报文的类型为DHCPMessage |
3.2.2.2 from_dhcp_data
函数名 |
From_dhcp_data |
||||
文件名 |
../DHCP |
||||
功能概要 |
根据传递的参数形成一个discover报文或request报文 |
||||
记述形式 |
Void from_dhcp_data(DHCPMessage* message,INT8U op) |
||||
参数 |
|||||
类型 |
变量名 |
I/O |
说明 |
||
DHCPMessage* |
Message |
I/O |
指向一个报文的首地址 |
||
INT8U |
op |
I |
将要形成的报文的类型 |
||
返回值 |
类型 |
Void |
说明 |
||
详细说明 |
|||||
根据传递的op参数,产生一个报文存放在message所指的结构体内 |
|||||
使用注意事项 |
|||||
无 |
3.2.2.3 sendData
函数名 |
sendData |
|||
文件名 |
../DHCP |
|||
功能概要 |
发送一个请求报文给服务器 |
|||
记述形式 |
Void sendData(INT8U op) |
|||
参数 |
||||
类型 |
变量名 |
I/O |
说明 |
|
INT8U |
op |
I |
发送报文的类型 |
|
返回值 |
类型 |
Void |
说明 |
|
详细说明 |
||||
根据传递的op参数,发送一个discover或request报文给DHCP服务器 |
||||
使用注意事项 |
||||
只能指定两种报文的类型 |