大学计算机网络实验6-Go-back-n协议

合集下载

北京邮电大学2013-2014学年计算机网络期中考试题

北京邮电大学2013-2014学年计算机网络期中考试题

北京邮电大学2013-2014年第一学期《计算机网络》期中考试试题一.判断题(共10分,每题1分)判断下面的每项陈述是否正确,正确的答√,错误的答×。

1.()数据链路层采用Go Back N 协议,发送方已经发送了编号为0-7的帧,当计时器超时时,发送方收到应答序号为1、3和5的确认帧,则发送方需要重发的帧数是2。

2.()双绞线和同轴电缆相比,双绞线有更高的带宽,而且价格便宜,所以在计算机通信领域双绞线比同轴电缆使用得更普遍。

3.()与调制解调器(MODEM)相比,使用ADSL技术不需要讲计算机输出的数字信号调制为模拟信号,所以,ADSL能提供比MODEM拨号上网快得多的传输速率。

4.()使用一个带宽8MHz的信道,由于各层包头的开销和成帧的开销,如果仅统计应用层的数据传输速率,速率必低于1M字节/秒。

5.()奈奎斯特(Nyquist)不仅适用于铜线,也适用于光纤。

6.()两站之间采用Go-Back-N协议传送数据,若序号的比特数为4,则发送窗口的最大值是3。

7.()虚电路网络不需要像数据报网络实现从任意源到任意目的地的路由选择的能力。

8.()传统10Mbps以太网的波特速率是5M波特。

9.()在HDLC协议中,当接收方检测到帧差错时,可以发送RNR帧,请求迅速重传该帧。

10.()ppp是面向连接的协议,但不是可靠传输的协议。

二.计算题(共25分)1.(5分)一个系统有n层协议的层次结构,应用程序产生的消息长度为m字节,每层需要加h字节的头,这些头需要占用的网络带宽的比例为多少?2.(5分)在点到点信道上,假设数据帧传输出错的概率是P,应答帧从不出错,求要成功发送一帧的平均传送次数。

1 / 4。

自考计算机网络原理典型题(卷子)

自考计算机网络原理典型题(卷子)

自考计算机网络原理典型题(卷子)《计算机网络原理》计算应用题一、数据通信技术(1)知识点1.数据传输速率(比特率)的定义及公式:每秒传输的二进制位数。

r=1/t*log2n(1)按nyquist定理最小管制的数据速率就是多少?(2)若信噪比为30db,按shannon定理最大限制的数据速率是多少?5.设立利用12mhz的取样频率对信号展开取样,若定量级为4,先行排序表面化并无噪声信道中的数据传输速率和所需的信道频宽。

(建议写下排序过程)对于带宽为4khz的语音信号,采用量化级为128的脉码调制编码,问所产生的二进制位起码要用多n如果在信道上发送一比特二进制信号所需时间位0.05ms,那么通信信道的数据传输速率为__________。

2、码元速率(信号传输速率、调制速率、波特率)的定义及公式:b=1/tr=b*log2信号传输速率为1200baud,每个码元可行4种线性状态,该信号的数据传输速率为__________。

3、奈奎斯特公式:b=2hc=2h*log2n每赫兹带宽的理想低通信道的最高码元传输速率为每秒__________个码元。

普通电话线路带宽约3khz,则码元速率极限值为_________。

4、香农公式:c=h*log2(1+s/n)分贝公式:10log10(s/n)10lgs/n5、取样定理:取样频率大于等同于信号频率的2倍。

6、数据编码的三过程:取样、定量、编码7、量化与编码位数的关系:量化级别=以2为底编码位数次幂8、调幅、调频、调相小传输速率的信道就可以传输?设信号的采样量化级为256,若要使数据传输速率达到64kbps,试计算出所需的无噪声信道的带宽和信号调制速率。

(要求写出计算过程)使用脉码调制方法对模拟信号展开编码,每次取样采用256个定量级展开定量,若数据传输速率为64kbps,那么每秒钟取样的次数就是多少次?6.采用8种相位,每种相位各有4种幅度的pam调制方法,问在2400波特的信号传输速率下,能达到的数据传输率是多少?某调制解调器同时采用幅移键控和相移键控,使用0、兀/2、兀和3/2兀四种增益,每种增益又都存有两个相同的幅值,反问在波特率为1200的情况下数据速率就是多少?设有一调制解调器波特率为9600baud,采用pam调制技术,共有6种相位,其中2种相位每个相位各有2个幅度,则数据传输速率为多少?当采用1位校验位、2位停止位、8位数据位的异步传输时,该调制解调器的有效速率为多少?第1页共9页(2)典型题1.对于频宽为6mhz的信道,若用8种相同的状态则表示数据,在不能考量热噪声的情况下,该信道每秒最多能传送的位数为多少?若电视信道的带宽为6mhz,假定无噪声并使用4电平的数字信号,每秒钟能发送的比特数不会超过多少?2.对于频宽为3khz的信道,若存有8种相同的物理状态去则表示数据,信噪比为20分贝,反问按奈斯特定理最大限制的数据速率是多少?3.若要在一条50khz的信道上传输1.544mbps的之下载波,信噪比至少为多少?4.对于带宽为3khz的信道,若有8种不同的物理状态来表示数据,请问:二、曼彻斯特与三种技术(1)知识点1、标准曼彻斯特:滑动在中间,0、1看看前半;差分曼彻斯特:翻转在中间,0、1看起点,有跳是0,无跳是12、三种调制技术:调频:0低频,1高频;调幅:0无幅,1有幅;皮斯基:00二者,1180°3、三种复用技术:频分多路复用、时分多路复用和波分多路复用技术的同时实现条件及工作原理。

计算机网络教程第五版课后答案

计算机网络教程第五版课后答案
通信时会因为网络拥塞而导致分组丢失
数据按序到达
分组可能失序
建立连接后通信过程中不再需要地址
所有分组都携带地址或相关控制信息
端到端时延确定
端到端时延不确定
适合大量实时数据的传输
适合突发数据的传输
1-4为什么说因特网是自印刷术以来人类通信方面最大的变革?
解答:因特网已成为仅次于全球电话网的世界第二大网络,缩小了人际交往的时间和空间,大大改变着我们工作和生活的各个方面。
客户:在计算机网络中进行通信的应用进程中的服务请求方。
服务器:在计算机网络中进行通信的应用进程中的服务提供方。
客户-服务器方式:通常指的是一种网络应用程序的工作方式。客户-服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。服务器总是一直运行并被动等待通信,而客户总是主动发起通信。服务器可以同时处理多个客户的请求,而客户程序之间不直接进行通信。
1-2试简述分组交换的要点。
解答:分组交换采用存储转发技术,当需要发送数据时无需在源和目的之间先建立一条物理的通路,而是将要发送的报文分割为较小的数据段,将控制信息作为首部加在每个数据段前面(构成分组)一起发送给分组交换机。每一个分组的首部都含有目的地址等控制信息。分组交换网中的分组交换机根据分组首部中的控制信息,把分组转发到下一个分组交换机。用这种存储转发方式将分组转发到达最终目的地。
解答:分组交换时延为: 。电路交换时延为: 。因此,分组交换时延较电路交换时延小的条件为:
1-11在上题的分组交换网中,设报文长度和分组长度分别为x和(ph)(bit),其中p为分组的数据部分的长度,而h为每个分组所带的控制信息固定长度,与p的大小无关。通信的两端共经过k段链路。链路的数据传输速率为b(bit/s),结点的排队时间可忽略不。若打算使总的时延为最小,问分组的数据部分长度p应取多大?

数据通信与计算机网络第五版(习题答案)——第三章数据链路层

数据通信与计算机网络第五版(习题答案)——第三章数据链路层

数据通信与计算机网络第五版第三章数据链路层3-1 数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与“数据链路接通了”的区别何在?解答:所谓链路就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

在进行数据通信时,两个计算机之间的通信路径往往要经过许多段这样的链路。

可见链路只是一条路径的组成部分。

数据链路则是另一个概念。

这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输(这将在后面几节讨论)。

若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

这样的数据链路就不再是简单的物理链路而是个逻辑链路了。

“电路接通了”仅仅是物理线路接通了通信双方可以在上面发送和接收0/1比特了,而“数据链路接通了”表明在该物理线路接通的基础上通信双方的数据链路层协议实体已达成了一致并做好了在该链路上发送和接收数据帧的准备(可能互相要协商某些数据链路层参数)。

3-2 数据链路层包括哪些主要功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。

解答:数据链路层的链路控制的主要功能包括:封装成帧、透明传输和差错检测,可选功能包括可靠传输、流量控制等。

在数据链路层实现可靠传输的优点是通过点到点的差错检测和重传能及时纠正相邻结点间传输数据的差错。

若在数据链路层不实现可靠传输由高层如运输层通过端到端的差错检测和重传来纠正这些差错会产生很大的重传时延。

但是在数据链路层实现可靠传输并不能保证端到端数据传输的可靠,如由于网络拥塞导致路由器丢弃分组等。

