文章目录
-
- [2.1 节](#2.1 节)
-
- (1)列出5种非专用的因特网应用及它们所使用的应用层协议。
- (2)网络体系结构与应用程序体系结构之间有什么区别?
- (3)对两进程之间的通信会话而言,哪个进程是客户,哪个进程是服务器?
- (4)对一个P2P文件共享应用,你同意"一个通信会话不存在客户端和服务器端的概念"的说法吗?为什么?
- (5)运行在一台主机上的一个进程,使用什么信息来标识运行在另一台主机上的进程?
- (6)假定你想尽快地处理从远程客户到服务器的事务,你将使用UDP还是TCP?为什么?参见图2-4,我们看到在该图中所列出的应用程序没有一个同时既要求无数据丢失又要求定时的。
- (7)你能设想一个既要求无数据丢失又高度时间敏感的应用程序吗?
- (8)列出一个运输协议能够提供的4种宽泛类型的服务。对于每种服务类型,指出是UDP还是TCP(或这两种协议)提供这样的服务?
- [(9)前面讲过TCP能用 SSL来强化,以提供进程到进程的安全性服务,包括加密。SSL运行在运输层还是应用层?如果某应用程序研制者想要用SSL来强化UDP,该研制者应当做些什么工作?](#(9)前面讲过TCP能用 SSL来强化,以提供进程到进程的安全性服务,包括加密。SSL运行在运输层还是应用层?如果某应用程序研制者想要用SSL来强化UDP,该研制者应当做些什么工作?)
- [2.2~2.4 节](#2.2~2.4 节)
-
- (10)握手协议的作用是什么?
- [(11)为什么HTTP、SMTP及POP3都运行在TCP,而不是 UDP上?](#(11)为什么HTTP、SMTP及POP3都运行在TCP,而不是 UDP上?)
- [(12)考虑一个电子商务网站需要保留每一个客户的购买记录。描述如何使用cookie 来完成该功能?](#(12)考虑一个电子商务网站需要保留每一个客户的购买记录。描述如何使用cookie 来完成该功能?)
- [(13)描述 Web缓存器是如何减少接收被请求对象的时延的。Web缓存器将减少一个用户请求的所有对象或只是其中的某些对象的时延吗?为什么?](#(13)描述 Web缓存器是如何减少接收被请求对象的时延的。Web缓存器将减少一个用户请求的所有对象或只是其中的某些对象的时延吗?为什么?)
- [(14)Telnet 到一台 Web服务器并发送一个多行的请求报文。在该请求报文中包含【f-modifed-since:首部行,迫使响应报文中出现"304 Not Modifed"状态代码。](#(14)Telnet 到一台 Web服务器并发送一个多行的请求报文。在该请求报文中包含【f-modifed-since:首部行,迫使响应报文中出现“304 Not Modifed”状态代码。)
- (15)列出几种流行的即时通信应用。它们使用相同的协议作为SMS吗?
- [(16)假定 Alice 使用一个基于 Web的电子邮件账户(例如 Hotmail 或 Gmail)向 Bob 发报文,而 Bob 使用POP3 从他的邮件服务器访问自己的邮件。讨论该报文是如何从Aice主机到Bob主机的。列出在两台主机间移动该报文时所使用的各种应用层协议。](#(16)假定 Alice 使用一个基于 Web的电子邮件账户(例如 Hotmail 或 Gmail)向 Bob 发报文,而 Bob 使用POP3 从他的邮件服务器访问自己的邮件。讨论该报文是如何从Aice主机到Bob主机的。列出在两台主机间移动该报文时所使用的各种应用层协议。)
- [(21)在 BitTorent 中,假定 Alice向 Bob提供一个30秒间隔的文件块吞吐量。Bob将必须进行回报,在相同的间隔中向 Alice 提供文件块吗?为什么?](#(21)在 BitTorent 中,假定 Alice向 Bob提供一个30秒间隔的文件块吞吐量。Bob将必须进行回报,在相同的间隔中向 Alice 提供文件块吗?为什么?)
- [(22)考虑一个新对等方 Alice加入 BitToment 而不拥有任何文件块。没有任何块,因此她没有任何东西可上载,她无法成为任何其他对等方的前4位上载者。那么Alice将怎样得到她的第一个文件块呢?](#(22)考虑一个新对等方 Alice加入 BitToment 而不拥有任何文件块。没有任何块,因此她没有任何东西可上载,她无法成为任何其他对等方的前4位上载者。那么Alice将怎样得到她的第一个文件块呢?)
- (23)覆盖网络是什么?它包括路由器吗?在覆盖网络中边是什么
- 2.6节
- 2.7节
-
- [(26)2.7节中所描述的 UDP服务器仅需要一个套接字,而TCP服务器需要两个套接字。为什么?如果TCP服务器支持n个并行连接,每条连接来自不同的客户主机,那么TCP服务器将需要多少个套接字?](#(26)2.7节中所描述的 UDP服务器仅需要一个套接字,而TCP服务器需要两个套接字。为什么?如果TCP服务器支持n个并行连接,每条连接来自不同的客户主机,那么TCP服务器将需要多少个套接字?)
- [(27)对于2.7节所描述的运行在TCP之上的客户-服务器应用程序,服务器程序为什么必须先于客户程序运行?对于运行在 UDP之上的客户-服务器应用程序,客户程序为什么可以先于服务器程序运行?](#(27)对于2.7节所描述的运行在TCP之上的客户-服务器应用程序,服务器程序为什么必须先于客户程序运行?对于运行在 UDP之上的客户-服务器应用程序,客户程序为什么可以先于服务器程序运行?)
2.1 节
(1)列出5种非专用的因特网应用及它们所使用的应用层协议。
- Web浏览 - 应用层协议:HTTP(超文本传输协议)/HTTPS(安全超文本传输协议)
- 电子邮件 - 应用层协议:SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议版本3)或IMAP(互联网邮件访问协议)用于接收邮件
- 文件传输 - 应用层协议:FTP(文件传输协议)/SFTP(安全文件传输协议)
- 即时通讯 - 应用层协议:XMPP(可扩展消息与presence协议)/IRC(互联网中继聊天协议)
- 域名解析 - 应用层协议:DNS(域名系统)
(2)网络体系结构与应用程序体系结构之间有什么区别?
网络体系结构指的是计算机网络各层及其协议的集合,定义了数据在网络中的传输方式、路由选择、错误检测与纠正等,如TCP/IP模型。它关注的是底层的数据传输和网络互联。
应用程序体系结构则关注于软件应用的组织和设计,包括用户界面、业务逻辑、数据访问等层面,以及这些组件如何交互以提供特定功能或服务。它不直接涉及网络通信的细节,而是利用网络体系结构提供的服务进行数据交换。
(3)对两进程之间的通信会话而言,哪个进程是客户,哪个进程是服务器?
在传统的客户端-服务器模型中,发起通信请求的一方称为客户端,而等待并响应这些请求的一方称为服务器。客户端通常向服务器请求服务或资源,服务器处理这些请求并返回结果。
(4)对一个P2P文件共享应用,你同意"一个通信会话不存在客户端和服务器端的概念"的说法吗?为什么?
同意。在P2P(点对点)文件共享应用中,每个参与的节点既是客户端也是服务器。每个节点可以直接与其他节点建立连接,请求或提供文件,没有固定的服务提供者或请求者的角色划分。因此,在P2P通信中,传统的客户端-服务器界限变得模糊,每个节点可以根据需要扮演请求或响应的角色。
(5)运行在一台主机上的一个进程,使用什么信息来标识运行在另一台主机上的进程?
主要通过IP地址和端口号 来标识。IP地址确定了目标主机的位置,而端口号则指明了目标主机上的具体服务或进程 。组合起来,它们形成了一个套接字(socket),这是网络通信中进程间通信的基本地址标识。
(6)假定你想尽快地处理从远程客户到服务器的事务,你将使用UDP还是TCP?为什么?参见图2-4,我们看到在该图中所列出的应用程序没有一个同时既要求无数据丢失又要求定时的。
可能选择UDP。因为UDP是一种无连接的、不可靠的传输协议,它不需要建立连接,也不保证数据的顺序和完整性,但正因为如此,它的头部开销小,处理速度快,适用于对实时性要求高但能容忍一定数据丢失的应用场景,比如在线游戏、语音通话等。而TCP虽然提供了数据可靠传输和流量控制,但其建立连接、确认机制和重传机制增加了延迟。
(7)你能设想一个既要求无数据丢失又高度时间敏感的应用程序吗?
远程手术或机器人控制是一个例子。这类应用不仅要求数据的绝对完整性(任何数据丢失都可能导致严重后果),同时对实时性有极高的要求,因为操作指令必须即时传达给远程设备,以确保精确控制。
(8)列出一个运输协议能够提供的4种宽泛类型的服务。对于每种服务类型,指出是UDP还是TCP(或这两种协议)提供这样的服务?
- 无连接服务 - 提供者:UDP
- 面向连接服务 - 提供者:TCP
- 可靠数据传输 - 提供者:TCP
- 流量控制 - 提供者:TCP
(9)前面讲过TCP能用 SSL来强化,以提供进程到进程的安全性服务,包括加密。SSL运行在运输层还是应用层?如果某应用程序研制者想要用SSL来强化UDP,该研制者应当做些什么工作?
- SSL(Secure Sockets Layer)和其后续版本TLS(Transport Layer Security)实际上运行在应用层与传输层之间,但更常被认为是运输层的一个补充,因为它是为了增强应用层协议的安全性而设计的。SSL/TLS协议通常应用于TCP之上,为TCP连接提供加密和认证服务,例如在HTTPS中就是这种情况。
如果一个应用程序研制者想要用SSL/TLS来强化UDP,他们需要做以下工作: - 实现SSL/TLS库:由于SSL/TLS原本是为TCP设计的,需要找到或开发支持UDP的SSL/TLS实现,如DTLS(Datagram Transport Layer Security),它是TLS协议的变种,适用于无连接的协议。
- 安全握手:在UDP中,由于没有内置的连接状态,需要创建一个类似于TCP中的握手过程来建立安全会话。
- 数据包处理:UDP不保证数据包的顺序和可靠性,所以需要在应用层实现数据包的排序和丢失恢复机制。
- 错误检测和重传:由于UDP的特性,可能需要额外的错误检测算法(如校验和)和重传策略来确保数据的正确性。
- 资源管理:UDP通信可能需要更多的资源管理,因为每个数据包都是独立的,这可能影响到带宽使用和内存占用。
- 端口映射:考虑到UDP的多播和广播能力,可能需要处理端口映射和多路复用问题,以确保数据能正确路由到正确的目的地。
- 兼容性测试:确保新实现的SSL/TLS over UDP与现有的SSL/TLS服务器和客户端兼容。
完成上述工作后,应用程序就能通过DTLS提供类似于TCP上的SSL/TLS的安全服务,从而实现安全的UDP通信。
2.2~2.4 节
(10)握手协议的作用是什么?
握手协议,如TCP的三次握手,主要目的是为了建立两个通信端点间的可靠连接。它的作用包括:
- 同步序列号:确定双方的初始序列号,以便后续数据包的正确排序。
- 确认通信能力:确保双方都有能力接收和发送数据,防止无效连接请求。
- 防止已失效的连接请求:通过握手,可以避免旧的、重复的连接请求到达接收方并建立不必要的连接。
- 防止中间人攻击:通过交换随机信息,可以检测到中间人篡改连接尝试。
(11)为什么HTTP、SMTP及POP3都运行在TCP,而不是 UDP上?
都需要可靠连接
HTTP(超文本传输协议)、SMTP(简单邮件传输协议)和POP3(邮局协议)都依赖于可靠的数据传输,因为它们传输的数据需要保证完整性和顺序。TCP提供以下特性,使得它们更适合这些应用:
- 可靠性:TCP确保所有数据包都被正确无误地送达,即使在网络中存在丢包或乱序的情况下。
- 顺序保证:TCP按照发送顺序交付数据。
- 连接性:TCP建立连接后才开始传输,确保双方通信前的准备就绪。
- 流量控制:TCP有内置的流量控制机制,防止拥塞。
- 错误检测与重传:TCP使用校验和检测错误,并自动重传丢失的数据。
相比之下,UDP(用户数据报协议)是无连接的,不保证可靠传输,适合对实时性要求高但对数据丢失不敏感的应用,如音频视频流媒体。
(12)考虑一个电子商务网站需要保留每一个客户的购买记录。描述如何使用cookie 来完成该功能?
Cookie是一种存储在用户浏览器中的小文本文件,用于跟踪用户在网站上的活动。电子商务网站可以使用cookie来保留客户的购买记录如下:
- 设置Cookie:当客户完成购买时,服务器会在响应中包含一个或多个cookie,每个cookie包含购买记录的关键信息,如订单ID、购买日期、产品列表等。
- 存储信息:这些cookie存储在用户的设备上,浏览器会在后续的请求中自动发送相关cookie。
- 读取Cookie:当客户再次访问网站时,服务器读取发送过来的cookie,识别出该用户,并检索到之前的购买记录。
- 更新和删除:服务器可以更新cookie内容以添加新的购买记录,或者在用户清除购物车、退订或请求时删除相关cookie
(13)描述 Web缓存器是如何减少接收被请求对象的时延的。Web缓存器将减少一个用户请求的所有对象或只是其中的某些对象的时延吗?为什么?
Web缓存器(也称为代理缓存 或CDN内容分发网络)通过以下方式减少时延:
- 本地存储:缓存器保存最近或频繁访问的网页副本,当本地用户请求这些页面时,可以从缓存中直接提供,避免了远程服务器的延迟。
- 减少网络传输:缓存减少了从源服务器到客户端的往返时间,因为数据只需通过较少的网络跳点。
- 负载均衡:缓存器可以减轻源服务器的负载,使得响应更快。
缓存器可以减少所有对象或特定对象的时延,取决于哪些内容被缓存以及缓存策略。通常,热门或静态内容更容易被缓存,从而显著减少时延。
(14)Telnet 到一台 Web服务器并发送一个多行的请求报文。在该请求报文中包含【f-modifed-since:首部行,迫使响应报文中出现"304 Not Modifed"状态代码。
(15)列出几种流行的即时通信应用。它们使用相同的协议作为SMS吗?
流行的即时通信应用包括WhatsApp、Facebook Messenger、WeChat(微信)、Telegram、Skype等。它们通常不使用**SMS(短消息服务)**协议,而是使用专有的即时消息协议,如WhatsApp使用WhatsApp自己的协议,Facebook Messenger使用Facebook的即时消息平台,WeChat使用腾讯的协议,Telegram有自己的MTProto,而Skype使用Skype协议。
(16)假定 Alice 使用一个基于 Web的电子邮件账户(例如 Hotmail 或 Gmail)向 Bob 发报文,而 Bob 使用POP3 从他的邮件服务器访问自己的邮件。讨论该报文是如何从Aice主机到Bob主机的。列出在两台主机间移动该报文时所使用的各种应用层协议。
当 Alice 使用基于 Web 的电子邮件服务(如 Hotmail 或 Gmail)向 Bob 发送电子邮件时,报文从 Alice 主机到 Bob 主机的过程大致如下,期间涉及多种应用层协议:
1. Alice 创建邮件:
• 协议: HTTP/HTTPS
• 过程: Alice 通过 Web 浏览器登录她的邮箱账户,使用 HTTPS 协议加密通信,创建一封新邮件并填写相关内容(收件人、主题、正文等)。
2. Alice 发送邮件:
• 协议: SMTP (Simple Mail Transfer Protocol)
• 过程: 当 Alice 点击"发送"按钮后,Web 邮件系统使用 SMTP 协议将这封邮件从 Alice 的邮件服务器发送出去。SMTP 负责将邮件从发件人的邮件服务器传递到收件人的邮件服务器。在这个过程中,如果 Alice 的邮件服务器和 Bob 的邮件服务器不直接相连,邮件可能会经过多个中间邮件服务器,每个步骤都使用 SMTP 协议。
3. 邮件传输过程中的安全:
• 协议: STARTTLS (可选)
• 过程: 在 SMTP 传输过程中,为了保证安全性,服务器之间可能会使用 STARTTLS 指令启动一个安全的连接,对邮件内容进行加密传输。
4. Bob 接收邮件:
• 协议: POP3 (Post Office Protocol version 3)
• 过程: 当 Bob 想要查看邮件时,他通过其邮件客户端使用 POP3 协议连接到他的邮件服务器。POP3 协议负责下载邮件到 Bob 的本地设备上。Bob 需要提供用户名和密码来验证身份。
5. Bob 查看邮件:
• 协议: 无特定应用层协议(假设邮件已通过 POP3 下载)
• 过程: 一旦邮件被下载到 Bob 的设备上,他就可以使用邮件客户端软件(如 Outlook、Thunderbird 或是 Web 邮箱界面)查看邮件内容。
综上所述,在这个过程中,主要涉及的应用层协议包括 HTTPS(用于 Alice 登录和创建邮件)、SMTP(用于邮件的发送和中转)、STARTTLS(可选,用于加密SMTP通信),以及POP3(用于Bob接收邮件)。
2.5 节
(21)在 BitTorent 中,假定 Alice向 Bob提供一个30秒间隔的文件块吞吐量。Bob将必须进行回报,在相同的间隔中向 Alice 提供文件块吗?为什么?
(22)考虑一个新对等方 Alice加入 BitToment 而不拥有任何文件块。没有任何块,因此她没有任何东西可上载,她无法成为任何其他对等方的前4位上载者。那么Alice将怎样得到她的第一个文件块呢?
(23)覆盖网络是什么?它包括路由器吗?在覆盖网络中边是什么
覆盖网络是一种分布式网络架构,由一组节点(不一定是路由器)组成,它们相互连接形成一个网络。节点可以是普通计算机或其他设备,它们通过互联网或其他通信链路连接。在覆盖网络中,边代表节点之间的连接,可以是物理连接或逻辑连接,表示节点间可以交换数据的能力。
2.6节
(24)CDN通常采用两种不同的服务器放置方法之一。列举并简单描述它们。
- 地理位置分布:将服务器放置在靠近用户的地方,以减少延迟和带宽消耗。这可以通过在各大洲或国家的主要互联网交换点设立数据中心来实现。
- 内容热度分析:根据内容的流行度和访问模式,将服务器放置在预测的热点地区,以满足高需求。
(25)除了如时延、丢包和带宽性能等网络相关的考虑外,设计一种CDN服务器选择策略时还有其他重要因素。它们是什么?
- 内容类型:不同类型的内容可能需要不同的分发策略,例如视频流可能需要更高的带宽和更低的延迟。
- 可用带宽:考虑服务器的带宽容量,以应对突发的高流量。
- 成本:服务器租赁和维护成本,以及网络费用。
- 法律和合规性:遵守不同地区的数据存储和隐私法规。
- 安全性和稳定性:服务器的安全性以及所在地区的网络稳定性。
2.7节
(26)2.7节中所描述的 UDP服务器仅需要一个套接字,而TCP服务器需要两个套接字。为什么?如果TCP服务器支持n个并行连接,每条连接来自不同的客户主机,那么TCP服务器将需要多少个套接字?
TCP服务器需要两个套接字:
一个用于监听新连接(监听套接字 ),另一个用于处理每个已建立连接的数据传输(连接套接字)。监听套接字持续开放,等待新的客户端连接请求,而连接套接字为每个客户端创建一个,以便进行一对一的数据交换
(27)对于2.7节所描述的运行在TCP之上的客户-服务器应用程序,服务器程序为什么必须先于客户程序运行?对于运行在 UDP之上的客户-服务器应用程序,客户程序为什么可以先于服务器程序运行?
TCP:服务器必须先运行,因为它需要打开监听套接字等待客户端连接。一旦连接建立,服务器和客户端就可以通过各自的连接套接字进行通信。
UDP:因为UDP是无连接的,客户端可以先运行并发送数据,服务器可以在接收到数据后开始运行并响应。两者不需要预先建立连接,因此启动顺序不固定