收藏 分享(赏)

tcpip 协议分析课程设计任务书new.doc

上传人:dreamzhangning 文档编号:2303899 上传时间:2018-09-10 格式:DOC 页数:6 大小:66KB
下载 相关 举报
tcpip 协议分析课程设计任务书new.doc_第1页
第1页 / 共6页
tcpip 协议分析课程设计任务书new.doc_第2页
第2页 / 共6页
tcpip 协议分析课程设计任务书new.doc_第3页
第3页 / 共6页
tcpip 协议分析课程设计任务书new.doc_第4页
第4页 / 共6页
tcpip 协议分析课程设计任务书new.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、TCP/IP 协议分析 课程设计任务书TCP/IP 协议是 Internet 的主要通信协议,其对于 Internet 中各网络节点的数据通信起着至关重要的作用。相对于计算机网络课程中讲授的各种网络协议而言,TCP/IP 协议族只是其中涉及的一个特例,但是就实际应用而言,了解和把握 TCP/IP 的协议工作原理对网络理论知识是一个很好的实践方法。而要了解 TCP/IP 协议族的工作原理,利用 socket 接口编程是一个绝好,并有效的方式。TCP/IP 协议起源于 UNIX 系统,并得到了现在大部分主流操作系统的支持。因此,最好的 TCP/IP 协议学习环境应是类 UNIX 操作系统下,而 L

2、INUX 起源于 UNIX,并且大部分功能和使用方式都与 UNIX 及其类似,更重要的是其开放源码,可免费使用。基于此,本课程的实践环境选择使用 LINUX 操作系统。【实验环境】主机操作系统 :windows xp虚拟机管理软件 :VMWare workstation 7.1 虚拟机操作系统 :UBUNTU 11.04虚拟机操作系统之 C/C+编程环境 :code:blocks 10.05【课程设计内容描述】本次课程设计需要完成一个如下所述的系统:一个类似于银行账户管理的简单系统,该系统的客户程序和服务器程序设计需求如下:客户程序:1. 用户可以向服务器发送存款请求;2. 用户可以向服务器发

3、送查询账户金额请求;服务器程序:1. 服务器响应客户程序发送的用户存款请求,对其账户金额进行增加,并发会回应信息;2. 服务器响应客户程序发送的用户查询请求,发回回应信息;3. 用户进行查询时需提供密码,而服务器需要对密码进行验证,验证有效,才提供查询服务,如果验证不成功,就发回密码错误回馈;4. 用户进行存款操作时不需提供密码,服务器无需对密码进行验证;【课程设计思路】本银行账户管理系统的大致设计思路如下:1. 银行用户可以向服务器发送以下几种请求消息:1. 将用户账号以及所需存款的金额,发送给服务器;存款数据包所包含大致内容:存款请求标识、账户名、存款金额2. 将用户账号发送给服务器;查询

4、数据包所包含大致内容:查询请求标识、账户名、账户密码2. 服务器可以回应以下几类信息给银行客户:1. 对客户的存款请求,根据存款金额计算账户总额,然后回应客户;回应用户存款请求数据包所包含大致内容:回应标识、存款标识、用户名、账户存款总金额、2. 对客户的查询请求,首先验证账户密码是否有效,有效时将对应账户总额回馈给客户;验证密码有效时回应用户查询请求数据包所包含大致内容:回应标识、查询标识、用户名、账户存款总金额验证密码无效时回应用户查询请求数据包所包含大致内容:错误标识、查询标识、用户名每种类型数据包中都应包含用户账户名;而回应数据包中都包含当前账户总金额。基于以上内容,我们可以设定以下数

5、据结构作为“投票”协议的数据包结构。struct BankInfo uint32_t count; uint32_t deposit_count;char* account; char* password;bool isInquiry;bool isResponse;假设有一个用户:账户名:BC008808880001密码:123456客户程序名为:bankclient服务器程序名为:bankserver服务器 IP 为: 127.0.0.1 服务器监听端口为:123451. 用户存款:bankclient 127.0.0.1 12345 BC008808880001 1000利用下面方法获取

