计算机网络(第八版)第五章章末习题

不是标准答案,只是收录查到的答案以及记录自己的做题过程和结果,无关对错,仅供参考

 参考:计算机网络 谢希仁(第8版)第五章习题答案_进击的博仔的博客-CSDN博客

第五章 运输层

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

地位和作用:运输层向它上面的应用层提供通信服务,属于面向通信部分的最高层,用户功能中的最底层。

区别:运输层提供应用进程间的逻辑通信。网络层为主机之间的通信提供服务,运输层在网络层的基础上,为应用进程之间的通信提供服务。

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

运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别。当运输层采用面向连接的TCP协议时尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。所以网络层提供数据报或虚电路服务对上面的运输层没有影响。

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

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

5-04 试用画图解释运输层的复用。画图说明许多个运输用户复用到一条运输连接上,而这条运输连接又复用到IP数据报上。

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

IP电话,实时视频会议...... 

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

丢弃 

5-07 如果应用程序愿意使用UDP来完成可靠的传输,这可能吗?请说明理由。

可能。应用进程本身可在不影响应用实时性的前提下,增加一些提高可靠性的措施,如采用前向纠错或重传已丢失的报文。 

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

UDP 是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。TCP是面向字节流的。TCP 的“流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流

5-09 端口的作用是什么?为什么端口号要划分为三种类型?

端口是应用层中的应用进程与运输层实体进行层间交互的接口,只具有本地意义。
服务器端使用两类端口号,熟知端口号和登记端口号,熟知端口号是给重要的应用程序使用的,登记端口号给没有熟知端口号的应用程序使用。这两类给服务器端使用,为了让所有用户都知道,便于通信。
客户端使用短暂端口号,这种端口号仅在客户端运行时才动态随机选择,留给客户临时使用。

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

伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。 

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

不可。IP数据报只能找到目的主机而无法找到目的进程。UDP提供对应用进程的复用和分用功能,并提供对数据部分的差错检验。 

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

不行。重传时,IP数据报的标识字段会有另一个标识符,标识符相同的IP数据报片才能组装成一个IP数据报。前两个IP数据报片的标识符与后两个IP数据报片的标识符不同。

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

 UDP用户数据报的长度:8192+8 = 8200字节。以太网规定的MTU=1500B,IP数据报数据字段长度=1500B - 20B(首部的固定部分) =1480B。8200 = 1480x5 + 800,所以前5个报片长度为1480B,最后一个800B。各报片的首字节:0,1480,2960,4440,5920,7400,片偏移分别为:0,185,370,555,740,925

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

 源端口:0x 06 32 = 1586,目的端口:0x 00 45 = 69,用户数据报的总长度:0x 00 1C = 28,数据部分长度:28B - 8B(UDP首部) = 20B。从客户发送给服务器,因为目的端口号小于1023,是熟知端口。服务器程序是TFTP(可在5.1.3节表5-12中查到)

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

UDP不保证可靠交付,但UDP比TCP的开销要小很多。因此只要应用程序接受这样的服务质量就可以使用UDP。如果话音数据不是实时播放(边接收边播放)就可以使用TCP,因为TCP传输可靠。接收端用TCP将话音数据接收完毕后,可以在以后的任何时间进行播放。但假定是实时传输,则必须使用UDP。

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

不可行。分组和确认分组都必须进行编号。这样才能明确哪一个发送出去的分组收到了确认,而哪一个分组还没有收到确认。

5-17 在停止等待协议中,如果收到重复的报文段时不予理睬(即悄悄地丢弃它而其他什么也没做)是否可行?试举出具体的例子说明理由。

 不可行。例:A向B发送M1,B收到M1后发送的对M1的确认丢失了。A超时重传,但不知道是自己发送的分组出错、丢失,还是B发送的确认丢失了。假定B又收到重传的M分组。这时B应丢弃这个重复的分组M1,并且向A发送确认。不能认为已经发送过确认就不再发送,因为A之所以重传M1就表示A没有收到对M1的确认。悄悄地丢弃它而其他什么也不做只会让A继续重传M1。

