算法流程:
发送方:
1)从主机去一个数据帧,送交发送缓存.
2)V(S) 0{发送状态变量初始化}
3)N(S) V(S){将发送状态变量值写入数据帧中的发送序号}
4)应答序号初始化
5)判断发送缓冲区以满,却未收到应答帧.是则到(6),否则到(8)
6)出现差错,唤醒超时计数器,将所有帧重新全部发送到缓存
7)若收到应答帧,则到(9);再次超时并未收到应答帧,则返回(6)
8)收到应答帧后,从上层获取数据,并写入发送缓冲区当前位置
9)组装发送帧编码
10)发送数据帧,并加发送序号加1
11)设置超时计数器
12)在所设置的超时时间收到确认帧,则转到(8);若出现差错,则转到(13)
13)超时计数器往回走,将未收到的第n个帧及以后的所有帧全部进行重传
14)若仍产生差错则继续(13),若受到确认帧则继续传数据帧,则转到(15)
15)接受帧,取得接收方希望接受的帧编号,返回(1)
接收方:
1)V(R) 0{接受状态变量初始化,其数值等于与接收的数据帧的发送序号}
2)等待
3)收到一个数据帧,若N(S)= V(R),则执行(4),否则,丢弃此数据帧
4)发送确认帧ACKn
5)检查收到的帧是否按序,进行V(R)'=(V(R)+1)mod 8检验.若不按序则丢弃第n-1帧后的所有帧,重新发送ACKn
6)重新接收未收到的帧
7)将收到的数据帧中的数据部分送交上层软件
8)更新接受状态变量V(R) [V(R)+1]mod 8,转到2)
算法代码:
#define MAX_SEQ 7 /* 应该为2^n-1 */
typedef enum {frame_arrival, cksum_error, timeout, network_layer_ready} event_type;
#include protocal.h
static boolean between(seq_nr a, seq_nr b, seq_nr c)
{ /* 如果b落在a和c之间(含a不含c)返回true,否则返回false. */
if (((a<=b) && (b<c)) || ((c<a) && (a<=b)) || ((b<c) && (c<a)))
return(true); else return(false); }
static void send_data(seq_nr frame_nr, seq_nr frame_expected, packet buffer[])
{/* 构造和发送数据帧
frame s; /* 起始变量 */
s.info=buffer[frame_nr]; /* 插入分组到帧中 */
s.seq=frame_nr; /* 插入序号到帧中 */
s.ack=(frame_expected+MAX_SEQ) % (MAX_SEQ+1) /* 捎带应答 */
to_physical_layer(&s); /* 传送该帧 */
start_timer(frame_nr); }
/* 启动定时器 */
void protocal5(void)
{seq_nr next_frame_to_send; /* MAX_SEQ>1; 用于外出流 */
seq_nr ack_expected; /* 还没有得到应答的最早的帧 */
seq_nr frame_expected; /* 进入流期望的下一帧 */
frame r; /* 初始变量 */
packet buffer[MAX_SEQ+1] /* 外出流的缓存 */
seq_nr nbuffered; /* 当前正在使用的输出缓存 */
event_type event;
enable_network_layer(); /* 允许 network_layer_ready 事件 */
ack_expected = 0; /* 下一个期望进入的应答 */
next_frame_to_send = 0; /* 下一个要送出的帧 */
frame_expected = 0; /* 期望进入的帧的序号 */
nbuffered = 0; /* 初始没有分组被缓存 */
while (true) {
wait_for_event ( &event); /* 四种可能的事件,见上面event_type定义 */
switch (event) {
case network_layer_ready; /* 网络层有一个分组要发送 */
/* 接收, 保存, 以及发送一个新的帧 */
from_network_layer(&buffer[next_frame-to_send]); /* 获得一个新的分组 */
nbuffered = nbuffered + 1; /* 增加发送方的窗口 */
send_data(next_frame_to_send, frame_expected, buffer); /* 发送帧 */
inc(next_frame_to_send); /* 发送方的窗口上界向前移动 */
break;
case frame_arrival: /* 一个数据帧或控制帧到达 */
from_physical_layer(&r); /* 从物理层得到一个进入的帧 */
if (r.seq == frame_expected) {
/* 所有的帧只能按序接收. */
to_network_layer(&r.info); /* 传递分组到网络层 */
inc(frame_expected); /* 接收方的窗口下界向前移动 */ }
/* Ack n 意味着n-1,n-2,
while (between(ack_expected, r.ack, next_frame_to_send))
{ /* 处理捎带应答 */
nbuffered = nbuffered + 1; /* 减少一个缓存的帧 */
stop_timer(ack_expected); /* 帧完好到达, 停止定时器 */
inc(ack_expected); /* 压缩发送窗口 */
}
break;
case cksum_err: break; /* 丢弃坏帧 */
case time_out: /* 重传所有超时的帧 */
next_frame_to_send = ack_expected; /* 开始重传 */
for (i = 1; i <= nbuffered; i ++) {
send_data(next_frame_to_send, fram_expected, buffer); /* 重发1帧 */
inc(next_frame_to_send); /* 准备发送下一帧 */
if (nbuffered < MAX_SEQ)
enable_network_layer();
else
disable_network_layer();
注: 算法中所有调用的未说明的过程和函数在protocal.h中定义。
② 计算机网络谢希仁编着的第六版第四章课后习题答案
第4 章 网络层
4-01网络层向上提供的服务有哪两种?试比较其优缺点。
答案:虚电路服务和数据报服务。
虚电路的优点:虚电路服务是面向连接的,网络能够保证分组总是按照发送顺序到达目的站,且不丢失、不重复,提供可靠的端到端数据传输;目的站地址仅在连接建立阶段使用,每个分组使用短的虚电路号,使分组的控制信息部分的比特数减少,减少了额外开销;端到端的差错处理和流量控制可以由分组交换网负责,也可以由用户机负责。虚电路服务适用于通信信息量大、速率要求高、传输可靠性要求高的场合。
虚电路的缺点:虚电路服务必须建立连接;属于同一条虚电路的分组总是按照同一路由进行转发;当结点发生故障时,所有通过出故障的结点的虚电路均不能工作。
数据报的优点:数据报服务不需要建立连接;每个分组独立选择路由进行转发,当某个结点发生故障时,后续的分组可以另选路由,因而提高了通信的可靠性。数据报服务的灵活性好,适用于传输可靠性要求不高、通信子网负载不均衡、需要选择最佳路径的场合。
数据报的缺点:数据报服务是面向无连接的,到达目的站时不一定按发送顺序,传输中的分组可能丢失和重复,提供面向无连接的、不可靠的数据传输;每个分组都要有目的站的全地址;当网络发生故障是,出故障的结点可能会丢失数据,一些路由可能会发生变化;端到端的差错处理和流量控制只由主机负责。
答案太多传不上来,留下邮箱可以发给你..........
③ 计算机网络谢希仁第六版课后习题答案
http://wenku..com/view/1a91cd82b9d528ea81c779e5.html
④ 计算机网络第一章课后答案
1-01 计算机网络向用户可以提供那些服务?
答: 连通性和共享
1-02 简述分组交换的要点。
答:(1)报文分组,加首部
(2)经路由器储存转发
(3)在目的地合并
1-03 试从多个方面比较电路交换、报文交换和分组交换的主要优缺点。
答:(1)电路交换:端对端通信质量因约定了通信资源获得可靠保障,对连续传送大量数据效率高。
(2)报文交换:无须预约传输带宽,动态逐段利用传输带宽对突发式数据通信效率高,通信迅速。
(3)分组交换:具有报文交换之高效、迅速的要点,且各分组小,路由灵活,网络生存性能好。
1-04 为什么说因特网是自印刷术以来人类通信方面最大的变革?
答: 融合其他通信网络,在信息化过程中起核心作用,提供最好的连通性和信息共享,第一次提供了各种媒体形式的实时交互能力。
1-05 因特网的发展大致分为哪几个阶段?请指出这几个阶段的主要特点。
答:从单个网络APPANET向互联网发展;TCP/IP协议的初步成型
建成三级结构的Internet;分为主干网、地区网和校园网;
形成多层次ISP结构的Internet;ISP首次出现。
1-06 简述因特网标准制定的几个阶段?
答:(1)因特网草案(Internet Draft) ——在这个阶段还不是 RFC 文档。
(2)建议标准(Proposed Standard) ——从这个阶段开始就成为 RFC 文档。
(3)草案标准(Draft Standard)
(4) 因特网标准(InternetStandard)
1-07小写和大写开头的英文名字 internet 和Internet在意思上有何重要区别?
答:(1) internet(互联网或互连网):通用名词,它泛指由多个计算机网络互连而成的网络。;协议无特指
(2)Internet(因特网):专用名词,特指采用 TCP/IP 协议的互联网络
区别:后者实际上是前者的双向应用
1-08 计算机网络都有哪些类别?各种类别的网络都有哪些特点?
答:按范围:(1)广域网WAN:远程、高速、是Internet的核心网。
(2)城域网:城市范围,链接多个局域网。
(3)局域网:校园、企业、机关、社区。
(4)个域网PAN:个人电子设备
按用户:公用网:面向公共营运。专用网:面向特定机构。
1-09 计算机网络中的主干网和本地接入网的主要区别是什么?
答:主干网:提供远程覆盖\高速传输\和路由器最优化通信
本地接入网:主要支持用户的访问本地,实现散户接入,速率低。
1-10 试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit)。从源点到终点共经过k段链路,每段链路的传播时延为d(s),数据率为b(b/s)。在电路交换时电路的建立时间为s(s)。在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?(提示:画一下草图观察k段链路共有几个结点。)
答:线路交换时延:kd+x/b+s, 分组交换时延:kd+(x/p)*(p/b)+ (k-1)*(p/b)
其中(k-1)*(p/b)表示K段传输中,有(k-1)次的储存转发延迟,当s>(k-1)*(p/b)时,电路交换的时延比分组交换的时延大,当x>>p,相反。
1-11 在上题的分组交换网中,设报文长度和分组长度分别为x和(p+h)(bit),其中p为分组的数据部分的长度,而h为每个分组所带的控制信息固定长度,与p的大小无关。通信的两端共经过k段链路。链路的数据率为b(b/s),但传播时延和结点的排队时间均可忽略不计。若打算使总的时延为最小,问分组的数据部分长度p应取为多大?(提示:参考图1-12的分组交换部分,观察总的时延是由哪几部分组成。)
答:总时延D表达式,分组交换时延为:D= kd+(x/p)*((p+h)/b)+ (k-1)*(p+h)/b
D对p求导后,令其值等于0,求得p=[(xh)/(k-1)]^0.5
1-12 因特网的两大组成部分(边缘部分与核心部分)的特点是什么?它们的工作方式各有什么特点?
答:边缘部分:由各主机构成,用户直接进行信息处理和信息共享;低速连入核心网。
核心部分:由各路由器连网,负责为边缘部分提供高速远程分组交换。
1-13 客户服务器方式与对等通信方式的主要区别是什么?有没有相同的地方?
答:前者严格区分服务和被服务者,后者无此区别。后者实际上是前者的双向应用。
1-14 计算机网络有哪些常用的性能指标?
答:速率,带宽,吞吐量,时延,时延带宽积,往返时间RTT,利用率
1-15 假定网络利用率达到了90%。试估计一下现在的网络时延是它的最小值的多少倍?
解:设网络利用率为U。,网络时延为D,网络时延最小值为D0
U=90%;D=D0/(1-U)---->D/D0=10
现在的网络时延是最小值的10倍
1-16 计算机通信网有哪些非性能特征?非性能特征与性能特征有什么区别?
答:征:宏观整体评价网络的外在表现。性能指标:具体定量描述网络的技术性能。
1-17 收发两端之间的传输距离为1000km,信号在媒体上的传播速率为2×108m/s。试计算以下两种情况的发送时延和传播时延:
(1) 数据长度为107bit,数据发送速率为100kb/s。
(2) 数据长度为103bit,数据发送速率为1Gb/s。
从上面的计算中可以得到什么样的结论?
解:(1)发送时延:ts=107/105=100s
传播时延tp=106/(2×108)=0.005s
(2)发送时延ts=103/109=1µs
传播时延:tp=106/(2×108)=0.005s
结论:若数据长度大而发送速率低,则在总的时延中,发送时延往往大于传播时延。但若数据长度短而发送速率高,则传播时延就可能是总时延中的主要成分。
1-18 假设信号在媒体上的传播速度为2×108m/s.媒体长度L分别为:
(1)250px(网络接口卡)
(2)100m(局域网)
(3)100km(城域网)
(4)5000km(广域网)
试计算出当数据率为1Mb/s和10Gb/s时在以上媒体中正在传播的比特数。
解:(1)1Mb/s:传播时延=0.1/(2×108)=5×10-10
比特数=5×10-10×1×106=5×10-4
1Gb/s: 比特数=5×10-10×1×109=5×10-1
(2)1Mb/s: 传播时延=100/(2×108)=5×10-7
比特数=5×10-7×1×106=5×10-1
1Gb/s:比特数=5×10-7×1×109=5×102
(3) 1Mb/s: 传播时延=100000/(2×108)=5×10-4
比特数=5×10-4×1×106=5×102
1Gb/s:比特数=5×10-4×1×109=5×105
(4)1Mb/s:传播时延=5000000/(2×108)=2.5×10-2
比特数=2.5×10-2×1×106=5×104
1Gb/s:比特数=2.5×10-2×1×109=5×107
1-19 长度为100字节的应用层数据交给传输层传送,需加上20字节的TCP首部。再交给网络层传送,需加上20字节的IP首部。最后交给数据链路层的以太网传送,加上首部和尾部工18字节。试求数据的传输效率。数据的传输效率是指发送的应用层数据除以所发送的总数据(即应用数据加上各种首部和尾部的额外开销)。
若应用层数据长度为1000字节,数据的传输效率是多少?
解:(1)100/(100+20+20+18)=63.3%
(2)1000/(1000+20+20+18)=94.5%
1-20 网络体系结构为什么要采用分层次的结构?试举出一些与分层体系结构的思想相似的日常生活。
答:分层的好处:
①各层之间是独立的。某一层可以使用其下一层提供的服务而不需要知道服务是如何实现的。
②灵活性好。当某一层发生变化时,只要其接口关系不变,则这层以上或以下的各层均不受影响。
③结构上可分割开。各层可以采用最合适的技术来实现
④易于实现和维护。
⑤能促进标准化工作。
与分层体系结构的思想相似的日常生活有邮政系统,物流系统。
1-21 协议与服务有何区别?有何关系?
答:网络协议:为进行网络中的数据交换而建立的规则、标准或约定。由以下三个要素组成:
(1)语法:即数据与控制信息的结构或格式。
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。
(3)同步:即事件实现顺序的详细说明。
协议是控制两个对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,而要实现本层协议,还需要使用下面一层提供服务。
协议和服务的概念的区分:
1、协议的实现保证了能够向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议。下面的协议对上面的服务用户是透明的。
2、协议是“水平的”,即协议是控制两个对等实体进行通信的规则。但服务是“垂直的”,即服务是由下层通过层间接口向上层提供的。上层使用所提供的服务必须与下层交换一些命令,这些命令在OSI中称为服务原语。
1-22 网络协议的三个要素是什么?各有什么含义?
答:网络协议:为进行网络中的数据交换而建立的规则、标准或约定。由以下三个要素组成:
(1)语法:即数据与控制信息的结构或格式。
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。
(3)同步:即事件实现顺序的详细说明。
1-23 为什么一个网络协议必须把各种不利的情况都考虑到?
答:因为网络协议如果不全面考虑不利情况,当情况发生变化时,协议就会保持理想状况,一直等下去!就如同两个朋友在电话中约会好,下午3点在公园见面,并且约定不见不散。这个协议就是很不科学的,因为任何一方如果有耽搁了而来不了,就无法通知对方,而另一方就必须一直等下去!所以看一个计算机网络是否正确,不能只看在正常情况下是否正确,而且还必须非常仔细的检查协议能否应付各种异常情况。
1-24 论述具有五层协议的网络体系结构的要点,包括各层的主要功能。
答:综合OSI 和TCP/IP 的优点,采用一种原理体系结构。各层的主要功能:
物理层物理层的任务就是透明地传送比特流。(注意:传递信息的物理媒体,如双绞
线、同轴电缆、光缆等,是在物理层的下面,当做第0 层。)物理层还要确定连接电缆插头的定义及连接法。
数据链路层数据链路层的任务是在两个相邻结点间的线路上无差错地传送以帧(frame)为单位的数据。每一帧包括数据和必要的控制信息。
网络层网络层的任务就是要选择合适的路由,使发送站的运输层所传下来的分组能够
正确无误地按照地址找到目的站,并交付给目的站的运输层。
运输层运输层的任务是向上一层的进行通信的两个进程之间提供一个可靠的端到端
服务,使它们看不见运输层以下的数据通信的细节。
应用层应用层直接为用户的应用进程提供服务。
1-25 试举出日常生活中有关“透明”这种名词的例子。
答:电视,计算机视窗操作系统、工农业产品
1-26 试解释以下名词:协议栈、实体、对等层、协议数据单元、服务访问点、客户、服务器、客户-服务器方式。
答:实体(entity)表示任何可发送或接收信息的硬件或软件进程。
协议是控制两个对等实体进行通信的规则的集合。
客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户是服务的请求方,服务器是服务的提供方。
客户服务器方式所描述的是进程之间服务和被服务的关系。
协议栈:指计算机网络体系结构采用分层模型后,每层的主要功能由对等层协议的运行来实现,因而每层可用一些主要协议来表征,几个层次画在一起很像一个栈的结构.
对等层:在网络体系结构中,通信双方实现同样功能的层.
协议数据单元:对等层实体进行信息交换的数据单位.
服务访问点:在同一系统中相邻两层的实体进行交互(即交换信息)的地方.服务访问点SAP是一个抽象的概念,它实体上就是一个逻辑接口.
1-27 试解释everything over IP 和IP over everthing 的含义。
TCP/IP协议可以为各式各样的应用提供服务 (所谓的everything over ip)
答:允许IP协议在各式各样的网络构成的互联网上运行(所谓的ip over everything)
⑤ 计算机网络第七版谢希仁着课后习题答案!!!!跪求
详细请见:网页链接
⑥ 求解CSMA/CD的一道题!计算机网络第五版(谢希仁) 第3章25题!!高手救我啊!!!
在书的第83页有图3-18。在此题中总线被占用时间为Tau+Tj(48)+Tau
⑦ 计算机网络第五版(谢希仁编着)的概论部分的习题解答
我的解答如下:
所需要的分组总数为x/p,则总的数据加上控制信息为(p+h)x/p (bit)。
源端发送这些数据需用时:(p+h)x/(pb)。
中间的路由器重传最后一个分组所花的总时间:(k-1)(p+h)/b。
则总延迟为:(p+h)x/(pb)+ (k-1)(p+h)/b。
求该函数对p的导数,可得:-hx/(b*p^2)+(k-1)/b。
令导数为0,得:p=(hx/(k-1))^(1/2)。
则当p=(hx/(k-1))^(1/2)时能使总时延最小。
解答应该没错的,你可以检查下。
⑧ 谢希仁计算机网络答案
答:a=τ/T0=τC/L=100÷(2×108)×1×109/L=500/L,信道最大利用率Smax =1/(1+4.44a),最大吞吐量Tmax=Smax×1Gbit/s帧长512字节时,a=500/(512×8)=0.122, Smax =0.6486,Tmax=648.6 Mbit/s帧长1500字节时,a=500/(1500×8)=0.0417,Smax =0.8438 ,Tmax=843.8 Mbit/s帧长64000字节时,a=500/(64000×8)=0.000977,Smax =0.9957,Tmax=995.7 Mbit/s可见,在端到端传播时延和数据发送率一定的情况下,帧长度越大,信道利用率越大,信道的最大吞吐量月越大。