欢迎来到天天文库
浏览记录
ID:18425712
大小:66.00 KB
页数:6页
时间:2018-09-17
《tcpip 协议分析课程设计任务书new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、TCP/IP协议分析课程设计任务书TCP/IP协议是Internet的主要通信协议,其对于Internet中各网络节点的数据通信起着至关重要的作用。相对于《计算机网络》课程中讲授的各种网络协议而言,TCP/IP协议族只是其中涉及的一个特例,但是就实际应用而言,了解和把握TCP/IP的协议工作原理对网络理论知识是一个很好的实践方法。而要了解TCP/IP协议族的工作原理,利用socket接口编程是一个绝好,并有效的方式。TCP/IP协议起源于UNIX系统,并得到了现在大部分主流操作系统的支持。因此,最好的TCP/IP协议学习环境应是类UNIX操作系统下,而LINUX起源于UNIX
2、,并且大部分功能和使用方式都与UNIX及其类似,更重要的是其开放源码,可免费使用。基于此,本课程的实践环境选择使用LINUX操作系统。【实验环境】主机操作系统:windowsxp虚拟机管理软件:VMWareworkstation7.1虚拟机操作系统:UBUNTU11.04虚拟机操作系统之C/C++编程环境:code::blocks10.05【课程设计内容描述】本次课程设计需要完成一个如下所述的系统:一个类似于银行账户管理的简单系统,该系统的客户程序和服务器程序设计需求如下:客户程序:1.用户可以向服务器发送存款请求;2.用户可以向服务器发送查询账户金额请求;服务器程序:1.服
3、务器响应客户程序发送的用户存款请求,对其账户金额进行增加,并发会回应信息;2.服务器响应客户程序发送的用户查询请求,发回回应信息;3.用户进行查询时需提供密码,而服务器需要对密码进行验证,验证有效,才提供查询服务,如果验证不成功,就发回密码错误回馈;4.用户进行存款操作时不需提供密码,服务器无需对密码进行验证;【课程设计思路】本银行账户管理系统的大致设计思路如下:1.银行用户可以向服务器发送以下几种请求消息:1.将用户账号以及所需存款的金额,发送给服务器;存款数据包所包含大致内容:存款请求标识、账户名、存款金额2.将用户账号发送给服务器;查询数据包所包含大致内容:查询请求标识
4、、账户名、账户密码2.服务器可以回应以下几类信息给银行客户:1.对客户的存款请求,根据存款金额计算账户总额,然后回应客户;回应用户存款请求数据包所包含大致内容:回应标识、存款标识、用户名、账户存款总金额、2.对客户的查询请求,首先验证账户密码是否有效,有效时将对应账户总额回馈给客户;验证密码有效时回应用户查询请求数据包所包含大致内容:回应标识、查询标识、用户名、账户存款总金额验证密码无效时回应用户查询请求数据包所包含大致内容:错误标识、查询标识、用户名每种类型数据包中都应包含用户账户名;而回应数据包中都包含当前账户总金额。基于以上内容,我们可以设定以下数据结构作为“投票”协议
5、的数据包结构。structBankInfo{uint32_tcount;uint32_tdeposit_count;char*account;char*password;boolisInquiry;boolisResponse;};假设有一个用户:账户名:BC008808880001密码:123456客户程序名为:bankclient服务器程序名为:bankserver服务器IP为:127.0.0.1服务器监听端口为:123451.用户存款:bankclient127.0.0.112345BC0088088800011000利用下面方法获取参数值:char*ServerIp=
6、argv[1];intServerPort=atoi(argv[2]);char*UserAccount=argv[3];intDeposit=atoi(argv[4]);客户程序利用IP地址:127.0.0.1和端口:12345完成与服务器的连接,利用账户名:BC008808880001和存款金额:1000构造BankInfo结构体变量,例如:structBankInfobinfo;memset(&binof,0,sizeof(binfo));binfo.deposit_count=Deposit;binfo.account=UserAccount;binfo.isInqu
7、iry=false;binfo.isResponse=false;然后根据binfo的内容,进行字符串编码,获得以下结构数据包:Bank.d..BC008808880001.1000(其中“.”代表空格)然后,通过分隔符’/n’成帧方式,将编码数据包发送给服务器;服务器从套接字接收缓冲中,将数据解帧出来后获得编码后的数据,然后将编码数据解码,解码大致思路如下:“Bank”:表示这个数据包是本系统有效的数据包;“d”:表示是存款;“”:表示不是服务器响应“BC008808880001”:账号名“1000”
此文档下载收益归作者所有