问题1:连接在因特网上的主机域名必须是唯一的吗?
答:这是肯定的。因特网不允许有两个(或更多的)主机具有同样的主机域名。
里所说的“主机名”指的是主机的“全名”(full name),它也就是“主机的域名”,而不是指一个主机的“本地名字”。
例如,很多单位的网站服务器主机的本地名字都愿意取为www。这主要是为了便于记忆,使人一看见这www,就知道这个计算机是用来存放该单位网页信息的,使得人们可以利用HTTP协议来访问这个网站。所以当我们看到下面这样的网址:
http://www.google.com
就应当很明确,在整个因特网范围是唯一的主机名就是www.google.com。
但应注意,主机名有两种,即全名和本地名字(local name)。虽然主机的全名在因特网上必须是唯一的,但主机的本地名字只需要在本级域名下是唯一的即可。例如,“.google”是在顶级域名“.com”下注册的二级域名。www是这个主机在二级域名“.google”下的本地名字。全世界有很多的主机使用相同的本地名字(例如,www或mail),但这并不会产生混乱。我们可以看出,如果google将其网站主机的本地名字取为其他的名字xyz,那么它的网址就要变成:
http://xyz.google.com
但这样做并没有什么好处,只能给别人增加一些记忆上的麻烦。
我们还要指出,虽然主机名在因特网中必须是唯一的,IP地址在因特网中也必须是唯一的,但一个主机名却可以对应多个IP地址。
问题2:对同一个域名向DNS服务器发出好几次的DNS请求报文后,每一次得到IP地址都不一样。这可能吗?
答:可能。
例如,对域名www.sina.com.cn进行解析就会出现这样的结果。产生这样的结果是为了使sina这个万维网服务器的负载得到平衡(每天访问这个站点的次数非常多)。因此这个网站就设有好几个计算机,每一个计算机都运行同样的服务器软件。这些计算机的IP地址都是不一样的,但它们的域名却是相同的。这样,每一个访问该网址的就可能得到一个不同的计算机的IP地址,这样可使每一个服务器的负荷不会太大。
问题3:ARP和DNS是否有些相似?它们有何区别?
答:它们都是解决一个地址到另一个地址之间的解释.都是主机发送出请求,然后从相应的服务器或主机收到所需的回答。
这两个协议是完全不同的。
DNS是应用层协议,用来请求域名服务器将连接在因特网上的某个主机的域名解析为32位的IP地址。在大多数情况下,本地的域名服务器很可能还不知道所请求的主机的IP地址,于是还要继续寻找其他的域名服务器。这样很可能要在因特网上寻找多次才能得到所需的结果,最后将结果发送给原来发出请求的主机。
ARP是网络层协议(当然也有人认为它属于链路层),它采用广播方式请求将连接在本以太网上的某个主机或路由器的32位的IP地址解析为48位的以太网硬件地址。
ARP和DNS均有自己的安全问题?
问题4: 关于base64编码?
答:简述如下,更详细的描述见[RFC 2045]。
首先要对二进制比特流进行24位到32位的变换(每6位变换为8位的字符),如下图所示。
图中的R64表示进行base64变换。Base64变换又称为Radix-64编码,因此在上图中的蓝色在方框中记为R64。
Base64变换的编码表是一个包含65个字符的ASCII码子集,如下表所示。
待编码的每一个6 位组的值一定在0 ~ 63之间,因此一定可以按照上表变换为某一个可打印的ASCII码,这样就可以用电子邮件传送了。到接收端再进行反变换就可恢复出原来二进制比特流。
不难看出,经过base64编码后,增加了33.3%的开销(6位变换成为8位),或者说,在网络上传送的数据中,有25%的开销(8位中的2位是进行编码变换时增加的)。
问题5:能否归纳一下HTTP协议的主要特点?
答:下面归纳了HTTP 1.0的主要特点。
(1) 应用层协议 HTTP是一个应用层协议。HTTP使用可靠的、面向连接的运输协议TCP,但HTTP协议本身并不提供可靠性机制和重传机制。
(2) 请求/响应 一旦建立了运输连接(这常常称为建立了会话),浏览器端就向万维网服务器端发送HTTP请求,服务器收到请求后给出HTTP响应。
(3) 无状态 “无状态”(stateless)就是指每一个HTTP请求都是独立的。万维网服务器不保存过去的请求和过去的会话记录。这就是说,同一个用户再次访问同一个服务器时,只要服务器没有进行内容的更新,服务器的响应就给出和以前被访问时相同的响应。服务器不记录曾经访问过的用户,也不记录某个用户访问过多少次。
(4) 双向传输 这在大多数情况下都是这样的:浏览器发出HTTP请求,服务器给出HTTP响应。
(5) 能力协商 HTTP允许浏览器和服务器协商一些细节,如在传送数据时使用的字符集。发送端可指明它所能够提供的能力(capability),而接收端也能够指明它所能够接受的能力。
(6) 支持高速缓存 为了缩短响应时间,浏览器可将读取的万维网页面暂存在其高速缓存中。如果用户再次请求该页面,则HTTP允许浏览器可以对服务器进行查询,以便确定自从上次缓存了该页面后页面的内容是否有变化。
(7) 支持代理服务器 HTTP允许在浏览器和服务器之间存在一个代理服务器。代理服务器将万维网页面存放在自己的缓存中,并且从这缓存中取出页面回答浏览器的请求。