天天看点

《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题

本节书摘来华章计算机《计算机网络:自顶向下方法(原书第6版)》一书中的第2章 ,(美)james f.kurose keith w.ross 著 陈 鸣 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

复习题2.1节

r1.列出5种非专用的因特网应用及它们所使用的应用层协议。

r2.网络体系结构与应用程序体系结构之间有什么区别?

r3.对两进程之间的通信会话而言,哪个进程是客户,哪个进程是服务器?

r4.对一个p2p文件共享应用,你同意“一个通信会话不存在客户端和服务器端的概念”的说法吗?为什么?

r5.运行在一台主机上的一个进程,使用什么信息来标识运行在另一台主机上的进程?

r6.假定你想尽快地处理从远程客户到服务器的事务,你将使用udp还是tcp?为什么?

r7.参见图2-4,我们看到在该图中所列出的应用程序没有一个同时既要求无数据丢失又要求定时的。你能设想一个既要求无数据丢失又高度时间敏感的应用程序吗?

r8.列出一个运输协议能够提供的4种宽泛类型的服务。对于每种服务类型,指出是udp还是tcp(或这两种协议)提供这样的服务?

r9.前面讲过tcp能用ssl来强化,以提供进程到进程的安全性服务,包括加密。ssl运行在运输层还是应用层?如果某应用程序研制者想要用ssl来强化udp,该研制者应当做些什么工作?

2.2~2.5节

r10.握手协议的作用是什么?

r11.为什么http、ftp、smtp及pop3都运行在tcp,而不是udp上?

r12.考虑一个电子商务网站需要保留每一个客户的购买记录。描述如何使用cookie来完成该功能?

r13.描述web缓存器是如何减少接收被请求的对象的时延的。web缓存器将减少一个用户请求的所有对象或只是其中的某些对象的时延吗?为什么?

r14. telnet到一台web服务器并发送一个多行的请求报文。在该请求报文中包含if-modified-since:首部行,迫使响应报文中出现“304 not modified”状态代码。

r15.为什么说ftp在“带外”发送控制信息?

r16.假定alice使用一个基于web的电子邮件账户(例如hotmail或gmail)向bob发报文,而bob使用pop3从他的邮件服务器访问自己的邮件。讨论是怎样从alice主机到bob主机得到该报文的。要列出在两台主机间移动该报文时所使用的各种应用层协议。

r17.将你最近收到的报文首部打印出来。其中有多少received:首部行?分析该报文的首部行中的每一行。

r18.从用户的观点看,pop3协议中下载并删除模式和下载并保留模式有什么区别吗?

r19.一个机构的web服务器和邮件服务器可以有完全相同的主机名别名(例如,foo.com)吗?包含邮件服务器主机名的rr有什么样的类型?

r20.仔细检查收到的电子邮件,查找由使用.edu电子邮件地址的用户发送的报文首部。从其首部,能够确定发送该报文的主机的ip地址吗?对于由gmail账号发送的报文做相同的事。

2.6节

r21.在bittorrent中,假定alice向bob提供一个30秒间隔的文件块吞吐量。bob将必须进行回报,在相同的间隔中向alice提供文件块吗?为什么?

r22.考虑一个新对等方alice加入bittorrent而不拥有任何文件块。没有任何块,因此她没有任何东西可上载,她无法成为任何其他对等方的前4位上载者。那么alice将怎样得到她的第一个文件块呢?

r23.覆盖网络是什么?它包括路由器吗?在覆盖网络中边是什么?

r24.考虑一个具有网状覆盖网络拓扑的dht(即每个对等方跟踪系统中的所有对等方)。这样设计的优点和缺点各是什么?环形dht(无捷径)的优点和缺点各是什么?

r25.列出至少4个不同的应用,它们本质上适合p2p体系结构。(提示:文件分布和即时讯息是两个这样的应用。)

2.7节

r26. 2.7节中所描述的udp服务器仅需要一个套接字,而tcp服务器需要两个套接字。为什么?如果tcp服务器支持n个并行连接,每条连接来自不同的客户主机,那么tcp服务器将需要多少个套接字?

