课后习题答案:Chapter1:Reviewquestions:1,4,11,13,15,16,18,19,23,25,261没有不同,在本文书中,“主机”和“终端系统”可以互换使用。终端系统包括PCs,工作站,Web服务器,电子邮件服务器,连接Internet的PDA,WebTV等。41通过电话线拨号调制解调器:住宅2通过电话线的DSL:住宅或小型办公室3光纤电缆:住宅4100Mbps交换以太网:公司5无线LAN:移动电话6蜂窝移动接入(例如WAP):移动电话11电路交换网络可以为一个通话保证特定数量的端到端带宽。大多数现在分组交换网络(包括Internet)可以提供所有端到端带宽保证。13在时间t0发送主机开始传输。在t1=L/R1时,发送主机完成传输并且整个分组到达路由器(没有传播延迟)。因为路由器在时间t1拥有整个分组,所以它在时间t1开始向接收主机传输此分组。在时间t2=t1+L/R2,路由器完成传输并且接收主机接收整个分组(也没有传播延迟)。因此端到端延迟是L/R1+L/R2。15a)可以支持两个用户因为每个用户需要一半的链路带宽。b)因为在传输过程中每个用户需要1Mbps,如果两个或更上用户同时传输,那么最大需要2Mbs。因为共享的链路的可用带宽是2Mbps,所以在链接之前没有排队延迟。然而,如果三个用户同时传输,那么需要的带宽将是3Mbps,它大于共享链路的可用带宽,在这种情况下在链接前存在排队延迟。c)给定用户传输的概率是0.2。d)所有三个用户同时传输的概率是333133pp=(0.2)3=0.008。因为当所有用户都传输时,队列增加,所以在队列增加的分数(它等于所有三个用户同时传输的概率)是0.008。16延迟组件是处理延迟,传输延迟,传播延迟和排队延迟。除了排队延迟是变化的,其它所有延迟都是固定的。1810msec;d/s;no;no19a)500kbpsb)64secondsc)100kbps;320seconds23Internet协议栈中的5层——从顶到底——应用层,传输层,网络层,链路层和物理层。章节1.5.1中概述了各自的主要职责。25路由器处理从第1层到第3层(这不完全准确,因为新型的传感器又是充当防火墙或缓冲组件,并且也处理第4层)。链路层交换机处理第1层到第2层。主机处理所有5层。26a)病毒需要某些人的互动形式来传播。典型的例子是电子邮件病毒b)蠕虫不需要用户复制。在感染的主机中的蠕虫扫描IP地址和端口号,寻找容易的进程进行感染。c)特洛伊木马隐藏在某些有用的软件之中。Problems:2,5,12,18,242a)电路交换网络将适合此描述的应用,因为此应用包含拥有可预测平滑带宽需求的长期会话。因为传输率已知并且不是爆炸性的,所以可以为每个应用会话电路预留带宽而没有非常大的浪费。此外,我们不要关心建立和解除一个电路连接的开销,它们分摊给定义应用会话的较长时间。b)给定一个大量链接能力,网络需要拥塞控制机制。在最坏的情况下(很有可能拥塞),所有应用同时在一个或更多的特定网络链接上同时传输。但是,因为每个链接提供足够的带宽来处理应用数据率的总和,所以不会发生拥塞(非常少的排队)。5a)smdprop/秒.b)RLdtrans/秒.c))//(RLsmdendtoend秒.d)此比特刚离开HostAe)第一个比特在链路中并且没有到达HostBf)第一个个比特已经达到HostB。g)893105.2102810083SRLmkm.12第一个传输的分组的排队延迟是0,第二个传输的分组是L/R,一般地,对于第n个传输的分组来说,排队延迟是(n-1)L/R。因此,对于N个分组来说平均的延迟是:(L/R+2L/R+.......+(N-1)L/R)/N=L/RN(1+2+.....+(N-1))=LN(N-1)/(2RN)=(N-1)L/(2R)注意:1+2+.......+N=N(N+1)/218a)40,000bitsb)40,000bitsc)链路的带宽延迟积是可以在链路中的最大比特数。d)1比特是250米长,它比一个足球场长1米。e)s/R24a)从源主机到第一个分组交换机的时间=sec5sec105.1105.766。使用“存储交换”分组交换,从源主机到目的主机移动该数据包的总共时间=sec153sec5hopsb)从源主机到第一个分组交换机移动第一个分组的时间sec1sec105.1105.163m,第一台交换机接收的第二个分组的时间=第一个分组到达第二台交换机的时间=sec2sec12mm,第2ms时,第二个分组能被第一台交换机全部收到。c)第一个分组到达目的主机的时间=sec33sec1mhopsm,在此之后,每1ms就收到一个分组,因此收到最后一个分组(第5000个分组)的时间=sec002.5sec1*4999sec3mm。可以发现使用报文分段要小的多(差不多1/3)d)缺点:1)分组必须放在目的的序列中2)报文分段产生很多较小的数据包。因为不管分组的大小如何,头的大小通常是相同的。使用分组分段,头比特的总数更多。Chapter2:Reviewquestions:1,3,5,6,11,13,15,22,27,281Web:HTTP;文件传输:FTP;远程登录:Telnet;网络新闻:NNTP;e-mail:SMTP。3初始通信的进程是客户端;等待连接的进程是服务器。5目标主机的IP地址和目标套接字的端口号。6应该使用UDP。通过UDP,传输可以在一个往返时间(RTT)中完成——客户端向UDPsocket发送传输请求,并且服务器向客户端的UDPsocket返回应答。通过TCP,最少需要两个RTT——一个是构建TCP连接,另一个是客户端发送请求,服务器返回应答。11与这些协议相关的应用要求所有应用数据要按照正确的顺序接收而没有间隔。TCP提供这些服务而UDP则没有。13Web缓存器可以产生较接近用户或者用户主机连接的相同LAN的希望内容。Web缓存器可以降低所有对象的延迟,即使没有储存的对象,因为缓存降低了链路流量。15FTP使用两个平行的TCP连接,一个是发送控制信息(例如传输文件的请求)的连接和实际传输文件的连接。因为控制信息不在文件发送的连接上发送,所以FTP发送“带外”控制信息。22在P2P文件共享系统中的覆盖网络包括参与文件系统中的节点和节点之间的逻辑链接。如A和B之间存在一个半永久TCP连接,那么从节点A到节点B存在一个逻辑链接(在图理论中是一条边)。覆盖网络不包括路由器。通过Gnutella,当一个节点想加入Gnutella网络时,它首先发现(带外)已经在网络中的一个或更多节点的IP地址。然后向这些节点发送加入消息。当节点收到确认时,它成为Gnutella网络中的一个成员。节点通过周期的刷新消息维持它们的逻辑链接。27使用UDP服务器,没有欢迎套接字,并且来自不同客户端的所有数据通一个套接字进入服务器。使用TCP服务器,存在一个欢迎套接字,并且每次客户端初始一个到服务器的连接,就创建一个新的套接字。因此,为了支持n个同时连接,服务将需要n+1个套接字。28对于TCP应用程序来说,只要客户端执行了,那么它就尝试与服务器初始化一个TCP连接。如果TCP服务器没有运行,那么客户端将建立此连接失败。对于UDP应用程序来说,客户端不会在执行时立即初始化连接(或者尝试与UDP服务器通信)。Problems:9,249a)速率为R链路上传输对象大小为L的时间为L/R。平均时间是R分隔的对象的平均时间:=(900,000bits)/(15,000,000bits/sec)=0.06sec在链路上的流量强度是(15requests/sec)(0.06msec/request)=0.9。因此,平均访问延迟是(0.06sec)/(1-0.9)=0.6seconds。因此总共的平均响应时间是0.6sec+2sec=2.6secb)访问链路的流量强度降低了40%,这是因为请求的40%在这个机构的网络中是满足的。因此平均访问延迟是(0.06sec)/[1–(0.6)(0.9)]=0.13seconds。响应时间基本是0如果请求满足缓冲区(这发生的概率是0.4);对于缓冲未命中的情况平均响应时间是0.13sec+2sec=2.13sec(这发生的概率是60%)。因此平均响应时间是(0.4)(0sec)+(0.6)(2.13sec)=1.278seconds24a)如果首先运行TCP客户端,那么客户端尝试与不存在的服务器进程建立TCP连接。TCP连接将建立失败。b)UDP客户端没有与服务器建立连接。因此,所有事情都运行正常如果你首先运行UDP客户端,然后运行UDP服务器,再在键盘中输入某些输入。c)如果你使用不同的端口号,那么客户端将尝试与错误的进程或不存在的进程建立一个TCP连接。将发生错误。Chapter3:Reviewquestions:3,4,6,8,11,14,15,17,183源端口号y,目的端口号x。4应用程序开发可能不想使用TCP的拥塞控制,拥塞控制可能扼杀在拥塞时的发送速率。通常IP电话和IP视频会议应用程序的设计者会选择让他们的应用程序运行在UDP上,因为他们想避免TCP的拥塞控制。同样某些应用程序不需要TCP提供的可靠数据传输。6能。应用程序开发者可以把可靠数据传输放在应用层协议中。但是,这将需要大量的工作和测试。8对于每个持久连接来说,Web服务器将分别创建“连接套接字”。每个连接套接字通过一个四元组标识(源IP地址,源端口地址,目的IP地址,目的端口地址)。当主机C接收IP数据包时,它检测报文/分组中的这四个域以确定TCP报文的有效负载应该传输到哪个套接字。因此,这需要A和B经过不同的套接字。这些套接字的标识符对于目的端口号是80,但是,这些标识符拥有不同的源IP地址值。与UDP不同,当传输层传递一个TCP分组负载到应用程序进程时,它不指定源IP地址,因为这意味着通过套接字标识符指定。11在协议rdt3.0中定时器仍然需要。如果知道往返时间,那么唯一的优点是,发送者明确知道包或者包的ACK(或NACK)已经丢失,相对于真实场景,这里的在时钟到期后,ACK(或NACK)可能仍然在向发生者的发送过程中。但是,为了检测每个包的丢失,在发生者的常量时间段的计时器仍然必要。14a)falseb)falsec)trued)falsee)truef)falseg)false15a)20bytesb)acknumber=9017R/218False,它设置为拥塞窗口的当前值的一半。Problems:3,18,19,20,23,24,333UDP检查和01010101+011100001100010111000101+01001100000100011的补码=11101110为了检测错误,接收方将4个字相加(3个原始字和1个检测字),如果结果包含0,那么接收方就知道分组中存在错误,所有的1bit错误都将被检测出来,但是2个比特的错误有可能被忽略(例如,如果第1个字的最后1个数变为0,并且第二个字的最后1个数变为1)。18a)这里窗口的大小N=3。假定接收器已经接收的包数k-1,并且已经确认它和所有其它处理数据包。如果这些ACK已经被发送者接收那么发送者的窗口是[k,k+N-1]。假定然后,发送者没有收到任何ACK。在此第二种情况下,发送者的窗口将包含k-1和N个数据并包括k-1。因此发送者的窗口时[k-N,k-1]。通过上述论证,发生的窗口大小是3并且开始在某位置在范围[k-N,k]b)如果接收者等待数据包k,那么它已经接收(并确认)数据包k-1和它之前的N-1个数据包。如果这些N个ACKs都没有被发送者收到,那么在值为[k-N,k-1]的ACK消息仍然传输回来。因为发送已经发送数据包[k-N,k-1],所以这一定是发送者已经收到k-N-1的ACK的情况。一旦接收者已经发送了k-N-1的ACK,那么