# 概述习题 ## 计算机网络 **例题** 计算机网络可被理解为()。 $A$.执行计算机数据处理的软件模块 $B$.由自治的计算机互联起来的集合体 $C$.多个处理器通过共享内存实现的紧耦合系统 $D$.用于共同完成一项任务的分布式系统 解:$B$。计算机网络是由自治计算机互联起来的集合体,其中包含着三个关键点:自治计算机、互联、集合体。自治计算机由软件和硬件两部分组成,所以A错误,能完整地实现计算机的各种功能;互联是指计算机之间能实现相互通信;集合体是指所有使用通信线路及互联设备连接起来的自治计算机的集合。选项C和D分别指多机系统和分布式系统。 **例题** 在计算机网络中可以没有的是()。 $A$.客户机 $B$.务器 $C$.操作系统 $D$.数据库管理系统 解:$D$。从物理组成上看,计算机网络由硬件、软件和协议组成,客户机是客户访问网络的出入口,服务器是提供服务、存储信息的设备,当然是必不可少的。只是,在P2P模式下,服务器不一定是固定的某台机器,但网络中一定存在充当服务器角色的计算机。操作系统是最基本的软件。数据库管理系统用于管理数据库,由于在一个网络上可以没有数据库系统,所以数据库管理系统可能没有。 ## 数据交换方式 计算时需要注意: 1. 单位换算。 2. 是否考虑传播时延。 3. 选择最少跳数。 4. 起始时间。 5. 是否要计算头部大小。 6. 报文交换时延更长,分组交换时延可能不是整数。 带宽与发送时延相关;传播时延仅与距离相关,电磁波传播速度往往是定值。 ### 交换方式计算 传播时延基本上三种交换方式都是一样的。 #### 电路交换 电路交换不使用存储转发,所以时间开销只包含传播时延、发送时延和一个电路建立时间。 发送时延直接数据总长度÷链路发送速率就可以了。 #### 报文交换 以报文为单位,使用存储转发技术。 发送时延为报文总长度÷链路发送速率×链路条数。 #### 分组交换 分组交换的发送时延都按两个步骤来计算。第一是发送整个分组的时延,第二是单个分组经过所有交换机分组转发的时间。 为什么要这样考虑?因为在第一步时所有的分组都被发送出去了,就不用考虑前面的分组怎么样了,只用考虑最后一个分组还要多长时间到达目的,之前的分组肯定在此之前都达到了目标,所以这就是为什么第二步只用考虑一个分组进行分组转发算时间的原因。 ### 传输时间 **例题** 已知要传输一份信息大小为$10000bit$,需要经过两个交换设备。所有链路的传输速率为$1000bps$。假如分组交换中每一个分组为$10bit$,其他条件忽略(如接收时延,排队时延、报文头部长度等),求报文交换与分组交换两种方式所需要的传输时间。 解: 报文交换: $10000\div1000=10(s)$,从而报文在每一个链路上需要$10s$的传输时延。因为要经过两个交换设备所以有三条链路,从而一共需要$10\times3=30(s)$。 分组交换: 每个分组传输需要$10\div1000=0.01(s)$,而一共有$10000\div10=1000$个分组,所以一共需要$0.01×1000=10(s)$发送所有分组。 此时$10s$的时候所有的分组已经发送出去了,不考虑传播时延的情况下,按照报文交换的视角整个数据都到达了第一个交换设备,而按分组交换视角,是最后一个分组到达了第一个交换设备,倒数第二个分组到达第二个交换设备,倒数第三个分组以及以前的分组都已经到达了,所以我们还需要计算还需要多少秒完全传输完。倒数第一个分组是最后一个,所以只用考虑它。最后一个分组还需要传输两个链路,所以还需要$0.01\times2=0.02(s)$,所以总共的分组交换需要$10+0.02=10.02(s)$。 **例题** 在采用“存储-转发”方式的分组交换网络中,所有链路的数据传输速率为$100Mb/s$,分组大小为$1000B$,其中分组头大小为$20B$。若主机$H1$经过两个分组交换机向主机$H2$发送一个大小为$980000B$的文件,则在不考虑分组拆装时间和传播延迟的情况下,从$H1$发送开始到$H2$接收完为止,需要的时间至少是()。 $A.80ms$ $B.80.08ms$ $C.80.16ms$ $D.80.24ms$ 解:$C$。因为分组大小为$1000B$,其中分组头大小为$20B$,所以只能携带$1000-20=980B$个数据,而一共要发送一个$980000B$的文件,所以分为$1000$组分组,从而总的数据量为$1000\times1000=10^6B=1MB=8Mbit$。根据链路传输速率为$100Mb/s$,所以为$0.08s=80ms$。这时所有的分组都被$H_1$发出。 然后考虑最后一个分组的发送情况。因为有两个分组交换机,所以在$H_1$发出后还需要经过两次分组转发才能到达$H_2$,不考虑传播时延则不计算电磁波传播时间。每次最后一个分组进行分组转发的时间为$1000\times8/100=0.08ms$,一共两个交换机,所以还要$0.16ms$。 所以总共为$80.16ms$。 **例题** 试在下列条件下比较电路交换和分组交换。要传送的报文共$x$比特。从源点到终点共经过$k$段链路,每段链路的传播时延为$d$秒,数据传输速率为$b$比特/秒。在电路交换时电路的建立时间为$s$秒。在分组交换时分组长度为$p$比特,且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的时延要小?(提示:画草图观察k段链路共有几个结点) 解:忽略排队等待时延,所以电路交换时延=建立连接时延+发送时延+传播时延,分组交换时延=发送时延+传播时延。 电路交换与分组交换都是经过同样长度的链路,传播时延一样,有$k$条链路,所以传播时延都是$kd$。 由于电路交换不使用存储转发,所以有$k$条链路对其没有存储转发的影响,是一直传送到目标,所以发送时延=$x/b$。 所以电路交换的总时延就是再加上$s$,为$s+x/b+kd$。 对于分组交换,总共设置了$x/p$个分组。 由于分组交换使用了存储转发技术,所以每一个站点就需要一次发送时延$p/b$。数据在经过$(k-1)p/b$个发送时延后从$k$个$p/b$开始都有一个分组发送成功。一共有$x/p$个分组,所以一共需要$(k-1)p/b+x/p\cdot p/b=(k-1)p/b+x/b$。 所以对于分组交换的总时延就是$(k-1)p/b+x/b+kd$。 若分组交换时延要小于电路交换时延,所以$(k-1)b/p