您的位置:首页 > 理论基础 > 计算机网络

第30章 其他的TCP/IP应用程序

2018-11-11 22:09 2631 查看

30.1 引言

本章中我们描述了另外一些很多实现都支持的TCP/IP应用程序。有些很简单,易于全面了解(Finger和Whois),而另一个则相当复杂(X窗口系统)。我们只提供了这个复杂应用程序的一个简短的概述,集中介绍其对TCP/IP协议的使用。

另外,我们提供一些Internet上资源发现工具的概述。包括一组在Internet上导航的工具,可以帮助寻找一些我们不知道确切位置和名字的信息。

30.2 Finger协议

Finger协议返回一个指定主机上一个或多个用户的信息。它常被用来检查某个人是否登录了,或者搞清一个人的登录名以便给他发送邮件。RFC 1288 [Zimmerman 1991]指明了这个协议。

由于两个原因,很多站点不支持一个Finger服务器。第一,Finger服务器的一个早期版本中的一个编程错误被1988年声名狼藉的Internet蠕虫病毒利用,作为进入点之一(RFC11 35 [Reynolds 1989]和[Curry 1992]更详细地描述了蠕虫)。第二,Finger协议有可能会泄露一些很多管理员认为是有关用户的私有信息(登录名、电话号码,他们上次的登录时间,等等)。RFC 1288的第3节给出了这个有关服务安全方面的细节。

从一个协议的角度来看,Finger服务器有一个知名的端口79。客户对这个端口做一个主动打开,然后发送一个在线的请求。服务器处理这个请求,把输出发送回去,然后关闭连接。查询和响应都是采用NVT ASCII,类似于我们在FTP和SMTP协议中所看到的。

尽管大多数的Unix用户都是使用finger(1)客户来访问Finger服务器,我们将从使用Telnet客户与Finger服务器直接相连开始,看看客户发出的每一条在线命令。如果客户的查询是一个空行(在NVT ASCII中,空行以一个回车符CR跟着一个换行符LF来传输),它就是一个请求查询所有在线用户信息的命令。

off ice和office phone的空白输出字段是从用户的口令(password)文件记录的选项字段中取出的(在这个例子中,这两个字段的值没有提供)。

服务器必须在最后做一个主动的关闭操作,因为服务器返回的是一个可变长度的信息。当客户收到文件结束字符时,就知道服务器的输出结束了。

364TCP/IP详解,卷1:协议

当一个系统完全禁止了Finger服务时,因为没有进程被动打开端口79,所以客户的主动打开将从服务器接收到一个RST。

一些站点在端口79提供了一个服务器,但服务器只是向客户输出信息,而不理睬客户的任何请求:

对一个组织来说,另一种可能就是实现一个防火墙网关:在组织内部和Internet之间的一个路由器,负责过滤(也就是扔掉)特定的IP数据报([Cheswick and Bellovin 1994]详细讨论了防火墙网关)。防火墙网关可以被配置成扔掉从Internet进来的这样一些数据报,这些数据报是目的端口为79的TCP报文段。

对于Finger的服务器和Unix的Finger客户还有其他的实现。欲知详情,请参考RFC 1288和有关finger(1)的手册。

RFC 1288指出提供了Finger服务器的、具有TCP/IP连接的自动售货机应该对客户的空行请求响应以现有产品的列表。对于由一个名字组成的客户请求,它们应该响应以一个数目或者与这个产品有关的可用项的列表。

30.3 Whois协议

Whois协议是另一种信息服务。尽管任何站点都可以提供一个Whois服务器,在InterNIC站点(rs.internic.net)的服务器是最常使用的。这个服务器维护着所有的DNS域和很多连接在Internet上的系统的系统管理员的信息(另一个可用的服务器在nic.ddn.mil,不过只包含了有关MILNET的信息)。不幸的是信息有可能是过期的或不完整的。RFC 954 [Harrenstein, Stahl, and Feinler 1985]说明了Whois服务。

第30章 其他的TCP/IP应用程序365

名字后面的括号中的三个大写字母跟着一个数字,(WRS28),是个人的NI句柄。下一个查询包含一个感叹号和一个NIC句柄,用于获得有关这个人的进一步信息。

