哈尔滨工业大学计算机科学与技术学院计算机科学与技术计算机网络大作业实验报告课程名称:计算机网络实验题目:基于UDP的SR协议班级:学号:姓名:完成日期:2008-11-28设计成绩报告成绩指导老师一、实验目的网络层次结构中,传输层有两个重要协议。i个是面向连接的TCP可信传输协议,它主要用于HTTP、SMTP等对可信度要求高的应用层服务;另一个是面向无连接的UDP传输协议,它主要主于如QQ,流媒体等对传输速率要求高的应用层服务。两种传输层协议各有所用,只不过应用场合不同。UDP虽然是面向非连接的不可信传输协议,但并表明它不能做到可信传输。本次实验即编写一个基于UDP的选择重传协议,它的可信验证是在应用层完成。二、实验要求及实验环境♦实验要求:编写基于UDP的选择重选协议,可信验证在应用层来完成♦实验环境:JDK1.6.0环境,可视编程软件为Eclipse三、设计思想1.主体思想采用滑动窗口协议,限制已发送出去但未被确认的数据帧的数循环使用已收到的那些数据帧的序号,具体实现是在发送端和接收端分别设定发送窗口和接收窗口。(1)发送窗口发送窗口用来对发送端进行流量控制。发送窗口的大小Wt代表在还没有收到对方确认条件下,发送端最多可以发送的数据帧的个数。(2)接收窗口接收窗口用来控制接收数据帧。只有半接收到的数据帧的发送序号落在接收窗口内,才允许将该帧收下,否则一律丢弃。接收窗口大小用wr來表示。在接收窗口和发送窗口间存在这样的关系:接收窗口发送旋转后,发送窗口才可能向前旋转,接收窗口保持不动时,发送窗口是不会旋转的。这种收发窗口按如此规律顺时钟方向不断旋转的协议就是滑动窗口协议。2.程序主体结构图2.1关于Go-Back-NsendersendQktOsendpktlsendpkt2sendpkt3(wait)revACKOsendpkt4rovACK1sendpkt5—Qkt2timeoutsendpkt2sendpkt3sendpkt4sendpkt5revpktOsendACKOrevpktlsendACK1revpkt3zdiscardsendACK1revpkt4zdiscardsendACK1revpkt5,discardsendACKlrevpkt2zdeliversendACK2revpkt3zdeliversendACK3Go-Eack-NSender:Okbitseq#inpktheaderFl"windoWofuptoN,consecutiveunactedpktsallowedseggsenexrsgaumIalreadyIusable,notJ▼|acked|y©tsentIIIIIIIDDgDODOIIIIIIDDDDDDD冷"Q—个windowsize--------------•ZCJACK(n):ACKsallpktsupto,includingseq存n■^cumulativeACKMomaydeceiveduplicateACKs(seereceiver)OTimerforeachin-flightpkTCJtim^outfn):retransmitpktnandallhigherseq#pktsinwindowreceiversend_basenextseqnumooiiLiii]iiiint—alreadyack#edsent,notyetack#edusable,notyetsentnotusableSelectiverepeat:sender,receiverwindowsOllllllllllllll—windowsize——♦tIoutoforder(buffered)butalreadyack#edIExpected,notyetreceived■acceptable(withinwindow)flnotusoble(b)receiverviewofsequeneenumberspktOrevd,delivered,ACKOsentoil234|56789pktlrevd,delivered,ACK1sent01|2345|6789pkt3revd,buffered,ACK3sent0l|234j6789pkt4revd,buffered,ACK4sent01I234si6789pk+2revd,deliverpkts2,3,4ACK2sent01234567S|9pk+5revd,delivered,ACK5sent012345|6789|3•各模块设计importjava.applet.Applet;importjava.awt.*;importjava.awteventActioiiListener;(a)senderviewofsequencenumberspktOsent789789789pk+3sent,windowfullIo123>456789ACKOrevd,pkt4sent011234|56789pkt2timeout,pkt2resentoil234>56789ACK1revd,okt5sent011234516789importjava.awt.event.ActionEvent;publicclassgbnextendsAppletimplementsActionListener,Runnablefinalintwindow_len_def=5;//Defaultvaluesofparametersfinalintpack_width_def=10;finalintpack_height_def=30;finalinth_offset_def=100;finalintv_offset_def=50;finalintv_clearance_def=300;finalinttotal_packet_def=20;〃定义发送的总数据包个数为20finalinttime_out_sec_def=30;finalColorunack_color=Coloured;//定义finalColorack_color=Colonyellow;finalColorsel_color=Colongreen;finalColorroam_pack_color=Color.red;finalColorroam_ack_color=Colonyellovv;final...