5-18 假定在运输层使用停止等待协议。发送发在发送报文段M0后在设定的时间内未收到确认,于是重传M0,但M0又迟迟不能到达接收方。不久,发送方收到了迟到的对M0的确认,于是发送下一个报文段M1,不久就收到了对M1的确认。接着发送方发送新的报文段M0,但这个新的M0在传送过程中丢失了。正巧,一开始就滞留在网络中的M0现在到达接收方。接收方无法分辨M0是旧的。于是收下M0,并发送确认。显然,接收方后来收到的M0是重复的,协议失败了。试画出类似于图5-9所示的双方交换报文段的过程。

 5-19 试证明:当用 n 比特进行分组的编号时,若接收窗口等于 1(即只能按序接收分组),则仅在发送窗口不超过2^n-1时,连续 ARQ 协议才能正确运行。窗口单位是分组。

官方答案解释的也不太细致,参考这篇:试证明:当用n比特进行分组的编码时,若接收窗口等于1(即只能按序接收分组),那么如果要求连续ARQ协议能正常运行时,发送窗口大小是多少?_xiao666wang的博客-CSDN博客_试证明当用n比特进行分组的编号时

5-20 在连续 ARQ 协议中,若发送窗口等于 7,则发送端在开始时可连续发送 7 个分组。因此,在每一分组发送后,都要置一个超时计时器。现在计算机里只有一个硬时钟。设这 7 个分组发出的时间分别为 t0,t1,…t6,且tout都一样大。试问如何实现这 7 个超时计时器(这叫软时钟法)?

举个例子,假定tout = 3s,发送相邻分组的时间差都是2s。t0时刻,发送报文M0,生成链表1。经过3s后M0超时重传,指针指向序号为1的结构体,即生成链表2。再经过t1-t0 = 2s后,M1超时重传,指针指向序号为2的结构体......抛开例子,一般情况下(即发送相邻分组的时间差不同、tout小于发送相邻分组时间差......等等情况)都适用。

5-21 假定使用连续 ARQ 协议中,发送窗口大小是 3,而序列范围 是[0, 15],而传输媒体保证在接收方能够按序收到分组。在某一时刻,在接收方,下一个期望收到序号是 5,试问:
(1)在发送方的发送窗口中可能有出现的序号组合有哪些?
(2)接收方已经发送出的、但在网络中(即还未到达发送方)的确认分组可能有哪些?说明这些确认分组是用来确认哪些序号的分组。

(1)下一个期望收到序号是 5,说明序号到4为止的分组都已收到。若这些确认都已到达发送方,则发送窗口的范围是[5,7]。假定所有的确认都丢失了,发送方没有收到这些确认。这时,发送窗口应为[2,4]。因此,发送窗口可以是[2,4],[3,5],[4,6],[5,7]中的任何一个。

(2)接收方期望收到序号 5 的分组,说明序号为 2,3,4 的分组都已收到,并且发送了确认。对序号为 1 的分组的确认肯定被发送方收到了,否则发送方不可能发送 4 号分组。可见,对序号为 2,3,4 的分组的确认有可能仍滞留在网络中。这些确认是用来确认序号为 2,3,4 的分组。

5-22 主机 A向主机B发送一个很长的文件,其长度为L字节。假定TCP使用的 MSS 为 1460 字节。
(1)在 TCP 的序号不重复使用的条件下,L 的最大值是多少?
(2)假定使用上面计算出的文件长度,而运输层、网络层和数据链路层所使用的首部开销共 66 字节,链路的数据率为 10 Mbit/s,试求这个文件所需的最短发送时间。

(1)TCP有4字节的序号位,共2^32(即4 294 967 296)个序号。每一个字节都按顺序编号,所以L最大能有2^32字节大小,即4GB,G = 2^30。

(2)这个文件至少需要分成 L / MSS =  2 941 759个报文段发送。加上各层首部开销后的总长度为 L + 2 941 759 * 66B = 4 489 123 390B =35 912 987 120 bit ,这个文件所需的最短发送时间为 35 912 987 120 bit / 10Mbit/s ≈ 3591.3 s ≈ 59.86 min。

