计算机网络第二次实验智能1402班201408070221李帅玲目录计算机网络第二次实验..........................................................................1一.实验目的...............................................................................1二.实验原理...............................................................................1三.实验步骤及分析....................................................................3(一)实验前准备......................................................................3(二)实验步骤及问题回答......................................................4一.实验目的1.熟悉并掌握各种不同rdt协议的运行环境和协议性能。二.实验原理1.几种rdt协议1)Rdt1.0:在可靠信道上进行可靠的数据传输所依赖的信道非常可靠:不可能有位错,不会丢失数据;分别为发送方和接收方建立FSMs:发送方将数据送入所依赖的信道,接收方从所依赖的信道读出数据。2)Rdt2.0:在可能发送位错的信道上传输问题:如何从错误中恢复正向确认(ACKs):由接收方发送报文向发送方进行确认负向确认(NAKs):由接收方发送报文向发送方进行否认,说明分组有错发送方在收到NAK后进行分组重传rdt2.0的新机制(在rdt1.0基础之上)错误检测;接收方的反馈:控制信息(ACK,NAK)。Rdt2.0有一个致命的缺点若ACK/NAK报文丢失?发送方将不会知道接收端发生了什么,假如进行重传:可能发生数据重复。管理重复的问题接收方丢弃重复的分组(不向上递交)如果ACK/NAK丢失,发送方则重传正确的分组,发送方给每个分组加上sequencenumber(序号)。3)Rdt2.1:发送方,管理丢失的ACK/NAK,接收方,管理丢失的ACK/NAK。4)流水线协议流水作业:发送端允许发送多个分组,等待应答。必须增加顺序号的位数,在发送和接收端增加缓存。两种常用的流水线协议:回退N重传(go-Back-N),选择重传(SelectRetransmit)。回退N重传(GBN:Go-Back-N)发送方:在分组首部设置k位seq#,使用尺寸为N的“滑动窗口”,允许连续的多个分组不被应答。“回退n”协议的基本特点:发送方连续发送许多数据帧,接收方只接收一帧,即只能顺序接收,发送方发送的帧需要不同的编号来区分,发送方要有较大的发送缓冲区来保留可能重发的帧。优点:连续发送提高了信道利用率,误码率较低时,连续ARQ优于停等协议。缺点:要回退n帧重传(Go-back-n),导致某些已正确接收帧的重传,因此降低了发送效率。选择重传(SR:SelectiveRepeat)发送方仅对未收到应答的分组进行重发,发送方对每个unACKed分组设置计时器;发送方的窗口,N个连续的seq,同样对已发送的seq#s,unACKed分组进行限制;接收方逐个对所有正确收到的分组进行应答,对接收到的(失序)分组进行缓存,以便最后对上层进行有序递交。优点:避免重传已正确传送的帧,提高了信道利用率。缺点:在接收端需要占用一定容量的缓存,控制较复杂。三.实验步骤及分析(一)实验前准备1.打开虚拟机ubuntu。2.将实验文件simulator复制到ubuntu中。(注:如果实验时所得efficency为0,原因可能是simulator文件有误,可换其他simulator文件,或者安装redhat)3.了解simulator模拟的几种rdt协议。simulator中有p2.c—p6.c五个文件是描述协议的:p2.c是停等协议,设置有限的buffer和有限的处理速度;p3.c在不可靠的信道上允许单向的数据流动;p4.c是双向的滑窗协议;p5.c是GBN协议;p6.c是重传协议。4.阅览文件README了解实验要求。5.编译时需要输入的指令simprotocoleventstimeoutpct_losspct_cksumdebug_flags这六个参数分别是:协议、时间片、超时间隔、丢包率、检验和错误率、错误标记例如:输入:./sim5100020000(运行协议5,时间片设置为1000,超时间隔为20,无丢包、无检验码错误)6.实验需要回答下列问题:(二)实验步骤及问题回答答:题目含义:在某个协议中,分别测试有效负载和超时时间间隔、丢包率、校验和错误率的关系,并得出结论。(1)编译过程:cdsimulator(打开simulator文件),ls(查看simulator中的文件),make(编译)。(2)运行过程(simprotocoleventstimeoutpct_losspct_cksumdebug_flags)输入:./sim5100020000(运行协议5,时间片设置为1000,超时间隔为20,无丢包、无检验码错误),得到下图:图中,process1为发送方,它有两段信息(发送信息、接收信息);process0为接收方,也有两段信息(发送信息、接收信息);特别注意,这是一个双向传输,所以,process1的发送信息对应process0的接收信息,process0的发送信息对应process1的接收信息。(3)首先测试有效负载和超时时间间隔的关系,运行协议5,1000个时间片,无丢包,无校验和错误,结果如下表所示:timeoutPayloadsacceptedTotaldataframessentEfficiency(Payloadsaccepted/Totaldataframessent)1076301%2013323955%3019019995%4018818999%5019519799%6019119399%7019019299%8018618899%9017417599%10018818999%(注:表格中的超时时间间隔需要每次运行./sim时进行修改,实验选取了process0的Payloadsaccepted和process1的Totaldataframessent)(4)结论:由表中的测试数据可以看出,有效负载在超时时间间隔为50的时候最大,为195。因为时间间隔小于50的时候,重传的比较多,导致有效的少,当时间间隔大于50的时候,虽然没有重传,但是时间间隔大,发送一个数据后等待的时间过长,导致发送的总的数据减少;但是显然,超时时间间隔越大,其Efficiency(Payloadsaccepted/Totaldataframessent)也越大,因为此时重传比较少,发送的数据几乎都能接受到。(5)实验部分截图如下:(6)测试有效负载和丢包率的关系,运行协议5,1000个时间片,超时时间间隔为50,无校验和错误,结果如下表:LostpacketratePayloadsacceptedTotaldataframessentEfficiency(Payloadsaccepted/Totaldataframessent)1010317453%205016932%304419922%402715318%501615611%60151557%70101506%8041442%(7)结论:丢包率越高,收到的有效负载就越少,数据重传越多,超时状况也越多,传输效率越低。(8)部分截图如下:(9)测试有效负载与校验和错误率的关系,运行协议5,1000个时间片,超时间隔为50,无丢包,结果如下表所示:LostpacketratePayloadsacceptedTotaldataframessentEfficiency(Payloadsaccepted/Totaldataframessent)108417350%205416637%305616828%403515421%501715011%60101485%(10)结论:较验和错误率越高,收到的有效负载越少,传输效率越低。(11)部分截图如下:答:协议5为回退N步,协议6为选择重传运行:./sim5100050000和./sim6100050000Protocols5Protocols6Totaldataframessent193167Payloadsaccepted193167Framesretransmitted00Efficiency99%99%运行:./sim510005010100和./sim610005010100Protocols5Protocols6Totaldataframessent175125Payloadsaccepted8888Framesretransmitted8424Efficiency41%67%结论:当网络都处于理想状况时,即都没有丢包和校验和错误时,两个协议的性能差不多;而当网络状况越差,协议6的重传、有效负载比协议5小,所以协议6的性能较好。原因:协议5为回退N步,接收方不存储无序的分组,即使分组是正确的,如果其前一分组未到达,则将其丢弃,如此会增加重传的可能;而协议6为选择重传,即接收方会接收并缓存无序的分组,直到其前面的分组到达再一起上传给上层,如此可减少重传的可能。所以协议5适合运行在网络状况较好的情况下,丢包率和出错率较小的时候,重传几率较小,传输速率较快。而如果网络状况不佳,会出现大量重传,协议5会丢弃大量无序的且正确的分组,会带来更多的重传。而协议6只需重传丢失的分组,在网络状况较差时,效果会非常显著。问题说明:在函数pick_event中,改变协议5中几个事件(数据到达、超时处理、网络层准备等)的处理顺序,可以得出什么结论。下图为pick_event函数说明(注:每次顺序做调整后,最好重新进行编译再运行)顺序1:网络层准备、数据到达、校验和检验、超时处理得表格如下:LostpacketrateThechecksumerrorrateTotaldataframessentPayloadsacceptedFramestransmittedEfficiency100191969150%1010180829141%20201804912625%顺序2:网络层准备、超时处理、数据到达、校验和检验得表格如下:LostpacketrateThechecksumerrorrateTotaldataframessentPayloadsacceptedFramestransmittedEfficiency1001968510544%10101836411238%20201734212627%顺序3:超时处理、网络层准备、数据到达、校验和检验得表格如下:LostpacketrateThechecksumerrorrateTotaldataframessentPayloadsacceptedFramestransmittedEfficiency1001998711244%10101887310838%20201825012528%结论:通过上面三个表格的对比,可以看出在相同的条件下,当顺序为网络层准备、数据到达、校验和检验、超时处理时,得到的有效负载最大、重传次数最少。题意:观察超时间隔变化和数据重传数量的关系,并得出最佳设置值。测试超时时间间隔和重传的关系,运行协议5,1000个时间片,无丢包,无校验和错误得表格如下:timeoutPayloadsacceptedTotaldataframessentretransmittedframes1076306232013323910530190199740188189050195197060191193070