6、参数值:char* ServerIp = argv1;int ServerPort = atoi(argv2);char* UserAccount = argv3;int Deposit = atoi(argv4);客户程序利用 IP 地址:127.0.0.1 和端口:12345 完成与服务器的连接,利用账户名:BC008808880001 和存款金额:1000 构造 BankInfo 结构体变量,例如:struct BankInfo binfo; memset(binfo.deposit_count = Deposit;binfo.account = UserAccount;binfo.is

7、Inquiry = false;binfo.isResponse = false;然后根据 binfo 的内容,进行字符串编码,获得以下结构数据包:Bank.dBC008808880001.1000 (其中“. ”代表空格)然后,通过分隔符/n成帧方式,将编码数据包发送给服务器;服务器从套接字接收缓冲中,将数据解帧出来后获得编码后的数据,然后将编码数据解码,解码大致思路如下:“Bank”:表示这个数据包是本系统有效的数据包;“d”:表示是存款;“”:表示不是服务器响应“BC008808880001”:账号名“1000”:存款金额服务器完成对账户总金额进行增加存款金额;然后构造 BankInfo

8、 结构体变量resp_binfo;struct BankInfo resp_binfo; memset(resp_binfo.count = 账户总金额 ;resp_binfo.account = 保存账号名字符串的指针 ;resp_binfo.isInquiry = false;resp_binfo.isResponse = true;根据 resp_binfo 变量内容构造编码数据包:Bank.d.R.BC008808880001.账户总金额“Bank”:表示这个数据包是本系统有效的数据包;“d”:表示是存款;“R”:表示是服务器响应“BC008808880001”:账号名“账户总金额”:

9、这是由服务器从本地数据中获取的对应账号的总金额;然后成帧发送给客户端,客户端从套接字接收缓冲中接收数据,将数据解码,显示响应结果,继而完成整个存款过程。2. 用户查询账户金额bankclient 127.0.0.1 12345 I BC008808880001 123456利用下面方法获取参数值:char* ServerIp = argv1;int ServerPort = atoi(argv2);char* UserAccount = argv4;char* password = argv5;客户程序利用 IP 地址:127.0.0.1 和端口:12345 完成与服务器的连接,I:表示是用户

10、查询请求;利用账户名:BC008808880001 和账户密码:123456 构造 BankInfo 结构体变量,例如:struct BankInfo binfo; memset(binfo.account = UserAccount;binfo.password = password;binfo.isInquiry = true;binfo.isResponse = false;然后根据 binfo 的内容,进行字符串编码,获得以下结构数据包:Bank.iBC008808880001.123456 (其中“.”代表空格)然后,通过分隔符/n成帧方式,将编码数据包发送给服务器;服务器从套接字接

11、收缓冲中,将数据解帧出来后获得编码后的数据,然后将编码数据解码,解码大致思路如下:“Bank”:表示这个数据包是本系统有效的数据包;“i”:表示是查询;“”:表示不是服务器响应“BC008808880001”:账号名“123456”:由于是查询,则 123456 是用户密码 如果服务器对账号和密码验证为有效,则构造 BankInfo 结构体变量 resp_binfo 为:struct BankInfo resp_binfo; memset(resp_binfo.count = 账户总金额 ;resp_binfo.account = 保存账号名字符串的指针 ;resp_binfo.isInqui

12、ry = true;resp_binfo.isResponse = true;根据 resp_binfo 变量内容构造编码数据包:Bank.i.R.BC008808880001.账户总金额“Bank”:表示这个数据包是本系统有效的数据包;“i”:表示是查询;“R”:表示是服务器响应“BC008808880001”:账号名“账户总金额”:这是由服务器从本地数据中获取的对应账号的总金额;然后成帧发送给客户端,客户端从套接字接收缓冲中接收数据,将数据解码,显示响应结果,继而完成整个查询过程。 如果服务器对账户和密码验证为无效,则回馈错误数据包:Bank.i.E.BC008808880001“Bank”:表示这个数据包是本系统有效的数据包;“i”:表示是查询;“E”:服务器验证错误“BC008808880001”:账号名然后成帧发送给客户端,客户端从套接字接收缓冲中接收数据,将数据解码,显示响应结果,继而完成整个查询过程。具体编码、解码、成帧等设计思路请参考书本第 5 章中给出的相关代码。【课程设计要求】课程设计期间请保证出勤率,谢谢合作!完成课程设计后,要提交客户端和服务器的源代码和课程设计报告。课程设计报告中要有以下几个部分内容: 设计内容: 设计思路和方法: 设计实现关键代码: 程序测试和分析: 课程设计总结:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报