5-23 主机 A 向主机 B 连续发送了两个 TCP 报文段,其序号分别为 70 和 100。试问:
(1)第一个报文段携带了多少字节的数据?
(2)主机 B 收到第一个报文段后发回的确认中的确认号应当是多少?
(3)如果主机 B 收到第二个报文段后发回的确认中的确认号是 180,试问 A 发送的第二个报文段中的数据有多少字节?
(4)如果 A 发送的第一个报文段丢失了,但第二个报文段到达了 B。B 在第二个报文段到达后向 A 发送确认。试问这个确认号应为多少?

(1)第一个报文段的数据序号是70到99,共30字节的数据。

(2)100。

(3)说明第二个报文段的数据序号是100到179,共80字节的数据。

(4)70。

5-24 一个 TCP 连接下面使用 256 kb/s 的链路,其端到端时延为 128 ms。经测试,发现吞吐量只有 120 kb/s。试问发送窗口 W 是多少?(提示:可以有两种答案,取决于接收端发出确认的时机)。

(a)发送时延T = W / 256 kb/s 

吞吐量 = W / T+256ms = 120 kb/s ,解出W ≈ 57825.88bit ≈ 7228B

(b)吞吐量 = W / 256ms = 120 kb/s,解出 W ≈ 30720bit ≈ 3840B

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

在ICMP的差错报文中要包含IP首部后面的8个字节的内容,而这里面有TCP首部中的源端口和目的端口。当TCP收到ICMP差错报文时需要用这两个端口来确定是哪条连接出了差错。 

5-26 为什么在 TCP 首部中有一个首部长度字段,而 UDP 的首部中就没有这个这个字段?

 TCP首部除固定长度部分外,还有选项,因此TCP首部长度是可变的。UDP首部长度是固定的。

 5-27 一个 TCP 报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过 TCP 报文字段中的序号字段可能编出的最大序号,问还能否用 TCP 来传送?

65495字节,此数据部分加上TCP首部的20字节,再加上IP首部的20字节,正好是IP数据报的最大长度65535.(当然,若IP首部包含了选择,则IP首部长度超过 20字节,这时TCP报文段的数据部分的长度将小于65495字节。) 数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号,通过循环使用序号,仍能用TCP来传送。

5-28 主机 A 向主机 B 发送 TCP 报文段,首部中的源端口是 m 而目的端口是n。当 B 向 A 发送回信时,其 TCP 报文段的首部中源端口和目的端口分别是什么?

分别是n和m。 

5-29 在使用 TCP 传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由

还没来得及重传就收到了更高序号的确认,就说明该序号及以前的所有报文都收到了,所以不需再重传。 

5-30 设 TCP 使用的最大窗口为 65535 字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时延为 20 ms,问所能得到的最大吞吐量是多少?

在发送时延可忽略的情况下,
吞吐量 = 65535 B / 20 ms = 26.2 Mbit/s

5-31 通信信道带宽为 1 Gbit/s,端到端时延为 10 ms。TCP 的发送窗口为 65535 字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?

发送时延:65535 B / 1 Gbit/s = 0.524 ms 
最大吞吐量:65535 B / ( 20 ms + 0.524 ms ) = 25.55 Mbit/s 
信道利用率:25.55 M b i t / s / 1 G b i t / s = 2.55%

5-32 什么是 Karn 算法?在 TCP 的重传机制中,若不采用 Karn 算法,而是在收到确认时都认为是对重传报文段的确认,那么由此得出的往返时延样本和重传时间都会偏小。试问:重传时间最后会减小到什么程度?

Karn算法:在计算加权平均RTTs时,只要报文段重传了,就不采用其往返时间样本。

在统计意义上,重传时间最后会减小到使用karn算法的1/2.

5-33 假定 TCP 在开始建立连接时,发送方设定超时重传时间是RTO = 6秒。
(1)当发送方接到对方的连接确认报文段时,测量出 RTT 样本值为1.5秒。试计算现在的RTO值。
(2)当发送方发送数据报文段并接收到确认时,测量出RTT样本值为2.5秒。试计算现在的RTO值。

(1)RTTs​=RTT=1.5s,

