配色: 字号:
问题6-12~17
2013-01-27 | 阅:  转:  |  分享 
  
(问题6-12:电话通信和电子邮件通信都是使用客户服务器工作方式吗?

答:因特网的电子邮件通信当然是使用客户服务器工作方式。传统的电话通信虽然有主叫方和被叫方(主叫方先拨号,被叫方摘机,然后通话),但通信的工作方式并不是客户服务器方式。然而新型的IP电话(使用H.323协议或SIP协议)则使用了客户服务器的工作方式。

(问题6-13:在电子邮件中,“信封”、“内容”、“首部”、“主体”是个什么样的关系?

答:在电子邮件中,信封和我们通过邮局寄信所用的信封的作用是很相似的。邮局投递信件是靠信封上的信息,但邮局并不阅读信封中所放入的信件(这里所说的信件就相当于电子邮件中的“内容”)。电子邮件也是这样。邮件服务器依据电子邮件信封上的信息将邮件传送到目的邮件服务器。电子邮件中的“内容”也称为“报文”(message),它就是用户所写的信件。

但电子邮件是美国人发明的,因此信件的格式也是要按照他们的习惯来写。我们知道,中国人写信时,其格式较为简单,即先写收信人的称呼,再写正文,最后是发信人的署名和日期。但美国人写信时,在一开始还要有信头(heading)和封内地址(insideaddress)这两部分。信头是发信人的地址和日期,而封内地址是收信人的地址。因此电子邮件也必须有这两项。这两项合起来就叫做电子邮件的内容部分中的“首部”,而首部后面才是内容中的主体部分。人们容易搞不清楚的就是:信封上明明已经有了收信人和发信人的地址,为什么在内容部分还要重复这一部分(还要有一个首部)?其实,这只是西方国家的写信习惯和我们的有些不同而已。实际上,人家这样做是有道理的。当邮寄过程中出现信封受到损伤而看不清收信人的地址时,邮局还可从信封中的信件的“封内地址”查明收信人的地址。但中国人的信件当信封上的地址看不清时,一般从信封里面的信件内容就无法查出收信人的地址。

总之,电子邮件=信封+内容

内容=首部+主体

用户只须将内容写好,交给用户代理。用户代理自动地从内容的首部中提取有关信息,写到信封上,交给邮件服务器发送邮件。



(问题6-14:能否更加细致地介绍一下base64编码?

答:在这里只对教材上的内容做一些补充,更详细的描述见[RFC2045]。

首先要对二进制比特流进行24位到32位的变换(每6位变换为8位的字符),如下图所示。



图中的R64表示进行base64变换。Base64变换又称为Radix-64编码,因此在上图中的蓝色在方框中记为R64。

Base64变换的编码表是一个包含65个字符的ASCII码子集,如下表所示。

6位值 字符编码 6位值 字符编码 6位值 字符编码 6位值 字符编码 0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (填充) = 15 P 32 g 49 x 16 Q 33 h 50 y 待编码的每一个6位组的值一定在0~63之间,因此一定可以按照上表变换为某一个可打印的ASCII码,这样就可以用电子邮件传送了。到接收端再进行反变换就可恢复出原来二进制比特流。

不难看出,经过base64编码后,增加了33.3%的开销(6位变换成为8位),或者说,在网络上传送的数据中,有25%的开销(8位中的2位是进行编码变换时增加的)。

(问题6-15:能否归纳一下HTTP协议的主要特点?

答:下面归纳了HTTP1.0的主要特点。

(1)应用层协议HTTP是一个应用层协议。HTTP使用可靠的、面向连接的运输协议TCP,但HTTP协议本身并不提供可靠性机制和重传机制。

(2)请求/响应一旦建立了运输连接(这常常称为建立了会话),浏览器端就向万维网服务器端发送HTTP请求,服务器收到请求后给出HTTP响应。

(3)无状态“无状态”(stateless)就是指每一个HTTP请求都是独立的。万维网服务器不保存过去的请求和过去的会话记录。这就是说,同一个用户再次访问同一个服务器时,只要服务器没有进行内容的更新,服务器的响应就给出和以前被访问时相同的响应。服务器不记录曾经访问过的用户,也不记录某个用户访问过多少次。

(4)双向传输这在大多数情况下都是这样的:浏览器发出HTTP请求,服务器给出HTTP响应。

(5)能力协商HTTP允许浏览器和服务器协商一些细节,如在传送数据时使用的字符集。发送端可指明它所能够提供的能力(capability),而接收端也能够指明它所能够接受的能力。

(6)支持高速缓存为了缩短响应时间,浏览器可将读取的万维网页面暂存在其高速缓存中。如果用户再次请求该页面,则HTTP允许浏览器可以对服务器进行查询,以便确定自从上次缓存了该页面后页面的内容是否有变化。

(7)支持代理服务器HTTP允许在浏览器和服务器之间存在一个代理服务器。代理服务器将万维网页面存放在自己的缓存中,并且从这缓存中取出页面回答浏览器的请求。

(问题6-16:HTTP1.1协议比起HTTP1.0协议有哪些主要的变化?

答:HTTP1.1的最主要的变化就是改变了HTTP1.0的“无状态”这一特点。

我们知道,当用户访问某个网站时,假定该网页上有一个文本文件和15个图形文件,那么用户要和这个万维网服务器建立总共16次的TCP连接才能将这16个文件全部下载完。浏览器在和服务器建立好一个TCP连接后,就发送HTTP请求,然后得到服务器的HTTP响应,传送过来一个文件(文字的或图形的),然后就自动断开TCP连接了。当点击下一个链接时,又重复以上的步骤。

HTTP1.1将HTTP1.0的“无状态”这个特点改变了。HTTP1.1采用持续连接(persistentconnection)作为默认的工作方式。当浏览器和某一万维网服务器建立TCP连接后,就可以在同一个TCP连接上传送多次的HTTP请求和HTTP响应。当浏览器或服务器要关闭TCP连接时,就通知对方,然后再关闭连接。

持续连接最大的好处就是减小了开销。减小了建立TCP连接的次数就减小了服务器的负担,缩短了响应时间,同时也减小了下层网络的开销,减少了缓存所占用的存储空间,也减少了使用的CPU时间。使用持续连接的浏览器还可以进一步优化对网站的访问。这就是采用流水线式的请求,即可以连续地发送请求,而不需要在收到响应后才发送下一个请求。当需要在某个页面读取多个图像文件而下层互连网络的吞吐量和时延都很大时,采用流水线式的请求就格外显得优点突出。

使用持续连接是要付出代价的。在建立TCP连接后,不论是浏览器还是服务器都不知道这个特定的TCP连接将要持续多长时间。这对服务器来说是个很主要的问题,因为可能有几千个浏览器要和这个服务器建立连接。我们应当注意到,只有连接的双方都关闭连接,TCP连接才会完全关闭。服务器端应当设置一个超时计时器,以便当一定时间内没有收到请求就可关闭这个连接。客户端和服务器端都必须注意对方是否关闭了TCP连接。若发现对方关闭了连接,那么自己这一端也应当随即关闭这个TCP连接。

(问题6-17:抽象语法、传送语法的主要区别是什么?数据类型、编码以及编码规则的区别又是什么?

答:下面是根据OSI的定义对上述名词的解释。本教材没有介绍OSI的表示层,而TCP/IP的体系结构里也没有表示层。因此在使用TCP/IP协议族的因特网中,通信的发送端和接收端必须在其应用层协议中解决数据格式的问题。如果在发送端和接收端使用不同的数据格式,那么至少有一方应当完成数据格式的转换问题。



抽象语法 抽象语法描绘了与任何表示数据的编码技术无关的通用数据结构。

抽象语法使得人们能够定义数据类型,并指明这些类型的值。 传送语法 当数据在两个表示层实体之间传输时,这些数据的实际比特模式表示方法就是传送语法。 数据类型 一组具名值。一个数据类型可能是简单的,它通过指明一组值来定义;也可能是结构化的,它的定义中使用了其他一些类型。 编码 用来表示数据值的完整的八位组序列。 编码规则 从一个语法到另一个语法的映射规约。具体地说,编码规则从算法上定义了任何一组由抽象语法定义的数据值在传送语法中的表示。 抽象语法只描述数据的结构形式,与具体的编码格式无关,同时也不涉及这些数据结构在计算机内如何存放。下图以两个端系统通过网络交换数据为例来说明上述的一些概念。



运输实体所看到的数据是应用实体交下来的、根据一定的编码规则进行编码的二进制代码。但应用实体看到的则是一个用户观点的数据,通常是结构化的信息,如文本文档或可显示的图象信息。用户主要关心的是数据的语义。因此应用实体必须提供数据的表示方法,使得这些数据能够转换为二进制值。也就是说,应用实体必须考虑到数据的语法。



应用程序应用程序使用抽象语法运输实体运输实体使用传送语法编码规则编码规则用户局部映射局部存储局部映射局部存储用户表示映射用户用户表示映射使用抽象语法使用抽象语法24位4字符=32位R64R64R64R64
献花(0)
+1
(本文系liyi039首藏)