第五章 传输层

更新时间:2024-05-17 06:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第五章 传输层 5—01

试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么

重要区别?为什么运输层是必不可少的?

答:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应

用层提供服务

运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑

通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。 各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输

层以复用和分用的形式加载到网络层。

5—02 网络层提供数据报或虚电路服务对上面的运输层有何影响? 答:网络层提供数据报或虚电路服务不影响上面的运输层的运行机制。 但提供不同的服务质量。

5—03

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

面向无连接的?

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

5—04

试用画图解释运输层的复用。画图说明许多个运输用户复用到一条运输连接上

,而这条运输连接有复用到IP数据报上。

5—05 试举例说明有些应用程序愿意采用不可靠的UDP,而不用采用可靠的TCP。 答:VOIP:由于语音信息具有一定的冗余度,人耳对VOIP数据报损失由一定的承受度,

但对传输时延的变化较敏感。

有差错的UDP数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能

带来较大的时延扰动。

因此VOIP宁可采用不可靠的UDP,而不愿意采用可靠的TCP。

5—06

接收方收到有差错的UDP用户数据报时应如何处理?

答:丢弃

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

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

答:发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对

应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层

的应用进程,一次交付一个完整的报文。

发送方TCP对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,课分

拆/合并),但维持各字节

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

答:端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计

算机的应用进程能够互相通信。

熟知端口,数值一般为0~1023.标记常规的服务进程;

登记端口号,数值为1024~49151,标记没有熟知端口号的非常规的服务进程;

5—10 试说明运输层中伪首部的作用。

答:用于计算运输层数据报校验和。

5—11

某个应用进程使用运输层的用户数据报UDP,然而继续向下交给IP层后,又封

装成IP数据报。既然都是数据报,可否跳过UDP而直接交给IP层?哪些功能UDP提供了但

IP没提提供?

答:不可跳过UDP而直接交给IP层

IP数据报IP报承担主机寻址,提供报头检错;只能找到目的主机而无法找到目

的进程。

UDP提供对应用进程的复用和分用功能,以及提供对数据差分的差错检验。

5—12

一个应用程序用UDP,到IP层把数据报在划分为4个数据报片发送出去,结果前

两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP层仍然

划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的

站能否将这两次传输的4个数据报片组装成完整的数据报?假定目的站第一次收到的后

两个数据报片仍然保存在目的站的缓存中。 答:不行

重传时,IP数据报的标识字段会有另一个标识符。

仅当标识符相同的IP数据报片才能组装成一个IP数据报。

前两个IP数据报片的标识符与后两个IP数据报片的标识符不同,因此不能组装

成一个IP数据报。

5—13

一个UDP用户数据的数据字段为8192季节。在数据链路层要使用以太网来传送

。试问应当划分为几个IP数据报片?说明每一个IP数据报字段长度和片偏移字段的值。 答:6个

数据字段的长度:前5个是1480字节,最后一个是800字节。 片偏移字段的值分别是:0,1480,2960,4440,5920和7400.

5—14

一UDP用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17.试求源

端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送

给服务器发送给客户?使用UDP的这个服务器程序是什么?

解:源端口1586,目的端口69,UDP用户数据报总长度28字节,数据部分长度20字节。 此UDP用户数据报是从客户发给服务器(因为目的端口号<1023,是熟知端口)

、服务器程序是TFFTP。

5—15

使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会

有什么问题?

答:如果语音数据不是实时播放(边接受边播放)就可以使用TCP,因为TCP传输可靠。

接收端用TCP讲话音数据接受完毕后,可以在以后的任何时间进行播放。但假定是实时

传输,则必须使用UDP。

UDP不保证可靠交付,但UCP比TCP的开销要小很多。因此只要应用程序接受这样

的服务质量就可以使用UDP。

5—16

5—17

在停止等待协议中如果不使用编号是否可行?为什么?

答:分组和确认分组都必须进行编号,才能明确哪个分则得到了确认。

在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其

他什么也没做)是否可行?试举出具体的例子说明理由。 答:

收到重复帧不确认相当于确认丢失

5—18

假定在运输层使用停止等待协议。发送发在发送报文段M0后再设定的时间内未

收到确认,于是重传M0,但M0又迟迟不能到达接收方。不久,发送方收到了迟到的对M0