r27.对于2.7节所描述的运行在tcp之上的客户-服务器应用程序,服务器程序为什么必须先于客户程序运行?对于运行在udp之上的客户-服务器应用程序,客户程序为什么可以先于服务器程序运行?习题p1.是非判断题。

a.假设用户请求由某些文本和3幅图像组成的web页面。对于这个页面,客户将发送一个请求报文并接收4个响应报文。

b.两个不同的web页面(例如,www.mit.edu/research.html及www.mit.edu/students.html)可以通过同一个持续连接发送。

c.在浏览器和初始服务器之间使用非持续连接的话,一个tcp报文段是可能携带两个不同的http服务请求报文的。

d.在http响应报文中的date:首部指出了该响应中对象最后一次修改的时间。

e.http响应报文决不会具有空的报文体。

p2.阅读有关ftp的rfc 959。列出这个rfc所支持的所有客户命令。

p3.考虑一个http客户要获取一个给定url的web页面。该http服务器的ip地址开始时并不知道。在这种情况下,除了http外,还需要什么运输层和应用层协议?

p4.考虑当浏览器发送一个http get报文时,通过wireshark俘获到下列ascii字符串(即这是一个http get报文的实际内容)。字符是回车和换行符(即下面文本中的斜体字符串表示了单个回车符,该回车符包含在http首部中的相应位置)。回答下列问题,指出你在下面http get报文中找到答案的地方。

《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题

a.由浏览器请求的文档的url是什么?

b.该浏览器运行的是http的何种版本?

c.该浏览器请求的是一条非持续连接还是一条持续连接?

d.该浏览器所运行的主机的ip地址是什么?

e.发起该报文的浏览器的类型是什么?在一个http请求报文中,为什么需要浏览器类型?

p5.下面文本中显示的是来自服务器的回答,以响应上述问题中http get报文。回答下列问题,指出你在下面报文中找到答案的地方。

《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题
《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题

a.服务器能否成功地找到那个文档?该文档提供回答是什么时间?

b.该文档最后修改是什么时间?

c.文档中被返回的字节有多少?

d.文档被返回的前5个字节是什么?该服务器同意一条持续连接吗?

p6.获取http/1.1规范(rfc 2616)。回答下面问题:

a.解释在客户和服务器之间用于指示关闭持续连接的信令机制。客户、服务器或两者都能发送信令通知连接关闭了吗?

b.http提供了什么加密服务?

c.一个客户能够与一个给定的服务器打开3条或更多条并发连接吗?

d.如果一个服务器或一个客户检测到连接已经空闲一段时间,该服务器或客户可以关闭两者之间的传输连接。一侧开始关闭连接而另一侧通过该连接传输数据是可能的吗?请解释。

p7.假定你在浏览器中点击一条超链接获得web页面。相关联的url的ip地址没有缓存在本地主机上,因此必须使用dns lookup以获得该ip地址。如果主机从dns得到ip地址之前已经访问了n个dns服务器;相继产生的rtt依次为rtt1、…、rttn。进一步假定与链路相关的web页面只包含一个对象,即由少量的html文本组成。令rtt0表示本地主机和包含对象的服务器之间的rtt值。假定该对象传输时间为零,则从客户点击该超链接到它接收到该对象需要多长时间?

p8.参照习题p7,假定在同一服务器上某html文件引用了8个非常小的对象。忽略发送时间,在下列情况下需要多长时间:

a.没有并行tcp连接的非持续http。

b.配置有5个并行连接的非持续http。

c.持续http。

p9.考虑图2-12,其中有一个机构的网络和因特网相连。假定对象的平均长度为850000比特,从这个机构网的浏览器到初始服务器的平均请求率是每秒16个请求。还假定从接入链路的因特网一侧的路由器转发一个http请求开始,到接收到其响应的平均时间是3秒(参见2.2.5节)。将总的平均响应时间建模为平均接入时延(即从因特网路由器到机构路由器的时延)和平均因特网时延之和。对于平均接入时延,使用Δ/(1-Δβ),式中Δ是跨越接入链路发送一个对象的平均时间,β是对象对该接入链路的平均到达率。

