计算机网络习题——第5章 运输层

5-01运输层在协议栈中的地位和作用。运输层的通信和网络层的通信有什么重要的区别?为什么运输层是必不可少的?
运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务。
运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换)。
各种应用进程之间通信需要“可靠或尽力而为”的两类服务质量,必须由运输层以复用和分用的形式加载到网络层。

5-03当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是无连接的。
都是。这要在不同层次来看,在运输层是面向连接的,在网络层则是无连接的。

5-05试举例说明有些应用程序愿意采用不可靠的UDP,而不愿意采用可靠的TCP。
VOIP:由于语音信息具有一定的冗余度,人耳对VOIP数据报损失由一定的承受度,但对传输时延的变化较敏感。有差错的UDP数据报在接收端被直接抛弃,TCP数据报出错则会引起重传,可能带来较大的时延扰动。因此VOIP宁可采用不可靠的UDP,而不愿意采用可靠的TCP。

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

5-09端口的作用是什么?为什么端口号要划分为三种?
端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信。
熟知端口,数值一般为0~1023。标记常规的服务进程;
登记端口号,数值为1024~49151,标记没有熟知端口号的非常规的服务进程。

5-14一个UDP用户数据报的首部的十六进制表示是:06 32 00 45 00 1C E2 17。试求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器还是从服务器发送给客户?使用UDP的这个服务器程序是什么?
06 32是源端口 十六进制转十进制6*162+3*161+2*160=1586;
00 45是目的端口 十六进制转十进制4*161+5*160=69;
00 1c是用户数据包的总长度=16+12=28;
数据部分长度为:28-首部长度=28-8=20;
由于目的端口69<1023是熟知端口(服务器端使用的端口号),因此该UDP数据报是从客户发给服务器的,程序是TFFTP。

5-16在停止等待协议中如果不使用编号是否可行?为什么?
分组和确认分组都必须进行编号,才能明确哪个分则得到了确认。

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

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

5-21假定使用连续ARQ协议,发送窗口大小是3,而序号范围是[0,15],而传输媒体保证在接收方能够按序收到分组。在某一时刻,在接收方,下一个期望收到的序号是5。试问:
(1)在发送方的发送窗口中可能出现的序号组合有哪些?
序号到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-23主机A向主机B连续发送了两个TCP报文段,其序号分别是70和100。试问:
(1)第一个报文段携带了多少字节的数据?

第一个报文段的数据序号是70到99,共30字节的数据。
(2)主机B收到第一个报文段后发回的确认中的确认号应当是多少?
确认号应为100。当报文被接受后排序到99,希望接收第100个字节,所以发送确认号100。
(3)如果B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?
第三个报文段的数据序号是100到179,共80字节的数据。
(4)如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认。试问这个确认号应为多少?
70,第一个报文没有收到,就不会对后续报文进行确认。b希望a重传序列号为70的报文,所以发送确认号为70。

5-30设TCP使用的最大窗口为65535字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时间为20ms,问所能得到的最大吞吐量是多少?
在发送时延可忽略的情况下,最大数据率=最大窗口*8/平均往返时间=65535*8/20=26.2Mb/s。

5-31通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?
往返时延等于两倍的端到端传播时延,即20ms=0.02s;
发送时延等于窗口数据量除以带宽,即65535*8/109秒;
TCP每发送一个窗口,需要进行等待确认信息回来,所以每发送完一个窗口,最快需要经过一个往返时延才可以发送下一个窗口(确认信息很小不考虑发送时延),所以在一个传输轮次中,包含一个发送时延和一个往返时延,而传输的数据量是一个窗口的大小(这里不考虑TCP、IP首部和帧的构成)。
所以最大吞吐量为一个窗口的大小除以一个传输轮次的时间,即65535*8/(65535*8/109+0.02)=25.54Mb/s。
信道利用率为25.54Mb/s/1000Mb/s=2.55%。

5-37在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一/种算法各起什么作用?“乘法减小”和“加法增大”各用在什么情况下?

慢开始:
在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以分组注入到网络的速率更加合理。我们还要指出,慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd,这当然比设置大的cwnd值一下子把许多报文段注入到网络中要“慢得多”。这对防止网络出现拥塞是一个非常好的方法。

拥塞避免:
当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每经过一个往返时延RTT就增加一个MSS的大小。

快重传算法:
发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应该立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。

快恢复算法:
当发送端收到连续三个重复的ACK时,就重新设置慢开始门限ssthresh。与慢开始不同之处是拥塞窗口cwnd不是设置为1,而是设置为ssthresh。若收到的重复的AVK为n个(n>3),则将cwnd设置为ssthresh。若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。若收到了确认新的报文段的ACK,就将cwnd缩小到ssthresh乘法减小。

乘法减小:
是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前的拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。

加法增大:
是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。

5-38设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免。试分别求出第1轮次到第15轮次传输的各拥塞窗口的大小。你能说明拥塞窗口每一次变化的原因吗?
(1)TCP连接初始化时,cwnd=1;
(2)执行慢开始算法,使用慢开始算法后,每经过一个传输轮次(transmission round),拥塞窗口cwnd就加倍。随后的窗口大小为2,4,8;
(3)当cwnd=8=ssthresh,进入了拥塞避免阶段,拥塞避免算法的思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是像慢开始阶段那样加倍增长。其窗口大小依次为9,10,11,12,直到12发生拥塞;
(4)更新ssthresh=6。进入慢开始,设置cwnd=1,重复(2),慢开始阶段窗口依次为1,2,4,6,进入拥塞避免阶段窗口大小依次为7,8,9;
所以,第1次到第15次传输的各拥塞窗口大小依次为1,2,4,8,9,10,11,12,1,2,4,6,7,8,9。

5-39TCP的拥基窗口cwnd大小与传输轮次n的关系如下所示:

cwnd1248163233343536373839
n12345678910111213
cwnd4041422122232425261248
n14151617181920212223242526

(1)试画出如图5-25所示的拥塞窗口与传输轮次的关系曲线。
关系曲线(2)指明TCP工作在慢开始阶段的时间间隔。
(2)慢开始时间间隔:[1,6]和[23,26]。
(3)指明TCP工作在拥塞避免阶段的时间间隔。
(3)拥塞避免时间间隔:[6,16]和[17,22]。
(4)在第16轮次和第22轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
(4)在第16轮次之后发送方从新门限值开始,是通过收到三个重复的确认检测到丢失的报文段。
在第22轮次之后发送方启动慢开始,是通过超时检测到丢失的报文段。
(5)在第1轮次、第18轮次和第24轮次发送时,门限ssthresh分别被设置为多大?
(5)在第1轮次发送时,门限 ssthresh 被设置为32。
在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21。
在第24轮次发送时,门限ssthresh是13。
(6)在第几轮次发送出第70个报文段?
(6)第70报文段在第7轮次发送出。
(7)假定在第26轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwmd 和门限ssthresh应设置为多大?
(7)拥塞窗口cwnd 和门限ssthresh应设置为8的一半,即4。

5-49下面是以十六进制格式存储的一个UDP首部:
CB84000D001C001C 试问:
(1)源端口号是什么?

CB84是源端口 十六进制转十进制 12*163+11*162+8*16+4=52100。
(2)目的端口号是什么?
000D是目的端口 十六进制转十进制 13*160=13。
(3)这个用户数据报的总长度是多少?
001C是用户数据报的总长度 16+12=28。
(4)数据长度是多少?
数据部分长度为:28-首部长度=28-8=20。
(5)这个分组是从客户到服务器方向的,还是从服务器到客户方向的?
目的端口号是13(熟知端口),分组是从客户到服务器。
(6)客户进程是什么?
Daytime。

5-52UDP和IP的不可靠程度是否相同?请加以解释。
UDP用户数据报的校验和既校验UDP用户数据报的首部又校验整个的UDP用户数据报的数据部分,而IP数据报的校验和仅仅校验IP数据报的首部。UDP用户数据报的校验和还增加了伪首部,即还校验了下面的IP数据报的源IP地址和目的IP地址。

5-74流量控制和拥塞控制的最主要的区别是什么?发送窗口的大小取决于流量还是拥塞控制?
拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。
流量控制:指点对点通信量的控制,是端到端的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
发送窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。
发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减少一些,以减少注入到网络中的分组数。

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lazyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值