计算机网络自顶向下方法:第二章 应用层 课后复习题

如有错误, 欢迎指出~
 

第二章: 应用层

2.1节

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

应用 应用层协议
Web冲浪 HTTP协议
电子邮件 SMTP协议
因特网电话 SIP协议
流式多媒体 HTTP协议
文件传输 FTP协议

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

  • 网络体系结构指的是因特网种的五层网络协议.
  • 应用程序体系结构通常是由开发者自己定义的.
  • 它们的区别在于, 从应用程序研发者的角度看, 网络体系结构是固定的, 并为应用程序提供了特定的服务集合. 另一方面, 应用程序体系结构由应用程序研发者设计, 规定了如何在各种端系统上组织该应用程序.
  • 应用程序体系架构可以通过应用网络体系架构中的内容从而使应用程序拥有网络传输功能.

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

  • 书本定义: 在一对进程之间的通信会话场景中, 发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户, 在会话开始时等待联系的进程是服务器.

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

  • 我不同意. P2P文件共享应用虽然能够相互传输文件, 看起来每个用户即可以当客户, 也可以当服务器. 但是具体落实到一次通信会话中, 当对等方A请求对等方B发送一个特定的文件时, 在这个特定的通信会话中对等方A是客户, 而对等方B是服务器.

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

  • 通过IP地址标识另一台主机, 通过另一台主机上的目的地端口号来标识另一台主机上的程序.

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

  • 我会使用UDP, 因为TCP是面向连接的, 在传输之前需要进行三次握手. 而UDP是无连接的, 可以直接选定合适速率向外传送.

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

  • 发射火箭的程序.

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

服务 UDP Or TCP
可靠数据传输 TCP
吞吐量 TCP
定时 TCP
安全性 SSL

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

  • SSL运行在应用层.
  • SSL在TCP的握手阶段完成了双方的身份确认, 生成密钥等操作. 如果研制者要用SSL来强化UDP, 因为UDP是面向无连接的, 所以SSL首先要解决在UDP传输中的身份确认问题.

2.2 ~ 2.4节

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

  • 使客户端和服务器端建立起连接, 能够开始传递信息.

R11. 为什么HTTP, SMTP及POP3都运行在TCP上, 而不是在UDP上?

  • 首先要知道TCP几个重要的特性: 面向连接, 保证数据完整性, 保证数据有序到达, 有拥塞控制功能. 而上述功能UDP都没有.
  • 再来看HTTP, 用户通过浏览器以HTTP协议向服务器发起请求, 如果这个请求数据不完整, 服务器将无法给出正确响应, 用户也得不到想要的结果.
  • SMTP和POP3两个邮件协议也需要保证数据的完整性, 并且要保证按照一定的顺序交付, 所以选择TCP.

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

  • 用户首次访问电子商务网站时, 需要提供一个用户的唯一标识, 电商网站根据用户标识查得用户信息, 并将特定的用户信息作为cookie响应给用户. 然后用户在电商网站发起的每个操作都带上该cookie, 电商网站便能保留每个客户的购买记录了.

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

  • Web缓存器设置在用户和初始服务器之间, 当用户要向初始服务器发起请求时, 浏览器会先将请求定位到Web缓存器上, 如果缓存器上有请求对象的副本则直接将该副本响应给客户. 如果缓存器中没有, 则从Web缓存器向初始服务器发起对该对象的请求, Web缓存器收到来自初始服务器的响应对象后, 自己会保留一份该对象的副本, 然后再响应给用户.
  • 因此, Web缓存器只能减少缓存过的对象的时延.

R14. Telnet到一台Web服务器并发送一个多行的请求报文. 在该请求报文中包含If-modified-since: 首部行, 迫使响应报文中出现"304 Not Modified"状态代码.

  • 不太懂题目意思, 不过可以解释一下题目中出现的名词:
  • 使用Web缓存器带来的最直观问题是, 如果服务器上的对象在被缓存到缓存器后修改了, 该怎么办?
  • 这涉及到HTTP协议的一种机制: 条件GET(conditional GET).
  • 客户向Web服务器发起请求, 请求首先会被缓存器拦截, 这时如果缓存中用户请求的内容, 未了保证请求的内容在服务器上也是最新的, 缓存器会向服务器发送一个GET请求, GET请求中包含首部行If-modified-since, 该首部行的内容是该对象在缓存器中的最新副本.
  • 如果服务器中被请求对象和缓存器中的最新副本一样, 就没必要再发送一次了, 这时就会响应一个"304 Not Modified"状态码, 不带任何多余数据. 如果服务器中的对象更新过, 和缓存器中的副本不一样了, 服务器会将最新的副本发送给缓存器.

R15. 列出几种流行的即时通信应用.它们使用相同的协议作为SMS吗?

  • 电子邮件, FaceBook, 微信等.
  • 以上三个的应用层协议各不相同.

