1、DHCP概要设计项目名称:TCP/IP协议栈项目编号: 文档编号:EBD881101PDR003 DHCP模块概要设计沈阳东软软件股份有限公司总页数正文附录生效日期编制郑洁批准修 改 履 历修改编号日期修改人版本号修改内容12011.06.30郑洁VER0.1.0初始做成23目 录1 文档概述 41.1 文档目的和范围 41.2 术语/缩略语 41.3 参考文档 42 模块概述 42.1 模块功能定义 42.2 模块结构 52.3 模块动作时序 63 接口说明 63.1 数据结构定义 63.2 函数 73.2.1 模块间接口函数 73.2.2 模块内接口函数 121 文档概述1.1 文档目的和
2、范围主要实现动态获得IP地址的功能1.2 术语/缩略语序号术语/缩略语说明1DHCP动态主机配置协议2UDP用户数据包协议1.3 参考文档列出所参考的式样或者文档等序号文档名作者时间版本1需求跟踪矩阵王琦2011-6-28V0.12 模块概述模块主要功能是从DHCP服务器动态获得IP地址,从而为使用TCP/IP协议进行数据传输奠定前提。2.1 模块功能定义序号功能点功能点详细内容1形成discover报文按照DHCP协议的规定产生结构体类型的discover报文2形成request报文按照DHCP协议的规定产生结构体类型的request报文3发送discover报文调用UDP提供的函数发送di
3、scover报文给服务器4发送request报文调用UDP提供的函数发送request报文给服务器5解析报文根据报文类型,解析报文并进行相应的处理6数组转换成结构体将接收到的数组类型的报文转换成结构体类型的数据7结构体转换成数组将要发送的结构体类型的报文转换成数组类型8数组转换成数组将从服务器接收到的数组转换成长度为定长的数组2.2 模块结构以本模块为中心,画出模块间结构及模块内结构图。对于模块内细分的小模块也最好列表说明各小模块的功能。函数名称函数类型概要说明getDynamicIP接口获得动态IP地址parseMessage接口接收服务器的响应报文并进行处理form_dhcp_data内部
4、模块根据传递的参数产生一个discover报文或request报文sendData内部模块根据传递的参数发送一个discover报文或request报文struct_to_array内部模块把报文从结构体类型转换成数组类型array_to_struct内部模块把报文从数组类型转换成结构体类型array_to_array内部模块把从服务器发送过来的消息转换成定长的数组2.3 模块动作时序主要描述模块间动作时序图,可以直接在VISIO文件中记述(如果直接在VISIO中记述,这里说明参考XXXXXX.vsd)。3 接口说明3.1 数据结构定义#define SUCC 1 函数返回值:成功#defin
5、e ERR 0 函数返回值:失败#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协议结构体DHCPFlagInfo DHCP协议信息标志3.2 函数给出模块所有对外接口的函数声明及说明。函数说明的
6、方式可以参见下面的形式。3.2.1 模块间接口函数3.2.1.1 getDynamicIP函数名getDynamicIP文件名./DHCP功能概要获得动态IP地址记述形式INT8U getDynamicIP()参数类型变量名I/O说明void-返回值类型INT8U说明值SUCC成功获得IP地址ERR失败详细说明获得IP地址,供主模块初始化时调用使用注意事项主模块初始化时首先调用的函数3.2.1.2 parseMessage函数名parseMessage文件名./DHCP功能概要解析从服务器得到的响应报文记述形式INT8U parseMessage(INT8U* p,INT16U len)参数类
7、型变量名I/O说明INT8U*pI指向服务器响应报文的头部INT16ULenI解析的报文长度返回值类型INT8U说明值SUCC成功解析数据ERR解析数据失败详细说明供UDP调用,处理从服务器传来的响应报文信息使用注意事项UDP收到DHCP报文后调用3.2.2 模块内接口函数3.2.2.1 DHCP_init函数名DHCP_init文件名./DHCP功能概要初始化一个报文记述形式void DHCP_init(DHCPMessage* message)参数类型变量名I/O说明DHCPMessage*MessageI/O指向一个报文的首地址返回值类型Void说明详细说明根据DHCP协议对报文格式的规
8、定,初始化一个报文,存放在message所指的结构体内使用注意事项无3.2.2.2 form_dhcp_data函数名form_dhcp_data文件名./DHCP功能概要根据传递的参数形成一个discover报文或request报文记述形式void form_dhcp_data(DHCPMessage* message, INT8U op)参数类型变量名I/O说明DHCPMessage*MessageI/O指向一个报文的首地址INT8UOpI将要形成的报文的类型返回值类型Void说明详细说明根据传递的op参数,产生一个报文存放在message所指的结构体内使用注意事项无3.2.2.3 sen
9、dData函数名sendData文件名./DHCP功能概要发送一个请求报文给服务器记述形式void sendData(INT8U op)参数类型变量名I/O说明INT8UOpI发送报文的类型返回值类型Void说明详细说明根据传递的参数op,发送一个discover或request报文给DHCP服务器使用注意事项只能指定两种请求报文的类型3.2.2.4 struct_to_array函数名struct_to_array文件名./DHCP功能概要把报文从结构体类型转换成数组类型记述形式void struct_to_array(INT8U* pt,DHCPMessage* message,INT16
10、U len)参数类型变量名I/O说明INT8U*PtI/O指向数组首地址DHCPMessageMessageI指向报文结构体INT16ULenI转换报文的长度返回值类型Void说明详细说明将结构体类型的报文转换成数组类型,以便于调用UDP提供的函数进行发送使用注意事项无3.2.2.5 array_to_struct函数名array_to_struct文件名./DHCP功能概要将报文从数组类型转换为结构体类型记述形式void array_to_struct(INT8U* pt,DHCPMessage* message,INT16U len)参数类型变量名I/O说明INT8U*PtI指向报文数组的
11、首地址DHCPMessage*MessageI/O指向存储报文的结构体INT16ULenI转换报文的长度返回值类型Void说明详细说明将接收到的报文从数组类型转换为结构体类型使用注意事项无3.2.2.6 array_to_array函数名array_to_array文件名./DHCP功能概要将接收到的数组报文转换成定长的数组记述形式void array_to_array(INT8U* srcArray,INT16U lenSrc,INT8U* desArray,INT16U lenDes)参数类型变量名I/O说明INT8U*srcArrayI源数组首地址INT16UlenSrcI源数组长度INT8U*desArrayI/O目标数组首地址INT16ULenDesI目标数组长度返回值类型Void说明详细说明将接收到的报文从数组类型转换为定长的数组类型,作为继续向结构体类型转换的过渡环节使用注意事项无
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1