计算机网络第五版课后习题答案第五章 作业(1) 下载本文

第五章 传输层

5—01 试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的? 答:

(1)运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务。

(2)运输层为应用进程之间提供端到端的数据传输服务,但网络层是为主机之间提供数据传输服务。

(3)一方面,Internet的设计者认为“无论如何设计,网络层也就是通信子网提供的服务都很难做到绝对可靠”;另一方面,当用户对通信子网服务不信任的时候,对通信子网是无能为力的。在这种情形下,如果用户需要可靠的或多种类型的服务,只能自己设法解决。这就是体系结构中按照运输层的主要考虑。

5—02 网络层提供数据报或虚电路服务对上面的运输层有何影响?

答:运输层之下是网络层,之上是应用层,是解决通信问题的最后一次机会,因此它要负责补偿上层的应用需求与下层的网络层所提供服务的差距。数据报和虚电路是两种使用方式不同、传输质量也不同的服务,其中从可靠性方面,虚电路强于数据报;从灵活性方面,数据报优于虚电路。很显然,面对一种确定的应用需求,当网络层提供数据报服务时,运输层就需要实现更多的增值;当网络层提供虚电路服务时,运输层需要实现的增值就少一些。

5—03 当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是面向无连接的?

答:都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。

5—05 试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。

答:比如VOIP,由于语音信息具有一定的冗余度,人耳对VOIP数据的损失有一定的承受度,但对传输时延的变化较敏感。TCP为了实现可靠传输,在数据报出错时会引起重传,说不定还是多次重传,因此TCP的数据传输可能带来较大的时延扰动,用户感觉就是“卡”。因此VOIP宁可采用不可靠的UDP,而不愿意采用可靠的TCP。

5—06 接收方收到有差错的UDP用户数据报时应如何处理? 答:丢弃

5—07 如果应用程序愿意使用UDP来完成可靠的传输,这可能吗?请说明理由 答:可能,但应用程序中必须额外提供与TCP相同的功能。

5—08 为什么说UDP是面向报文的,而TCP是面向字节流的?

答:发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分。接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。因此,UDP保留应用进程每次发送的数据的边界。而TCP对应用程序交下来的报文数据块,正常情况下是保留在发送缓存中,视接收方能力和网络拥塞程度封装报文段,然后提交给网络传输。也就是说,在垂直方向上用户请求TCP服务的行为与水平方向TCP的传输行为不是一

一对应的,与接收方TCP向上提交数据的行为更不对应,因此TCP只能维持字节的顺序性,而不能保持用户每次发送的数据的边界,所以称为面向字节流的。

5—09 端口的作用是什么?为什么端口要划分为三种?

答:端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。 因为因特网上的计算机通信采用客户—服务器方式,服务器进程接收客户进程的请求并作出响应,也就是“收信”的一方,自然必须有固定的端口并且要将其公布出去;客户进程是发起通信的一方,由于运输层数据报中包含源端口,因此服务器进程容易知道客户进程的端口,所以客户进程的端口不需要固定也不需要公布。由于这种明显的不同,端口需要分为客户端使用的端口和服务器端使用的端口,分别对应不同的号码段,为的是客户进程选择端口号的方便并不引起冲突。服务器端使用的端口号又进一步区分为熟知端口和登记端口,用于常规和非常规的服务进程。

5—11 某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP层后,又封装成IP数据报。既然都是数据报,可否跳过UDP而直接交给IP层?哪些功能UDP提供了但IP没提提供?

答:不可跳过UDP而直接交给IP层 IP数据报承担主机寻址,提供报头检错;只能找到目的主机而无法找到目的进程。 UDP提供对应用进程的复用和分用功能,以及提供对数据部分的差错检验。

5—12 一个应用程序用UDP,到IP层把数据报在划分为4个数据报片发送出去,结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP层仍然划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。 答:不行。

由于重传是应用程序发起的,到了UDP层后就被视为独立的数据报,进一步对应一个独立的IP数据报。IP层为每个独立数据报生成新的标识字段值。一IP数据报的所有分片的标识字段值都和原始数据报的标识字段值相同。因此该应用层数据在第一次传输时产生的IP数据报片和重传时产生的IP数据报片会有不同的标识字段值。而标识符相同的IP数据报片才能组装成一个IP数据报,因此不行。

5—13 一个UDP用户数据的数据字段为8192字节。在数据链路层要使用以太网来传送。试问应当划分为几个IP数据报片?说明每一个IP数据报字段长度和片偏移字段的值。 答:

以太网帧的格式要求,数据部分最大为1500字节。以太网帧的数据部分就是上面的网络层IP分组,因此得到通过以太网传输的IP分组长度最大为1500字节。其中,有20字节的固定头部,因此IP数据报片的数据部分最大长度为1480字节。

由“一个UDP用户数据的数据字段为8192字节”,得到该UDP数据报总长度为8192+8=8200字节。此为封装该UDP数据报的原始IP数据报的数据部分长度。

8200/1480=5…800

因此,应当划分为6个数据报片。

数据字段的长度:前5个是1480字节,最后一个是800字节。

片偏移字段的值分别是:0,185,370,555,740和925.(注意:片偏移的单位是8字节)

5—14 一UDP用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17.试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器发送给客户?使用UDP的这个服务器程序是什么?

解:源端口1586,目的端口69,UDP用户数据报总长度28字节,数据部分长度20字节。

此UDP用户数据报是从客户发给服务器(因为目的端口号<1023,是熟知端口)、服务器程序是TFFTP。