欢迎来到天天文库
浏览记录
ID:22102493
大小:216.73 KB
页数:16页
时间:2018-10-27
《计算机网络实验二》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、哈尔滨工业大学«计算机网络》实验报告(2016年度春季学期)姓名:蔡鹏学号:1130310726学院:计算机科学与技术学院教师:李晓烽实验二一、实验目的理解滑动窗11协议的基本原理;掌握GBN的工作原理;掌握基于UDP设计并实现一个GBN协议的过程与技术。二、实验坏境1.接入internet的实验主机2.Windows7操作系统3.Visualstadio2015C++语言三、实验内容1)基于UDP设计一个简单的GBN协议,实现单向可靠数据传输(服务器到客户的数据传输)。2)模拟引入数椐包的丢失,验证所设计协议的有效性。四、实验过程及结果服务器端:使用UDP协议传输数裾(比如传输
2、一个文件),等待客户端的请求,接收并处理来自客户端的消息(如数据传输请求),当客户端开始请求数据时进入“伪连接”状态(并不是真正的连接,只是-•种类似连接的数据发送的状态),将数据打包成数据报发送,然后等待客户端的ACK信息,同时启动计时器。当收到ACK时,窗口滑动,正常发送下一个数据报,计时器重新计时;若在计时器超时前没有收到ACK,则全部重传窗口内的所以己发送的数据报。具体实现:1)命令解析为了测试客户端与服务器端的通信交互,方便操作,设置了此过程。首先,服务器接收客户端发来的请求数据,“-time”表示客户端请求获取当前时间,服务器回复当前时间;“-quit”表示客户端退出
3、,服务器回复“Goodbye!”;“-testgbn”表示客户端请求开始测试GBN协议,服务器开始进入GBN传输状态;其他数据,则服务器直接回复原数据。2)数据传输数据帧格式定义在以太网屮,数据帧的MTU为1500字节,所以UDP数据报的数据部分应小于1472字节(除去IP头部20字节与UDP头的8字节),为此,定义UDP数据报的数据部分格式为:dataSeqSeq为1个字节,取值为0〜255,(故序列号最多为256个);Data彡1024个字节,为传输的数据;最后一个字节放入EOFO,表示结尾。客户端:使用UDP协议向服务器端请求数据,接收服务器端发送的数据报并返回确认信息AC
4、K(注意GBN为累积确认,即若ACK=1和3,表示数据帧2已经正确接收),必须能够模拟ACK丢失直至服务器端超时重传的惜况。1)ACK数据帧定义Ack0巾于是从服务器端到客户端的单向数据传输,因此ACK数据帧不包含任何数据,只需要将ACK发送给服务器端即可。ACK字段为一个字节,表示序列号数值;末尾放入0,表示数据结束。2)命令设置客户端的命令和服务器端的解析命令向对应,获収当前川户输入并发送给服务器并等待服务器返回数据,如输入“-time”得到服务器的当前时间。“•testgbn[X][Y]”命令,[X],[y]均为[0,1]的小数,其中:[X]表示客户端的丢包率,模拟网络屮报
5、文丢失;IYJ表示客户端的ACK的丢失率。(使用随机函数完成)。如果用户不输入,则默认丢失率均为0.2。源代码及注释:Client.cpp://GBNclient,cpp:定义控制台应用程序的入口点。//#include^include〈stdlib.h>^include^include^pragmacomment(1ib,〃ws232.lib")#dcfincSERVER_PORT12340//接收数据的端口号#defineSERVERIP"127.0.0.1〃//服务器的IP地址constintBUFFERLENGT
6、H=1026;constintSEQ_SIZE=20;//接收端序列号个数,为广20/*-time从服务器端荻取当前时间-quit退出客户端-tcstgbn[X]测试GBN协议实现可靠数据传输[X][0,1]模拟数据包丢失的概率[Y][0,1]模拟ACK丟失的概率/*^T*^T*^T*^T**T*^T*^T*^T*^T*^T*^T*>T*^T*^T*^T**T*^T*voidprintTipsO{printf(,,*****************************************,/)printfC-timetogetcurrenttimelrT)print
7、fC-quittoexitclientIr/’)printf(〃-testgbn[X][Y]totestthegbn
8、〃)printf(,,*****************************************,);•’%v1、^、//Method:losslnLossRatio//EullNamc:losslnLossRatio//Access:public//Returns:BOOL//Qualifier:根据丢失率随机生成一个数字,判断是否丢失,丢失则
此文档下载收益归作者所有