因此,即使数据链路层是可靠的,在高层如运输层仍然有必要实现端到端可靠传输。

如果相邻结点间传输数据的差错率非常低,则在数据链路层重复实现可靠传输就会给各结点增加过多不必要的负担。

3-3 网络适配器的作用是什么?网络适配器工作在哪一层?解答:网络适配器的作用就是实现数据链路层和物理层的功能。

适配器接收和发送各种帧时不使用计算机的CPU 。

arq 名词解释(一)

arq 名词解释(一)

arq 名词解释(一)ARQ 名词解释ARQ(Automatic Repeat reQuest)是一种通信协议,用于在数据传输过程中检测和纠正错误。

在计算机网络和通信领域中,ARQ被广泛使用以确保数据传输的可靠性和完整性。

以下是与ARQ相关的一些名词及其解释:1. Stop-and-Wait ARQStop-and-Wait ARQ是一种最简单的ARQ协议。

发送方在发送数据后等待接收方的确认,只有在收到确认后才发送下一个数据包。

这种协议的优点是简单易实现,缺点是效率低下,因为发送方必须等待确认才能发送下一个数据包。

例子:发送方发送一个数据包给接收方,然后等待来自接收方的确认消息。

接收方收到数据包后发送确认消息给发送方。

如果发送方在一定时间内未收到确认消息,则会认为数据包丢失,重新发送该数据包。

2. Go-Back-N ARQGo-Back-N ARQ是一种基于滑动窗口的ARQ协议。

发送方可以连续发送多个数据包而无需等待确认,接收方按序接收数据包并发送确认消息。

如果接收方检测到某个数据包有错误,它会丢弃该数据包以及后续的所有数据包,并要求发送方重新传输从丢失的数据包开始之后的所有数据包。

例子:发送方按顺序发送数据包0、1、2、3、4。

接收方按顺序接收数据包0、1,但数据包2出现错误,接收方发送确认消息请求发送方重新传输从数据包2开始的数据包。

发送方重新发送数据包2、3、4。

3. Selective Repeat ARQSelective Repeat ARQ也是基于滑动窗口的ARQ协议。

发送方可以连续发送多个数据包,接收方按序接收数据包并发送确认消息。

与Go-Back-N不同的是,接收方可以丢弃出错的数据包,而不需要重新传输之前的所有数据包。

例子:发送方按顺序发送数据包0、1、2、3、4。

接收方按顺序接收数据包0、1,但数据包2出现错误,接收方丢弃数据包2并发送确认消息请求发送方重新传输数据包2。

计算机网络之ARQ协议

计算机网络之ARQ协议

计算机网络之ARQ协议ARQ协议,全称为Automatic Repeat Request(自动重传请求),是一种常用的计算机网络中用于可靠数据传输的协议。

它通过在发送端和接收端之间进行数据包的确认和重传,来确保数据的可靠传输。

ARQ协议是一种基于反馈机制的协议,它根据接收端对数据包的确认或否认进行相应的处理。

一般而言,ARQ协议分为停止-等待ARQ、连续ARQ(Go-Back-N ARQ和选择性重传ARQ)等不同类型。

1. 停止-等待ARQ停止-等待ARQ是一种最简单的ARQ协议。

发送端发送一个数据包后,会停止发送并等待接收端的确认。

接收端收到数据包后,会发送一个确认信息给发送端,表示该数据包已经成功接收。

如果发送端在一定时间内没有收到确认信息,就认为该数据包丢失,会进行重传。

停止-等待ARQ的特点是简单,但效率较低。

发送端必须等待确认信息才能发送下一个数据包,无法充分利用网络带宽。

2. 连续ARQ连续ARQ是相对于停止-等待ARQ而言的一种改进协议。

它允许发送端连续地发送多个数据包,而不需要等待每个数据包的确认。

2.1 Go-Back-N ARQGo-Back-N ARQ是一种基于滑动窗口的连续ARQ协议。

发送端维护一个发送窗口,其中包含了多个已发送但未收到确认的数据包。

接收端维护一个接收窗口,其中包含了多个按顺序到达的数据包。

发送端发送数据包后,不需要等待确认即可继续发送下一个数据包。

接收端在正确接收到数据包时,发送一个累积确认,表示已成功接收到所有数据包。

如果接收端检测到有数据包丢失或损坏,会要求发送端进行重传。

Go-Back-N ARQ的特点是简单有效,但可能会出现连续数据包被丢失而导致的重复传输。

2.2 选择性重传ARQ选择性重传ARQ是一种更加精细的连续ARQ协议。

发送端维护一个发送窗口,其中包含了多个已发送但未收到确认的数据包。

接收端维护一个接收窗口,其中包含了多个按顺序到达的数据包。

简述go-back-n策略的基本原理

简述go-back-n策略的基本原理

简述go-back-n策略的基本原理
Go-Back-N(GBN)是一种常用的拥塞控制策略,它主要用于面向连接的网络
环境中,被广泛用于TCP协议,是一种可靠的数据传输策略。

它是由NICAMAC公司发明的,即网络有序报文中的”向后移动N“策略。

主要基本原理是:探查的数据
报文会以递增的方式发送,发现丢包后,则停止发送,让发送方重发编号小于出现丢包的号码的报文,这一策略不断重复下去,直至接收到即将报文确认后重新恢复发送,以此达到可靠传输的目的。

Go-Back-N策略首先由源端发送端发出数据报文,然后进行确认,当等待超时
或者接收端重新发送确认时,源端发送端就会重新发送丢失的数据报文。

这种策略的优点是发送端在未收到接收端的确认时可以继续发送,使传输效率大大提高,但是缺点是如果接收方失去了太多数据报文,那么重传可能会超出网络缓冲区的容量,最终导致系统堵塞。

Go-Back-N在高校和高等教育中也是一种被广泛使用的传输策略,例如学校隔
离系统、网络实验,以及智能教学和课堂特殊实验要求较高的地方。

可以应用Go-Back-N策略,使传输速度增快,并有效控制网络拥塞,但要注意避免数据报文的
完整性被破坏,以及丢包的频繁出现,有效的把握数据的传输,避免数据的安全加密被攻破。

Go-Back-N策略是一种拥塞控制技术,它在高校和高等教育中有广泛的应用,其优
点是发送端在未收到接收端的确认时可以继续发送,使传输效率大大提高,但同时也有一定的缺点,要提高网络传输的可靠性,就需要注意控制丢包率,并且要保持数据报文的完整性和加密安全性。

计算机网络--滑动窗口实验报告

计算机网络--滑动窗口实验报告

计算机网络--滑动窗口实验报告计算机网络滑动窗口协议实验报告目录一、实验内容和实验环境描述(2)1.实验内容(2)2.实验目的(2)3.实验环境(2)二、协议设计(3)三、软件设计(4)Part A 选择重传协议1.数据结构(4)2.模块结构(6)3.算法流程(7)Part B gobackn协议 1.数据结构(8)2.模块结构(9)3.算法流程(10)四、实验结果分析(11)五、探究问题(13)六、实验总结与心得体会(14)一、实验内容和实验环境描述1.实验内容利用所学数据链路层原理,自己设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。

信道模型为8000bps全双工卫星信道,信道传播时延270毫秒,信道误码率为10?5,信道提供字节流传输服务,网络层分组长度固定为 256 字节。

2.实验目的通过该实验,进一步巩固和深刻理解数据链路层误码检测的CRC校验技术,以及滑动窗口的工作机理。

滑动窗口机制的两个主要目的:(1)实现有噪音信道环境下的无差错传输;(2)充分利用传输信道的带宽。

在程序能够稳定运行并成功实现第一个目标之后,运行程序并检查在信道没有误码和存在误码两种情况下的信道利用率。

为实现第二个目标,提高滑动窗口协议信道利用率,需要根据信道实际情况合理地为协议配置工作参数,包括滑动窗口的大小和重传定时器时限以及 ACK 搭载定时器的时限。

3.实验环境Windows10环境PC机Microsoft Visual Studio 2017集成开发环境二、协议设计本次试验主要设计数据链路层,实验中分别设计了gobackn协议与选择重传协议。

主要涉及到的层次结构是物理层、数据链路层、网络层。

物理层:为数据链路层提供的服务为8000bps,270ms传播延时,10?5误码率的字节流传输通道。

数据链路层利用接口函数send_frame()和 recv_frame()从物理层发送和接收一帧。

Go-Back-N Java程序,真正的好东西

Go-Back-N Java程序,真正的好东西

国外教材《计算机网络》Go-Back-N Java程序,形象生动,学习效果很好。

