密级:秘密
文档编号: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服务器 | ||||
使用注意事项 | ||||
只能指定两种报文的类型 |