复习题:
R1:1.web应用和HTTP协议
2.电子应用和HTTP协议
3.因特网的目录服务DNS和DNS协议
4.BitTorrent和P2P协议
5.远程终端访问和Telnet
6.文件传输和FTP协议
R2:1.从应用程序研发者的角度看,网络体系结构是固定的,并为应用程序提供了特定的服务集合。
2.应用体系结构由应用程序研发者设计,规定了如何在各种端系统上组织改应用程序。现代网络体系结构对应于两种体系结构:客户—服务器体系结构和对等(P2P)体系结构
R3:在以对进程的通信会话场景中,发起通话(既在会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
R4:不同意,在P2P文件共享应用中,一个进程即是客户又是服务器。
R5:主机的IP地址和目标套接字的端口号
R6:UDP的发送端可以用任意速率向网络层注入数据,可以在一次往返时间(RTT)中完成——客户端将事务请求发送到UDP套接字,服务器将回复发送回客户端UDP套接字。对于TCP,至少需要两个RTT,一个用于建立TCP连接,另一个用于客户机发送请求,以及服务器发送回复。
R7:对时间和订单信息敏感的应用程序:商品限时秒杀
R8:
运输服务 | TCP | UDP |
可靠数据传输 | yes | no |
吞吐量 | no | no |
定时 | no | no |
安全性 | yes(TLS) | no |
R9:TLS在应用层运行。TLS套接字从应用层接受未加密的数据,对其进行加密,然后将其传递给TCP套接字。(p60)
第二问:
使用TLS(Transport Layer Security)来强化UDP通信需要进行一些特定的工作。UDP本身是一个无连接的传输协议,与TCP不同,它不提供建立连接、流控制和可靠性。因此,在UDP上实现TLS需要额外的设计和处理。
以下是某应用程序研制者在使用TLS来强化UDP通信时需要考虑和执行的工作:
-
选择合适的库或框架: 首先,您需要选择一个能够支持TLS的UDP库或框架,以便在应用程序中实现安全的UDP通信。一些常用的选择包括OpenSSL、wolfSSL、或其他支持UDP的TLS库。
-
协议设计: 您需要定义如何在UDP上实现TLS。这包括定义握手协议、密钥协商、加密和认证方法等。通常,TLS会涉及到服务器和客户端之间的握手过程来协商加密参数。
-
证书和密钥管理: 在TLS中,需要使用数字证书来验证服务器和客户端的身份,并用于加密通信。您需要生成、获取和管理这些证书和密钥,以确保安全通信。
-
集成TLS库: 将所选的TLS库集成到您的应用程序中,以便实现TLS功能。您需要调用相应的API来执行TLS握手、加密和解密数据等操作。
-
处理错误和异常: 在TLS通信中,可能会出现各种错误和异常,如证书验证失败、握手失败等。您需要适当处理这些错误情况,并采取相应的安全措施,以确保通信的安全性。
-
性能考虑: 加密和解密数据会增加通信的计算负载。您需要评估性能影响,并根据需求进行优化。
-
测试和验证: 在部署TLS加密的UDP通信之前,需要进行广泛的测试和验证,以确保安全性和可靠性。
-
文档和培训: 编写文档和提供培训,以确保开发团队了解如何正确使用TLS强化UDP通信,并遵循最佳实践。
请注意,使用TLS来强化UDP通信需要更多的复杂性和开发工作,相对于TCP而言,UDP的无连接性质使得TLS的实现更加挑战。
R10:让客户端和服务器确认彼此的身份。
R11:首先HTTP,用户通过浏览器以HTTP协议向服务器发起请求,如果这个请求数据不完整,服务器将无法1给出正确响应,用户也得不到想要的结构。
SMTP和IMAP两个邮件协议也需要保证数据的完整性,并且保证按照一定的顺序交付,所以选择TCP。
R12:Cookie可以用于标识一个用户。用户首次访问一个站点时,可能需要提供一个用户标识(可能是名字)。在后继会话中,浏览器向服务区传递一个cookie首部,从而向该服务器标识了用户。因此cookie可以在无状态的HTTP之上建立一个用户会话层。
当用户首先访问电子商务时,需要提供一个用户的唯一标识,电商网站根据用户标识查看用户信息,并将特定的用户信息作为cookie响应给用户,然后用户在电商网站发起的每个操作都带上该cookie,电商网站便能保留每个客户的购买记录了。
R13:Web缓存器设置在用户和初始服务器之间,当用户要向初始服务器发起请求时,浏览器会将请求定位到Web缓存器上,如果缓存器上有请求对象的副本则直接将该副本响应给客户。如果缓存器中没有,则从Web缓存器向初始服务器发起对该对象的请求,Web缓存器收到来自初始化服务器的响应对象后,自己会保留一份该对象的副本,然后再响应给用户。因此,Web缓存器只能减少缓存过的对象的时延。
R14:“If-modified-since:”首部行的正好等于上次服务器发送的响应报文中的“Last-modified:”首部行的值。该条件GET报文告诉服务器,仅当自指定日期之后该对象被修改过,才从Web服务器发送给客户端,否则使用Web缓存。条件GET方法
R15:QQ,微信。其中QQ使用的应用层协议是OICQ,OICQ使用的传输层协议是UDP。使用端口:4000用于发送信息,端口:8000用于接收信息。
OICQ协议提供可靠的传输服务。微信使用的应用层协议是HTTP。它们不是使用相同的协议作为SMS。
R16:再Alice的用户代理之间使用SMTP或HTTP,再Alice的邮件服务器和Bob的邮件服务器之间使用SMTP协议,再Bob的邮件服务器和Bob的用户代理之间使用HTTP或者IMAP协议
R17:略
R18:74页书上的例子。用于HOL阻塞的HTTP/2解决方案是将每个报文分成小帧,并且再相同TCP连接上交错发送请求和响应报文。
R19:MX服务器允许邮件服务器主机名具有简单的别名。通过使用MX记录,一个公司的有见服务器可以和它的其它服务器(Web服务器)可以使用相同的别名。
包含邮件服务器主机名的RR有两条记录,一条是MX类型,该记录提供了邮件服务器的规范化主机名。一条是A类型,该记录包含用于该邮件服务器的规范主机名的IP地址。
R20:.edu可以,Gmail不行
R21:不,Bob并不必须进行回报。因为Alice会选取一定数量的“邻居”(领进对等方),并在它们哪里获得快。而这个选择不是基于Alice向谁发送快就向谁获取块,而是根据一种对换算法,再Alice的对等方列表(追踪器提供)中向对等方发送请求,选取响应速度快的前四位上载者来获取块,每隔30秒Alice获取块的伴侣也是不停跟新的。
R22:先建立tcp连接,然后Alice使用一种称为最稀缺技术,针对她没有的块的令居中决定最稀缺的块(最稀缺的块就是那些在她的邻居中副本数量最少的块),并首先请求那些最稀缺的块。
R23:覆盖网络是一种应用层网络(对等方组成的逻辑网络,不是物理链路),在P2P协议中,覆盖网络由文件共享系统的节点与节点间的逻辑联系(两个对等方之间的TCP连接)构成,这条逻辑联系就是“边”,不包括路由器。
R24:深入。该原则是通过在遍及全球的接入ISP中部署服务器集群来深入到ISP的接入网中。
邀请做客。被许多公司采用,该原则是通过在少量(例如10个)关键位置建造大集群来邀请到ISP做客。不是将集群放入ISP中,这些CDN通常将它们的集群放置在因特网交换点(IXP)。
R25:负载均衡,ISP收费,服务器集群管理等
R26:对于UDP服务器,没有欢迎套接字,来自不同客户机的所有数据都通过这个套接字进入服务器。对于TCP服务器,有一个欢迎套接字,每当客户机启动到服务器的连接时,就会创建一个新的链接套接字。因此,要支持n个同时连接,服务器需要n+1个套接字。
R27:对于TCP应用程序,一旦执行客户机,它会尝试启动与服务器的TCP连接。如果TCP服务器没有运行,那么客户机将无法握手,当然也无法建立连接。对于UDP应用程序,客户端在执行时不会立即启动连接或尝试与UDP服务器进行通信。