/** This Go Back N Applet was designed to be used in conjunction with * "Computer Networking: A Top Down Approach"* by James Kurose & Keith Ross.* Terminology and specifications are based upon their description of the* Go Back N protocol in chapter 3, section 4.** Original Applet coded by Shamiul Azom as project assigned by * Prof. Martin Reisslein, Arizona State University* Course No. EEE-459/591. Spring 2001** Applet significantly revised by Matthew Shatley and Chris Hoffman * for Professor Paul D. Amer (amer@)* University of Delaware (2008)** Applet updated Feb. 2012 by Chris Hoffman to fix GoBackN text output * to reflect the single timer implementation of Go Back N, as outlined * on pg 234 in the 5th edition of the aforementioned text.** A note on magic numbers: Magic numbers are horrible to have in your code in general.* However, the graphics components of this applet provided no good way to remove the* magic numbers from the code as locations for objects are specified in pixel coordinates.* We apologize in advance for any confusion this may cause in reading the code.*/import java.applet.Applet;import java.awt.*;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;public class GBN extends Applet implements ActionListener, Runnable {private static final int ADVANCE_PACKET = 5;// Default values of parameters for animation// sender_window_len_def the sender can have a maximum of 5 outstanding // un-acknowledged packetsfinal int sender_window_len_def = 5;// how many packets the receiver can hold in memory without delivering data// in the case of GBN we can hold 1(or the current packet) in memory // if another packet arrives the one in memory is discardedfinal int receiver_window_len = 1;// GUI components to describe how the Simulation should be drawn final int pack_width_def = 10;final int pack_height_def = 30;final int h_offset_def = 100;final int v_offset_def = 50;final int v_clearance_def = 300;//used for timeout values, thread.sleep() is specified in milliseconds //so we convert to seconds for timeout processing.(1000 milliseconds = 1 second)final int TIMEOUT_MULTIPLIER = 1000;final int MIN_FPS = 3;final int FPS_STEP = 2;final int DESELECTED = -1;final int DEFAULT_FPS = 5;//default to 20 packets if no value is suppliedfinal int total_packet_def = 20;// 25 sec default timeout for retransmissionsfinal int time_out_sec_def = 25;// Default colors of different packets// these have been matched as closely to the the text as possible // Order of color values Red, Green, Bluefinal Color unack_color = new Color(204, 230, 247);final Color ack_color = Color.yellow;final Color sel_color = Color.green;final Color roam_pack_color = new Color(204, 230, 247);final Color roam_ack_color = Color.yellow;final Color dest_color = Color.red;final Color received_ack = new Color(37, 135, 234);// base - our sending base - the next expected packet to be received // nextseq - the next sequence number that will be given to a newly created// packet// selected - the index of the currently selected packet in transmission// lastKnownSucPacket - LAST KNOWN SUCcessful PACKET received by receiving// nodeint base, receiver_base, nextseq, fps, selected = DESELECTED, timeout, timeoutPacket, lastKnownSucPacket;boolean timerFlag, timerSleep;// define our buttons for actions available to be taken by the user Button send, stop, fast, slow, kill, reset;/** 2 threads run for the applet gbnTread - runs to create our animation and* process packets timerThread - created and sleeps for a specified period* of time. On wake up performs timeout processing A timeout causes all of* the outstanding packets to be re-transmitted. NOTE: Thetext(Computer* Networking: A Top Down Approach) specified a per packet timer, however* this is rarely implemented as there is a significant overhead in using* that many timers. Logically, the only packet that would ever timeout is* the left most edge of the sending window as this has been in transmission* the longest. Since a per packet timer system is not implemented in * practice we have simulated per packet timers per the books description* while using only a single timer.*/Thread gbnThread, timerThread;TextArea output; // output variable used to write information in the text// boxDimension offDimension;Image offImage; // implements double buffering to proved a smoother // animationGraphics offGraphics; // graphics component used for drawingGoBackNPacket sender[]; // sender array - holds the packets being sent // Declaring properties of our windowint window_len, pack_width, pack_height, h_offset, v_offset,v_clearance,total_packet, time_out_sec;/*************************************************************************** Method init *************************************************************************** Purpose: init method to set up applet for running - first methodcalled* on loading the code. Attempts to load parameters passed from HTMLcode* contained in the website. If there is an error or no parametersare* provided then the default values(declared above) are used.* Global variables used: sender - array holding the packets and the* corresponding acks for the packets sent in the applet* output - console window for applet activities & messages**************************************************************************/public void init() {// prevents layout manager from adjusting components in the applet// The buttons made it easier to deal with pixel coordinates// than recode for layout managersetLayout(null);output = new TextArea(150, 150); // setup output box// create text area for console output boxoutput.setBounds(0, 400, 650, 250); // set bounds for output boxoutput.setEditable(false); // prevent user from editing outputwritten// to consoleadd(output); // tell applet to draw our output boxsetupSimulationParams();base = 0; // Defining our base to be 0 the first packet number// expectedreceiver_base = 0; // Set the receiver base number to 0, which is the// first index in the receiver arraynextseq = 0; // Defining next sequence number for next packet sent. fps = DEFAULT_FPS; // Defining default Frame per Second for our animation// create a shared array, used for both the sender and the receiver // nodes.// all packets will be created and processed from this arraysender = new GoBackNPacket[total_packet];// Defining the buttons - creates the button and text to go on the // buttonsend = new Button("Send New");// set the command to be performed when button is pressed this command// is used// to determine which button was pressed in the actionPerformed methodsend.setActionCommand("rdt");// on button pushed the actionPerformed method of this class is called// and appropriate action is taken depending on the button pressed send.addActionListener(this);// set the size and location of this button (of form (x, y, width, // length)// this is specified in pixel coordinatessend.setBounds(0, 0, 90, 20);// same structure as abovestop = new Button("Pause");stop.setActionCommand("stopanim");stop.addActionListener(this);stop.setBounds(90, 0, 90, 20);fast = new Button("Faster");fast.setActionCommand("fast");fast.addActionListener(this);fast.setBounds(180, 0, 90, 20);slow = new Button("Slower");slow.setActionCommand("slow");slow.addActionListener(this);slow.setBounds(270, 0, 90, 20);kill = new Button("Kill Packet/Ack");kill.setActionCommand("kl");kill.addActionListener(this);kill.setEnabled(false);kill.setBounds(360, 0, 90, 20);reset = new Button("Reset");reset.setActionCommand("rst");reset.addActionListener(this);reset.setBounds(450, 0, 90, 20);// Adding the buttons to our applet window so they can be renderedand// usedadd(send);add(stop);add(fast);add(slow);add(kill);add(reset);// print out message about the new authors of the codeoutput.append("- GoBackN Applet written by Matt Shatley & Chris Hoffman\n");output.append("- Advised by Professor Paul D. Amer (amer@),U of Delaware, 2008\n");output.append("- Updated by Chris Hoffman and Professor Amer,2012\n\n");// tell user we are ready to begin demonstrating Go Back Noutput.append("-Ready to run. Press 'Send New' button tostart.\n");}// End init() method/**************************************************************************** Method Start **************************************************************************** Purpose: Start method required for implementing multi-threading.Start is* the first method called by a thread after creation.* Procedures Calling: run* Procedures Called: run* Global Variables Used: gbnThread - creates new thread for first* execution and starts thread(calling run method of thread)***************************************************************************/public void start() {// Creating GBNThread and starting execution. After start methodis run// the run method of this class is calledif (gbnThread == null)gbnThread = new Thread(this);gbnThread.start();}// End start() method/**************************************************************************** Method run **************************************************************************** Purpose: Run method required for runnable interface. Determineswhich* thread is calling and begins animation processing accordingly. gbnThread* produces the animation for the applet. The timerThread sleeps until* timeout processing is needed to retransmit the sending window.* Procedures/Functions Called: check_upto_n,paint/update(indirectly)* Procedures/Functions Calling: main, start* Local variables: currentThread - holds the identifier for thecurrently* executing thread i - temporary variable used for loop control* Global variables used: sender - array holding the packets and the* corresponding acks for the packets sent in the applet output - console* window to display information about the applet activities* lastKnownSucPacket - holds the number of the last successful packet to* arrive gbnThread - thread to advance animation********************************************************************* *****/public void run() {// test if our simulation has completed. Prevents animation from looping// over// no inputs. Terminates threads and exits method.if (sender[total_packet - 1] != null)if (sender[total_packet - 1].acknowledged) {sender[total_packet - 1].packet_pos += ADVANCE_PACKET;gbnThread = null;output.append("Data Transferred - Simulation completed\n");return;}/** determine which thread called the run method since both the GBN * simulation thread and the timer thread call the same run method. */System.gc();Thread currenthread = Thread.currentThread();// while the gbnThread (Go Back N simulation thread) is calling // animation advance the animation accordingly.while (currenthread == gbnThread) {/** Explanation of the following if structure:* if any of the packets in the sender array are in* transit between nodes then the location variable is incremented by* ADVANCE_PACKET(5 pixels by default) for that packet. Once the packet* has reached the receiving node the variable reached_dest is set to true.* Processing and sending of ACKs will then takes place.*/if (onTheWay(sender)) {for (int i = 0; i < total_packet; i++)if (sender[i] != null) // if a packet has been created at this index in arrayif (sender[i].on_way) // If this packet is currently being transmitted// Test if the packet has reached the destination node// if the packet has not reached the destination then// advance the packet's location by ADVANCE_PACKETif (sender[i].packet_pos < (v_clearance -pack_height))sender[i].packet_pos += ADVANCE_PACKET; // and// If a packet is moving towards the destinationelse if (sender[i].packet_ack) {deliverPackets(i);} else if (!sender[i].packet_ack) {// check if the packet this acknowledges is our// next expected// sequence numberif (sender[i].ackFor != i) {// extract what packet this ack is forint location = sender[i].ackFor;// check to see if we have processed the ack// as the original ack for this packet may// have been lostif (!sender[location].acknowledged) {// print out confirmation message,// process packet, and perform GBN// processingoutput.append("(S) - Cumulative Ack received for Packet(s) up to and including Packet " + location + ". Timer for Packet(s) up to and including " + location + " stopped\n");sender[location].received = true;sender[location].on_way = false;sender[location].acknowledged = true;sender[i].packet_ack = false;sender[i].on_way = false;// do go back n processing for every// packet up to the location of this// packetsimGoBackN(location);} else {/** else this is a duplicate ack. Go Back* N performs no action on duplicate* acks received. process packet and* ignore*/output.append("(S) - Cumulative Ack for Packet(s) up to and including " + sender[i].ackFor + " received again (DUPACK)\n");sender[i].packet_pos = pack_height + ADVANCE_PACKET;sender[i].packet_ack = false;sender[i].on_way = false;}} else {// else this is an ack for our next expected// sequence numberoutput.append("(S) - Cumulative Ack received for Packet(s) up to and including " + i + "\n");output.append("(S) - Stop timer\n");// check to see if there is another packet in transit// in case we need to restart the timerif(i < total_packet_def && sender[i + 1] != null){output.append("(S) - Start timer (for Packet " + (i+1) + ")\n");}sender[i].received = true;sender[i].on_way = false;// perform go back n processing for all// packets up to index i in sender arraysimGoBackN(i);}}// update our displayrepaint();// sleep to display a reasonable fps for the animaition.// without this the animation would process faster than the user// can see.try {Thread.sleep(TIMEOUT_MULTIPLIER / fps);timeout = (TIMEOUT_MULTIPLIER / fps);// if we get interupted something outside of our control has// gone wrong.// this should only be interrupted by a browser error} catch (InterruptedException e) {output.append("-Help\n");}}// end ifelsegbnThread = null;}while (currenthread == timerThread) {// if timerSleep is true we have told the timerthread to wait a// specified period of time(time_out_sec*TIMEOUT_MULTIPLIER)// before checking to see if any packets are still outstanding.if (timerSleep) {timerSleep = false;try {Thread.sleep(time_out_sec * TIMEOUT_MULTIPLIER);timeout = (time_out_sec * TIMEOUT_MULTIPLIER);} catch (InterruptedException e) {output.append("-Timer interrupted.\n");return;}} elseretransmitOutstandingPackets();}// end while}// End run() method/******************************************************************** ** Method retransmitOutstandingPacket ********************************************************************** Purpose: handles transmission of packets when a timeout occurs* Procedure calling: run(called by timerThread)* Procedures called: none* Global variables used: sender[] - to set up params for retransmission* timerSleep - to reset timer value* GBNThread - set animation thread for retransmissio* output - output messages to user about retransmission* base - number of left-most packet in the sending window* Local variables: n - used as loop control variable*********************************************************************/private void retransmitOutstandingPackets() {// after the timerThread wakes up process the packets in sender // array from the base of our window (the leftmost edge)// up to the last packet sendfor (int n = (base == 0) ? 0 : base - 1; n < base + window_len; n++) {if (sender[n] != null)if (!sender[n].acknowledged) {sender[n].on_way = true;sender[n].packet_ack = true;sender[n].packet_pos = pack_height + ADVANCE_PACKET;sender[n].ackFor = n;}timerSleep = true;if (gbnThread == null) {gbnThread = new Thread(this);gbnThread.start();}}// end for//test for border case -- needs cleanupfor(int i = base; i < total_packet; i++)if(sender[i].acknowledged == false){output.append("(S) - Timeout occurred (for Packet " +(i) + ") \n");break;}output.append("(S) - All outstanding Packet(s) from " + base + "to " + (nextseq - 1) + " are retransmitted. Start timer (for Packet "+base +")\n");}/**************************************************************************** Method simGoBackN **************************************************************************** Purpose: Simulates the Go Back N protocol. The "heart" of the GoBack N* processing. Method handles the acknowledging up to the ack we just* received.* Procedures/Functions Calling: run* Local variables: i - the index in the array to check up to - comesfrom the* packet we just received* Global variables used: sender - array holding the packets and the* corresponding acks for the packets sent in the applet* output - console window to display information about the applet* activities* lastKnownSucPacket - holds the number of the last successfulpacket to* arrive gbnThread - thread to advance animation***************************************************************************/public void simGoBackN(int i) {// set all packets in the sender array up to index i (our ack thatjust// arrived) to acknowledged per go back n specs.for (int n = 0; n <= i; n++) {sender[n].acknowledged = true;}// if our packet was selected clear the selection bit.if (i == selected) {selected = DESELECTED;kill.setEnabled(false);}timerThread = null; // resetting timer thread// increment our base value to reflect the new ack we just received if (i + window_len < total_packet)base = i + 1;// if we have room in our window allow the user to send a new packet if (nextseq < base + window_len)send.setEnabled(true);if (base != nextseq) {timerThread = new Thread(this);timerSleep = true;timerThread.start();} else// set out of order to false in order to control the last known// packet receivedsender[i].out_of_order = false;}/******************************************************************** * Method deliverPackets ********************************************************************* Purpose: process incomming acknowledgments. handle incrementing the* window and informing user of ack arrival* Procedures Calling: run* Procedures Called: none* Local Variables: none* Global Variables: packetNumber -index into sender of arriving packet* sender[] - array of packets updated to reflect a new ack has arrived* output - display information to user about ack that just arrived * base - number of left most packet in sending window********************************************************************* *****/private void deliverPackets(int packetNumber) {sender[packetNumber].reached_dest = true;// if this packet is an acknowledgment for any// other packet than itself, it is a duplicate// ack. print out a message telling the user the// packet is a duplicateif (sender[packetNumber].ackFor != packetNumber) {output.append("(S) Cumulative Ack for Packets up to and including " + sender[packetNumber].ackFor + " received again (DUPACK)\n");sender[packetNumber].packet_pos = pack_height +ADVANCE_PACKET;sender[packetNumber].packet_ack = false;// if all packets have been received in// order, print confirmation message of// packet arrival and process ack normally// check for in-order delivery} else if (check_upto_n(packetNumber) && packetNumber >= receiver_base) {sender[packetNumber].packet_pos = pack_height +ADVANCE_PACKET;sender[packetNumber].packet_ack = false;lastKnownSucPacket = packetNumber;output.append("(R) - Packet " + packetNumber + " received. Cumulative Ack for Packets up to and including " + packetNumber + " sent. Packet " + packetNumber + " delivered to application\n");// advance the receivers next expected// packet window while// the base less than our max packetsif (receiver_base + 1 < total_packet && receiver_base <= lastKnownSucPacket)receiver_base = receiver_base + 1;}// Handle the out of order packets by// creating a duplicate ack for the last// in order packet receivedelse {// handles the special case where the first packet is lost - otherwise any packet// that arrives will acknowledge packet 0 even though packet 0 has been lostif (base == 0 && sender[0].packet_ack && receiver_base ==0) {output.append("(R) - Packet " + packetNumber + " received out of order - no Packets acknowledged. Special case - No Ack sent\n");sender[packetNumber].packet_pos = pack_height + ADVANCE_PACKET;sender[packetNumber].on_way = false;sender[packetNumber].reached_dest = false;}//for duplicate ackselse if(packetNumber < receiver_base){sender[packetNumber].packet_pos = pack_height + ADVANCE_PACKET;sender[packetNumber].packet_ack = false;// base is stored as the next expected packet number so our last in packet// received is 1 less than the current value of base when base is 0 we have not// received any packets but we can't signify this without having an array out// of bounds erroroutput.append("(R) - Packet " + packetNumber + " received out of order Dropping Packet " + packetNumber + ". Cumulative Ack for Packets up to and including " + (lastKnownSucPacket) + " sent\n");}// all other packet arrivals handled belowelse {sender[packetNumber].packet_pos = pack_height + ADVANCE_PACKET;sender[packetNumber].packet_ack = false;// base is stored as the next expected packet number so our last in packet// received is 1 less than the current value of base when base is 0 we have not// received any packets but we can't signify this without having an array out// of bounds errorsender[packetNumber].ackFor = lastKnownSucPacket;sender[packetNumber].reached_dest = false;sender[packetNumber].out_of_order = true;output.append("(R) - Packet " + packetNumber + " received out of order. Dropping Packet " + packetNumber + ". Cumulative Ack for Packets up to and including " + (lastKnownSucPacket) + " sent\n");if (packetNumber == selected) {selected = DESELECTED;kill.setEnabled(false);}}}}/********************************************************************** Method setupSimulationParams ********************************************************************** Purpose: Extract simulation parameters from the HTML page the applet * is being executed from. If the parameter is supplied convert to value * to integer and check for greater than 0(less than 0 will throw exceptions)* if the value supplied is in range, assign that value to the simulation* parameter* Global variables used: window_len,pack_widt, pack_height, h_offset, v_offset,* v_clearance, total_packet, time_out_sec**************************************************************************/private void setupSimulationParams() {String strWinLen, strPackWd, strPackHt, strHrOff, strVtOff, strVtClr, strTotPack, strTimeout;// Start collecting parameters from HTML the applet is called from strWinLen = getParameter("window_length");strPackWd = getParameter("packet_width");strPackHt = getParameter("packet_height");strHrOff = getParameter("horizontal_offset");strVtOff = getParameter("vertical_offset");strVtClr = getParameter("vertical_clearance");strTotPack = getParameter("total_packets");strTimeout = getParameter("timer_time_out");// try to retrieve the expected parameters we read in from above try {//check if current param was supplied in HTML pageif (strWinLen != null) {//if param was supplied convert value to integer valuewindow_len = Integer.parseInt(strWinLen);//check if value supplied is greater than 0 (negative or 0 will cause simulation errors)//conditional assignment - if window_leng is greater than 0, window_len keeps its current value otherwise the defaultvalue(sender_window_len_def) is uesdwindow_len = (window_len > 0) ? window_len :sender_window_len_def;} else//if param was not supplied use default valuewindow_len = sender_window_len_def;//same structure as aboveif (strPackWd != null) {pack_width = Integer.parseInt(strPackWd);pack_width = (pack_width > 0) ? pack_width : pack_width_def;} elsepack_width = pack_width_def;if (strPackHt != null) {pack_height = Integer.parseInt(strPackHt);pack_height = (pack_height > 0) ? pack_height :pack_height_def;} elsepack_height = pack_height_def;if (strHrOff != null) {h_offset = Integer.parseInt(strHrOff);h_offset = (h_offset > 0) ? h_offset : h_offset_def;} elseh_offset = h_offset_def;if (strVtOff != null) {v_offset = Integer.parseInt(strVtOff);v_offset = (v_offset > 0) ? v_offset : v_offset_def;} elsev_offset = v_offset_def;if (strVtClr != null) {v_clearance = Integer.parseInt(strVtClr);v_clearance = (v_clearance > 0) ? v_clearance :v_clearance_def;} elsev_clearance = v_clearance_def;if (strTotPack != null) {total_packet = Integer.parseInt(strTotPack);total_packet = (total_packet > 0) ? total_packet: total_packet_def;} elsetotal_packet = total_packet_def;if (strTimeout != null) {time_out_sec = Integer.parseInt(strTimeout);time_out_sec = (time_out_sec > 0) ? time_out_sec: time_out_sec_def;} elsetime_out_sec = (time_out_sec > 0) ? time_out_sec: time_out_sec_def;//exception converting to integer - if a non integer value is supplied conversion to an integer value will throw an exception //if an exception is thrown, keep supplied values(already checked) and use default values for rest of params.} catch (Exception e) {// if above fails use what values we have and defaults for the rest// should recover more gracefully than previous codewindow_len = (window_len > 0) ? window_len :sender_window_len_def;pack_width = (pack_width > 0) ? pack_width : pack_width_def;pack_height = (pack_height > 0) ? pack_height : pack_height_def;h_offset = (h_offset > 0) ? h_offset : h_offset_def;v_offset = (v_offset > 0) ? v_offset : v_offset_def;v_clearance = (v_clearance > 0) ? v_clearance : v_clearance_def;total_packet = (total_packet > 0) ? total_packet :total_packet_def;time_out_sec = (time_out_sec > 0) ? time_out_sec :time_out_sec_def;}。

(完整版)计算机网络协议总结

(完整版)计算机网络协议总结

1.物理层(比特流)2.数据链路层 ( 帧)PPP(点对点协议):面向连结,不行靠,只支持全双工链路,成帧技术,PPP 帧是面向字节的,全部的 PPP 帧的长度都是整数字节的。

只检错不纠错,没有流量控制。

CSMA/CD (载波监听多点接入 /碰撞检测协议):截断二进制指数退避算法指数退避算法网桥的自学习算法3.网络层( IP 数据报或称分组、包)IP 协议:无连结、不行靠、全力而为型ARP (地点分析协议):IP 地点→物理地点( MAC 地点)RARP (逆地点分析协议):物理地点( MAC 地点)→ IP 地点分组转发算法:直接交托、间接交托ICMP (网际控制报文协议):ICMP 同意主机或路由器报告差错状况和供给相关异样状况的报告。

ICMP 报文封装在IP 包中。

( ICMP 报文是 IP 层数据报的数据)路由选择协议:内部网关协议 IGP:RIP,OSPF外面网关协议 EGP:BGPRIP (路由信息协议):鉴于距离向量的路由选择算法。

RIP 用 UDP 用户数据报传递。

合适于规模较小的网络,最大跳数不超出15。

弊端:“好信息流传得快,而坏信息流传得慢”。

OSPF(开放最短路径优先):鉴于链路状态协议LSOSPF 直接用IP 数据报传递BGP(界限网关协议):不一样 AS 之间的路由协议。

用路径向量( path vector)路由协议BGP 用 TCP 报文传递力争找寻一条可以抵达目的网络且比较好的路由。

并不是要找寻一条最正确路由。

IGMP (网际组管理协议):多播协议。

IGMP 使用 IP 数据报传达其报文 BOOTP (指引程序协议):需要人工进行协议配置,使用 UDP 报文封装,也是无盘系统用来获取 IP 地点的方法DHCP (动向主机配置协议):自动分派主机地点VPN (虚构专用网):利用公用的因特网作为本机构各专用网之间的通讯载体。

NAT (网络地点变换 ):①在企业内部,每台机器都有一个形如10.X.Y.Z 的地点。

计算机网络之ARQ协议

计算机网络之ARQ协议
的数据帧,则将其放入数据链 路层的接收缓存。
(3) 将接收缓存中的数据帧上 交主机。
(4) 向发送结点发一信息,表 示数据帧已经上交给主机。
(5) 转到(1)。
❖ 两种情况的对比(传输均无差错)
不需要流量控制
A
B
需要流量控制
A
B
送主机 B
送主机 B
送主机 B


送主机 B
送主机 B 送主机 B
2.3 实用的停止等待协议
的代码
1. 数据链路层的基本概念
❖ 链路(link)是一条无源的点到点的物理线路段,中间没有 任何其他的交换结点。 ❖ 数据链路(data link) 除了物理线路外,还必须有通信协 议来控制这些数据的传输。若把实现这些协议的硬件和软 件加到链路上,就构成了数据链路。
数据链路/逻辑链路=物理链路+通信规程
❖ 需要注意
(1) 接收端只按序接收数据帧。虽然在有差错的 2号帧之后 接着又收到了正确的 3 个数据帧,但接收端都必须将这些 帧丢弃,因为在这些帧前面有一个 2 号帧还没有收到。 (2) ACK1 表示确认 0 号帧 DATA0,并期望下次收到 1 号 帧;ACK2 表示确认 1 号帧 DATA1,并期望下次收到 2号 帧。依此类推。
A
B
送 主 机





(a) 正常情况
四种情况
A
B
A
B
出错


tout

重 传
送 主 机
(b) 数据帧出错
重 传
送 主 机
(c) 数据帧丢失
Aห้องสมุดไป่ตู้
B
tout 丢

计算机网络实验 (5)精选全文完整版

计算机网络实验 (5)精选全文完整版

可编辑修改精选全文完整版计算机网络实验1. 编程实验(使用NetRiver实验系统)(1)滑动窗口协议实验(见实验指导书的实验1,只做回退N帧实验)(2)IPv4协议收发实验(见实验指导书的实验2)(3)IPv4协议转发实验(见实验指导书的实验3)每位同学只做其中的一个实验,学号mod 3 = 0、1、2的同学分别做实验1、2、3。

程序应通过测试服务器的测试;程序及实验报告应提交到管理服务器供检查。

实验报告包括以下几部分内容:实验目的,协议的工作原理或处理要求,程序流程图。

提交的代码应有必要的注释。

2. 交互式实验(使用NetRiver实验系统)(1)IPv4协议交互实验(见实验指导书的实验11)(2)TCP协议交互实验(见实验指导书的实验14)该实验所有同学都要做。

服务器会自动记录实验结果,不需提交实验报告。

3. 观察实验(使用协议分析工具Wireshark)该实验所有同学都要做。

3.1观察IEEE 802.3帧结构进行实验的主机运行Windows XP操作系统。

通过Wireshark将实验主机的网卡设置为通常模式(非混杂模式),捕捉以下场景中的数据帧:先在命令行下用arp –d命令删除实验主机上的所有ARP表项,接着立即用web浏览器访问Internet上的站点。

1)依次查看捕获的各数据帧,看看目的地为实验主机的数据帧中长度最小的是多大;查看这种帧的各个域,看看前导码是否包含在记录的数据中;记录的数据是从哪个字段开始,至哪个字段结束;这是否验证了IEEE 802.3标准中规定的最小帧长为64字节?2)查看捕获的帧中长度最长的帧。