a.求出总的平均响应时间。

b.现在假定在这个机构lan中安装了一个缓存器。假定命中率为0.4,求出总的响应时间。

p10.考虑一条10米短链路,某发送方经过它能够以150bps速率双向传输。假定包含数据的分组是100000比特长,仅包含控制(如ack或握手)的分组是200比特长。假定n个并行连接每个都获得1/n的链路带宽。现在考虑http协议,并且假定每个下载对象是100kb长,这些初始下载对象包含10个来自相同发送方的引用对象。在这种情况下,经非持续http的并行实例的并行下载有意义吗?现在考虑持续http。你期待这比非持续的情况有很大增益吗?评价并解释你的答案。

p11.考虑在前一个习题中引出的情况。现在假定该链路由bob和4个其他用户所共享。bob使用非持续http的并行实例,而其他4个用户使用无并行下载的非持续http。

bob的并行连接能够帮助他更快地得到web页面吗?

b.如果所有5个用户打开5个非持续http并行实例,那么bob的并行连接仍将是有益的吗?为什么?

p12.写一个简单的tcp程序,使服务器接收来自客户的行并将其打印在服务器的标准输出上。(可以通过修改本书中的tcpserver.py程序实现上述任务。)编译并执行你的程序。在另一台有浏览器的机器上,设置浏览器的代理服务器为你正在运行服务器程序的机器,同时适当地配置端口号。这时你的浏览器向服务器发送get请求报文,你的服务器应当在其标准输出上显示该报文。使用这个平台来确定你的浏览器是否对本地缓存的对象产生了条件get报文。

p13. smtp中的mail from与该邮件报文自身中的from:之间有什么不同?

p14. smtp是怎样标识一个报文体结束的?http是怎样做的呢?http能够使用与smtp标识一个报文体结束相同的方法吗?试解释。

p15.阅读用于smtp的rfc 5321。mta代表什么?考虑下面收到的垃圾邮件(从一份真实垃圾邮件修改得到)。假定这封垃圾邮件的唯一始作俑者是malacious,而其他主机是诚实的,指出是该malacious主机产生了这封垃圾邮件。

《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题

p16.阅读pop3的rfc,即rfc 1939。uidl pop3命令的目的是什么?

p17.考虑用pop3访问你的电子邮件。

a.假定你已经配置以下载并删除模式运行的pop邮件客户。完成下列事务:

《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题

b.假定你已经配置以下载并保持模式运行的pop邮件客户。完成下列事务:

《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题

c.假定你已经配置以下载并保持模式运行的pop邮件客户。使用(b)中的记录,假定你检索报文1和2,退出pop,5分钟以后,你再访问pop以检索新电子邮件。假定在这5分钟间隔内,没有新报文发送给你。给出第二种pop会话的记录。

p18.如题:

a.什么是whois数据库?

b.使用因特网上的各种whois数据库,获得两台dns服务器的名字。指出你使用的是哪个whois数据库。

c.你本地机器上使用nslookup向3台dns服务器发送dns查询:你的本地dns服务器和两台你在(b)中发现的dns服务器。尝试对类型a、ns和mx报告进行查询。总结你的发现。

d.使用nslookup找出一台具有多个ip地址的web服务器。你所在的机构(学校或公司)的web服务器具有多个ip地址吗?

e.使用arin whois数据库,确定你所在大学使用的ip地址范围。

f.描述一个攻击者在发动攻击前,能够怎样利用whois数据库和nslookup工具来执行对一个机构的侦察。

g.讨论为什么whois数据库应当为公众所用。

p19.在本习题中,我们使用在unix和linux主机上可用的dig工具来探索dns服务器的等级结构。图2-21讲过,在dns等级结构中较高的dns服务器授权对该等级结构中较低dns服务器的dns请求,这是通过向dns客户发送回那台较低层次的dns服务器的名字来实现的。先阅读dig的帮助页,再回答下列问题。

