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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TCP/IP协议分析 课程设计任务书 TCP/IP协议是Internet的主要通信协议,其对于Internet中各网络节点的数据通信起着至关重要的作用。相对于《计算机网络》课程中讲授的各种网络协议而言,TCP/IP协议族只是其中涉及的一个特例,但是就实际应用而言,了解和把握TCP/IP的协议工作原理对网络理论知识是一个很好的实践方法。而要了解TCP/IP协议族的工作原理,利用socket接口编程是一个绝好,并有效的方式。 TCP/IP协议起源于UNIX系统,并得到了现在大部分主流操作系统的支持。因此,最好的TCP/IP协议学习环境应是类UNIX操作系统下,而LINUX起源于UNIX,并且大部分功能和使用方式都与UNIX及其类似,更重要的是其开放源码,可免费使用。基于此,本课程的实践环境选择使用LINUX操作系统。 【实验环境】 主机操作系统 :windows xp 虚拟机管理软件 :VMWare workstation 7.1 虚拟机操作系统 :UBUNTU 11.04 虚拟机操作系统之C/C++编程环境 :code::blocks 10.05 【课程设计内容描述】 本次课程设计需要完成一个如下所述的系统: 一个类似于银行账户管理的简单系统,该系统的客户程序和服务器程序设计需求如下: 客户程序: 用户可以向服务器发送存款请求; 用户可以向服务器发送查询账户金额请求; 服务器程序: 服务器响应客户程序发送的用户存款请求,对其账户金额进行增加,并发会回应信息; 服务器响应客户程序发送的用户查询请求,发回回应信息; 用户进行查询时需提供密码,而服务器需要对密码进行验证,验证有效,才提供查询服务,如果验证不成功,就发回密码错误回馈; 用户进行存款操作时不需提供密码,服务器无需对密码进行验证; 【课程设计思路】 本银行账户管理系统的大致设计思路如下: 银行用户可以向服务器发送以下几种请求消息: 将用户账号以及所需存款的金额,发送给服务器; 存款数据包所包含大致内容: 存款请求标识、账户名、存款金额 将用户账号发送给服务器; 查询数据包所包含大致内容: 查询请求标识、账户名、账户密码 服务器可以回应以下几类信息给银行客户: 对客户的存款请求,根据存款金额计算账户总额,然后回应客户; 回应用户存款请求数据包所包含大致内容: 回应标识、存款标识、用户名、账户存款总金额、 对客户的查询请求,首先验证账户密码是否有效,有效时将对应账户总额回馈给客户; 验证密码有效时回应用户查询请求数据包所包含大致内容: 回应标识、查询标识、用户名、账户存款总金额 验证密码无效时回应用户查询请求数据包所包含大致内容: 错误标识、查询标识、用户名 每种类型数据包中都应包含用户账户名;而回应数据包中都包含当前账户总金额。基于以上内容,我们可以设定以下数据结构作为“投票”协议的数据包结构。 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 服务器监听端口为:12345 用户存款: bankclient 127.0.0.1 12345 BC008808880001 1000 利用下面方法获取参数值: char* ServerIp = argv[1]; int ServerPort = atoi(argv[2]); char* UserAccount = argv[3]; int Deposit = atoi(argv[4]); 客户程序利用IP地址:127.0.0.1和端口:12345完成与服务器的连接, 利用账户名:BC008808880001和存款金额:1000构造BankInfo结构体变量, 例如:struct BankInfo binfo; memset(binof,0,sizeof(binfo)); binfo.deposit_count = Deposit; binfo.account = UserAccount; binfo.isInquiry = false; binfo.isResponse = false; 然后根据binfo的内容,进行字符串编码,获得以下结构数据包: Bank.d..BC008808880001.1000 (其中“.”代表空

文档评论(0)

ww90055 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档