计算机网络自顶向下方法:第二章 应用层 课后复习题
若有错误, 欢迎指出~html
第二章: 应用层
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(或这两种协议)提供这样的服务?
可靠数据传输 |
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帐号发送的报文作相同的事.
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发出去, 但服务器可能就收不到了.
欢迎关注本站公众号,获取更多信息