部分 | 用途 |
---|---|
状态行 | 有三个字段:协议版本、状态码、相应状态信息 |
首部行 | Collection:close;Data:服务器从文件系统中检索到这个对象,插入响应报文,并且发送该响应报文的时间;Server;Last-Modified指示了对象创建或者最后修改的日期和时间。Content-Length:首部行指示了被发送对象中的字节数。Content-Type:首部行指示了实体体中的对象是HTML文本。(该对象类型应该正式地由Content-Type:首部行而不是用文件扩展名来指示。) |
实体体 |
常用状态码
200:请求成功,信息在返回的响应报文中。
301 Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。客户软件将自动获取新的URL。
400Bad Request:一个通用差错代码,指示该请求不能被服务器理解。
404 Not Found:被请求的文档不在服务器上。
505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本。
Web缓存器(Web cache)也叫代理服务器(proxy server),它是能够代表初始Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。可以配置用户的浏览器,使得用户的所有HTTP请求首先指向Web缓存器。一旦某浏览器被配置,每个对某对象的浏览器请求首先被定向到该Web缓存器。
HTTP协议有一种机制,允许缓存器证实它的对象是最新的。这种机制就是条件GET(conditional GET)方法。如果:①请求报文使用GET方法;并且②请求报文中包含一个“If-Modified-Since:”首部行。那么,这个HTTP请求报文就是一个条件GET请求报文。
FTP使用了两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接
HTTP主要是一个拉协议(pull protocol),即在方便的时候,某些人在Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息。特别是TCP连接是由想接收文件的机器发起的。另一方面,SMTP基本上是一个推协议(push protocol),即发送邮件服务器把文件推向接收邮件服务器。
SMTP要求每个报文(包括它们的体)使用7比特ASCI码格式。如果某报文包含了非7比特ASCII字符(如具有重音的法文字符)或二进制数据(如图形文件),则该报文必须按照7比特ASCII码进行编码。HTTP数据则不受这种限制。
HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。
如果Type=A,则Name是主机名,Value是该主机名对应的IP地址。因此,一条类型为A的资源记录提供了标准的主机名到IP地址的映射。例如(relayl.
bar.foo.com,145.37.93.126,A)就是一条类型A记录。
如果Type=NS,则Name是个域(如foo.com),而Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。这个记录用于沿着查询链来路由DNS查询。例如(foo.com,dns.foo.com,NS)就是一条类型为NS的记录。如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名。该记录能够向查询的主机提供一个主机名对应的规范主机名,例如(foo.com,relayl.bar.foo.com,CNAME)就是一条CNAME类型的记录。
如果Type=MX,则Value是个别名为Name的邮件服务器的规范主机名。举例来说,(foo.com,mail.bar.foo.com,MX)就是一条MX记录。MX记录允许邮件服务器主机名具有简单的别名。值得注意的是,通过使用MX记录,一个公司的邮件服务器和其他服务器(如它的Web服务器)可以使用相同的别名。为了获得邮件服务器的规范主机名,DNS客户应当请求一条MX记录;而为了获得其他服务器的规范主机名,DNS客户应当请求CNAME记录。
DNS只有查询和回答两种报文,并且两种报文格式一致
对于客户-服务器体系结构:
分 发 时 间 D e s ≥ m a x { N F u s , F d m i n } 分发时间D_{es}\ge max \begin{Bmatrix} \frac{NF}{u_{s}} , \frac{F}{d{min}} \end{Bmatrix} 分发时间Des≥max{usNF,dminF}
我们现在来对P2P体系结构进行简单的分析,其中每个对等方能够帮助服务器分发文件。特别是,当一个对等方接收到某些文件数据,它能够使用自己的上载能力重新将据分发给其他对等方。
对于P2P体系结构:
分 发 时 间 D e s ≥ m a x { F u s , F d m i n , N F u s + ∑ i = 1 N u i } 分发时间D_{es}\ge max \begin{Bmatrix} \frac{F}{u_{s}} , \frac{F}{d{min}},\frac{NF}{u_{s}+\sum_{i=1}^{N}{u_{i}}} \end{Bmatrix} 分发时间Des≥max{usF,dminF,us+∑i=1NuiNF}
每个洪流具有一个基础设施结点,称为追踪器(tracker)。当一个对等方加入某洪流时,它向追踪器注册自己,并周期性地通知追踪器它仍在该洪流中。以这种方式,追踪器跟踪正参与在洪流中的对等方。一个给定的洪流可能在任何时刻具有数以百计或数以千计的对等方。
在决定请求哪些块的过程中,Alice使用一种称为最稀缺优先(rarest first)的技术。这种技术的思路是,针对她没有的块在她的邻居中决定最稀缺的块(最稀缺的块就是那些在她的邻居中副本数量最少的块),并首先请求那些最稀缺的块。这样,最稀缺块得到更为迅速的重新分发,其目标是(大致地)均衡每个块在洪流中的副本数量。
写到一半断电了(悲),我就留下几道比较好的题目吧
R5.运行在一台主机上的一个进程,使用什么信息来标识运行在另一台主机上的进程?
目标主机的IP地址和目标进程中套接字的端口号。
R9.前面讲过TCP能用SSL来强化,以提供进程到进程的安全性服务,包括加密。SSL运行在运输层还是应用层?如果某应用程序研制者想要用SSL来强化UDP,该研制者应当做些什么工作?
SSL在应用层运行。SSL套接字从应用层接收未加密的数据,对其进行加密,然后将其传递给TCP套接字。如果应用程序开发人员希望使用SSL增强TCP,则必须在应用程序中包含SSL代码。
R11.为什么HTTP、SMTP及POP3都运行在TCP,而不是UDP上?
与这些协议相关联的应用程序要求以正确的顺序接收所有应用程序数据,并且不存在空白。TCP提供此服务,而UDP不提供此服务。
R18.从用户的观点看,POP3协议中下载并删除模式和下载并保留模式有什么区别吗?
通过下载和删除,用户从POP服务器检索其消息后,消息将被删除。这给游牧用户带来了一个问题,他们可能希望从许多不同的机器(办公PC、家庭PC等)访问消息。在下载和保存配置中,在用户检素消息后不会删除消息。这也可能不方便,因为每次用户从新机器检素存储的消息时,所有未副除的消息都将传输到新机器(包括非常旧的消息)。
R19.一个机构的Web服务器和邮件服务器可以有完全相同的主机名别名(例如,foo.com)吗?包含邮件服务器主机名的RR有什么样的类型?
是的,组织的邮件服务器和Web服务器可以具有与主机名相同的别名。MX记录⽤于将邮件服务器的主机名映射到其IP地址。
R20.仔细检查收到的电子邮件,查找由使用,edu电子邮件地址的用户发送的报文首部。从其首部,能够确定发送该报文的主机的IP地址吗?对于由gmail账号发送的报文做相同的事。
您应该能够使⽤.edu电⼦邮件地址查看发送⽅的IP地址。但是,如果⽤⼾使⽤Gmail帐⼾,您将⽆法看到发件⼈的IP地址。
2.6节
R21.在BitTorment中,假定Alice向Bob提供一个30秒间隔的文件块吞吐量。Bob将必须进行回报,在相同的间隔中向Alice提供文件块吗?为什么?
Bob也没有必要为Alice提供块。Alice必须是Bob的前4位邻居,Bob才能向她发送块;即使Alice在30秒的间隔内向Bob提供块,也可能不会发⽣这种情况。
R22.考虑一个新对等方Alice加入BifTorrent而不拥有任何文件块。没有任何块,因此她没有任何东西可上载,她无法成为任何其他对等方的前4位上载者。那么Alice将怎样得到她的第一个文件块呢?
回想⼀下,在BitTorrent中,⼀个对等点选择⼀个随机的对等点,并乐观地在短时间内解除该对等点的阻塞。因此,爱丽斯最终会被她的⼀个邻居发送,在此期间,她会从邻居那⾥得到很多块。
R23.覆盖网络是什么?它包括路由器吗?在覆盖网络中边是什么?
P2P⽂件共享系统中的覆盖⽹络由参与⽂件共享系统的节点和节点之间的逻辑链接组成。如果A和B之间有⼀个半永久的TCP连接,则从节点A到节点B有⼀个逻辑链路(图论术语中的“边缘”)。覆盖⽹络不包括路由器。
R24.考虑一个具有网状覆盖网络拓扑的DHT(即每个对等方跟踪系统中的所有对等方)。这样设计的优点和缺点各是什么?环形DHT(无捷径)的优点和缺点各是什么?
⼀种服务器布局理念称为EntDep,它通过在全世界的Access ISP中部署服务器集群,深⼊到Internet服务提供商的接⼊⽹中。⽬标是减少延迟,提⾼终端⽤⼾和CDN服务器之间的吞吐量。另⼀种理念是将ISP带回家,在较⼩数量的站点上构建⼤型CDN服务器集群,并通常将这些服务器集群放置在IEP(Internet Exchange Point)中。这带来了居家设计典型的结果是较低的维护和管理成本,与进⼊深度的设计理念。
R25.列出至少4个不同的应用,它们本质上适合P2P体系结构。(提示:文件分布和即时讯息是两个这样的应用。)
2.7节
R26.2.7节中所描述的UDP服务器仅需要一个套接字,而TCP服务器需要两个套接字。为什么?如果TCP服务器支持a个并行连接,每条连接来自不同的客户主机,那么TCP服务器将需要多少个套接字?
对于UDP服务器,没有欢迎套接字,来自不同客户端的所有数据都通过这个套接字进入服务器。对于TCP服务器,有一个欢迎套接字,每次客户端启动到服务器的连接时,都会创建一个新的套接字。因此,为了支持n个同时连接,服务器需要n个套接字。
R27.对于2.7节所描述的运行在TCP之上的客户-服务器应用程序,服务器程序为什么必须先于客户程序运行?对于运行在UDP之上的客户-服务器应用程序,客户程序为什么可以先于服务器程序运行?
对于TCP应用程序,一旦客户端被执行,它就会尝试启动与服务器的TCP连接。如果TCP服务器没有运行,则客户选将无法建立连接。对于UDP应用程序,客户端在执行时不会立即启动连接(或尝试与UDP服务器通信)。
Pl.是非判断题。
a.假设用户请求由某些文本和3幅图像组成的Wb页面。对于这个页面,客户将发送一个请求报文并接收4个响应报文。
b.两个不同的Web页面(例如,www.mit.edu/research.html及www.mit.edu/students.html)可以通过同一个持续连接发送。
c.在浏览器和初始服务器之间使用非持续连接的话,一个TCP报文段是可能携带两个不同的HTTP服务请求报文的。
d在HTTP响应报文中的Dae;首部指出了该响应中对象最后一次修改的时间。
e.HTTP响应报文决不会具有空的报文体。
FTFFF
解析:
a.建立连接以后,只需要发送和相应一个报文
b.三次握手之后,根地址相同
c.不能
d.Data:服务器从文件系统中检索到这个对象,插入响应报文,并且发送该响应报文的时间
e.可以有
P2.阅读有关FTP的RFC959。列出这个RFC所支持的所有客户命令。
可以在这里阅读到这个协议的中文版本
命令:
USER
PASS
ACCT
CWD
CDUP
SMNT
REIN
QUIT
PORT
PASV
TYPE
STRU
P3.考虑一个HTTP客户要获取一个给定URL的Web页面。该HTTP服务器的IP地址开始时并不知道。在这种情况下,除了HTTP外,还需要什么运输层和应用层协议?
应用层协议:DNS和HTTP传输层协议;UDP用于DNS;TCP用于HTTP
P4.题目信息略
a)文档请求是ittp://gaia.c5…mass.edu/cs453/index.htamt。host:字段表示服务器的名称,/cs 45a/index.ntm表示文件名。
b)浏览器正在运行HTTP1.1版本,就像第一对之前所指出的那样。
c)湖览器正在请求持久连接,如连接所示:保持活动。
d)这是刁钻的问题。此信息不包含在任何地方的HTTP消息中。因此,仅看HTTP消息的交换就无法区分这一点。您需要从P数据报(承载承载HTTPGET请求的TCP段)中获得信息来回答这个问跳。
e)Moz111A/5.6。服务器需要浏览器类型信息将同一对象的不同版本发送到不同类型的浏览器。
P5 题目信息仍然略
a)状态代码200和知语ok表示服务器能第找到文档成功。答复于2008年3月7日星期二提供格林威治标准时间12.39.45。
b)上一次修改ndex.htm文相是在2005年12月10日星期六18:2746格林尼治时间。
c)返回的文档中有3874个字节。
d)返回文件的前五个字节是:!医生服务器同息持久连接,如-onnection:Keep ALive字段所示
P6.获取HTTP/1.1规范(RFC2616)。回答下面问题:
a.解释在客户和服务器之间用于指示关闭持续连接的信令机制。客户、服务器或两者都能发送信令通知连接关闭了吗?
b.HTTP提供了什么加密服务?
c.一个客户能够与一个给定的服务器打开3条或更多条并发连接吗?
d.如果一个服务器或一个客户检测到连接已经空闲一段时间,该服务器或客户可以关闭两者之间的传输连接。一侧开始关闭连接而另一侧通过该连接传输数据是可能的吗?请解释。
a)在RFC2616的第8节中讨论了持久连接(这一点的真正目的问题是让你检素并阅读一份RFC(第8.1.2和8.1.21节)rc表示客户机或服务器可以向另一个表明它是将关闭永久连振。它谱过包含连接令牌来实一关闭“在p请求回复的连接头字段中。
b)hp不提供任何加密服务。
c)(来自ICzb10》一使用持久道接的客户端应该限相而时维护则地定服务器的连接。单用户客户端与任何服务器或代理服务器的连接不应超过z个。
d)是。(来自RFC2616r在根务器决定关·空连接的同时,客户端可能已经开始发送新请求。从服务描的角度来看,连接是在空闲时关闭的,但从客户端的角度来看,请求正在进行中。“
P7.假定你在浏览器中点击一条超链接获得Web页面。相关联的URL的IP地址没有缓存在本地主机上,因此必须使用DNS lookup以获得该IP地址。如果主机从DNS得到IP地址之前已经访问了n个DNS服务器;相继产生的RTT依次为RTT,…、RTT.。进一步假定与链路相关的Web页面只包含一个对象,即由少量的HTML文本组成。令RTT。表示本地主机和包含对象的服务器之间的RTT值。假定该对象传输时间为零,则从客户点击该超链接到它接收到该对象需要多长时间?
RTT(往返延时)
RTT0是两个过程,也就是建立握手和请求接收的过程,所以,总响应时间为2*RTT0+RTT1+RTT2+……+RTTn
P8.参照习题7,假定在同一服务器上某HTML文件引用了8个非常小的对象。忽略发送时间,在下列情况下需要多长时间:
a.没有并行TCP连接的非持续HTTP。
b.配置有5个井行连接的非持续HTTP。
c.持续HTTP。
a.18*RTT0+RTT1+……+RTTn
b.6*RTT0+RTT1+……+RTTn
需要接收一次html才知道引用的是哪八个对象
c.
持续连接,流水线,并行
3*RTT0+RTT1+……+RTTn
持续连接,没有流水线,没有并行
10*RTT0+RTT1+……+RTTn
P9.考虑图2-12,其中有一个机构的网络和因特网相连。假定对象的平均长度为850000比特,从这个机构网的浏览器到初始服务器的平均请求率是每秒16个请求。还假定从接入链路的因特网一侧的路由器转发一个HTTP请求开始,到接收到其响应的平均时间是3秒(参见2.2.5节)。将总的平均响应时间建模为平均接入时延(即从因特网路由器到机构路由器的时延)和平均因特网时延之和。对于平均接人时延,使用△(1-A8),式中A是跨越接入链路发送一个对象的平均时间,B是对象对该接入链路的平均到达率。
a.求出总的平均响应时间。
b.现在假定在这个机构LAN中安装了一个缓存器。假定命中率为0.4,求出总的响应时间。
15Mbps信息隐藏在图片里…
a)3.6s
b)平均响应时间从3.6s缩短到1.24s
P10.考虑一条10米短链路,某发送方经过它能够以150bps速率双向传输。假定包含数据的分组是100000比特长,仅包含控制(如ACK或握手)的分组是200比特长。假定N个并行连接每个都获得1/N的链路带宽。现在考虑HTTP协议,并且假定每个下载对象是100Kb长,这些初始下载对象包含10个来自相同发送方的引用对象。在这种情况下,经非持续HTTP的并行实例的并行下载有意义吗?现在考虑持续HTTP。你期待这比非持续的情况有很大增益吗?评价并解释你的答案。
比较有难度,单独记录了出来
Pll.考虑在前一个习题中引出的情况。现在假定该链路由Bob和4个其他用户所共享。Bob使用非持续HTTP的并行实例,而其他4个用户使用无并行下载的非持续HTTP。
a.Bob的并行连接能够帮助他更快地得到Web页面吗?
b.如果所有5个用户打开5个非持续HTTP井行实例,那么Bob的并行连接仍将是有益的吗?为什么?
a)是的,因为Bob有更多的连接,他可以获得更大的带宽份额
b)是的,这很内卷。
Pl2.写一一个简单的TCP程序,使服务器接收来自客户的行并将其打印在服务器的标准输出上。(可以通过修改本书中的TCPServer.py程序实现上述任务。)编译并执行你的程序。在另一台有浏览器的机器上,设置浏览器的代理服务器为你正在运行服务器程序的机器,同时适当地配置端口号。这时你的浏览器向服务器发送GET请求报文,你的服务器应当在其标准输出上显示该报文。使用这个平台来确定你的浏览器是否对本地缓存的对象产生了条件GET报文。
py2
from socket import *
serverPort=12000
serverSocket=socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('',serverPort))
serverSocket.listen(1)
connectionSocket, addr = serverSocket.accept()
while(True):
sentence = connectionSocket.recv(1024)
print 'From Server:', sentence, '\n'
serverSocket.close()
P13.SMTP中的MAILFROM与该邮件报文自身中的From:之间有什么不同?
来自:inSMTP的邮件是从SMTP客户端发送的标识发件人的邮件将邮件消息发送到SMTP服务器。
发件人:在邮件消息本身不是SMTP邮件,而不是邮件正文中的一行。
Pl4.SMTP是怎样标识一个报文体结束的?HTTP是怎样做的呢?HTTP能够使用与SMTP标识一个报文体结束相同的方法吗?试解释。
SMTP使用仅包含句点的行来标记邮件正文的结束。hp使用“内容长度标题字段”来表示消息正文的长度。
不,HTTP不能使用SMTP使用的方法,因为HTTP消息可以是二进制数据,而在SMTP中,消息主体必须是7位的ASC格式。
P15题干略
MTA代表邮件传输代理。主机将消息发送给MTA。然后,该消息遵循一系列MTA以到达接收者的邮件阅读器。我们看到这个垃圾邮件递循一个MTA链。诚实的MTA应该报告它收到滴息的位置。请注意,在此消息中,“asusus-4b96([58.88.21.177])“不报告它收到电子邮件的值置。由于我们假定只有发端人是不诚实的,所以“asusus-4b96([58.88.21.177])“必须是发起人。
P16题干略
uidl缩写唯一ID列表”。当POP3客户端发出uil命令时,服务器用唯一的消息ID来响应于在该服务器中存在的所有消息,用户的邮箱。此命令对“下载并保持“是有用的。通过维护文件该列表列出了在较早的会话期间检索到的消息,客户端可以使用Urel用于确定服务器上的哪些消息已被看到的命令。
P17题略,POP不学习
Pl8.如题:
a.什么是whois 数据库?
b.使用因特网上的各种whais数据库,获得两台DNS服务器的名字。指出你使用的是哪个whois数据库。
c.你本地机器上使用nslookup向3台DNS服务器发送DNS查询:你的本地DNS服务器和两台你在(b)中发现的DNS服务器。尝试对类型A、NS和MX报告进行查询。总结你的发现。
d.使用nslookup找出一台具有多个P地址的Web服务器。你所在的机构(学校或公司)的Web服务器具有多个IP地址吗?
c.使用ARIN whois数据库,确定你所在大学使用的IP地址范围。
d.描述一个攻击者在发动攻击前,能够怎样利用whois数据库和slookup工其来执行对一个机构的侦察。
讨论为什么whois数据库应当为公众所用。
a)对于给定的域名输入(如ccn.com)、IP地址或网络管理员名称,whois数据库可用于定位相应的注册服务器、whois服务器、DNS服务器等。
b)NS4.YAH00.cOM,网址:ww.Registry er.com;NS1.MSFT.NET,网址:ww.Registry er.com。
d)攻击者可以使⽤whois数据库和nslookup⼯具来确定⽬标机构的IP地址范围、DNS服务器地址等。
通过分析攻击数据包的源地址,受害者可以使⽤whois获取攻击所来⾃的域的信息,并可能通知源域的管理员。
Pl9.在本习题中,我们使用在Unix和Linux主机上可用的dig工具来探索DNS服务器的等级结构。图2-21讲过,在DNS等级结构中较高的DNS服务器授权对该等级结构中较低DNS服务器的DNS请求,这是通过向DNS客户发送回那台较低层次的DNS服务器的名字来实现的。先阅读dg的帮助页,再回答下列问题。
a.从一台根DNS服务器(从根服务器[a-m].root-server.net之一)开始,通过使用dg得到你所在系的Web服务器的IP地址,发起一系列查询。显示回答你的查询的授权链中的DNS服务器的名字列表。
b.对几个流行Web站点如oogle.com、yahoo.com或amaxon.com,重复上一小题。
P20.假定你能够访问所在系的本地DNS服务器中的缓存。你能够提出一种方法来粗略地确定在你所在系的用户中最为流行的Web服务器(你所在系以外)吗?解释原因。
我们可以定期拍摄本地DNS服务器中DNS缓存的快照。该组织在DNS缓存中出现最频紧的Web服务器是最流行的服务器。这是因为如果更多的用户对Web服务器感兴趣,那么DNS请求就会对此感兴趣服务器更频繁地由用户发送。因此,该Web服务器将出现在DNS中级存更频繁。
P21.假设你所在系具有一台用于系里所有计算机的本地DNS服务器。你是普通用户(即你不是网络/系统管理员)。你能够确定是否在几秒钟前从你系里的一台计算机可能访问过一台外部Web站点吗?
解释原因。
是的,我们可以在本地DNS服务器中使用DIG查询该网站。例如,digCNN.com将返回查找C/N.com的查询时间。如果CNN.com几秒钟前刚刚被访问,那么CNN.con的条目将缓存在本地DNS缓存中,因此查询时间为0毫秒。否则,查询时间很长。
P22.考虑向N个对等方分发F=15Cb的一个文件。该服务器具有,=30Mbps的上载速率,每个对等方具有d=2Mbps的下载速率和上载速率u。对于N=10、100和1000并且a=300kbps、700kbps和2Mbps,对于N和a的每种组合绘制出确定最小分发时间的图表。需要分别针对客户-服务器分发和P2P分发两种情况制作。
P23.考虑使用一种客户一服务器体系结构向N个对等方分发一个F比特的文件。假定一种流体模型,即某服务器能够同时向多个对等方传输,只要组合速率不超过4,,则以不同的速率向每个对等方传输。
a假定4/Nsd….定义一个具有NF/u,分发时间的分发方案。
b.假定u,./N=d….定义一个具有F/d…分发时间的分发方案。
c.得出最小分发时间通常是由maxiNF/u,,F/d.所决定的结论。
P25.考虑在一个有N个活跃对等方的覆盖网络中,每对对等方有一条活跃的TCP连接。此外,假定该TCP连接通过总共M台路由器。在对应的覆盖网络中,有多少结点和边?
在覆盖网络中存在N个节点。n(n-1)/2边。
P26.假定Bob加入BifTorent,但他不希想向任何其他对等方上载任何数据(因此称为搭便车)。
a.Bob声称他能够收到由该社区共享的某文件的完整副本。Bob所言是可能的吗?为什么?
b.Bob进一步声称他还能够更为有效地进行他的“搭便车”,方法是利用所在系的计算机实验室中的多台计算机(具有不同的IP地址)。他怎样才能做到这些呢?
是的。只要有足够的对等人留在蜂群中,他的第一个索赔就可能是可能的。足够长的时间。Bob可以总是通过乐观的非阻塞来接收数据对等端。
他的第二次索赔也是真实的。他可以在每个主机上运行客户端,让每个客户端”免费乘坐并将收集的chunks从不同的主机合并为单个文件。他甚至可以编写一个小的调度程序,使不同的主机请求不同的chunks文件。这实际上是P2P网络中的一种Sybl攻击。
P27.考虑一个具有N个视频版本(具有N个不同的速率和质量)和N个音频版本(具有N个不同的速率和质量)的DASH系统。假设我们想允许播放者在任何时间选择N个视频版本和N个音频版本之一:
a.如果我们生成音频与视频混合的文件,因此服务器在任何时间仅发送一个媒体流,该服务器将需要存储多少个文件(每个文件有一个不同的URL)?
b如果该服务器分别发送音频流和视频流并且与客户同步这些流,该服务器将需要存储多少个文件?
a.n*n
b.2N
P28.在一台主机上安装编译TCPClient和UDPClient Python程序,在另一台主机上安装编译TCPServer和UDPServer程序。
a.假设你在运行TCPServer之前运行TCPClient,将发生什么现象?为什么?
b.假设你在运行UDPServer 之前运行UDPClient,将发生什么现象?为什么?
c.如果你对客户端和服务器端使用了不同的端口,将发生什么现象?
a.什么也没发生…
b.正常运行,因为没有发送建立连接的请求
c.如果使用不同的端口号,则客户端将尝试建立TCP连接错误的进程或不存在的进程。会出现错误。
P29.假定在UDPClient.py中在创建套接字后增加了下面一行:
clientSocket,bind((””,5432))有必要修改UDPServer.py吗?UDPClient和UDPServer中的套接字端口号是多少?在变化之前它们是多少?
实际上,这样做(服务端不进行硬编码)的好处就是无论客户端(程序员或者操作系统)分配了哪个端口号,都能够进行连接。
P30.你能够配置浏览器以打开对某Web站点的多个并行连接吗?有大量的并行TCP连接的优点和缺点是什么?
是的,您可以配置许多浏览器来打开到网站的多个同时连接。优点是您可以更快地下载该文件。缺点是您可能占用了带宽,从而大大减缓了共享相同物理链接的其他用户的下载速度。
P31.我们已经看到因特网TCP套接字将数据处理为字节流,而UDP套接字识别报文边界。面向字节APl与显式识别和维护应用程序定义的报文边界的API相比,试给出一个优点和一个缺点。
对于远程登录(telnet和ssh)之类的应用程序,面向字节流的协议是非常自然的,因为应用程序中没有消息边界的概念。当用户键入一个字符时,我们只需将该字符放到TCP连接中即可。在其他应用程序中,我们可能会发送一系列在它们之间具有固有边界的消息。例如,当一个SMTP邮件服务器向另一个SMTP邮件服务器连续发送多个电子邮件时。由于TCP没有指示边界的机制,所以应用程序必须自己添加指示,以便应用程序的接收方能够区分一条消息和另一条消息。如果将每条消息放入一个不同的udp段中,则接收端将能够在没有任何指示的情况下,区分各种讯息、申请。
也就是说不同的协议用于不同的情况。但是py3的tcp已经不能够使用字符流传输了…
P32.什么是Apache Web服务器?它值多少钱?它当前有多少功能?为回答这个问题,你也许要看一下维基百科。
要创建Web服务器,我们需要在主机上送行Web服务器软件。许多供应商出售Web服务器软件。然而,当今最流行的Web服务器软件是Apache,它是开放的源并且是自由的。多年来,它一直受到开源社区的高度优化。