RTTD=RTT/2=0.75s(RTTD是RTT的偏差的加权平均值,当第一次测量室,RTTD值取为测量到的RTT样本值的一半)

RTO=RTTs​+4RTTD​=4.5s

(2)RTTS​=(1−α)RTTS​+αRTT=0.875×1.5+0.125×2.5=1.625s

RTTD​=(1−β)RTTD​+β×∣RTTS​−RTT∣=0.75×0.75+0.25×0.875≈0.78s

RTOD​=RTTS​+RTTD​=4.75s

5-34 已知第一次测得 TCP 的往返时延的当前值 RTT 是 30 ms。现在收到了三个接连的确认报文段,它们比相应的数据报文段的发送时间分别滞后的时间是:26 ms,32 ms 和24 ms。设 α = 0.1。试计算每一次的新的加权平均往返时间值RTTS。讨论所得出的结果。

第一次:RTTs=30ms
第二次:RTTs=27ms+2.6ms=29.6ms
第三次:RTTs=29.84ms
第四次:RTTs=29.256ms
新RTT样本值对RTTs有影响但很小。

 5-35 用TCP通过速率为1Gbit/s的链路传送一个10MB的文件。假定链路的往返时延RTT=50ms。TCP选用了窗口扩大选项,使窗口达到可选用的最大值。在接收端,TCP的接收窗口为1MB,而发送端采用拥塞控制算法,从慢开始传送。假定拥塞窗口以分组为单位计算,在一开始发送1个分组,而每个分组长度都是1KB.假定网络不会发生拥塞和分组丢失,并且发送端发送数据的速率足够快,因此发送时延可以忽略不计,而接收端每一次收完一批分组后就立即发送确认ACK分组。
(1)经过多少个RTT后,发送窗口大小达到1MB?
(2)发送端把整个10MB文件传送成功共需要多少个RTT?传送成功是指发送完整个文件,并收到所有的确认。TCP扩大的窗口够用么?
(3)根据整个文件发送成功所花费的时间(包括收到所有的确认),计算此传输链路的有效吞吐率。链路带宽的利用率是多少?

(1)发送窗口每经过一个RTT增大一倍,窗口大小1MB=1024KB=2^10KB,慢开始规律为,经过N个RTT后窗口大小为2^N个分组,一个分组1KB,所以经过十个RTT后窗口大小就能达到1MB。

(2)由等比数列求和公式得第n个RTT结束后发送的分组数为:2^n-1。10个RTT结束后发送1MB-1KB的数据,还剩9MB+1KB的数据,由于发送端窗口受接收窗口限制,所以10个RTT结束后就一直为1MB,剩下9MB+1KB的数据需要9+1=10个RTT。所以共需要20个RTT。(这个答案和书上给的结果不一样,书上答案14RTT是未考虑接收窗口限制,但我们知道发送窗口不能超过接收窗口,所以个人更倾向于这个答案)
(关于扩大窗口选项书中未详细介绍,忽略)

(3)花费时间:20x50ms=1s
吞吐率:10MB / 1s = 80Mbit/s
利用率:80Mbit/s / 1 Gbit/s = 8 % 

5-36 假定TCP采用一种仅使用线性增大和乘法减小的简单拥塞控制算法,而不使用慢开始。发送窗口不采用字节为计算单位,而是使用分组pkt为计算单位。在一开始发送窗口为1pkt。假定分组的发送时延非常小,可以忽略不计。所有产生的时延就是传播时延。假定发送窗口总是小于接收窗口。接收端每收到一分组后,就立即发回确认ACK。假定分组的编号为i,在一开始发送的是i=1的分组。以后当i=9,25,30,38,50时,发生了分组的丢失。再假定分组的超时重传时间正好是下一个RTT开始的时间。试画出拥塞窗口(也就是发送窗口)与RTT的关系曲线,画到发送第51个分组为止。

 前提是不采用选择确认SACK,若序号i超时,则下个RTT开始时从序号i开始按顺序重传(虽然序号i后的分组可能收到了,但也要重传)

