传输层习题

基本概念

例题 可靠传输协议中的“可靠”指的是()。

A.A.A.使用面向连接的会话

B.B.B.使用尽力而为的传输

C.C.C.使用滑动窗口来维持可靠性

D.D.D.使用确认机制来确保传输的数据不丢失

解:DDD。如果一个协议使用确认机制对传输的数据进行确认,那么可以认为它是一个可靠的协议;如果一个协议采用“尽力而为”的传输方式,那么是不可靠的。例如,TCPTCPTCP对传输的报文段提供确认,因此是可靠的传输协议;而UDPUDPUDP不提供确认,因此是不可靠的传输协议。

例题 若用户程序使用UDPUDPUDP进行数据传输,则()层协议必须承担可靠性方面的全部工作。

A.A.A.数据链路层

B.B.B.网际层

C.C.C.传输层

D.D.D.应用层

解:DDD。传输层协议需要具有的主要功能包括:创建进程到进程的通信;提供流量控制机制。UDPUDPUDP在一个低的水平上完成以上功能,使用端口号完成进程到进程的通信,但在传送数据时没有流量控制机制,也没有确认,而且只提供有限的差错控制。因此UDPUDPUDP是一个无连接、不可靠的传输层协议。如果用户应用程序使用UDPUDPUDP进行数据传输,那么必须在传输层的上层即应用层提供可靠性方面的全部工作。

UDP协议

UDP协议概念

例题 下列网络应用中,()不适合使用UDPUDPUDP协议。

A.A.A.客户机/服务器领域

B.B.B.远程调用

C.C.C.实时多媒体应用

D.D.D.远程登录

解:DDDUDPUDPUDP的特点是开销小,时间性能好且易于实现。在客户/服务器中,它们之间的请求都很短,使用UDPUDPUDP不仅编码简单,而且只需要很少的消息;远程调用使用UDPUDPUDP的理由和客户/服务器模型一样;对于实时多媒体应用,需要保证数据及时传送,而比例不大的错误是可以容忍的,所以使用UDPUDPUDP也是合适的,而且使用UDPUDPUDP协议可以实现多播,给多个客户端服务﹔而远程登录,需要密码和账户,必须保证安全性,需要依靠一个客户端到服务器的可靠连接,使用UDPUDPUDP是不合适的。

UDP帧格式

例题 一个UDPUDPUDP首部的信息(十六进制表示)为0xF7 21 00 45 00 2C E8 270xF7\,21\,00\,45\,00\,2C\,E8\,270xF7210045002CE827

1)源端口、目的端口、数据报总长度、数据部分长度分别是什么?

2)该UDPUDPUDP数据报是从客户发送给服务器还是从服务器发送给客户?使用该UDPUDPUDP服务的程序使用的是哪个应用层协议?

解:

1)第111222个字节为源端口,即F7 21F7\,21F721,转换成十进制数为632656326563265。第333444个字节为目的端
口,即00 4500\,450045,转换成十进制数为696969。第555666个字节为UDPUDPUDP长度(包含首部和数据部分),即00 2C00\,2C002C,转换成十进制数为444444,数据报总长度为44B44B44B,数据部分长度为44−8=36B44-8=36B448=36B

2)由1)可知,该UDPUDPUDP数据报的源端口号为632656326563265,目的端口号为696969,前一个为客户端使
用的端口号,后一个为熟知的TFTPTFTPTFTP协议的端口,可知该数据报是客户发给服务器的。

TCP协议

考的基本上都是连接管理与拥塞控制。

TCP协议概念

例题 为保证数据传输的可靠性,TCPTCPTCP采用了对()确认的机制。

A.A.A.报文段

B.B.B.分组

C.C.C.字节

D.D.D.比特

解:AAATCPTCPTCP是面向字节的。对每个字节进行编号,但并不是接收到每个字节都要发回确认,而是在发送一个报文段的字节后才发回一个确认,所以TCPTCPTCP采用的是对报文段的确认机制。

例题 一个TCPTCPTCP连接使用256kb/s256kb/s256kb/s的链路,其端到端时延为128ms128ms128ms。经测试发现吞吐率只有128kb/s128kb/s128kb/s。问窗口是多少?忽略PDUPDUPDU封装的协议开销及接收方应答分组的发送时间(假定应答分组长度很小)。

解:来回路程的时延128ms×2=256ms128ms\times2=256ms128ms×2=256ms。设窗口值为XXX,单位为字节。

使用256kb/s256kb/s256kb/s的链路,测到的平均吞吐率就等于发送速率的一半,即128kb/s128kb/s128kb/s,且应答分组忽略,则可以认为其一般的时间来发送,另一半的时间等待应答而不进行数据传输。

一般默认一次最大发送量等于窗口值,即一次性发送XBXBXB的数据。从而单位时间吞吐量/吞吐率=单位时间:

8×X÷(128×2×1000)=256×0.0018\times X\div(128\times2\times1000)= 256\times0.0018×X÷(128×2×1000)=256×0.001

x=256×1000×256×0.001/8=256×32=8192x=256\times1000\times256\times0.001/8= 256\times32=8192x=256×1000×256×0.001/8=256×32=8192

所以,窗口值为8192B8192B8192B

TCP协议帧格式

例题 假定TCPTCPTCP报文段载荷是1500B1500B1500B,最大分组存活时间是120s120s120s,那么要使得TCPTCPTCP报文段的序列号不会循环回来而重叠,线路允许的最快速度是多大?(不考虑帧长限制)

解:目标在120s120s120s内最多发送232B2^{32}B232BTCPTCPTCP报文数据(序列号为323232位),即35791394B/s35791394B/s35791394B/s的载荷。TCPTCPTCP报文段载荷是1500B1500B1500B,因此可以发送35791294÷1500=2386135791294\div1500=2386135791294÷1500=23861个报文段。TCPTCPTCP开销是20B20B20BIPIPIP开销是20B20B20B,以太网开销是26B26B26B18B18B18B的首部和尾部,7B7B7B的前同步码,1B1B1B的帧开始定界符)。这就意味着对于1500B1500B1500B的载荷,必须发送1566B1566B1566B1566×8×23861=299Mb/s1566\times8\times23861=299Mb/s1566×8×23861=299Mb/s,因此允许的最快线路速率是299Mb/s299Mb/s299Mb/s。比这一速度更快时,就会冒在同一时间内不同的TCPTCPTCP报文段具有相同序号的风险。

连接管理

连接概念

例题 如果主机111的进程以端口xxx和主机222的端口yyy建立了一条TCPTCPTCP连接,这时如果希望再在这两个端口间建立一个TCPTCPTCP连接,那么会()。

A.A.A.建立失败,不影响先建立连接的传输

B.B.B.建立成功,且两个连接都可以正常传输

C.C.C.建立成功,先建立的连接被断开

D.D.D.建立失败,两个连接都被断开

解:AAA。一条连接使用它们的套接字来表示,因此(1,x)−(2,y)(1,x)-(2,y)(1,x)(2,y)是在两个端口之间唯一可能的连接。而后建立的连接会被阻止,所以还有可能接收到数据。

数据传输

例题 AAABBB之间建立了TCPTCPTCP连接,AAABBB发送了一个报文段,其中序号字段seq=200seq=200seq=200,确认号字段ack=201ack=201ack=201,数据部分有222个字节,那么在BBB对该报文的确认报文段中()。

A.seq=202,ack=200A.seq=202,ack=200A.seq=202,ack=200

B.seq=201,ack=201B.seq=201,ack=201B.seq=201,ack=201

C.seq=201,ack=202C.seq=201,ack=202C.seq=201,ack=202

D.seq=202,ack=201D.seq=202,ack=201D.seq=202,ack=201

解:CCC。在AAA发向BBB的报文中,seq=200seq=200seq=200表示AAA发送给BBB的数据从200200200开始,一共2B2B2B,从而AAABBB的数据序号从200200200202202202ack=201ack=201ack=201表示AAABBB的消息已经确认了200200200之前的数据,希望BBBAAA发送201201201号开始的数据。从而BBBAAA发送的数据应该从201201201开始,即seq=201seq=201seq=201,且BBBAAA202202202数据已经确认,所以ack=202ack=202ack=202

流量控制

发送窗口含义

例题 在采用TCPTCPTCP连接的数据传输阶段,如果发送端的发送窗口值由100010001000变为200020002000,那么发送端在收到一个确认之前可以发送()。

A.2000A.2000A.2000TCPTCPTCP报文段

B.2000BB.2000BB.2000B

C.1000BC.1000BC.1000B

D.1000D.1000D.1000TCPTCPTCP报文段

解:BBBTCPTCPTCP使用滑动窗口机制来进行流量控制。在 ACKACKACK应答信息中,TCPTCPTCP在接收端用ACKACKACK加上接收方允许接收数据范围的最大值回送给发送方,发送方把这个最大值当作发送窗口值,表明发送端在未收到确认之前可以发送的最大字节数,即2000B2000B2000B

部分确认

在只收到部分报文的确认时,若接收窗口更改,要考虑到发送过但是没有确认的报文长度。

例题 主机甲和主机乙之间已建立一个TCPTCPTCP连接,TCPTCPTCP最大段长为1000B1000B1000B。若主机甲的当前拥塞窗口为4000B4000B4000B,在主机甲向主机乙连续发送两个最大段后,成功收到主机乙发送的第一个段的确认段,确认段中通告的接收窗口大小为2000B2000B2000B,则此时主机甲还可以向主机乙发送的最大字节数是()。

A.1000A.1000A.1000

B.2000B.2000B.2000

C.3000C.3000C.3000

D.4000D.4000D.4000

解:AAA。发送方的发送窗口的上限值取接收方窗口和拥塞窗口这两个值中的较小一个,于是此时发送方的发送窗口为min4000,2000=2000Bmin{4000,2000}= 2000Bmin4000,2000=2000B,由于发送方还未收到第二个最大段的确认,所以此时主机甲还可以向主机乙发送的最大字节数为2000−1000=1000B2000-1000= 1000B20001000=1000B

跳跃确认

TCPTCPTCP首部的序号字段是指本报文段数据部分的第一个字节的序号,而确认号是期待收到对方下一个报文段的第一个字节的序号。

当收到一系列确认,中间有中断的,则确认号是没有中断的最后一个序号。

例题 主机甲与主机乙之间已建立一个TCPTCPTCP连接,主机甲向主机乙发送了三个连续的TCPTCPTCP段,分别包含300B300B300B400B400B400B500B500B500B的有效载荷,第三个段的序号为900900900。若主机乙仅正确接收到第一个段和第三个段,则主机乙发送给主机甲的确认序号是()。

A.300A.300A.300

B.500B.500B.500

c.1200c.1200c.1200

D.1400D.1400D.1400

解:BBB。第三个段的序号为900900900,则第二个段的序号为900−400=500900-400=500900400=500,现在主机乙期待收到第二个段,因此发给甲的确认号是500500500

报文段寿命

例题 网络允许的最大报文段的长度为128B128B128B,序号用888位表示,报文段在网络中的寿命为30s30s30s。求每条TCPTCPTCP连接所能达到的最高数据率。

解:具有相同编号的报文段不应同时在网络中传输,必须保证当序列号循环回来重复使用时,具有相同序列号的报文段已从网络中消失,类似于GBNGBNGBN原理2n−12^n-12n1。现在序号用888位表示,报文段的寿命为30s30s30s,那么在30s30s30s的时间内发送方发送的报文段的数目不能多于28−1=2552^8-1=255281=255个,255×128×8/30=8704b/s255\times128\times8/30=8704b/s255×128×8/30=8704b/s

所以,每条TCPTCPTCP连接所能达到的最高数据率为8704b/s8704b/s8704b/s

拥塞控制

拥塞窗口

例题TCPTCPTCP的拥塞窗口的慢开始门限值初始为888(单位为报文段),当拥塞窗口上升到121212时发生超时,TCPTCPTCP开始慢启动和拥塞避免,那么第131313次传输时拥塞窗口的大小为()。

A.4A.4A.4

B.6B.6B.6

C.7C.7C.7

D.8D.8D.8

解:CCC。拥塞窗口分别为:

传输次数 1 2 3 4 5 6 7 8 9 10 11 12 13
门限值 8 8 8 8 8 8 8 8 6 6 6 6 6
拥塞窗口 1 2 4 8 9 10 11 12 1 2 4 6 7

例题 若主机甲与主机乙已建立一条TCPTCPTCP连接,最大段长MSSMSSMSS1KB1KB1KB,往返时间RTTRTTRTT2ms2ms2ms,则在不出现拥塞的前提下,拥塞窗口从8KB8KB8KB增长到32KB32KB32KB所需的最长时间是()。

A.4msA.4msA.4ms

B.8msB.8msB.8ms

C.24msC.24msC.24ms

D.48msD.48msD.48ms

解:DDD。请注意这里没有多余的条件,也不告诉门限,只要求增长的最长时间,所以按拥塞算法来看,线性增长的速度最慢,从而增长的最长时间最长,即一秒增加一个MSSMSSMSS的方式下最长,所以一共需要(32−8)×2=48ms(32-8)\times2=48ms(328)×2=48ms

发送窗口

发送窗口的上限值=min⁡\minmin{接收窗口,拥塞窗口}。

例题 主机甲和乙建立了TCPTCPTCP连接,甲始终以MSS=1KBMSS=1KBMSS=1KB大小的段发送数据,并一直有数据发送;乙每收到一个数据段都会发出一个接收窗口为10KB10KB10KB的确认段。若甲在ttt时刻发生超时的时候拥塞窗口为8KB8KB8KB,则从ttt时刻起,不再发生超时的情况下,经过101010RTTRTTRTT后,甲的发送窗口是()。

A.10KBA.10KBA.10KB

B.12KBB.12KBB.12KB

C.14KBC.14KBC.14KB

D.15KBD.15KBD.15KB

解:AAA。当ttt时刻发生超时时,把ssthreshssthreshssthresh设为888的一半,即444,把拥塞窗口重新设为1KB1KB1KB。然后经历101010RTTRTTRTT后,拥塞窗口的大小依次为222444555666777888999101010111111121212,而发送窗口取当时的拥塞窗口和接收窗口的最小值,接收窗口始终为10KB10KB10KB,所以此时的发送窗口为10KB10KB10KB,选AAA。实际上该题接收窗口一直为10KB10KB10KB,可知不管何时,发送窗口一定小于等于10KB10KB10KB,选项中只有AAA选项满足条件,可直接得出选AAA

例题 主机甲和主机乙新建一个TCPTCPTCP连接,甲的拥塞控制初始阈值为32KB32KB32KB,甲向乙始终以MSS=1KBMSS=1KBMSS=1KB大小的段发送数据,并一直有数据发送;乙为该连接分配16KB16KB16KB接收缓存,并对每个数据段进行确认,忽略段传输延迟。若乙收到的数据全部存入缓存,不被取走,则甲从连接建立成功时刻起,未出现发送超时的情况下,经过444RTTRTTRTT后,甲的发送窗口是()。

A.1KBA.1KBA.1KB

B.8KBB.8KBB.8KB

C.16KBC.16KBC.16KB

D.32KBD.32KBD.32KB

解:AAA444RTTRTTRTT后,乙收到的数据全部存入缓存,不被取走,接收窗口只剩下16−1−2−4−8=1KB16-1-2-4-8=1KB161248=1KB缓存,使得甲的发送窗口为1KB1KB1KB

例题 在一个TCPTCPTCP连接中,信道带宽为1Gb/s1Gb/s1Gb/s,发送窗口固定为65535B65535B65535B,端到端时延为20ms20ms20ms。可以取得的最大吞吐率是多少?线路效率是多少?(发送时延忽略不计,TCPTCPTCP及其下层协议首部长度忽略不计,最大吞吐率=一个RTTRTTRTT传输的有效数据/一个RTTRTTRTT的时间。)

解:由于收到接收方的确认至少需要一个RTTRTTRTT,因此在一个RTTRTTRTT内,发送的数据量不能超过发送窗口大小,所以吞吐率=发送窗口大小/RTTRTTRTT

