计算机网络7章习题及参考答案(20080722)

  • 格式:doc
  • 大小:229.00 KB
  • 文档页数:11

第7章 运输层

1.对比数据链路层和运输层的运行环境。

答案:

在某些方面运输协议类似于数据链路层协议,例如,它们都必须解决差错控制、报文顺序、流量控制及其它问题。但是二者之间也存在显著的差异。

(1)这些差异主要是因为两个协议所运行的环境不同而造成的。

首先,在数据链路层,路由器的每一条输出线将对应唯一的一个路由器,故不必为路由器指明它要与哪个路由器通话。而运输层跨越整个通信子网,故需要明确地给出目的端地址。其次,因为另一端总是存在的,故在物理信道上建立数据链路连接的过程很简单。但运输层初始连接的建立就要复杂得多。

(2)数据链路层和运输层之间另一重大区别来源于子网具有存储能力。

(3)数据链路层与运输层的另一个区别表现在数量上(连接的数目及分配给每个连接的缓冲区数目)。在数据链路层,一般为每个连接分配固定数目的缓冲区。而在运输层,由于需要管理很大数目的连接,因此,每个连接当前可用缓冲区是动态变化的。

2.在表7-1的运输原语例子中,LISTEN是一个阻塞调用。这是必要的吗?如果不是,

请解释如何才有可能使用一个非阻塞的原语。与阻塞调用的方案相比,你的方案有什么优点?

答案:

可使用一个非阻塞的原语LISTEN,该LISTEN调用指出建立新连接的愿望而非阻塞。当一个连接尝试出现时,LISTEN调用方会得到一个信号,然后LISTEN调用方就可执行某个动作,比方说OK或者REJECT,以接受或拒绝该连接。在表7-1的方案中,缺乏这种灵活性。

3.想象用两步握手过程而不是三步握手过程来建立连接。换句话说,第三个消息不再需要了。现在有可能死锁吗?请给出一个例子,或者证明死锁不存在。

答案:

死锁是有可能的。例如,一个分组到达A,A确认了它。但是如果确认在传输途中丢失了,

A现在将是打开的,而B一点儿也不知道发生了什么。现在同样的事情将发生在B身上, B是打开的,但正期待着A送回的不同的序列号。因此,必需引入超时来避免这种死锁。

4.泛化的 n-军问题(n支蓝军对一支白军),任何两支蓝军达成一致意见之后仍能取胜。是否存在一个能保证蓝军必胜的协议?

答案:

否。在n支蓝军对一支白军的时候,这个问题在本质上并不改变。

5.数据报的分片和重组由IP控制,请问TCP需要关心到达数据的失序问题吗?

答案:

尽管到达的每个数据报都是完整的,但到达的数据报顺序可能是错误的,因此TCP必须能按顺序重组报文的各个部分。

6.UDP较之TCP的优势何在?在什么情况下,UDP更能满足应用的需要? 答案:

UDP虽然不可靠,但在很多情况下,UDP较之TCP有其优势。由于UDP是无连接的,带来的延迟,就小,也不必为保持连接的状态而监测一些参数,这就减轻了CPU的负担。UDP首部仅8字节,开销小。特别是因为UDP不用进行流控和拥塞控制,因而响应快,更能充分利用网络的传输能力。因而UDP对远程文件服务(NFS)、流式多媒体、IP电话、SNMP、RIP、DNS等应用更适合,即更能满足其应用的需要。

7.比较主机到主机的协议(IP)和端口到端口协议(TCP和UDP)。

答案:

IP 是一个主机到主机的协议,即 IP 从源主机向目标主机传送数据报,它能将数据报从一个物理设备传递到另一个物理设备。

端口到端口的协议则在多路复用和分用的基础上实现应用进程在Internet中的远程通信,它工作在IP协议的上层。

8.在139.44.77.7主机上的TFTP服务器向14.91.93.33主机上的TFTP客户发送报

文时使用的一对插口可能是什么?

答案:

可能使用的一对插口是:(139.44.77.7 69)和(14.91.93.33 n)。

9.为了解决系统崩溃后机器会丢失全部存储信息的问题,Tomlinson建议为每台主机增设一个计时时钟。不同主机的时钟不需同步。假定每个时钟都采用二进制计数器形式,在统一的时间间隔内累加计数。要求计数器的位数(Q)必须等于或大于序列号的位数(k),并假定时钟一直在运转,即便主机停机也是如此。当建立一个连接时,就将此刻时钟的低k位作为该连接的起始序号。禁区是将起始序号线向左平移一个时间T而得出的,不允许数据单元(即TPDU)的序号落入禁区之中。

考虑下面的问题,一个使用15(即k=15)位的计数器来产生初始序号的时钟驱动机构,

每100毫秒发一时钟脉冲。分组最长生命周期T为60 s。问多长时间需重新同步一次?

(a) 最坏情况。

(b) 每分钟发240个TPDU。

答案:首先画出禁区,如图7-1所示:

o(a) n=03276.8-60=3216.83276.85361.3n=10(t-3276.8)t(s)n(顺序号)215-1=32767(b) n=4tn=10tt=3276.7n=10(t-3216.8)禁区60MMMNN

图7-1 禁区图 时钟循环一次需32768(215 )个脉冲,即3276.8 s。