5-38 设 TCP 的 ssthresh 的初始值为 8 (单位为报文段)。当拥塞窗口上升到 12 时网络发生了超时,TCP 使用慢开始和拥塞避免。试分别求出第 1 次到第 15 次传输的各拥塞窗口大小。你能说明拥塞控制窗口每一次变化的原因吗?

看他的:计算机网络 谢希仁(第8版)第五章习题答案_进击的博仔的博客-CSDN博客

5-39 TCP 的拥塞窗口 cwnd 大小与RTT的关系如下所示:

(1)试画出如教材中图 5-25 所示的拥塞窗口与RTT的关系曲线。
(2)指明 TCP 工作在慢开始阶段的时间间隔。
(3)指明 TCP 工作在拥塞避免阶段的时间间隔。
(4)在RTT=16和RTT= 22 之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
(5)在RTT=1,RTT=18和RTT=24发送时,门限 ssthresh 分别被设置为多大?
(6)在RTT等于多少时发送出第 70 个报文段?
(7)假定在RTT=26之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口 cwnd 和门限 ssthresh 应设置为多大?

(2)[RTT=1,RTT=6]和[RTT=23,RTT=26]

(3)[RTT=6,RTT=16]和[RTT=17,RTT=22]

(4)在RTT=16之后发送方是通过收到三个重复的确认(因为下一个RTT执行了快恢复算法,cwnd减半),在RTT=22之后发送方是通过超时(因为下一个RTT执行了慢开始算法,cwnd=1)。

(5)32,21,13

(6)7

(7)4,4

5-40 TCP 在进行流量控制时是以分组的丢失作为产生拥塞的标志。有没有不是因拥塞而引起的分组丢失的情况?如有,请举出三种情况。

当IP数据报在传输过程中需要分片,但其中的一个数据报未能及时到达终点,而终点组装 IP 数据报已超时,因而只能丢失该数据报;IP 数据报已经到达终点,但终点的缓存没有足够的空间存放此数据报;数据报在转发过程中经过一个局域网的网桥,但网桥在转发该数据报的帧没有足够的差错空间而只好丢弃。

5—41 用 TCP 传送 512 字节的数据。设窗口为 100 字节,而 TCP 报文段每次也是传送 100 字节的数据。再设发送端和接收端的起始序号分别选为 100 和 200,试画出类似于图 5-28 的工作示意图。从连接建立阶段到连接释放都要画上。 

 5-42 在图 5-29 中所示的连接释放过程中,主机 B 能否先不发送 ACK = u + 1 的确认?(因为后面要发送的连接释放报文段中仍有 ACK = u + 1 这一信息)

如果 B 不再发送数据了,是可以把两个报文段合并成为一个,即只发送 FIN+ACK 报文段。但如果 B还有数据报要发送,而且要发送一段时间,那就不行,因为 A 迟迟收不到确认,就会以为刚才发送的 FIN报文段丢失了,就超时重传这个 FIN 报文段,浪费网络资源。

 5-43 在图 5-30 中,在什么情况下会发生从状态 SYN-SENT 到状态 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 < R(RTT) + M
其中,K=『L/nM』,符号『x』表示若 x 不是整数,则把 x 的整数部分加 1。
(提示:求证的第一个等式发生在发送窗口较大的情况,可以连续把文件发送完。求证的第二个等式发生在发送窗口较小的情况,发送几个报文段后就必须停顿下来,等收到确认后再继续发送。建议先画出双方交互的时间图,然后再进行推导。)

 第一种情况:n M > R ∗ R T T + M nM>R*RTT + MnM>R∗RTT+M时,服务器发送完窗口数据之前就接收到了确认,窗口向前滑动,能够一直不间断发送。所以T = 2RTT + L/R,当 nM > R(RTT) + M
第二种情况:n M < R ∗ R T T + M nM<R*RTT+MnM<R∗RTT+M时,服务器发送完窗口内容还未收到确认,只能等待M / R + R T T + n M / R M/R+RTT+nM/RM/R+RTT+nM/R时间后才能再次发送,一次发送nM字节,所以需要发送K = ⌈ L / ( n M ) ⌉ K=\lceil L/(nM) \rceilK=⌈L/(nM)⌉次。需要K-1个间隔,所以得证。

  • 10
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值