题目中告诉的是端到端时延,RTTRTTRTT =2x端到端时延,因此RTT=2×20=40msRTT=2\times20=40msRTT=2×20=40ms,所以吞吐率=65535×8/0.04=13.107Mb/s=65535\times8/0.04=13.107Mb/s=65535×8/0.04=13.107Mb/s

线路效率=吞吐率/信道带宽。本题中,线路效率(13.107Mb/s)/(1000Mb/s)=1.31%(13.107Mb/s)/(1000Mb/s)=1.31\%(13.107Mb/s)/(1000Mb/s)=1.31%

本题在计算时要特别注意单位(是bbb还是BBB),要区分Gb/sGb/sGb/sGB/sGB/sGB/s

RTT

需要注意的是RTTRTTRTT比传输次数要减一。

例题 假设在没有发生拥塞的情况下,在一条往返时延RTTRTTRTT10ms10ms10ms的线路上采用慢开始控制策略。如果接收窗口的大小为24KB24KB24KB,最大报文段MSSMSSMSS2KB2KB2KB,那么发送方发送出第一个完全窗口需要()时间。

A.30msA.30msA.30ms

B.40msB.40msB.40ms

C.50msC.50msC.50ms

D.60msD.60msD.60ms

解:BBB。发送窗口初始为2KB2KB2KB,此时RTT=0RTT=0RTT=0,然后依次为444888161616,第四个RTTRTTRTT到达24KB24KB24KB,所以一共40ms40ms40ms

RTT估计

RTTRTTRTT计算公式:新估计RTTRTTRTT=(1−α1-\alpha1α)×\times×(旧RTTRTTRTT)+α×\alpha\timesα×RTTRTTRTT

例题 已知当前TCPTCPTCP连接的RTTRTTRTT值为35ms35ms35ms,连续收到333个确认报文段,它们比相应的数据报文段的发送时间滞后了27ms27ms27ms30ms30ms30ms21ms21ms21ms。设α=0.2\alpha=0.2α=0.2。计算第三个确认报文段到达后的新的RTTRTTRTT估计值。

解:RTT1=(1−0.2)×35+0.2×27=33.4msRTT_1=(1-0.2)\times35+0.2\times27=33.4msRTT1=(10.2)×35+0.2×27=33.4msRTT2=(1−0.2)×33.4+0.2×30≈32.7msRTT_2=(1-0.2)\times33.4+0.2\times30\approx32.7msRTT2=(10.2)×33.4+0.2×3032.7msRTT3=(1−0.2)×32.7+0.2×21≈30.4msRTT_3=(1-0.2)\times32.7+0.2\times21\approx30.4msRTT3=(10.2)×32.70.2×2130.4ms

TCP协议与IP协议

主机HHH通过快速以太网连接InternetInternetInternetIPIPIP地址为192.168.0.8192.168.0.8192.168.0.8,服务器SSSIPIPIP地址为211.68.71.80211.68.71.80211.68.71.80HHHSSS使用TCPTCPTCP通信时,在HHH上捕获的其中555IPIPIP分组如表一所示。

  1 2 3 4 5
分组1 45 00 00 30 01 9b 40 00 80 06 1d e8 c0 a8 00 08 d3 44 47 50
  0b d9 13 88 84 6b 41 c5 00 00 00 00 70 02 43 80 5d b0 00 00
分组2 43 00 00 30 00 00 40 00 31 06 6e 83 d3 44 47 50 c0 a8 00 08
  13 88 0b d9 e0 59 9f ef 84 6b 41 c6 70 12 16 d0 37 el 00 00
分组3 45 00 00 28 01 9c 40 00 80 06 1d ef c0 a8 00 08 d3 44 47 50
  0b d9 13 88 84 6b 41 c6 e0 59 9f f0 50 f0 43 80 2b 32 00 00
分组4 45 00 00 38 01 9d 40 00 80 06 1d de c0 a8 00 08 d3 44 47 50
  0b d9 13 88 84 6b 41 c6 e0 59 9f f0 50 18 43 80 e6 55 00 00
