(问题6-1:我们经常说“两个计算机进行通信”。我们应当怎样理解这句话?
答:这个问题一定要弄清楚。
“两个计算机进行通信”是很常用的说法,我们的教材中也常常使用这种说法。这种说法的好处就是简单、方便,但是,我们必须深刻理解这句话的含义。
严格来讲,计算机之间的通信,归根到底,是计算机中运行的程序和另一个计算机(或本计算机)中运行的程序进行通信。也就是说,是计算机中的进程和另一个进程(另一个计算机中的或本计算机中的)进行通信。进程就是运行着的程序。但为简单起见,大家就常常说成是“两个计算机进行通信”。这样的简便说法并没有什么错误,但我们应当对这种说法有个正确的理解。
有时,将“计算机”和“计算机中的进程”区分开来是很必要的。因为有时在一个计算机中同时运行多个进程,而每一个进程都在和其他计算机的进程进行通信。如果笼统地说一个计算机同时和多个计算机进行通信,那么就比较含糊。在这种情况下,用进程之间的通信就容易把问题讲清楚。
当然,连接在因特网上的计算机中的进程在进行通信时,还要使用TCP/IP协议族。否则进程之间是无法进行通信的。
(问题6-2:能否用你的PC机进行一个简单的实验:一个计算机同时和5个计算机进行通信?
答:这很容易实现。
用你的PC机上网(用什么具体手段都行)。连续打开PC机中的浏览器程序5次,这样就在PC机的屏幕上出现5个浏览器的窗口。然后分别在不同的浏览器窗口访问5个不同的网站,并进行文件下载。这时你可以看见5个不同的文件同时从不同的远地服务器下载到你的PC机的硬盘中。
你的PC机只有一个CPU。从微观上看,一个CPU在同一个时间只能做一件事。CPU执行计算机指令的速度非常快,因此它可以轮流处理PC机中的5个进程和远地的另外5个进程之间的通信任务。但从我们眼睛看屏幕所得到的宏观感觉,好像CPU是同时处理这5件任务。
(问题6-3:因特网中计算机程序之间的通信和电信网中的电话通信有何相同或不同之处?
答:相同之处:
电信网:允许一个电话机向另一个电话机发出呼叫请求(即拨打另一个电话机的号码)。
因特网:允许一个程序向另一个程序发出呼叫请求(即主动发出要求通信的请求)。
不同之处:
电信网:两个电话机都处于不通话状态时(即都处于挂机状态时),主叫方摘机并拨号进行呼叫,被叫方听到铃响并摘机后,双方开始进行通话。也就是说,主叫方通过自己的振铃可以使被叫方的电话机变为通话状态(当然要通过被叫人的摘机动作)。
因特网:当被叫程序处于运行状态时,主叫程序发出通信请求,被叫程序同意进行通信后,双方程序开始进行通信。但如果被叫程序没有处在运行状态,则主叫程序无法使被叫程序变为运行状态。在这种情况下,双方的通信是不可能的。因此,计算机程序之间的通信的一个很重要的特点就是:被叫程序必须始终处于运行状态。通常将主叫程序称为客户程序,而被叫程序称为服务器程序。
(问题6-4:连接在因特网上的主机名必须是唯一的吗?
答:这是肯定的。因特网不允许有两个(或更多的)主机具有同样的主机名。
但是必须注意,这里所说的“主机名”指的是主机的“全名”(fullname),它也就是“主机的域名”,而不是指一个主机的“本地名字”。
例如,很多单位的网站服务器主机的本地名字都愿意取为www。这主要是为了便于记忆,使人一看见这www,就知道这个计算机是用来存放该单位网页信息的,使得人们可以利用HTTP协议来访问这个网站。所以当我们看到下面这样的网址:
http://www.google.com
就应当很明确,在整个因特网范围是唯一的主机名就是www.google.com。
但应注意,主机名有两种,即全名和本地名字(localname)。虽然主机的全名在因特网上必须是唯一的,但主机的本地名字只需要在本级域名下是唯一的即可。例如,“.google”是在顶级域名“.com”下注册的二级域名。www是这个主机在二级域名“.google”下的本地名字。全世界有很多的主机使用相同的本地名字(例如,www或mail),但这并不会产生混乱。我们可以看出,如果google将其网站主机的本地名字取为其他的名字xyz,那么它的网址就要变成:
http://xyz.google.com
但这样做并没有什么好处,只能给别人增加一些记忆上的麻烦。
我们还要指出,虽然主机名在因特网中必须是唯一的,IP地址在因特网中也必须是唯一的,但一个主机名却可以对应多个IP地址。关于这个问题请参考问题6-7。
(问题6-5:在因特网中通过域名系统查找某个主机的IP地址,和在电话系统中通过114查号台查找某个单位的电话号码相比,有何异同之处?
答:相同之处:
电话系统:在电话机上只能拨打被叫用户的电话号码才能进行通信。114查号台将被叫用户名字转换为电话号码告诉主叫用户。
因特网:在IP数据报上必须填入目的主机的IP地址才能发送出去。DNS域名系统将目的主机名字解析为(即转换为)32位的IP地址返回给源主机。
不同之处:
电话系统:必须由主叫用户拨打114才能进行查号。如果要查找非本市的电话号码,则必须拨打长途电话。例如,要在南京查找北京的民航售票处的电话号码,则南京的114台无法给你回答。你在南京必须拨打010-114(长途电话)进行查询。
因特网:只要源主机上的应用程序遇到目的主机名需要转换为目的主机的IP地址,就由源主机自动向域名服务器发出DNS查询报文。不管最后将该主机的域名解析出来的DNS服务器距离源主机有多远,它都能自动将解析的结果最后返回给源主机。所有这些复杂的查询过程对用户来说都是透明的。用户感觉不到这些域名解析过程。
有一种方法可以使用户体会到域名解析是需要一些时间的。在使用浏览器访问某个远地网站时,将URL中的域名换成为它的点分十进制IP地址,看找到这个网站时是否要节省一些时间。
(问题6-6:一个单位的DNS服务器可以采用集中式的一个DNS服务器,也可以采用分布式的多个DNS服务器。哪一种方案更好些?
答:这要从多方面来考虑,没有简单的答案。
从解析域名的速度来看,在集中式的一个DNS服务器上进行域名解析应当比在多个分布式的DNS服务器要快些。但从管理的角度看,分层次的多级结构和分布式的DNS服务器要方便得多。从计算速度方面来考虑,一个服务器若负荷过重就会使计算速度变慢。一个小单位如果很少发生同时请求域名的解析,那么一个单个的域名服务器就能很好地工作。
(问题6-7:对同一个域名向DNS服务器发出好几次的DNS请求报文后,每一次得到IP地址都不一样。这可能吗?
答:可能。
例如,对域名www.yahoo.com进行解析就会出现这样的结果。产生这样的结果是为了使Yahoo这个万维网服务器的负载得到平衡(因为每天访问这个站点的次数非常多)。因此这个网站就设有好几个计算机,每一个计算机都运行同样的服务器软件。这些计算机的IP地址当然都是不一样的,但它们的域名却是相同的。这样,第一个访问该网址的就得到第一个计算机的IP地址,而第二个访问者就得到第二个计算机的IP地址,等等。这样可使每一个计算机的负荷不会太大。
(问题6-8:当使用56kb/s的调制解调器上网时,经常会发现数据下载的速率远远小于56kb/s。这是什么原因?
答:从你点击的万维网服务器到你的PC机的整个路径上,只要有一个地方出现瓶颈,数据传输的速率就要下降。
可能出现瓶颈的地方很多,如:
你所点击的万维网服务器现在访问它的用户太多,该服务器忙不过来。
路径上某个地方出现网络拥塞,在路由器的缓存队列中排队的时间过长。
你使用的ISP容量不够大,上网的用户太多,ISP忙不过来。
(问题6-9:ARP和DNS是否有些相似?它们有何区别?
答:如果说ARP和DNS有相似之处的地方,那么这仅仅是在形式上都是主机发送出请求,然后从相应的服务器收到所需的回答。另外一点是这两个协议经常是连在一起使用的。但重要的是:这两个协议是完全不同的。
DNS是应用层协议,用来请求域名服务器将连接在因特网上的某个主机的域名解析为32位的IP地址。在大多数情况下,本地的域名服务器很可能还不知道所请求的主机的IP地址,于是还要继续寻找其他的域名服务器。这样很可能要在因特网上寻找多次才能得到所需的结果,最后将结果发送给原来发出请求的主机(见教材的6.1.3节)。
ARP是网络层协议(当然也有人认为它属于链路层),它采用广播方式请求将连接在本以太网上的某个主机或路由器的32位的IP地址解析为48位的以太网硬件地址。
(问题6-10:“网关”和“路由器”是否为同义语?
答:在问题4-2中我们已经讲过,当使用在“IP网关”或“IP路由器”时,它们是同义语,只不过“网关”是旧的名词。在比较老的RFC文档中经常使用的是“网关”,实际上就是“路由器”。
但在某些情况下,则“网关”并不等于“路由器”,例如在电子邮件系统中的“e-mailgateway”就属于一种应用网关,它不是路由器。
(问题6-11:我们常在文献上看到“远程登录”这样的名词。它的英文名字应当是remotelog-in还是Telnet?
答:这个名词有一个特点,就是一个中文名词对应了几个英文名词。
在1994年公布的《计算机科学技术名词》[MINGCI94]中规定:
log-in的标准译名是“注册”,又称“登录”。
因此“远程登录”应当可以理解为“remotelog-in”。
然而在1997年7月18日发布的“全国科学技术名词审定委员会推荐名(一)”中,将Telnet的中文推荐名规定为“远程登录”,并在其注释中注明:
“指因特网(Internet)的远程登录服务,它允许一个用户登录到一个远程计算机系统中,就好像用户端直接与远程计算机相连一样。”
在Comer的“InternetworkingwithTCP/IP”Vol.1中的第25章的标题是:
Applications:RemoteLogin(TELNET,Rlogin)
这表明“RemoteLogin”和“TELNET”以及简化写法“Rlogin”都具有相同的意思。但在Comer一书中指出了TELNET是远程登录服务的TCP/IP标准协议。因此当我们看到“远程登录”时,应当联系上下文,看它指的是一种服务,还是一种协议。应当记得,我们多次强调过,服务和协议是很不一样的。
|
|