R16. 假定Alice使用一个基于Web的电子邮件账户(例如Hotmail或Gmail)向Bob发报文, 而Bob使用POP3从他的邮件服务器访问自己的邮件. 讨论该报文是如何从Alice主机到Bob主机的. 要列出在两台主机间移动该报文时所使用的各种应用层协议.

  • Alice使用Web电子邮件账户向Bob发送报文时, Alice的浏览器也就是Alice的用户代理通过HTTP连接到Alice的邮件服务器, 并把报文传送到该邮件服务器上
  • 然后Alice的邮件服务器通过SMTP连接到Bob的邮件服务器(基于TCP), 并把邮件报文传送到Bob的邮件服务器中.
  • Bob使用它的用户代理(主机), 通过POP3协议访问自己的邮件服务器, 并以下载保存或下载删除的方式获得Alice发来的邮件报文.

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

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

  • 从用户的角度看是没有的, 因为无论采取哪种模式, 用户都得到了邮件报文. 但是对于邮件服务器就不同了, 如果是下载删除, POP3会话结束后就会把标记的邮件报文删除, 再次连接上邮件服务器这些邮件报文就不存在了.

R19. 一个机构的Web服务器和邮件服务器可以有完全相同的主机名别名吗? 包含邮件服务器主机名的RR有什么样的类型?

  • 可以, 因为在DNS数据库中, 记录一条RR(Resource Record)需要提供4个字段: Name, Value, Type, TTL.
  • 其中Type字段记录本条记录的类型. 这就让机构的Web服务器和邮件服务器用相同主机别名成为可能. 假如我们要访问该机构的邮件服务器, 除了要给出主机别名, 在DNS报文中还会指定RR的类型为MX(邮件服务器的规范主机名).

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

  • 答案来源自网络
  • .edu的可以
  • Gmail不行

2.5节

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

  • 不, Bob并不必须进行回报. 因为Alice会选取一定数量的"邻居", 并从它们那里获得块. 而这个选择不是基于Alice向谁发送了块就要向谁索要块, 而是在Alice的对等方列表中向对等方发起请求, 选取响应速度快的前4位上载者来获取块. Alice获取块的伴侣也是不停更新的.

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

  • Alice虽然不能成为上载者, 但是她能成为接收者呀, 接收到块后自然就有可能成为上载者了.
  • Alice在空手加入洪流时, 追踪器会随机地从参与对等方集合中选择一个对等方子集, 并将子集中对等方的IP地址发送给Alice. Alice持有这张列表并尝试与列表中所有的对等方建立并行的TCP连接, 并选择前4位上载者, 向它们请求块(最稀缺优先原则).

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

  • 答案来源网络.
  • 覆盖网络是一种面向应用层的网络, 包括对等方和对等方之间由虚拟联络构成的抽象逻辑网.
  • 覆盖网络不包括路由器.
  • 覆盖网络中的边就是对等方之间的逻辑链路.

2.6节

R24. CDN通常采用两种不同的服务器放置方法之一. 列举并简单描述它们.

  • 深入: 通过在遍及全球的接入ISP中部署服务器集群来深入到ISP的接入网中. 好处是靠近端用户, 减少端用户和CDN集群之间链路和路由器数量, 改善了用户感受到的时延和吞吐量. 缺点是由于高度分布式设计, 维护和管理集群成本高.
  • 邀请做客: 通过在少量关键位置建造大集群来邀请到ISP做客. 这些CDN集群通常放在因特网交换结点(IXP). 好处是产生较低的维护和管理开销. 缺点是以对端用户的较高时延和较低吞吐量为代价.

R25. 除了如时延, 丢包和带宽性能等网络相关的考虑外, 设计一种CDN服务器选择策略时还有其他重要因素. 它们是什么?

  • 还要考虑它分发的内容.

2.7节

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

  • 因为UDP是面向无连接的, 它只需要有一个套接字用于接收和发送, 并且可以接收来自不同地址主机的UDP包. 而TCP是面向连接的, 除了接收访问的套接字, 每和一个客户连接就要创建一个专用的套接字.
  • n+1个.

R27. 对于2.7节所描述的运行在TCP之上的客户-服务器应用程序, 服务器程序为什么必须先于客户程序运行? 对于运行在UDP之上的客户-服务器应用程序, 客户程序为什么可以先于服务器程序运行.

  • 建立TCP连接需要经过一个3次握手的过程, 如果服务器没有启动根本无法握手, 从而无法创建连接.
  • UDP是面向无连接的, 就算服务器没有启动, 客户程序照样可以把UDP发出去, 但服务器可能就收不到了.

猜你喜欢

转载自www.cnblogs.com/tanshaoshenghao/p/10650864.html