分组5 45 00 00 28 68 11 40 00 31 06 06 7a d3 44 47 50 c0 a8 00 08
  13 88 0b d9 e0 59 9f f0 84 6b 41 d6 50 10 16 d0 57 d2 00 00

1)表一中的IPIPIP分组中,哪几个是由HHH发送的?哪几个完成了TCPTCPTCP连接建立过程?哪几个在通过快速以太网传输时进行了填充?

2)根据表一中的IPIPIP分组,分析SSS已经收到的应用层数据字节数是多少。

3)若表一中的某个IPIPIP分组在SSS发出时的前40B40B40B如表二所示,则该IPIPIP分组到达HHH时经过了多少个路由器?

1 2 3 4 5
45 00 00 28 68 11 40 00 40 06 ec ad d3 44 47 50 ca 76 01 06
13 88 a1 08 e0 59 9f f0 84 6b 41 d6 50 10 16 d0 b7 d6 00 00

解:

1)首先如何判断由HHH发出?已知IPIPIP地址为192.168.0.8192.168.0.8192.168.0.8,所以找IPIPIP地址后两位为080808。因为取的是前40B40B40B,所以前20B20B20BIPIPIP数据报内容,后20B20B20BTCPTCPTCP报文内容,根据IPIPIP数据报格式,每组的第一行第四列就是源IPIPIP地址,第五列就是目的IPIPIP地址,所以找到所有第一行第四列最后两位是080808的数据,从而得到111333444数据报都是HHH发出的。

如何判断哪个完成了TCPTCPTCP连接?就是考察TCPTCPTCP三次握手,找到对应的标志位,是每个分组的第二行的第四列的四个分段数据中的第二段。即第一个分组的数据为02=0000 001002=0000\,001002=00000010,即SYN=1SYN=1SYN=1ACK=0ACK=0ACK=0;第二个分组的数据为12=0001 001012=0001\,001012=00010010,即SYN=1SYN=1SYN=1ACK=1ACK=1ACK=1,第三个分组的数据为f0=1111 0000f0=1111\,0000f0=11110000,即URG=1URG=1URG=1ACK=1ACK=1ACK=1SYN=0SYN=0SYN=0,此时同步已经完成了,从而SYN=0SYN=0SYN=0。所以111222333完成了连接建立。

最后要考虑什么样的数据需要进行以太网填充?因为以太网的最短帧长是46B46B46B,不满足长度的就需要以太网填充。需要找到总长度字段,其中总长度字段在IPIPIP数据报中,即每组数据第一行第一列的最后四位。分组一为30H=48D30H=48D30H=48D,分组二为30H=48D30H=48D30H=48D,分组三为28H=40D28H=40D28H=40D,分组四为38H=56D38H=56D38H=56D,分组五位28H=40D28H=40D28H=40D,其中分组三和分组五要小于46D46D46D的长度,所以需要填充。

2)如何找到收到应用层的数据?从TCPTCPTCP数据报中能找到,因为IPIPIP数据报中都是首部,不含有数据信息。进一步,如何找到数据呢?从确认号和序号中找到。序号在每组第二行第二列,确认号在每组第二行第三列,分组三开始建立连接,而分组四的确认号和分组号一样,所以直接考虑分组五的确认号,为84 6b 41 d684\,6b\,41\,d6846b41d6,而第三四组的序号为84 6b 41 c684\,6b\,41\,c6846b41c6,代表d6d6d6c6c6c6的数据已经被确认了,从而一共有d6H−c6H=16Bd6H-c6H=16Bd6Hc6H=16B的数据。

3)如何找到路由多少路由器?通过IPIPIP数据报中的生存时间,每经过一个路由器TTLTTLTTL就减一。首先根据表二的数据的IPIPIP表示为第一行第二列的前四位为68 1168\,116811,可以认定其是表一的分组五,生存时间在第一行的第三列的前两位数据,表一的生存时间为31H=49D31H=49D31H=49D,而表二的生成时间为40H=64D40H=64D40H=64D,所以TTL=64−49=15TTL=64-49=15TTL=6449=15。从而经过了151515个路由器。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