的确认,于是发送下一个报文段M1,不久就收到了对M1的确认。接着发送方发送新的报

文段M0,但这个新的M0在传送过程中丢失了。正巧,一开始就滞留在网络中的M0现在到

达接收方。接收方无法分辨M0是旧的。于是收下M0,并发送确认。显然,接收方后来收

到的M0是重复的,协议失败了。

试画出类似于图5-9所示的双方交换报文段的过程。 答:

旧的M0被当成新的M0。

5—19 试证明:当用n比特进行分组的编号时,若接收到窗口等于1(即只能按序接收

分组),当仅在发送窗口不超过2n-1时,连接ARQ协议才能正确运行。窗口单位是分组 。

解:见课后答案。

5—20

在连续ARQ协议中,若发送窗口等于7,则发送端在开始时可连续发送7个分组

。因此,在每一分组发送后,都要置一个超时计时器。现在计算机里只有一个硬时钟。

设这7个分组发出的时间分别为t0,t1…t6,且tout都一样大。试问如何实现这7个超时计

时器(这叫软件时钟法)? 解:见课后答案。

5—21 假定使用连续ARQ协议中,发送窗口大小事3,而序列范围[0,15],而传输媒体

保证在接收方能够按序收到分组。在某时刻,接收方,下一个期望收到序号是5. 试问: (1)

在发送方的发送窗口中可能有出现的序号组合有哪几种?

(2) 接收方已经发送出去的、但在网络中(即还未到达发送方)的确认分组可能有

哪些?说明这些确认分组是用来确认哪些序号的分组。

5—22 有

主机A向主机B发送一个很长的文件,其长度为L字节。假定TCP使用的MSS

1460字节。 (1) (2)

在TCP的序号不重复使用的条件下,L的最大值是多少?

假定使用上面计算出文件长度,而运输层、网络层和数据链路层所使用的首部

开销共66字节,链路的数据率为10Mb/s,试求这个文件所需的最短发送时间。 解:(1)L_max的最大值是2^32=4GB,G=2^30.

(2) 满载分片数Q={L_max/MSS}取整=2941758发送的总报文数

N=Q*(MSS+66)+{(L_max-Q*MSS)+66}=4489122708+682=4489123390

总字节数是N=4489123390字节,发送4489123390字节需时间为:N*8/(10*10^6)

=3591.3秒,即59.85分,约1小时。

5—23 (1) (2) (3)

主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。试问: 第一个报文段携带了多少个字节的数据?

主机B收到第一个报文段后发回的确认中的确认号应当是多少?

如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第

二个报文段中的数据有多少字节? (4)

如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文

段到达后向A发送确认。试问这个确认号应为多少? 解:(1)第一个报文段的数据序号是70到99,共30字节的数据。 (2)确认号应为100. (3)80字节。 (4)70

5—24

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

吞吐量只有120kb/s。试问发送窗口W是多少?(提示:可以有两种答案,取决于接收等

发出确认的时机)。

解:

来回路程的时延等于256ms(=128ms×2).设窗口值为X(注意:以字节为单位),假

定一次最大发送量等于窗口值,且发射时间等于256ms,那么,每发送一次都得停下来期待 再次得到下一窗口的确认,以得到新的发送许可.这样,发射时间等于停止等待应答的时 间,

结果,测到的平均吞吐率就等于发送速率的一半,即 8X÷(256×1000)=256×0.001 X=8192

所以,窗口值为8192.

5—25 为什么在TCP首部中要把TCP端口号放入最开始的4个字节?

次之后发送方是通过超时检测到丢失的报文段。

(5) 在第1轮次发送时,门限ssthresh被设置为32

在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21. 在第24轮次发送时,门限ssthresh是第18轮次发送时设置的21 (6) 第70报文段在第7轮次发送出。

(7) 拥塞窗口cwnd和门限ssthresh应设置为8的一半,即4.

5—40 TCP在进行流量控制时是以分组的丢失作为产生拥塞的标志。有没有不是因拥

塞而引起的分组丢失的情况?如有,请举出三种情况。 答:

当Ip数据报在传输过程中需要分片,但其中的一个数据报未能及时到达终点,而终点组

装IP数据报已超时,因而只能丢失该数据报;IP数据报已经到达终点,但终点的缓存没

有足够的空间存放此数据报;数据报在转发过程中经过一个局域网的网桥,但网桥在转

发该数据报的帧没有足够的差错空间而只好丢弃。

5—41

用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100

字节的数据。再设发送端和接收端的起始序号分别选为100和200,试画出类似于图5-31

的工作示意图。从连接建立阶段到连接释放都要画上。

5—42

在图5-32中所示的连接释放过程中,主机B能否先不发送ACK=x+1的确认? (因

为后面要发送的连接释放报文段中仍有ACK=x+1这一信息) 答:

如果B不再发送数据了,是可以把两个报文段合并成为一个,即只发送FIN+ACK报文段。

但如果B还有数据报要发送,而且要发送一段时间,那就不行,因为A迟迟收不到确认,

就会以为刚才发送的FIN报文段丢失了,就超时重传这个FIN报文段,浪费网络资源。

5—43

在图(5-33)中,在什么情况下会发生从状态LISTEN到状态SYN_SENT,以及从状

态SYN_ENT到状态SYN_RCVD的变迁?

答:当A和B都作为客户,即同时主动打开TCP连接。这时的每一方的状态变迁都是:

CLOSED----àSYN-SENT---àSYN-RCVD--àESTABLISHED

5—44

试以具体例子说明为什么一个运输连接可以有多种方式释放。可以设两个互相

通信的用户分别连接在网络的两结点上。

答:设A,B建立了运输连接。协议应考虑一下实际可能性:

A或B故障,应设计超时机制,使对方退出,不至于死锁; A主动退出,B被动退出 B主动退出,A被动退出

5—45

解释为什么突然释放运输连接就可能会丢失用户数据,而使用TCP的连接释放

方法就可保证不丢失数据。 答:

当主机1和主机2之间连接建立后,主机1发送了一个TCP数据段并正确抵达主机2,接着

主机1发送另一个TCP数据段,这次很不幸,主机2在收到第二个TCP数据段之前发出了释

放连接请求,如果就这样突然释放连接,显然主机1发送的第二个TCP报文段会丢失。 而使用TCP的连接释放方法,主机2发出了释放连接的请求,那么即使收到主机1的确认

后,只会释放主机2到主机1方向的连接,即主机2不再向主机1发送数据,而仍然可接受

主机1发来的数据,所以可保证不丢失数据。

5—46

试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做

可能会出现什么情况。 答:

3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已

准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确

认。

假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两

次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的

应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序

列号,B甚至怀疑A是否收到自己的连接请求分组,在这种情况下,B认为连接还未建立

成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。

而A发出的分组超时后,重复发送同样的分组。这样就形成了死锁。

5—47

一个客户向服务器请求建立TCP连接。客户在TCP连接建立的三次握手中的最后

一个报文段中捎带上一些数据,请求服务器发送一个长度为L字节的文件。假定: (1)客户和服务器之间的数据传输速率是R字节/秒,客户与服务器之间的往返时间是

RTT(固定值)。

(2)服务器发送的TCP报文段的长度都是M字节,而发送窗口大小是nM字节。 (3)所有传送的报文段都不会出错(无重传),客户收到服务器发来的报文段后就及

时发送确认。

(4)所有的协议首部开销都可忽略,所有确认报文段和连接建立阶段的报文段的长度

都可忽略(即忽略这些报文段的发送时间)。

试证明,从客户开始发起连接建立到接收服务器发送的整个文件多需的时间T是:

T=2RTT+L/R 当nM>R(RTT)+M 或 T=2RTT+L/R+(K-1)[M/R+RTT-nM/R] 当nM

其中,K=[L/nM],符号[x]表示若x不是整数,则把x的整数部分加1。 解:

发送窗口较小的情况,发送一组nM个字节后必须停顿下来,等收到确认后继续发送。 共需K=[L/nM]个周期:其中

前K-1个周期每周期耗时M/R+RTT,共耗时(K-1)(M/R+RTT)

第K周期剩余字节数Q=L-(K-1)*nM,需耗时Q/R

总耗时=2*RTT+(K-1)M/(R+RTT)+Q/R=2*RTT+L/R+(K-1)[( M/R+RTT)-nM/R]

本文来源:https://www.bwwdw.com/article/e3l7.html

Top