问答题 一个UDP首部的信息(十六进制表示)为0xF7 21 00 45 00 2C E8 27。UDP数据报的格式如下图所示。试问:
问答题 源端口、目的端口、数据报总长度、数据部分长度。
【正确答案】第1、2字节为源端口,即F7 21,转换为十进制为63265。第3、4字节为目的端口,即00 45,转换为十进制为69。第5、6字节为UDP长度(包含首部和数据部分),即00 2C,转换为十进制为44,数据报总长度为44字节,数据部分长度为44-8=36字节。
【答案解析】
问答题 该UDP数据报是从客户发送给服务器还是服务器发送给客户?使用该UDP服务的程序使用的是哪个应用层协议?
【正确答案】由上题可知,该UDP数据报的源端口号为63265,目的端口号为69,前一个为客户端使用的端口号,后一个为熟知的TFTP协议的端口,可知该数据报是客户发给服务器的。
【答案解析】
问答题 一个UDP用户数据报的数据字段为8192B,要使用以太网来传送。假定IP数据报无选项。试问应当划分为几个IP数据报片?说明每一个IP数据报片的数据字段长度和片段偏移字段的值。
【正确答案】以太网帧的数据段的最大长度是1500B,UDP用户数据报的头部是8B。假定IP数据报无选项,头部长度都是20B。IP数据报的片段偏移指出一个片段在原IP分组中的相对位置,偏移的单位是8B。UDP用户数据报的数据字段为8192B,加上8B的头部,总长度是8200B。应当划分为6个IP报片。各IP报片的总长度、数据长度和片偏移的值如下表所示。
1 2 3 4 5 6
IP报片长 1500B 1500B 1500B 1500B 1500B 820B
数据长 1480B 1480B 1480B 1480B 1480B 800B
片偏移 0 185 370 555 740 925
【答案解析】
问答题 在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由?
【正确答案】这是因为发送方可能还未重传时,就收到了对更高序号的确认。例如主机A连续发送两个报文段:(SEQ=92,DATA共8B)和(SEQ=100,DETA共20B),均正确到达主机B。B连续发送两个确认:(ACK=100)和(ACK=120),但前一个确认帧在传送时丢失了。例如A在第一个报文段(SEQ=92,DATA共8B)超时之前收到了对第二个报文段的确认(ACK=120),此时A知道,119号和在119号之前的所有字节(包括第一个报文段中的所有字节)均已被B正确接收,因此A不会再重传第一个报文段。
【答案解析】
问答题 如果收到的报文段无差错,只是未按序号,则TCP对此未作明确规定,而是让TCP的实现者自行确定。试讨论两种可能的方法的优劣: 1)将不按序的报文段丢弃。 2)先将不按序的报文段暂存于接收缓存内,待所缺序号的报文段收齐后再一起上交应用层。
【正确答案】第一种方法将不按序的报文段丢弃,会引起被丢弃报文段的重复传送,增加对网络带宽的消耗,但由于用不着将该报文段暂存,可避免对接收方缓冲区的占用。 第二种方法先将不按序的报文段暂存于接收缓存内,待所缺序号的报文段收齐后再一起上交应用层;这样有可能避免发送方对已经被接收方收到的不按序的报文段的重传,减少对网络带宽的消耗,但增加了接收方缓冲区的开销。
【答案解析】
问答题 一个TCP连接要发送3200B的数据。第一个字节的编号为10010。如果前两个报文各携带1000B的数据,最后一个携带剩下的数据,请写出每一个报文段的序号。
【正确答案】TCP为传送的数据流中的每一个字节都编上一个序号。报文段的序号则指的是本报文段所发送的数据的第一个字节的序号。因此第一个报文段的序号为10010,第二个报文段的序号为10010+1000=11010,第三个报文段的序号为11010+1000=12010。
【答案解析】
问答题 设TCP使用的最大窗口尺寸为64KB,TCP报文在网络上的平均往返时间为20ms,问TCP协议所能得到的最大吞吐量是多少?(假设传输信道的带宽是不受限的)
【正确答案】最大吞吐量表明在1个RTT内将窗口中的字节全部发送完毕。在平均往返时间20ms内,发送的最大数据量为最大窗口值,即64×1024B。
64×1024×8÷(20×10-3)≈26.2Mb/S
因此,所能得到的最大吞吐量是26.2Mb/s。
【答案解析】
问答题 已知:当前TCP连接的RTT值为35ms,连续收到3个确认报文段,它们比相应的数据报文段的发送时间滞后了27ms、30ms与21ms。设α=0.2。计算第三个确认报文段到达后的新的RTT估计值。
【正确答案】新的估计RTT=(1-α)×(旧的RTT)+α×(新的RTT样本)
根据以上公式:RTT1=(1-0.2)×35+0.2×27=33.4ms
RTT2=(1-0.2)×33.4+0.2×30≈32.7ms
RTT3=(1-0.2)×32.7+0.2×21≈30.4ms
所以当第三个确认报文到达后,新的RTT估计值是30.4ms。
【答案解析】
问答题 网络允许的最大报文段的长度为128字节,序号用8比特表示,报文段在网络中的寿命为30s。求每一条TCP连接所能达到的最高数据率。
【正确答案】具有相同编号的报文段不应该同时在网络中传输,必须保证当序列号循环回来重复使用的时候,具有相同序列号的报文段已经从网络中消失,类似于GBN原理(2n-1)。现在序号用8比特表示,报文段的寿命为30s,那么在30s的时间内发送方发送的报文段的数目不能多于255个。
255×128×8÷30=8704bps
所以,每一条TCP连接所能达到的最高数据率为8704bps。
【答案解析】
问答题 在一个TCP连接中,信道带宽为1Gb/s,发送窗口固定为65535B,端到端时延为20ms。问可以取得的最大吞吐率是多少?线路效率是多少?(发送时延忽略不计,TCP及其下层协议首部长度忽略不计)
【正确答案】由于收到接收方的确认至少需要一个RTT,故在一个RTT内,发送的数据量不能超过发送窗口大小,所以吞吐率=发送窗口大小/RTT。题目中告诉的是端到端时延,RTT=2×端到端时延,那么RTT=2×20=40ms。所以吞吐率=65535×(8/0.041=13.107 Mb/s。 线路效率=吞吐率/信道带宽,本题中,线路效率(13.107Mb/s)/(1000Mb/s)=1.31%。本题在计算时要特别注意单位(是b还是B),区分Gb/s和GB/s。
【答案解析】