DHCP概要设计.docx
《DHCP概要设计.docx》由会员分享,可在线阅读,更多相关《DHCP概要设计.docx(11页珍藏版)》请在冰豆网上搜索。
DHCP概要设计
项目名称:
TCP/IP协议栈
项目编号:
文档编号:
EBD881101PDR003
DHCP模块概要设计
沈阳东软软件股份有限公司
总页数
正文
附录
生效日期
编制
郑洁
批准
修改履历
修改编号
日期
修改人
版本号
修改内容
1
2011.06.30
郑洁
VER0.1.0
初始做成
2
3
目录
1文档概述4
1.1文档目的和范围4
1.2术语/缩略语4
1.3参考文档4
2模块概述4
2.1模块功能定义4
2.2模块结构5
2.3模块动作时序6
3接口说明6
3.1数据结构定义6
3.2函数7
3.2.1模块间接口函数7
3.2.2模块内接口函数12
1文档概述
1.1文档目的和范围
主要实现动态获得IP地址的功能
1.2术语/缩略语
序号
术语/缩略语
说明
1
DHCP
动态主机配置协议
2
UDP
用户数据包协议
1.3参考文档
列出所参考的式样或者文档等
序号
文档名
作者
时间
版本
1
需求跟踪矩阵
王琦
2011-6-28
V0.1
2模块概述
模块主要功能是从DHCP服务器动态获得IP地址,从而为使用TCP/IP协议进行数据传输奠定前提。
2.1模块功能定义
序号
功能点
功能点详细内容
1
形成discover报文
按照DHCP协议的规定产生结构体类型的discover报文
2
形成request报文
按照DHCP协议的规定产生结构体类型的request报文
3
发送discover报文
调用UDP提供的函数发送discover报文给服务器
4
发送request报文
调用UDP提供的函数发送request报文给服务器
5
解析报文
根据报文类型,解析报文并进行相应的处理
6
数组转换成结构体
将接收到的数组类型的报文转换成结构体类型的数据
7
结构体转换成数组
将要发送的结构体类型的报文转换成数组类型
8
数组转换成数组
将从服务器接收到的数组转换成长度为定长的数组
2.2模块结构
以本模块为中心,画出模块间结构及模块内结构图。
对于模块内细分的小模块也最好列表说明各小模块的功能。
函数名称
函数类型
概要说明
getDynamicIP
接口
获得动态IP地址
parseMessage
接口
接收服务器的响应报文并进行处理
form_dhcp_data
内部模块
根据传递的参数产生一个discover报文或request报文
sendData
内部模块
根据传递的参数发送一个discover报文或request报文
struct_to_array
内部模块
把报文从结构体类型转换成数组类型
array_to_struct
内部模块
把报文从数组类型转换成结构体类型
array_to_array
内部模块
把从服务器发送过来的消息转换成定长的数组
2.3模块动作时序
主要描述模块间动作时序图,可以直接在VISIO文件中记述(如果直接在VISIO中记述,这里说明「参考XXXXXX.vsd」)。
3接口说明
3.1数据结构定义
#defineSUCC1函数返回值:
成功
#defineERR0函数返回值:
失败
#defineMESSAGE_LENGTH300dhcp报文长度
#defineALL_MESSAGE_NUM4收发报文的数量
#defineDHCP_DISCOVER0dhcpDiscover发送报文
#defineDHCP_OFFER1dhcpOffer接收报文
#defineDHCP_REQUEST2dhcpRequest发送报文
#defineDHCP_ACK3dhcpAck接收报文
DHCPMessageDHCP协议结构体
DHCPFlagInfoDHCP协议信息标志
3.2函数
给出模块所有对外接口的函数声明及说明。
函数说明的方式可以参见下面的形式。
3.2.1模块间接口函数
3.2.1.1getDynamicIP
函数名
getDynamicIP
文件名
../DHCP
功能概要
获得动态IP地址
记述形式
INT8UgetDynamicIP()
参数
类型
变量名
I/O
说明
void
-
-
-
返回值
类型
INT8U
说明
值
SUCC
成功获得IP地址
ERR
失败
详细说明
获得IP地址,供主模块初始化时调用
使用注意事项
主模块初始化时首先调用的函数
3.2.1.2parseMessage
函数名
parseMessage
文件名
../DHCP
功能概要
解析从服务器得到的响应报文
记述形式
INT8UparseMessage(INT8U*p,INT16Ulen)
参数
类型
变量名
I/O
说明
INT8U*
p
I
指向服务器响应报文的头部
INT16U
Len
I
解析的报文长度
返回值
类型
INT8U
说明
值
SUCC
成功解析数据
ERR
解析数据失败
详细说明
供UDP调用,处理从服务器传来的响应报文信息
使用注意事项
UDP收到DHCP报文后调用
3.2.2模块内接口函数
3.2.2.1DHCP_init
函数名
DHCP_init
文件名
../DHCP
功能概要
初始化一个报文
记述形式
voidDHCP_init(DHCPMessage*message)
参数
类型
变量名
I/O
说明
DHCPMessage*
Message
I/O
指向一个报文的首地址
返回值
类型
Void
说明
详细说明
根据DHCP协议对报文格式的规定,初始化一个报文,存放在message所指的结构体内
使用注意事项
无
3.2.2.2form_dhcp_data
函数名
form_dhcp_data
文件名
../DHCP
功能概要
根据传递的参数形成一个discover报文或request报文
记述形式
voidform_dhcp_data(DHCPMessage*message,INT8Uop)
参数
类型
变量名
I/O
说明
DHCPMessage*
Message
I/O
指向一个报文的首地址
INT8U
Op
I
将要形成的报文的类型
返回值
类型
Void
说明
详细说明
根据传递的op参数,产生一个报文存放在message所指的结构体内
使用注意事项
无
3.2.2.3sendData
函数名
sendData
文件名
.../DHCP
功能概要
发送一个请求报文给服务器
记述形式
voidsendData(INT8Uop)
参数
类型
变量名
I/O
说明
INT8U
Op
I
发送报文的类型
返回值
类型
Void
说明
详细说明
根据传递的参数op,发送一个discover或request报文给DHCP服务器
使用注意事项
只能指定两种请求报文的类型
3.2.2.4struct_to_array
函数名
struct_to_array
文件名
.../DHCP
功能概要
把报文从结构体类型转换成数组类型
记述形式
voidstruct_to_array(INT8U*pt,DHCPMessage*message,INT16Ulen)
参数
类型
变量名
I/O
说明
INT8U*
Pt
I/O
指向数组首地址
DHCPMessage
Message
I
指向报文结构体
INT16U
Len
I
转换报文的长度
返回值
类型
Void
说明
详细说明
将结构体类型的报文转换成数组类型,以便于调用UDP提供的函数进行发送
使用注意事项
无
3.2.2.5array_to_struct
函数名
array_to_struct
文件名
.../DHCP
功能概要
将报文从数组类型转换为结构体类型
记述形式
voidarray_to_struct(INT8U*pt,DHCPMessage*message,INT16Ulen)
参数
类型
变量名
I/O
说明
INT8U*
Pt
I
指向报文数组的首地址
DHCPMessage*
Message
I/O
指向存储报文的结构体
INT16U
Len
I
转换报文的长度
返回值
类型
Void
说明
详细说明
将接收到的报文从数组类型转换为结构体类型
使用注意事项
无
3.2.2.6array_to_array
函数名
array_to_array
文件名
.../DHCP
功能概要
将接收到的数组报文转换成定长的数组
记述形式
voidarray_to_array(INT8U*srcArray,INT16UlenSrc,INT8U*desArray,INT16UlenDes)
参数
类型
变量名
I/O
说明
INT8U*
srcArray
I
源数组首地址
INT16U
lenSrc
I
源数组长度
INT8U*
desArray
I/O
目标数组首地址
INT16U
LenDes
I
目标数组长度
返回值
类型
Void
说明
详细说明
将接收到的报文从数组类型转换为定长的数组类型,作为继续向结构体类型转换的过渡环节
使用注意事项
无