可以多访问一些网页以捕获更多的帧,看看这些帧的长度最大是多少?为什么?3)查看捕获的数据帧中由实验主机发出的ARP请求帧,查看封装该ARP 请求帧的以太帧的目的地址是多少,源地址是多少;再用ipconfig –all命令查看实验主机的MAC地址,看看是否和源地址一致。

计算机网络原理练习题库(含答案)

计算机网络原理练习题库(含答案)

计算机网络原理练习题库(含答案)一、单选题(共IOO题,每题1分,共100分)1、规定DTE与DCE接口线的信号电平、发送器输出一阻抗的物理层特性属于A、机械特性B、电气特性C、功能特性D、规程特性正确答案:B2、HTTP报文中最常见的请求方法是A、PUTB、 HEADC、GETD、 POST正确答案:C3、在接收端发现码元错误的位置并加以纠正的差错控制方法称为A、反馈重发GO. BACK-NC、前向纠错D、选择重传正确答案:C4、双方通信前先建立一条物理信道且通信期间独占该信道的网络交换方式是A、数据报交换B、电路交换C、虚电路交换D、报文交换正确答案:B5、从滑动窗口的观点来看“Go-back-N”协议,其窗口大小为A、发送窗口>1,接收窗口›1B、发送窗口 = 1,接收窗口二1C、发送窗口 1,接收窗口>1D、发送窗口>1,接收窗口二1正确答案:D6、按照网络传输技术,可将计算机网络分为A、ATM网和虚拟网B、报文交换网和分组交换网C、局域网和广域网D、广播式网络和点对点网络正确答案:D7、文件传输协议FTP使用的默认端口号是A、23B、25C、80D、21正确答案:D8、对于采用窗口机制的流量控制方法,若窗口尺寸为4,则在发送3号帧并收到2号帧的确认后,还可连续发送A、2帧B、4帧C、1帧D、3帧正确答案:D9、TCP端口号的范围是A、 0~256B、(HO23C、0~65535D、1024~65535正确答案:C10、计算机网络中为进行数据交换而建立的规则、标准或约定的集合称为A、功能规范B、协议要素C、体系结构D、网络协议正确答案:D11、首次使用分组交换方式的网络是A、ARPANETB、S NA 网C、无线局域网D、 DNA 网正确答案:A12、奈奎斯特公式表征的是通信信道的A、数据传输频率B、信噪比C、数据传输能力D、误码率正确答案:C13、下列关于OSI参考模型的叙述中错误的是A、在OSI/RM中只有各种协议是可以实现的B、OSI参考模型是网络结构具体实现的描述C、OSI/RM只是一个为制订标准而提供的概念性框架D、OSl包括体系结构、服务定义和协议规范三级抽象正确答案:B14、无线局域网中为实现传输介质共享而采用的协议是A、CSMA / CAB、F, TPC、CSMΛ / CDD、SDP正确答案:A15、下列有关光纤传输介质的说法错误的是A、采用波分复用技术实现多路复用B、多模光纤传输效率高于单模光纤C、光纤具有抗电磁干扰强的特点D、光载波的调制采用移幅键控法正确答案:B16、分别用a-m共13个英文字母命名的域名服务器是A、中间域名服务器B、权威域名服务器C、根域名服务器D、顶级域名服务器正确答案:C17、对模拟数据进行数字信号编码的最常用方法是Λ^振幅调制B、相位调制C、频率调制D、脉码调制正确答案:D18、对于带宽为4KHz的无噪声信道,若一个码元可取的离散值个数为8, 则该信道可达到的最大数据传输速率为A、24KbpB、64KbpsC、12KbpsD、3Kbps正确答案:A19、对于IOMbps的基带CSMA / CD网的MAC帧的最小和最大总长度分别为A、0和1500字节B、46和1518字节C、0和1518字节D、64和1518字节正确答案:D20、可以作为IPv6数据报源地址和目的地址的地址类型是A、多播地址B、单播地址C、任播地址D、组播地址正确答案:B21、用光纤传输电信号时,采用的光载波调制技术属于A、ASKB、FSKC、PSKD、WDM正确答案:A22、若用HDLC帧传送10个汉字,则该帧的总长度为A、20字节B、22字节C、24字节D、26字节正确答案:D23、逆向路径转发算法是一种A、广播路由选择算法B、动态路由选择算法C、多播路由选择算法D、静态路由选择算法正确答案:A24、远程教育的基础设施是A、电子大学网络B、综合布线系统C、计算机辅助教学D、大学校园区网络正确答案:A25、既考虑拓扑结构又兼顾网络负载的静态路由算法是A、基于流量路由算法B、链路状态路由算法C、泛射路由选择算法D、最短路由选择算法正确答案:A26、提供网络层的协议转换,并在不同网络之间存储和转发分组的网间连接器是A、转发器B、网关C、网桥D、路由器正确答案:D27、下列以太网的MAC地址表示中错误的是A、AA-BB - 00—1 1—22 — CCB、00—2A-ΛΛ-BB-CC - 6BC、2A: El: 8C: 39: 00: 48D、43: 25: AB: E5: 2L:44正确答案:D28、下列网络协议中,属于应用层协议的是A、DNSB、ARPC、UDPD、TCP正确答案:A29、用户数据报协议UDP属于TCP/IP参考模型的A、应用层B、传输层C、互连层D、主机-网络层正确答案:B30、下列选项中不属于因特网域名服务器类型的是A、默认域名服务器B、根域名服务器C、本地域名服务器D、授权域名服务器正确答案:A31、为了使WAP能访问因特网,其采用的传输层协议是A、WDPB、WMLC、HTTPD、IEEE 802.11正确答案:A32、只适用于采用冗余编码环境的帧同步方法是A、首位定界符法B、字节计数法C、违法编码法D、首位标志法正确答案:C33、下列网络互连设备(网间连接器)中只起到扩展网段距离作用的是A、网桥B、网关C、转发器D、路由器正确答案:C34、下列协议中属于TCP/IP参考模型应用层的是A、DNSB、 ICMPC、ARPD、 RARP正确答案:A35、非对等结构的局域网操作系统的两个部分是A、资源管理和通信协议部分B、服务器部分和工作站部分C、文件服务器和客户机部分D、服务器和浏览器部分正确答案:B36、光纤上采用的多路复用技术为A、 STDMB、TDMC、FDMDs WDM正确答案:D37、下列域名中,属于国际顶级域名的是Λ^ eduB、usC、intDs tom正确答案:C38、当任何方法都不能消除通信子网中的拥塞现象时,路由器可用的最后手段是A、抑制分组B、逐跳抑制分组C、设置警告位D、负载脱落正确答案:D39> IEEE802参考模型的LLC子层提供的虚电路服务属于A、无确认无连接服务B、无确认面向连接服务C、有确认无连接服务D、有确认面向连接服务正确答案:D40、典型的ADSL设备必要的配置中不包括A、无线路由器B、分离器C、调制解调器D、网络接口设备正确答案:A41、DTE-DCE接口标准X. 21的机械特性采用A、8芯标准连接器B、9芯标准连接器C、15芯标准连接器D、25芯标准连接器正确答案:C42、造成因特网上传输超时的大部分原因是A、网络上出现拥塞B、网络的访问量过大C、路由算法选择不当D、数据传输速率低正确答案:A43、在物理信道传输数据时产生差错的主要原因是A、未做差错校验B、冲击噪声C、差错控制方法不当D、未能实现帧的同步正确答案:B44、WAP移动终端上的浏览器所识别的描述语言是A、HTMLB、J avaScriptC、WMLD、XML正确答案:C45、在广域网中得到广泛应用的网络拓扑结构是A、网形拓扑B、星形拓扑C、环形拓扑D、总线拓扑正确答案:A46、计算机网络各层次结构模型及其协议的集合称为A、网络结构描述B、网络体系结构C、网络概念框架D、互联参考模型正确答案:B47、在蜂窝移动通信系统中,主要采用的接人方法不包括A、码分多址B、波分多址C、时分多址D、频分多址正确答案:B48、用于数据报子网中的拥塞控制方法是A、分组头部设警告位B、避开拥塞的路由器C、资源预留D、准入控制正确答案:A49、TCP段结构中的“端口”用于表示A^地址B、序列号C、窗口D^确认号正确答案:A50、使用SMTP协议为因特网用户提供的服务是A、文件传输B、远程登录C、电子公告板D、电子邮件正确答案:D51、HDLC协议中仅用作测试并不分给任何站点的地址是A、组地址B、广播地址C、单地址D、无站地址正确答案:D52、因特网中完成电子邮件的编辑、收取和阅读等功能的是A、 POP3B、邮件传输代理C、IMAPD、用户代理程序正确答案:D53、下列关于数据交换技术特点的说法中错误的是A、报文交换不能满足实时通信要求B、对于猝发式的通信电路交换最为合适C、数据报方式中目的地要重组报文D、虚电路方式数据传送前要设置虚电路正确答案:B54、下列关于星形拓扑结构优点的表述中错误的是A、故障诊断和隔离容易B、方便服务C、站点分布处理能力高D、控制简单正确答案:C55、划分虚拟局域网的方法中不包括A、基于MAC地址划分B、基于交换机端口划分C、基于安全需求划分D、基于上层协议类型或地址划分正确答案:C56、TCP/IP参考模型中提供无连接数据报服务的传输协议是A、 HTTPB、UDPC、 SMTPD、TCP正确答案:B57、最早使用的分组交换协议标准是A、X. 25B、ATMC、帧中继D、IEEE802. 3正确答案:A58、下列关于IEEE802标准的描述中正确的是A^ MAC子层与物理介质无关B、MAC子层规定了多种链路服务C、LLC子层依赖于物理介质D、MAC子层实现帧的寻址和识别正确答案:D59、下列关于域名系统DNS的表述中错误的是A、DNS是一个集中式数据库系统B、域名的各分量之间用小数点分隔C、Internet域名由DNS统一管理D、域名中的英文字母不区分大小写正确答案:A60、TCP协议提供的服务特征不包括A、面向连接的传输B、支持广播方式通信C、全双工传输方式D、用字节流方式传输正确答案:B61、下列关于IP协议基本任务的叙述中错误的是A、IP提供面向连接的数据报传输机制B、IP不保证服务的可靠性C、在主机资源不足时可能丢弃数据报D、IP不检查被丢弃的报文正确答案:A62、工作在网络层的互连设备是A、转发器B、网关C、网桥D、路由器正确答案:D63、采用“路由一次,随后交换”的局域网L3交换技术是A、IP交换技术Bs Net FIOW交换技术C、Fast IP交换技术D^ Tag SWitChing 技术正确答案:C64、下列网络协议中,使用端口号为25的是A、GOPHERB、TELNETC、SMTPD、H TTP正确答案:C65、应对网络被动攻击通常采取的手段是A、检测恢复B、预防C、认证D、数据加密正确答案:B66、IEEE颁布的宽带无线协议是A、IEEE802. Hb+B、 IEEE802. IlbC、IEEE802. HaD、 IEEE802. 16正确答案:D67、TCP段结构中的端口字段长度为A、 4bitB、8bitC N 16bitD、 32bit正确答案:C68、下列关于UDP所提供服务的特征表述错误的是A、对数据报不进行检查与修改B、传输数据前不需要建立连接C、不会出现分组的丢失和重复D、具有较好的实时性、效率高正确答案:C69、对于带宽为4KHz的无噪声信道,若一个码元可取的离散值个数为8, 则该信道可达到的最大数据传输速率为A、12KbpsB、24KbpsC、64KbpsD> 3Kbps正确答案:B70、未来宽带、大容量通信网络的优选方案是A、全光网络B、多媒体网络C、移动互联网D、虚拟网络正确答案:A71、TCP/IP是一组协议的代名词,一般来说IP提供A^应用层服务B、网络层服务C、传输层服务D、物理层服务正确答案:B72、因特网工程特别任务组IETF发布的许多技术文件被称为A、ANSI文件B、ITU文件C、EIA文件D、RFC文件正确答案:D73、一种不需要基站、没有固定路由器的网络是A、CDPDB、W LANC、Ad HocD、WAP正确答案:C74、下列关于COokie的说法错误的是A、Web的COOkie机制用于用户跟踪B、Cookie由客户端生成C、CoOkie存储在用户本地终端上D、Cookie为小型文本文件正确答案:B75、在计算机网络和数据通信中使用最广泛的检错码是A、奇偶校验码B、海明编码C、循环冗余码D、PCM编码正确答案:C76、超文本传输协议HTTP标识被操作资源的方法是采用A、IP地址B、URLC、MAC地址D、域名正确答案:B77、下列网络拓扑结构中,采用集线器执行集中式通信控制策略的是A、总线形B、网状形C^环形D、星形正确答案:D78、对于带宽为3KHz的无噪声信道,若一个码元可取的离散值个数为4, 则该信道码元的极限速率和最大数据传输速率分别为A、6KBaud 和 12KbpsB、6KBaud 和 24KbPSC、12KBaUd 和 6KbpsD、12KBaUd 和 24KbPS正确答案:A79、下列有关传输控制协议TCP所提供服务的特征表述错误的是A、面向连接的传输方式B、端到端通信且支持广播通信C、采用字节流方式传输D、高可靠性不出现丢失或乱序正确答案:B80、下列关于“面向连接服务”特点的叙述中错误的是A、通信协议复杂通信效率不高B、传输数据前建立连接C、每个分组要带目的节点地址D、收发数据的顺序不变正确答案:C81、TCP/IP参考模型中的“主机一网络层”对应于OSl参考模型的A、数据链路层和网络层B、网络层和传输层C、物理层和数据链路层D、物理层和网络层正确答案:C82、IEEE802. 11帧的类型中不包括A、数据帧B、管理帧C^无编号帧D、控制帧正确答案:C83、下列关于UDP特征的叙述中错误的是A、实时性较差效率较低B、提供无连接传输服务C、不进行数据报的检查D、无需等待对方的应答正确答案:A84、下列域名中属于通用顶级域名的是A^ CnB、USC、netD^ Int正确答案:C85、用特定的字符来标志一帧的起始与终止的帧同步方法称为A、首尾定界符法B、违法编码法C、位同步法D、首尾标志法正确答案:A86、下列选项中不属于报文认证方式的是A、使用传统加密方式的认证B、使用单向散列函数的认证C、没有报文加密的报文认证D、使用数字签名的报文认证正确答案:D87、下列关于数据报子网的说法中错误的是A、每个分组被独立地路由B、容易实现拥塞控制C、每个分组包含完整的源地址和目标地址D、路由器不保留任何有关连接的状态信息正确答案:B88、OSl参考模型包括的三级抽象中不含有A、实现描述B、服务定义C、协议规范D、体系结构正确答案:A89、对于IoMbPS的基带CSMA/CD网,MAC帧的总长度为A、46~1500 字节B、46~1518 字节C、64~1500 字节D、64〜1518字节正确答案:D90、OSI参考模型所含的三级抽象中不包括A、体系结构B、服务定义C、实现描述D、协议规范正确答案:C91、下列编码方法中不能用于数字数据的数字信号编码是A、曼彻斯特编码B、不归零码C、双极性归零码D、脉码调制正确答案:D92、设数据传输速率为3600bps,若采用8相调制方式,则码元速率应为A、 1200BaudBs 1800BaudC、 7200BaudD^ 9600Baud正确答案:A93、不仅能发现差错而且能自动纠错的差错控制方式是A、ARQB、FECC、DESD、CRC正确答案:B94、若码字中的信息为8位,编码时外加冗余位为2位,则此编码的效率为A、0. 25B、0.5C、4D、0.8正确答案:D95、智能大厦及计算机网络的信息基础设施是A、高速的通信网络系统B、结构化综合布线系统C、通信自动化D、楼字自动化正确答案:B96、在OSl参考模型中,数据链路层的协议数据单元(PDU)称为A、包B、报文C、帧D、位流正确答案:C97、下列域名中不属于通用顶级域名的是A^ netB、intC、eduD、com正确答案:B98、下列关于ATM网络特征的叙述中错误的是A、ATM交换是一种快速交换B、ATM网络支持无连接的信元交换C、ATM采用基于信元的分组交换技术D、ATM网络支持多媒体传输的应用正确答案:B99、局域网LAN 一般采用的传输方式为A、“高速”方式B、“无线传输”方式C、“广播”方式D、“存储-转发”方式正确答案:C100、主要研究局域网有关标准的机构是A、 CCITTB、IETFC、ECMAD、I EEE正确答案:D。

gbn协议

gbn协议

GBN协议简介GBN(Go-Back-N)协议是一种流量控制协议,用于在计算机网络中可靠地传输数据。

它是一种数据链路层协议,确保数据在发送方和接收方之间的可靠传输。

工作原理GBN协议通过在发送方和接收方之间维护一个滑动窗口来实现可靠传输。

滑动窗口的大小表示发送方未确认的数据包数目。

发送方按照窗口的大小将数据包发送给接收方。

接收方在正确收到数据包后发送确认消息,发送方收到确认消息后将滑动窗口向前滑动,继续发送下一个数据包。

如果发送方在一定时间内没有收到确认消息,它将重新发送滑动窗口中的所有数据包。

这样确保了数据的可靠传输。

GBN协议的特点1.流量控制:GBN协议通过滑动窗口的大小控制数据包的发送速率,以避免发送方发送过多数据导致接收方缓冲区溢出。

2.可靠性:GBN协议通过确认消息和超时重传机制确保数据的可靠传输。

发送方会不断重传未收到确认消息的数据包,直到接收方正确接收。

3.有序性:GBN协议保证接收方按照发送方发送的顺序接收数据包,不会发生乱序。

GBN协议的优缺点优点•实现相对简单:GBN协议的实现相对简单,适用于网络环境较为良好的情况。

•可靠性较高:通过确认消息和超时重传机制,GBN协议能够确保数据的可靠传输。

缺点•延迟较高:GBN协议的延迟较高,因为发送方需要等待确认消息才能发送下一个数据包。

•信道利用率低:当发生数据包丢失或损坏时,发送方需要重传整个滑动窗口中的数据包,导致信道利用率降低。

使用GBN协议的应用场景GBN协议适用于对数据可靠性要求较高的场景,例如: - 文件传输:在文件传输过程中,确保文件的完整性是非常重要的。

GBN协议可以用于在不可靠的网络环境中可靠地传输文件。

- 视频流传输:对于实时性较强的视频流传输,GBN协议可以确保视频数据的有序接收,减少视频播放的卡顿和断续。

总结GBN协议是一种可靠的流量控制协议,通过滑动窗口和确认消息机制实现数据的可靠传输。

虽然有一定的延迟和信道利用率低的缺点,但在对数据可靠性要求较高的场景下,GBN协议仍然是一种有效的选择。

计算机网络课后习题

计算机网络课后习题

第1章1.1计算机网络向用户可以提供哪些服务?1.2试简述分组交换的要点。

1.3试从多个方面比较电路交换、报文交换和分组交换的主要优缺点。

1.4为什么说因特网是自印刷术以来人类通信方面最大的变革?1.5因特网的发展大致分为哪几个阶段?请指出这几个阶段最主要的特点。

1.6试简述因特网标准制定的几个阶段。

1.7小写和大写开头的英文名字internet和Internet在意思上有何重要区别?1.8计算机网络都有哪些类别?各种类别的网络都有哪些特点?1.9因特网的两大组成部分(边缘部分与核心部分)的特点是什么?它们的工作方式各有什么特点?1.10试在下列条件下比较电路交换和分组交换。

要传送的报文共x (bit)。

从源点到终点共经过k段链路,每段链路的传播时延为d (s),数据传输速率为b (bit/s)。

在电路交换时电路的建立时间为s (s)。

在分组交换时分组长度为p (bit),假设x > p且各结点的排队等待时间可忽略不计。

问在怎样的条件下,分组交换的时延比电路交换的要小?(提示:画一下草图观察k段链路共有几个结点。

)1.11在上题的分组交换网中,设报文长度和分组长度分别为x和 (p+h) (bit),其中p为分组的数据部分的长度,而h为每个分组所带的控制信息固定长度,与p的大小无关。

通信的两端共经过k段链路。

链路的数据传输速率为b (bit/s),排队时间可忽略不计。

若打算使总的时延为最小,问分组的数据部分长度p应取多大?1.12从差错控制、时延和资源共享3个方面分析,分组交换为什么要将长的报文划分为多个短的分组进行传输?1.13计算机网络有哪些常用的性能指标?1.14收发两端之间的传输距离为1000 km,信号在媒体上的传播速率为m/s⨯。

试计算以2810下两种情况的发送时延和传播时延。

10bit,数据发送速率为100 kbit/s;(1)数据长度为710bit,数据发送速率为1 Gbit/s。

计算机网络Go-Back-N协议

计算机网络Go-Back-N协议

2￿滑动窗口协议:￿Go-back-N 停等协议信道利用率低TD RTT A TD￿+￿RTT￿+￿TA B数据帧确认t t数据帧确认RTT(Round-Trip￿Time):￿往返时延TA当往返时延相对发送时延较大时,停止等待协议地信道利用率是很低地。

￿3￿滑动窗口协议:￿Go-back-N 流水线方式l 连续ARQ协议B 连续发送分组而不等待确认tt A 确认￿￿￿￿￿￿￿由于信道上一直有数据不间断地传送,这种传输方式可获得很高地信道利用率。

￿￿￿￿￿￿￿发送方连续发送分组可能会使接收方或网络来不及处理,需要采取措施限制发送方连续发送分组地个数。

一二三四五六七八九一零一一一二(a)￿发送窗口是发送方可以连续发送地分组序号范围发送窗口(b)￿收到分组一地确认后发送窗口向前滑动向前一二三四五六七八九一零一一一二发送窗口通过设置发送窗口来限制发送方地发送速率发送窗口大小是已发送但还没有收到确认地最大分组数如果发送完窗口内地分组还没有收到确认则需要等待可以发送新地分组发送方接收方发送DATA零发送DATA一发送DATA二发送DATA三发送ACK零发送ACK一发送ACK二发送ACK三发送DATA四发送DATA五发送DATA六发送DATA七信道利用率是停止等待协议地四倍!t t 窗口大小为四:6￿滑动窗口协议:￿Go-back-N 出现差错情况发送方接收方发送DATA 零发送DATA 一发送DATA 二发送DATA 三滑动窗口协议:￿￿￿￿￿Go-Back-N协议￿￿￿￿￿选择重传协议发送方接收方发送DATA 零发送DATA 一发送DATA 二发送DATA 三发送ACK零发送ACK一丢弃失序分组,发送ACK一发送DATA 四发送DATA 五发送DATA 二发送DATA 三接收方只接收按序到达地分组!(接收窗口大小为一)超时重传丢弃失序分组,发送ACK一丢弃失序分组,发送ACK一发送DATA 四发送DATA 五累积确认:ACKn表示,DATAn 以及以前地分组都已正确接收!接收窗口为￿[￿零￿]接收窗口:接收方允许接收地分组序号地范围接收窗口为￿[￿二￿]发送窗口为[零,￿一,￿二,￿三]发送窗口为[一,￿二,￿三,￿四]￿￿￿￿￿￿￿由于接收方只接收按序到达地分组,一旦某个分组出现差错(超时),其后连续发送地所有分组都要被重传:￿Go -Back-N 发送ACK二发送方接收方发送DATA 零发送DATA 一发送DATA 二发送DATA 三发送ACK零发送ACK一发送ACK二发送ACK三发送DATA 四发送DATA 五发送DATA 六发送DATA 七超时前收到ACK二,表示分组零,一,二都已正确接收累积确认:ACKn表示,DATAn 以及以前地分组都已正确接收!采用滑动窗口机制。

可靠传输控制技术

可靠传输控制技术

可靠传输控制技术一、引言可靠传输控制技术是计算机网络中的一种重要技术,它能够保证数据传输的可靠性和完整性。

在当今信息化时代,计算机网络已经成为人们日常生活和工作中必不可少的一部分,因此可靠传输控制技术也变得越来越重要。

二、什么是可靠传输控制技术可靠传输控制技术是一种保证数据在网络中安全地传输的方法。

它通过多种方式来确保数据的完整性、准确性和及时性,从而避免了数据丢失、损坏或延迟等问题。

三、实现可靠传输控制技术的方法1. 停止-等待协议(Stop-and-Wait Protocol)停止-等待协议是一种简单但有效的可靠传输控制技术。

发送方在发送一个数据包后会停止发送,并等待接收方确认收到该数据包。

只有当接收方发送确认消息后,发送方才会继续发送下一个数据包。

2. 滑动窗口协议(Sliding Window Protocol)滑动窗口协议是另一种常用的可靠传输控制技术。

它允许发送方同时向接收方发送多个数据包,而不需要等待确认消息。

接收方会按照顺序接收这些数据包,并发送确认消息给发送方。

如果发送方没有收到确认消息,则会重新发送该数据包。

3. 回退N帧协议(Go-Back-N Protocol)回退N帧协议是一种基于滑动窗口协议的可靠传输控制技术。

它允许发送方同时向接收方发送多个数据包,但是如果某个数据包丢失或损坏,则发送方会回退到该数据包之前的所有数据包,并重新发送它们。

4. 选择重传协议(Selective Repeat Protocol)选择重传协议也是基于滑动窗口协议的可靠传输控制技术。

它允许发送方同时向接收方发送多个数据包,但是如果某个数据包丢失或损坏,则只会重新发送该数据包,而不需要重新发送之前的所有数据包。

四、可靠传输控制技术的应用可靠传输控制技术广泛应用于各种计算机网络中,例如互联网、局域网、广域网等。

它可以确保在网络中传输的各种信息(如文件、图像、音频等)能够准确无误地到达目标设备。

五、总结可靠传输控制技术是计算机网络中的重要技术,它能够保证数据传输的可靠性和完整性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六
1实验名称:
2实验目的:始日期:
2011-11-25
10:00
实验结束时间:
2011-11-25
11:00
实验地点:3603
实验人:liu_chun
实验条件
运行Windows 2002/2003Server/XP操作系统的PC机一台,相应的java小程序。
实验主要步骤
实验现象
1、一般情况下: 如图所示,点击发“送新的分组”9次,实验现象如下图所示:
2、出现报文丢失的情况下, 如图所示,点击发“送新的分组”9次,实验现象如下图所示:
5、实验结果分析:
1、
若一定时间内未收到应答信号,N个包同时重发(如图现象2)
1、理解:Go-Back_N协议:发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧。
2、了解实验环境,这个程序模拟了Go-Back-N协议,在该程序中,窗口限制了发送端最多为5个分组而不需等待确认。多次点击“发送新分组”六次至多次,观察现象。
相关文档
最新文档