第五章 传输层
将这两次传输的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—22主机A向主机B发送一个很长的文件,其长度为L字节。假定TCP使用的MSS有1460字节。(1)在TCP的序号不重复使用的条件下,L的最大值是多少?(2)假定使用上面计算出文件长度,而运输层、网络层和数据链路层所使用的首部开销共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主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。试问:(1)第一个报文段携带了多少个字节的数据?(2)主机B收到第一个报文段后发回的确认中的确认号应当是多少?(3)如果主机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,那么,每发送一次都得停下来期待 再次得到下一窗口的确认,以得到新的发送许可.这样,发射时间等于停止等待应答的时间, 结果,测到的平均吞吐率就等于发送速率的一半,即
20
第五章 传输层
8X÷(256×1000)=256×0.001 X=8192
所以,窗口值为8192.
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字节,而传输信道不产生差错,带宽也不受限制。若报文段的平均往返时延为20ms,问所能得到的最大吞吐量是多少?
答:在发送时延可忽略的情况下,最大数据率=最大窗口*8/平均往返时间=26.2Mb/s。 5—31通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少? 答:L=65536×8+40×8=524600 C=109b/s
L/C=0.0005246s
Td=10×10-3s 0.02104864
Throughput=L/(L/C+2×Td)=524600/0.0205246=25.5Mb/s Efficiency=(L/C)//(L/C+2×D)=0.0255
最大吞吐量为25.5Mb/s。信道利用率为25.5/1000=2.55%
5—32答:Karn算法:在计算平均往返时延RTT时,只要报文段重传了,就不采用其往返时延样本。
设新往返时延样本Ti
RTT(1)=a*RTT(i-1)+(1-a)*T(i); RTT^(i)=a* RTT(i-1)+(1-a)*T(i)/2; RTT(1)=a*0+(1-a)*T(1)= (1-a)*T(1); RTT^(1)=a*0+(1-a)*T(1)/2= RTT(1)/2 RTT(2)= a*RTT(1)+(1-a)*T(2); RTT^(2)= a*RTT(1)+(1-a)*T(2)/2;
= a*RTT(1)/2+(1-a)*T(2)/2= RTT(2)/2
RTO=beta*RTT,在统计意义上,重传时间最后会减小到使用karn算法的1/2.
5—33答:(1)据RFC2988建议,RTO=RTTs+4*RTTd。其中RTTd是RTTs的偏差加权均值。
初次测量时,RTTd(1)= RTT(1)/2;
后续测量中,RTTd(i)=(1-Beta)* RTTd(i-1)+Beta*{ RTTs- RTT(i)}; Beta=1/4
21
第五章 传输层
依题意,RTT(1)样本值为1.5秒,则
RTTs(1)=RTT(1)=1.5s RTTd(1)=RTT(1)/2=0.75s RTO(1)=RTTs(1)+4RTTd(1)=1.5+4*0.75=4.5(s)
(2)RTT(2)=2.5 RTTs(1)=1.5s RTTd(1)=0.75s RTTd(2)=(1-Beta)* RTTd(1)+Beta*{ RTTs(1)- RT (2)}=0.75*3/4+{1.5-2.5}/4=13/16
RTO(2)=RTTs(1)+4RTTd(2)=1.5+4*13/16=4.75s 5—34答:a=0.1, RTTO=30 RTT1=RTTO*(1-a) +26*a=29.6 RTT2=RTT1*a+32(1-a)=29.84 RTT3=RTT2*a+24(1-a)=29.256
三次算出加权平均往返时间分别为29.6,29.84和29.256ms。 可以看出,RTT的样本值变化多达20%时,加权平均往返
5—35答:5段链路的传播时延=250*2+(1500/150000)*3*1000=530ms 5段链路的发送时延=960/(48*1000)*5*1000=100ms 所以5段链路单程端到端时延=530+100=630ms 5—3答:慢开始:在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口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答:拥塞窗口大小分别为:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9. 5—39答:(1)拥塞窗口与传输轮次的关系曲线如图所示(课本后答案): (2)慢开始时间间隔:【1,6】和【23,26】 (3)拥塞避免时间间隔:【6,16】和【17,22】
(4)在第16轮次之后发送方通过收到三个重复的确认检测到丢失的报文段。在第22轮次之后发送方是通过超时检测到丢失的报文段。
(5)在第1轮次发送时,门限ssthresh被设置为32
在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21. 在第24轮次发送时,门限ssthresh是第18轮次发送时设置的21 (6)第70报文段在第7轮次发送出。
(7)拥塞窗口cwnd和门限ssthresh应设置为8的一半,即4.
5—40答:当Ip数据报在传输过程中需要分片,但其中的一个数据报未能及时到达终点,而终点组装IP数据报已超时,因而只能丢失该数据报;IP数据报已经到达终点,但终点的缓存没有足够的空间存放此数据报;数据报在转发过程中经过一个局域网的网桥,但网桥在转发该数据报的帧没有足够的差错空间而只好丢弃。 5—42答:如果B不再发送数据了,是可以把两个报文段合并成为一个,即只发送FIN+ACK报文段。但如果B还有数据报要发送,而且要发送一段时间,那就不行,因为A迟迟收不到确认,就会以为刚才发送的FIN报文段丢失了,就超时重传这个FIN报文段,浪费网络
22
第五章 传输层
资源。
5—43答:当A和B都作为客户,即同时主动打开TCP连接。这时的每一方的状态变迁都是:CLOSED----?SYN-SENT---?SYN-RCVD--?ESTABLISHED
5—44答:设A,B建立了运输连接。协议应考虑一下实际可能性: A或B故障,应设计超时机制,使对方退出,不至于死锁; A主动退出,B被动退出 B主动退出,A被动退出
5—45答:当主机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解:发送窗口较小的情况,发送一组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]
23
第六章 应用层
第六章 应用层
6-01 答:(1)域名的结构由标号序列组成,各标号之间用点隔开: ? . 三级域名 . 二级域名 . 顶级域名
各标号分别代表不同级别的域名。
(2)电话号码分为国家号结构分为(中国 +86)、区号、本机号。 6-02 答:域名系统的主要功能:将域名解析为主机能识别的IP地址。 因特网上的域名服务器系统也是按照域名的层次来安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。共有三种不同类型的域名服务器。即本地域名服务器、根域名服务器、授权域名服务器。当一个本地域名服务器不能立即回答某个主机的查询时,该本地域名服务器就以DNS客户的身份向某一个根域名服务器查询。若根域名服务器有被查询主机的信息,就发送DNS回答报文给本地域名服务器,然后本地域名服务器再回答发起查询的主机。但当根域名服务器没有被查询的主机的信息时,它一定知道某个保存有被查询的主机名字映射的授权域名服务器的IP地址。通常根域名服务器用来管辖顶级域。根域名服务器并不直接对顶级域下面所属的所有的域名进行转换,但它一定能够找到下面的所有二级域名的域名服务器。每一个主机都必须在授权域名服务器处注册登记。通常,一个主机的授权域名服务器就是它的主机ISP的一个域名服务器。授权域名服务器总是能够将其管辖的主机名转换为该主机的IP地址。
因特网允许各个单位根据本单位的具体情况将本域名划分为若干个域名服务器管辖区。一般就在各管辖区中设置相应的授权域名服务器。
6-03 答:(1)把不方便记忆的IP地址转换为方便记忆的域名地址。(2)作用:可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。 6-05 答:(1)FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。
FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作步骤:1、打开熟知端口(端口号为 21),使客户进程能够连接上。 2、等待客户进程发出连接请求。
3、启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
4、回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
FTP使用两个TCP连接。
控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。
实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。
数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。 6-06 答:(1)文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
TFTP 是一个很小且易于实现的文件传送协议。
TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。
TFTP 只支持文件传输而不支持交互。
TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
24