则① OM的方程为(直线) n = 10t;

② M’N的方程为 n = 10(t-3276.8);

③ 禁区线M”N”的方程为 n = 10(t-3216.8).

重新同步发生在一个连接所使用的连接顺序号从左边进入禁区时。

(a) 在最坏情况下(沿横轴最快进入禁区)

a的方程 n = 0,

求与禁区线交点的t坐标:0=10(t-3216.8),

解得t=3216.8s。

(b) 每分钟发240个TPDU

则每秒发4个TPDU,

b的方程 n = 4t

求与禁区线交点的t坐标: 4t=10(t-3216.8),∴ 6t=3216.8*10

解得t=32168/6=5361.3 s

10.讨论一下运输层由接收方动态调整接收窗口的流量控制协议(又称为信用量协议)和数据链路层滑动窗口协议的优点和缺点。

答案:

数据链路层滑动窗口很简单,只有少量的参数(窗口边缘)需要管理。此外,不会发生一个窗口先增加而后减少的问题。然而,运输层由接收方动态调整接收窗口的流量控制协议更加灵活,允许一个与确认分开的滑动缓存管理,。

11.考虑一个建立在UDP基础上的简单应用层协议,它允许客户从一个远程服务器获取文件,而且该服务器位于一个众所周知的地址上。客户首先发送一个请求,该请求中包含了文件名,然后服务器以一个数据分组序列作为响应,这些数据分组包含了客户所请求的文件的不同部分。为了确保可靠性和顺序递交,客户和服务器使用了停-等协议。忽略显然存在的性能问题,你还看得到这个协议的另一个问题吗?请仔细想一想进程崩溃的可能性。

答案:

客户完全有可能得到错误文件。

假设客户A为获取文件f1发送一个请求,随后客户A就崩溃了。稍后,另一个客户B使用相同的协议为获取另一个文件f2发送请求。假设客户B和A运行在同一机器上(同一IP地址),将它的UDP套接字或插口(socket)绑在同一端口(A早先使用过的)。此外,假设B的请求丢失了。当服务器的回答(对A的请求)到达时,客户B将接收它并假设(错误地)是对它自己请求的回复。

12.UDP和TCP在递交消息的时候,都使用端口号来标识目标实体。请给出两个理由说明为什么这两个协议要发明一个新的抽象ID(端口号),而不是使用进程ID(虽然在设计这两个协议的时候,进程ID早已经存在了)。

答案:

这里有三个原因。

第一, 进程ID是操作系统指定的。使用进程ID可能使这些协议依靠操作系统。

第二, 单一进程可能建立多个通信信道。让一个单独的进程ID(每个进程只有一个ID)

作为目的地标识符,区分不了这些信道。

第三, 所有的进程去监听众所周知的端口都是容易的,但是监听众所周知的进程ID却 是不可能的。

13.为什么要使用UDP?让用户进程直接发送原始的IP分组不就足够了吗?

答案:

仅仅使用IP分组还不够。 IP分组包含IP址,该地址指定一个目的地机器。

一旦这样的分组到达了目的地机器,网络控制程序如何知道该把它交给哪个进程呢?UDP分组包含一个目的地端口,这一信息是必需的,因为有了它,分组才能被投递给正

确的进程。

14.在主机1上的一个进程被分配端口P,在主机2上的一个进程被分配端口Q。试问,

在这两个端口之间是否可以同时有两条或多条TCP连接?

答案:

不可以。

一条连接仅仅用它的插口标识。因此,(1,P)和(2,Q)这一对插口是在这两个端口之间惟一可能的连接。

15.一个TCP报文段的最大载荷是65 515字节,为什么要选择这样一个数字?

答案:

整个TCP报文段必须适配IP分组65535字节的载荷段。因为TCP头最少20个字节,所以仅剩下65515字节用于TCP数据。

16.TCP报文段的数据部分长24字节,分别计算在运输层、网际层和网络接口层的效

率(传输的数据部分与总字节数的比),假定TCP和IP首部均无选项,网络接口层使用以太网。

答案:

运输层的效率 = 24/(20+24) = 24/44 = 6/11

网际层的效率 = 24/(20+20+24) = 24/64 = 6/16 = 3/8

网络接口层(含以太网开销18字节及物理层的前同步码8字节)的效率

= 24/(8+18+20+20+24) = 24/90 = 4/15

17.TCP实体在1Gb/s的通道上使用65535字节的发送窗口,单程延迟时间等于10ms。

问可以取得的最大吞吐率是多少?线路效率是多少?

答案:

10ms×2=20ms

每20ms可以发送一个窗口大小的通信量,每秒50个窗口(1 000ms÷20ms=50)。

65535×8×50=26.214Mb/s

26.214Mb/s÷1000Mb/s≈2.6%

所以,最大吞吐率是26.214Mb/s, 线路效率约为2.6%.

18.一个TCP连接使用256 kb/s的链路,其端到端延时为128 ms。经测试发现吞吐量

只有128 kb/s。试问窗口是多少?忽略PDU封装的协议开销以及接收方应答分组的发送时间(假定应答分组长度很小)。

答案:

来回路程的时延等于256ms(即128ms×2),设窗口值为X(注意,以字节为单位)假定一次最大发送量等于窗口值,且发送时间等于256ms,那么,每发送一次都得停下来期待