a.从一台根dns服务器(从根服务器[a-m].root-server.net之一)开始,通过使用dig得到你所在系的web服务器的ip地址,发起一系列查询。显示回答你的查询的授权链中的dns服务器的名字列表。

b.对几个流行web站点如google.com、yahoo.com或amazon.com,重复上一小题。

p20.假定你能够访问所在系的本地dns服务器中的缓存。你能够提出一种方法来粗略地确定在你所在系的用户中最为流行的web服务器(你所在系以外)吗?解释原因。

p21.假设你所在系具有一台用于系里所有计算机的本地dns服务器。你是普通用户(即你不是网络/系统管理员)。你能够确定是否在几秒钟前从你系里的一台计算机可能访问过一台外部web站点吗?解释原因。

p22.考虑向n个对等方分发f=15gb的一个文件。该服务器具有us=30mbps的上载速率,每个对等方具有di=2mbps的下载速率和上载速率u。对于n=10、100和1000并且u=300kbps、700kbps和2mbps,对于n和u的每种组合绘制出确定最小分发时间的图表。需要分别针对客户-服务器分发和p2p分发两种情况制作。

p23.考虑使用一种客户-服务器体系结构向n个对等方分发一个f比特的文件。假定一种流体模型,即某服务器能够同时向多个对等方传输,只要组合速率不超过us,则以不同的速率向每个对等方传输。

a.假定us/n≤dmin。定义一个具有nf/us分发时间的分发方案。

b.假定us/n≥dmin。定义一个具有f/dmin分发时间的分发方案。

c.得出最小分发时间通常是由max{nf/us,f/dmin}所决定的结论。

p24.考虑使用p2p体系结构向n个用户分发f比特的一个文件。假定一种流体模型。为了简化起见,假定dmin很大,因此对等方下载带宽不会成为瓶颈。

a.假定us≤(us+u1+…+un)/n。定义一个具有f/us分发时间的分发方案。

b.假定us≥(us+u1+…+un)/n。定义一个具有nf/(us+u1+…+un)分发时间的分发方案。

c.得出最小分发时间通常是由max{f/us,nf/(us+u1+…+un)}所决定的结论。

p25.考虑在一个有n个活跃对等方的覆盖网络中,每对对等方有一条活跃的tcp连接。此外,假定该tcp连接通过总共m台路由器。在对应的覆盖网络中,有多少结点和边?

p26.假定bob加入bittorrent,但他不希望向任何其他对等方上载任何数据(因此称为搭便车)。

bob声称他能够收到由该社区共享的某文件的完整副本。bob所言是可能的吗?为什么?

bob进一步声称他还能够更为有效地进行他的“搭便车”,方法是利用所在系的计算机实验室中的多台计算机(具有不同的ip地址)。他怎样才能做到这些呢?

p27.在2.6.2节的环形dht例子中,假定对等方3知道对等方5已经离开。对等方3如何更新它的后继状态信息?此时哪个对等方是它的第一个后继?哪个是其第二个后继?

p28.在2.6.2节的环形dht例子中,假定一个新的对等方6要接入该dht,并且对等方6最初只知道对等方15的ip地址。需要采用哪些步骤?

p29.因为一个位于[0,2n-1]的整数能被标识为一个在dht中的n比特的二进制数,每个键能被表示为k=(k0,k1,…,kn-1),并且每个对等方标识符能被表示为p=(p0,p1,…,pn-1)。我们现在定义键k和对等方p的异或(xor)距离为

《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题

描述该度量如何用于为对等方分配(键,值)对。(要学习如何使用这个天然的度量构建有效的dht,参见描述kademlia dht的文献[maymounkov 2002]。)

p30.由于dht是覆盖网络,它们也许不必与底层的物理网络匹配得很好,即两个相邻的对等方也许物理上相距很远;例如,一个对等方可能位于亚洲而它的邻居可能位于北美。如果我们随机并统一地为新加入的对等方分配标识符,这个分配方案将会引起这种误匹配吗?揭示原因。这种误匹配如何影响dht的性能呢?

p31.在一台主机上安装编译tcpclient和udpclient python程序,在另一台主机上安装编译tcpserver和udpserver程序。

a.如果你在运行tcpserver之前运行tcpclient,将发生什么现象?为什么?

b.如果你在运行udpserver之前运行udpclient,将发生什么现象?为什么?

c.如果你对客户端和服务器端使用了不同的端口,将发生什么现象?

p32.假定在udpclient.py中在创建套接字后增加了下面一行:

有必要修改udpserver.py吗?udpclient和udpserver中的套接字端口号是多少?在变化之前它们是多少?

p33.你能够配置浏览器以打开对某web站点的多个并行连接吗?有大量的并行tcp连接的优点和缺点是什么?

p34.我们已经看到因特网tcp套接字将数据处理为字节流,而udp套接字识别报文边界。面向字节api与显式识别和维护应用程序定义的报文边界的api相比,试给出一个优点和一个缺点。

p35.什么是apache web服务器?它值多少钱?它当前有多少功能?为回答这个问题,你也许要看一下维基百科。

作业1:web服务器

在这个编程作业中,你将用python语言开发一个简单的web服务器,它仅能处理一个请求。具体而言,你的web服务器将:(1)当一个客户(浏览器)联系时创建一个连接套接字;(2)从这个连接接收http请求;(3)解释该请求以确定所请求的特定文件;(4)从服务器的文件系统获得请求的文件;(5)创建一个由请求的文件组成的http响应报文,报文前面有首部行;(6)经tcp连接向请求的浏览器发送响应。如果浏览器请求一个在该服务器中不存在的文件,服务器应当返回一个“404 not found”差错报文。

在配套网站中,我们提供了用于该服务器的框架代码。你的任务是完善该代码,运行服务器,通过在不同主机上运行的浏览器发送请求来测试该服务器。如果运行你服务器的主机上已经有一个web服务器在运行,你应当为该web服务器使用一个不同于80端口的其他端口。

作业2:udp ping程序

在这个编程作业中,你将用python编写一个客户ping程序。该客户将发送一个简单的ping报文,接收一个从服务器返回的对应pong报文,并确定从该客户发送ping报文到接收到pong报文为止的时延。该时延称为往返时延(rtt)。由该客户和服务器提供的功能类似于在现代操作系统中可用的标准ping程序。然而,标准的ping使用互联网控制报文协议(icmp)(我们将在第4章中学习icmp)。此时我们将创建一个非标准(但简单)的基于udp的ping程序。

你的ping程序经udp向目标服务器发送10个ping报文。对于每个报文,当对应的pong报文返回时,你的客户要确定和打印rtt。因为udp是一个不可靠的协议,由客户发送的分组可能会丢失。为此,客户不能无限期地等待对ping报文的回答。客户等待服务器回答的时间至多为1秒;如果没有收到回答,客户假定该分组丢失并相应地打印一条报文。

在此作业中,将给出服务器的完整代码(在配套网站中可找到)。你的任务是编写客户代码,该代码与服务器代码非常类似。建议你先仔细学习服务器的代码,然后编写你的客户代码,可以不受限制地从服务器代码中剪贴代码行。

作业3:邮件客户

这个编程作业的目的是创建一个向任何接收方发送电子邮件的简单邮件客户。你的客户将必须与邮件服务器(如谷歌的电子邮件服务器)创建一个tcp连接,使用smtp协议与邮件服务器进行交谈,经该邮件服务器向某接收方(如你的朋友)发送一个电子邮件报文,最后关闭与该邮件服务器的tcp连接。

对本作业,配套web站点为你的客户提供了框架代码。你的任务是完善该代码并通过向不同的用户账户发送电子邮件来测试你的客户。你也可以尝试通过不同的服务器(例如谷歌的邮件服务器和你所在大学的邮件服务器)进行发送。

作业4:多线程web代理服务器

在这个编程作业中,你将研发一个简单的web代理服务器。当你的代理服务器从一个浏览器接收到对某对象的http请求,它生成对相同对象的一个新http请求并向初始服务器发送。当该代理从初始服务器接收到具有该对象的http响应时,它生成一个包括该对象的新http响应,并发送给该客户。这个代理将是多线程的,使其在相同时间能够处理多个请求。

对本作业而言,配套web网站对该代理服务器提供了框架代码。你的任务是完善该代码,然后测试你的代理,方法是让不同的浏览器经过你的代理来请求web对象。wireshark实验:http在实验1中,我们已经初步使用了wireshark分组嗅探器,我们现在准备使用wireshark来研究运行中的协议。在本实验中,我们将研究http协议的几个方面:基本的get/回答交互,http报文格式,检索大html文件,检索具有内嵌url的html文件,持续和非持续连接,http鉴别和安全性。

人物专访

《计算机网络:自顶向下方法(原书第6版)》一课后习题和问题

  marc andreessen  marc andreessen是mosaic的共同发明人,mosaic是一种web浏览器,正是它使万维网在1993年流行起来。mosaic具有一个清晰、易于理解的界面,是首个能嵌在文本中显示图像的浏览器。在1994年,marc andreessen和jim clark创办了netscape公司,其浏览器是到20世纪90年代中期为止最为流行的。netscape也研发了安全套接字层(ssl)协议和许多因特网服务器产品,包括邮件服务器和基于ssl的web服务器。他现在是风险投资公司andreessen horowitz的共同奠基人和一般股东,对包括facebook、foursquare、groupon、jawbone、twitter和zynga等公司的财产投资搭配进行监管。他服务于包括bump、ebay、glam media、facebook和hp等在内的多个董事会。他具有美国伊利诺伊大学厄巴纳-香槟分校的计算机科学理学学士学位。您是怎样变得对计算感兴趣的?您过去一直知道您要从事信息技术吗?

在我长大成人的过程中,视频游戏和个人计算正好成为成功而风行一时的事物,在20世纪70年代后期和80年代初期,个人计算成为了新技术发展前沿。那时不只有苹果和ibm的个人计算机,而且有如commodore和atari等数以百计的新公司。我在10岁时用一本名为《简明basic速成》(instant freeze-dried basic)的书进行自学,并在12岁时得到自己的第一台计算机(trs-80 color computer,查查它!)。

请描述您职业生涯中干过的最令人激动的一两个项目。最大的挑战是什么?

毋庸置疑,最令人兴奋的项目是1992~1993年的初始mosaic web浏览器,最大的挑战是让任何人从此往后都认真地对待它。在那个时候,每个人都认为交互式未来将是由大型公司宣布的“交互式电视”,而非由新兴公司发明的因特网。

您对网络和因特网未来的什么东西感到兴奋?您最为关注什么?

最为兴奋的东西是程序员和企业家能够开发的应用和服务的巨大的尚待开发的领域,即因特网已经释放的创造性到达了一种我们以前从未预见到的水平。我最关注是“意想不到的后果”的原则,即我们并不总是知道我们所做事情的后果,例如因特网被政府所用,使得监视居民到达了一种新水平。

随着web技术的进展,学生们有什么应当特别要了解的?

改变的速度,即对学习来说,最重要的东西是学习的方法,在特定的技术中如何灵活地适应改变,当你在职业生涯中前行时,在新的机会和可能性方面如何保持开放的思想。

什么人给予您专业灵感?

他们是:vannevar bush,ted nelson,doug engelgart,nolan bushnell,bill hewlett和dave packard,ken olsen,steve jobs,steve wozniak,andy grove,grace hopper,hedy lamarr,alan turing,richard stallman。

对于要在计算和信息技术领域谋求发展的学生们,您有什么忠告?

尽可能深入地理解技术是怎样创造的,然后补充学习商业运作的原理。

技术能够解决世界的问题吗?

不能,但是通过经济增长我们推动人们生活标准的改善。综观历史,大多数经济增长来自技术,因此就像技术带来的好处一样。