计算机网络 自顶向下方法 第二章 应用层 习题答案

复习题

  1. 网络:HTTP; 文件传输:FTP; 远程登录:Telnet; 电子邮件:SMTP; BitTorrent文件共享:BitTorrent协议
  2. 网络架构是指将通信过程组织成层(例如,五层互联网架构)。 另一方面,应用程序体系结构由应用程序开发者设计并指示应用程序的广泛结构(例如,客户端 - 服务器或P2P)。
  3. 发起通信的进程是客户端,等待联系的进程是服务器。
  4. 否。在P2P文件共享应用程序中,接收文件的对等体通常是客户端,发送文件的对等体通常是服务器。
  5. 目标主机的IP地址和目标进程中套接字的端口号。
  6. 您将使用UDP。 使用UDP,事务可以在一个往返时间(RTT)内完成 - 客户端将事务请求发送到UDP套接字,服务器将回复发送回客户端的UDP套接字。 使用TCP,至少需要两个RTT - 一个用于设置TCP连接,另一个用于客户端发送请求,服务器用于发送回复。
  7. 一个这样的例子是远程文字处理,例如Google文档。 但是,由于Google文档通过Internet运行(使用TCP),因此不提供计时保证。
  8. a)可靠的数据传输
    TCP在客户端和服务器之间提供可靠的字节流,但UDP不提供。
    b)保证一定的吞吐量值得到保证
    都不提供
    c)保证数据将在指定的时间内交付
    都不提供
    d)机密性(通过加密)
    都不提供
  9. SSL在应用层运行。 SSL套接字从应用程序层获取未加密的数据,对其进行加密,然后将其传递给TCP套接字。 如果应用程序开发人员希望使用SSL增强TCP,则必须在应用程序中包含SSL代码。
  10. 如果两个通信实体在彼此发送数据之前首先交换控制分组,则协议使用握手。 SMTP在应用程序层使用握手,而HTTP则不然。
  11. 与这些协议相关的应用程序要求以正确的顺序接收所有应用程序数据并且没有间隙。 TCP提供此服务,而UDP则不提供此服务。
  12. 当用户首次访问站点时,服务器会创建唯一的标识号,在其后端数据库中创建一个条目,并将此标识号作为cookie号返回。 此cookie号存储在用户的主机上,由浏览器管理。 在每次后续访问(和购买)期间,浏览器将cookie号发送回站点。 因此,该站点知道此用户(更确切地说,此浏览器)何时访问该站点。
  13. Web缓存可以使所需的内容“更接近”用户,可能与用户主机所连接的同一局域网相连。Web缓存可以减少所有对象(甚至是未缓存的对象)的延迟,因为缓存减少了链接上的流量。

计算机网络 自顶向下方法 第二章 应用层 习题答案_第1张图片
由于自2007年5月18日星期五(格林威治时间09:23:34)以来未修改此Web服务器中的index.html页,并且上述命令于2007年5月19日星期六发出,服务器返回“304 not modified”。请注意,前4行是用户输入的get message和header行,后4行(从http/1.1 304开始,未修改)是Web服务器的响应。

  1. FTP使用两个并行TCP连接,一个用于发送控制信息的连接(例如传输文件的请求)和另一个用于实际传输文件的连接。 由于控制信息不是通过发送文件的同一连接发送的,因此FTP会在带外发送控制信息。
  2. 消息首先通过HTTP从Alice的主机发送到她的邮件服务器。 Alice的邮件服务器然后通过SMTP将消息发送给Bob的邮件服务器。 Bob然后通过POP3将邮件从他的邮件服务器传输到他的主机。
  3. 通过下载和删除,用户从POP服务器检索其消息后,消息将被删除。这给移动用户带来了一个问题,他们可能想要从许多不同的机器(办公电脑、家用电脑等)访问消息。在“下载并保留”配置中,用户检索消息后不会删除消息。这也很不方便,因为每次用户从新机器检索存储的消息时,所有未删除的消息都将传输到新机器(包括非常旧的消息)。
  4. 是的。组织的邮件服务器和Web服务器可以具有相同的主机名别名。 MX记录用于将邮件服务器的主机名映射到其IP地址。
  5. 您应该能够看到具有.edu电子邮件地址的用户的发件人IP地址。 但是,如果用户使用Gmail帐户,您将无法看到发件人的IP地址。
  6. Bob也不必给Alice提供大块的。Alice必须在Bob的前4个邻居中才能向Bob发送数据块;即使Alice在30秒的时间间隔内向Bob提供数据块,也可能不会发生这种情况。
  7. 回想一下,在BitTorrent中,对等体选择一个随机对等体并乐观地在短时间内取消对等体。 因此,Alice最终将被她的一个邻居乐观地解开,在此期间她将从该邻居收到块。
  8. P2P文件共享系统中的覆盖网络由参与文件共享系统的节点和节点之间的逻辑链路组成。 如果在A和B之间存在半永久性TCP连接,则存在从节点A到节点B的逻辑链路(图论中的“边缘”)。覆盖网络不包括路由器。
  9. Mesh DHT:优点是为了将消息路由到最接近密钥的对等端(ID),只需要一个跃点;缺点是每个对等端必须跟踪DHT中的所有其他对等端。环形DHT:优点是每个对等机只需要跟踪几个其他对等机;缺点是需要O(N)跳来将消息路由到最接近密钥的对等机。
  10. a)文件分布
    b)即时讯息
    c)视频流
    d)分布式计算
  11. 使用UDP服务器时,没有欢迎套接字,来自不同客户端的所有数据都通过这一个套接字进入服务器。 使用TCP服务器,有一个欢迎套接字,每次客户端启动与服务器的连接时,都会创建一个新套接字。 因此,为了支持n个同时连接,服务器需要n + 1个套接字。
  12. 对于TCP应用程序,只要客户端执行,它就会尝试启动与服务器的TCP连接。 如果TCP服务器未运行,则客户端将无法建立连接。 对于UDP应用程序,客户端在执行时不会立即启动连接(或尝试与UDP服务器通信)。

习题

  1. a) F
    b) T
    c) F
    d) F
    e) F
  2. 访问控制命令:
    USER,PASS,ACT,CWD,CDUP,SMNT,REIN,QUIT。
    传输参数命令:
    PORT,PASV,TYPE STRU,MODE。
    服务命令:
    RETR,STOR,STOU,APPE,ALLO,REST,RNFR,RNTO,ABOR,DELE,RMD,MRD,PWD,LIST,NLST,SITE,SYST,STAT,HELP,NOOP。
  3. 应用层协议:DNS和HTTP
    传输层协议:用于DNS的UDP; HTTP的TCP
  4. a)文件要求是http://gaia.cs.umass.edu/cs453/index.html。 Host:字段表示服务器的名称,/ cs453 / index.html表示文件名。
    b)浏览器正在运行HTTP版本1.1。
    c)浏览器正在请求持久连接,如Connection:keep-alive所示。
    d)这是一个棘手的问题。 此信息不包含在任何地方的HTTP消息中。 所以没有办法通过单独查看HTTP消息的交换来判断这一点。 人们需要来自IP数据报(携带HTTP GET请求的TCP段)的信息来回答这个问题。
    E)Mozilla/5.0。 服务器需要浏览器类型信息以将同一对象的不同版本发送到不同类型的浏览器。
  5. a)状态代码200和短语OK表示服务器能够成功找到文档。 答复于2008年3月7日星期二12:39:45格林威治标准时间提供。
    b)文件index.html最后一次修改于2005年12月10日星期六18:27:46 GMT。
    c)文档中有3874个字节被返回。
    d)返回文档的前五个字节是:<!doc。 服务器同意持久连接,如Connection:Keep-Alive字段所示
  6. a)在RFC2616的第8节中讨论了持久连接(这个问题的真正目的是让您检索和读取一个RFC)。RFC的第8.1.2节和第8.1.2.1节指出客户机或服务器可以向另一方表明它将关闭持久连接。它通过在HTTP请求/回复的连接头字段中包含连接令牌“close”来实现。
    b)HTTP不提供任何加密服务。
    c)(来自RFC 2616)“使用持久连接的客户机应该限制他们维护到给定服务器的同时连接的数量。单用户客户端与任何服务器或代理的连接不应超过2个。”
    D)是的。(来自RFC2616)“在服务器决定关闭“空闲”连接的同时,客户机可能已经开始发送新的请求。从服务器的角度来看,连接处于空闲状态时正在关闭,但从客户端的角度来看,请求正在进行中。
  7. 获取IP地址的总时间是RTT1+RTT2+…+RTTn。知道IP地址后,
    RTT0的时间设置TCP连接和另一个RTT0的时间请求并接收小对象。
    总响应时间是
    2RTT0+RTT1+RTT2+…+RTTn。
  8. a)
    RTT1+RTT2+…+RTTn+ 2RTT0 + 8 *2RTT0
    = 18RTT0 +RTT1+RTT2+…+RTTn .
    b)
    RTT1+RTT2+…+RTTn+ 2RTT0 + 2 *2RTT0
    = 6RTT0 +RTT1+RTT2+…+RTTn .
    c)
    RTT1+RTT2+…+RTTn+ 2RTT0 + RTT0
    = 3RTT0 +RTT1+RTT2+…+RTTn .
  9. a)通过链路或速率R发送大小为L的对象的时间是L / R.平均时间是物体的平均大小除以R:
    ∆=(850,000位)/(15,000,000位/秒)= .0567秒
    链路上的流量强度由β∆=(16个请求/秒)(.0567秒/请求)= 0.907给出。因此,平均访问延迟是(.0567秒)/(1 - .907)=0.6秒。因此,总平均响应时间为.6秒+3秒= 3.6秒。
    b)由于60%的请求在机构网络内得到满足,因此接入链路上的流量强度降低了60%。因此,平均访问延迟是(.0567秒)/ [1 - (.4)(.907)] = .089秒。如果缓存满足请求,响应时间大约为零(以概率.6发生);缓存未命中的平均响应时间为0.089秒+ 3秒= 3.089秒(40%的时间发生)。所以平均响应时间是(.6)(0秒)+(.4)(3.089秒)= 1.24秒。因此,平均响应时间从3.6秒减少到1.24秒。
  10. 注意,每个下载的对象可以完全放入一个数据包中。让tp表示客户机和服务器之间的单向传播延迟。
    首先考虑使用非持久连接的并行下载。并行下载将允许10个连接共享150位/秒的带宽,每个仅提供15位/秒。因此,接收所有对象所需的总时间如下:
    (200/150+TP+200/150+TP+200/150+TP+100000/150+TP)
    +(200/(150/10)+tp+200/(150/10)+tp+200/(150/10)+tp+100000/(150/10)+tp)
    =7377+8tp(秒)
    现在考虑一个持久的HTTP连接。所需总时间如下:(200/150+tp+200/150+tp+200/150+tp+100000/150+tp)
    +10
    (200/150+tp+100000/150+tp)
    =7351+24tp(秒)
    假设光速为300
    106米/秒,则tp=10/(300*106)=0.03微秒。因此,与传输延迟相比,tp可以忽略不计。
    因此,我们看到持久性HTTP并不比并行下载的非持久性HTTP快(小于1%)。
  11. a)是的,因为Bob有更多的连接,他可以获得更大的链路带宽份额。
    b)是的,Bob仍然需要执行并行下载; 否则他将获得比其他四个用户更少的带宽。
from socket import * 
serverPort=12000
serverSocket=socket(AF_INET,SOCK_STREAM) 
serverSocket.bind(('',serverPort))
serverSocket.listen(1)
connectionSocket, addr = serverSocket.accept() 
while 1:
    sentence = connectionSocket.recv(1024)
    print	'From	Server:',	sentence,	'\n' 
serverSocket.close()

  1. MAIL FROM:在SMTP中是来自SMTP客户端的消息,用于标识发送到SMTP服务器的邮件的发件人。 From:邮件本身不是SMTP邮件,而只是邮件正文中的一行。

  2. SMTP使用仅包含句点的行来标记邮件正文的结尾。 HTTP使用“Content-Length头字段”来指示消息体的长度。
    不,HTTP不能使用SMTP使用的方法,因为HTTP消息可能是二进制数据,而在SMTP中,消息正文必须是7位ASCII格式。

  3. MTA代表邮件传输代理。 主机将消息发送到MTA。 然后该消息遵循一系列MTA到达接收者的邮件阅读器。 我们看到此垃圾邮件遵循一系列MTA。 诚实的MTA应该报告收到消息的位置。 请注意,在此消息中,“asusus-4b96([58.88.21.177])”未报告收到电子邮件的位置。 由于我们假设只有发起者是不诚实的,所以“asusus-4b96([58.88.21.177])”必须是发起人。

  4. UIDL缩写为“unique-ID listing”。 当POP3客户端发出UIDL命令时,服务器将使用用户邮箱中存在的所有邮件的唯一邮件ID进行响应。 此命令对“下载并保留”非常有用。 通过维护列出在早期会话期间检索的消息的文件,客户端可以使用UIDL命令来确定服务器上已经看到了哪些消息。

  5. a)
    C: dele 1C: dele 1
    C: retr 2
    S: (blah blah …
    S: …………blah)
    S: .
    C: dele 2
    C: quit
    S: +OK POP3 server signing off
    b)
    C: retr 2
    S: blah blah …
    S: …………blah
    S: .
    C: quit
    S: +OK POP3 server signing off
    c)
    C: list
    S: 1 498
    S: 2 912
    S: .
    C: retr 1
    S: blah ……
    S: ….blah
    S: .
    C: retr 2
    S: blah blah …
    S: …………blah
    S: .
    C: quit
    S: +OK POP3 server signing off

  6. a)对于给定的域名输入(例如ccn.com),IP地址或网络管理员名称,whois数据库可用于查找相应的注册商,whois服务器,DNS服务器等。
    b) 略
    c) 略
    d)略
    e)略
    f)攻击者可以使用whois数据库和nslookup工具来确定目标机构的IP地址范围,DNS服务器地址等。
    g)通过分析攻击数据包的源地址,受害者可以使用whois获取有关攻击所来自的域的信息,并可能通知原始域的管理员。

  7. 我们可以定期对本地DNS服务器中的DNS缓存进行快照。在DNS缓存中出现频率最高的Web服务器是最流行的服务器。这是因为如果有更多的用户对Web服务器感兴趣,那么用户发送该服务器的DNS请求的频率会更高。因此,该Web服务器将更频繁地出现在DNS缓存中。

  8. 是的,我们可以使用dig来查询本地DNS服务器中的该网站。
    例如,“dig cnn.com”将返回查找cnn.com的查询时间。 如果几秒钟之前刚刚访问了cnn.com,则cnn.com的条目将缓存在本地DNS缓存中,因此查询时间为0毫秒。 否则,查询时间很长。

  9. 覆盖网络中有N个节点。 有N(N-1)/ 2个边缘。

  10. 是。 他的第一个主张是可能的,只要有足够多的同伴留在群中足够长的时间。 Bob总是可以通过其他同伴的乐观取消来接收数据。
    他的第二个主张也是如此。 他可以在每台主机上运行客户端,让每个客户端“搭便车”,并将收集到的来自不同主机的块组合成一个文件。 他甚至可以编写一个小的调度程序,让不同的主机请求不同的文件块。 这实际上是P2P网络中的一种Sybil攻击。

  11. Peer 3知道Peer 5刚刚离开系统,因此Peer 3向其第一个继承者(Peer 4)请求其直接继承者(Peer 8)的标识符。然后,Peer 3将使Peer 8成为第二个继承者。

  12. Peer6会首先向Peer15发送一条消息,说“Peer6的前身和继任者是什么?”“此消息通过DHT转发,直到到达Peer 5,Peer 5意识到它将是6的前身,而当前的继任者Peer 8将成为6的继任者。接下来,对等端5将此前置和后续信息发送回6。Peer 6现在可以通过让Peer 8成为其继承者并通知Peer 5将其直接继承者更改为6来加入DHT。

  13. 对于每个密钥,我们首先计算自身与所有对等体之间的距离(使用d(k,p)),然后将密钥存储在最靠近密钥的对等体中(即,具有最小距离值)。

  14. 是的,随机向对等方分配密钥根本不考虑底层网络,因此很可能导致不匹配。
    这种不匹配可能会降低搜索性能。 例如,考虑逻辑路径p1(仅由两个逻辑链路组成):A→B→C,其中A和B是相邻对等体,B和C是相邻对等体。 假设从A到C(由3个逻辑链路组成)存在另一个逻辑路径p2:A→D→E→C。
    情况可能是A和B物理上很远(并且被许多路由器隔开),而B和C在物理上非常远(并且由许多路由器分开)。 但可能是A,D,E和C在物理上都非常接近(并且由少数路由器分开)。 换句话说,较短的逻辑路径可以对应于更长的物理路径。

  15. a)如果首先运行TCPClient,则客户端将尝试与不存在的服务器进程建立TCP连接。 将不会建立TCP连接。
    b)UDPClient不与服务器建立TCP连接。 因此,如果您首先运行UDPClient,然后运行UDPServer,然后在键盘中键入一些输入,一切都应该正常工作。
    c)如果使用不同的端口号,则客户端将尝试使用错误的进程或不存在的进程建立TCP连接。 会发生错误。

  16. 在原始程序中,UDPClient在创建套接字时未指定端口号。 在这种情况下,代码允许底层操作系统选择端口号。 使用附加行,当执行UDPClient时,将创建一个端口号为5432的UDP套接字。
    UDPServer需要知道客户端端口号,以便它可以将数据包发送回正确的客户端套接字。 看一下UDPServer,我们看到客户端端口号没有“硬连线”到服务器代码中; 相反,UDPServer通过解析从客户端接收的数据报来确定客户端端口号。 因此UDP服务器将使用任何客户端端口号,包括5432.因此不需要修改UDPServer。
    之前:
    客户端套接字= x(由OS选择)服务器套接字= 9876
    后:
    客户端套接字= 5432

  17. 是的,您可以配置许多浏览器以打开与网站的多个同时连接。 优点是您可以更快地下载文件。缺点是您可能占用带宽,从而大大减慢了共享相同物理链路的其他用户的下载速度。

  18. 对于远程登录(telnet和ssh)等应用程序,面向字节流的协议非常自然,因为应用程序中没有消息边界的概念。 当用户键入字符时,我们只需将字符放入TCP连接即可。
    在其他应用程序中,我们可能会发送一系列消息,这些消息之间存在固有的界限。 例如,当一个SMTP邮件服务器向另一个SMTP邮件服务器发送几个电子邮件消息时。 由于TCP没有指示边界的机制,因此应用程序必须自己添加指示,以便应用程序的接收方可以将一个消息与下一个消息区分开来。 如果将每个消息放入不同的UDP段中,则接收端将能够区分各种消息,而不会由应用程序的发送方添加任何指示。

  19. 要创建Web服务器,我们需要在主机上运行Web服务器软件。 许多供应商销售Web服务器软件。 然而,今天最流行的Web服务器软件是Apache,它是开源的,免费的。 多年来,它一直受到开源社区的高度优化。

  20. 关键是infohash,该值是当前具有infohash指定的文件的IP地址

你可能感兴趣的:(计算机网络,自顶向下方法)