很多有关Internet变量的其他信息也可以查找。例如,请求net 140.252将返回有关B类地址140.252的信息。

白页

使用SMTP的VRFY命令、Finger协议以及Whois协议在Internet上查找用户类似于使用电话号码簿的白页查找一个人的电话号码。在目前阶段,诸如上述的工具已经广泛可用了,为了提高这种服务的研究正在进行当中。

[Schwartz and Tsirigotis 1991]包含了正在Internet上试验的不同白页服务的其他信息。一个叫作Netfind的特别工具可以通过使用Telent,以netfind登录到bruno.cs.colorado或者ds.internic.net站点来访问。

RFC 1309 [Weider, Reynolds, and Heker 1992]提供了对OSI目录服务X.500的概述,并且比较了它与当前的Internet技术(Finger和Whois)的相同点和不同点。

366TCP/IP详解,卷1:协议

图30-1 使用一个显示器的三个X客户

图30-2将图30-1重新画,但强调了客户与X服务器进程间的通信,X服务器进程轮流管理着每个窗口。图中没有显示的是X服务器管理键盘和鼠标。

图30-2 使用一个显示器的三个客户

单个服务器处理多个客户请求的这种设计与我们在18.11节描述的正常的TCP并发服务器设计不同。例如,每次一个新的TCP连接请求到达,FTP和Telnet服务器都会产生一个新的进程,因此,每个客户都和一个不同的服务器进程通信。然而,对于X,运行在同一台主机或者在不同主机上的所有客户都和同一个服务器通信。

通过X客户和它的服务器之间的TCP连接可以交换很多数据。传输数据的数目依赖于特定的应用程序设计。例如,如果我们运行Xclock客户,Xclock在服务器的一个窗口中显示客户机当前的时间和日期。如果我们指定每隔1秒修改一次时间,那么每隔1秒,就会有一个X报文通过TCP连接从客户传输到服务器。如果我们运行X终端模拟程序,Xterm,我们敲的每一个键都会变成一个32字节的X报文(加上标准的IP和TCP首部就是72字节),在相反方向上的回送字符将是一个更大的X报文。[Droms and Dyksen 1990]检查了不同的X客户与一个特定的服务器之间的TCP流量。

30.5.2 LBX:低带宽X

为了将X用于局域网,对X协议使用的编码进行了优化,因为在局域网中花在对数据进行编码和解码的时间比最小化传输的数据更重要。尽管这种推断对以太网是适用的,但对于低速的串行线,如SLIP和PPP链路,就存在问题了(2.4节和2.6节)。

定义一个称为低带宽X(LBX)的标准的工作正在进行当中,它使用了下面的技术来减少网络流量的数目:快速缓存、只发送与前面分组的不同部分以及压缩技术。标准的规范和在第6版的X窗口系统中的一个样本实现应该会在1994年的早些时候完成。

30.6 小结

我们介绍的前两个应用,Finger和Whois,是用来获得用户信息的。Finger客户查询一个服务器,经常是为了找到某个人的登录名(以便给他们发电子邮件),或者去看一下某个人是否登录了。Whois客户一般与InterNIC运行的服务器联系,查找关于一个人、机构、域或网络号的信息。

我们简单描述了其他一些Internet资源发现服务:Archie、WAIS、Gopher、Veronica和WWW,帮助我们在Internet上定位文件和文档。还有一些资源发现工具正在被开发。

本章的最后简单浏览了另一个TCP/IP的重要客户程序,X窗口系统。我们看到X服务器管理一个显示器上的多个窗口,处理客户与其窗口的通信。每个客户都有它自己的与服务器的TCP连接,一个单个的服务器为一个给定的显示器管理着所有的客户。通过Xscope程序,我们看到怎样把一个程序放在一个客户与服务器之间,输出有关两者之间交换的报文的信息。

习题

  1. 试用Whois找到网络号为88的A类网络的拥有者。
  2. 试用Whois找到管理whitehouse.gov域的DNS服务器。这个应答与DNS给出的答案相匹配吗?
  3. 在图30-3中,你认为xscope进程必须和X服务器运行在同一台主机上吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: