TCP/IP详解 卷1:协议 学习笔记 第三十章 其他的TCP/IP应用程序
Finger协议返回一个指定主机上一个或多个用户的信息,它常用来检查某个人是否登录了,或搞清一个人的登录名以便给他发邮件。
很多站点不支持Finger协议的原因:
1.Finger服务器的一个早期版本中的一个编程错误被1988年Internet蠕虫病毒利用,作为进入点之一。
2.Finger协议可能会泄露用户的私有信息(登录名、电话号码、上次登录时间等)。
Finger服务器的知名端口为79。Finger查询和响应都是采用NVT ASCII。
一般Unix下使用finger客户端来访问Finger服务器,也可用Telnet与Finger服务器直接相连,空行(NVT ASCII中,空行以一个CR接LF来传输)表示所有在线用户信息:
上图中的Office和Office Phone字段是从用户的口令文件(password)记录的选项字段中取出的,上例中都为空。
Finger服务器必须在最后做一个主动的关闭,因为服务器返回的是长度可变的信息,用于表示服务器的输出结束了。
当Finger客户只请求一个用户时,服务器就只响应该用户信息:
连接一个Finger服务被禁止的服务器,因为没有进程被动打开端口79,所以客户的主动打开会收到一个RST:
一些站点在端口79提供了一个服务器,但服务器只向客户输出信息,而不理睬客户的任何请求:
对一个组织来说,可配置防火墙网关,以扔掉从Internet进来的,目的端口是79的TCP报文段。
RFC 1288指出提供了Finger服务器的、具有TCP/IP连接的自动售货机应该对客户的空行请求响应现有产品的列表,而对由一个名字组成的客户请求,应响应与这个产品有关的可用项的列表。
Whois协议是另一种信息服务。任何站点都能提供Whois服务器,但在InterNIC(Internet Network Information Center,国际互联网络信息中心)站点上的Whois服务器最常使用,这个服务器维护着所有的DNS域和很多连接在Internet上的系统的系统管理员的信息。Whois返回的信息可能是过期的或不完整的。
Whois协议是用来查询互联网资源的注册用户或受让人的数据库的查询和响应协议。
Whois服务器有一个知名TCP端口43,请求和应答都以NVT ASCII来传输。
当NIC在1993年改变为InterNIC时,Whois服务器的站点也从nic.dn.mil移到了rs.internic.net,很多厂商仍然装载了采用nic.ddn.mil版本的whois客户程序,为了和正确的服务器连接,可能需要选项-h rs.internic.net
。也可以使用Telnet登录rs.internic.net站点,登录名用whois。
使用whois查询stevens的信息:
上图中,人名后面的括号中内容是个人NIC句柄,可使用一个感叹号和一个NIC句柄查询这个人的更多信息:
其他有关Internet的信息也可查找,如请求一个IP将返回有关IP的信息。它可以查询域名、IP地址块或自治系统等互联网资源的注册用户或受让人,但也用于更广泛的其他信息。
使用SMTP的VRFY命令、Finger协议、Whois协议查找用户类似使用电话号码簿查找一个人的电话号码。
Archie服务器提供了很多FTP服务器的目录,可登录Archie服务器搜索名字中包含了指定正则表达式的文件,输出是与文件名匹配的FTP服务器列表。有很多Archie服务器,可用Telnet以登录名archie登录ds.internic.net,执行命令servers,这个命令的输出是所有Archie服务器及其地址的列表。
WAIS(Wide Area Information Servers,广域信息服务系统)可以查找包含一个关键字的文件(文件内容中包含此关键字,而非文件名)或数据库。可使用Telnet以登录名wais登录quake.think.com站点来使用WAIS服务。
Gopher是Archie、WAIS、匿名FTP等资源服务的一个菜单驱动的前端程序,它使用简单,因为不管使用了哪个资源服务,用户界面都相同。可用Telnet以登录名gopher登录is.internic.net站点来使用Gopher。
Veronica是一个Gopher标题的索引,可搜索Gopher服务器中的资源标题。
X窗口系统简称X,是一个客户-服务器应用程序,可使得多个应用使用由一个服务器管理的位映射显示器(用像素阵列表示图像的显示器)。服务器用来管理显示器、键盘、鼠标,有些场合,服务器是与其他主机上客户通信的一个专门的硬件(如X终端)。客户可与服务器在同一主机上,或不同主机上(此时一般使用TCP与服务器通信,也可使用诸如DECNET等其他协议)。
X有时用于一个独立的工作站,客户与服务器位于同一台主机,不涉及任何网络,使用进程间通信机制通信。
X需要一个可靠的、双向的流协议,不适用于不可靠的协议。客户与服务器的通信是由在连接上交换的8bit字节组成。
Unix系统中,当X客户和X服务器在同一台主机上时,一般使用Unix的本地协议通信,而不是用TCP协议,这样更快,如果还是使用TCP协议,那么在IP层以下发生了数据的环回,这意味着所有TCP和IP处理都发生了。
一般来说,上图中有一个客户是一个窗口管理程序,它有权限管理显示器上窗口的布局。
对于Telnet和FTP应用,我们把客户看作是在键盘和显示器上的交互式用户;对于X,我们把键盘和显示器端看做是服务器。
当X终端或工作站引导时,一般启动X服务器,服务器会监听一个TCP端口,在端口6000+n上做一个被动打开,n是显示器号,大多Unix服务器也使用/tmp/.X11-unix/Xn创建一个Unix系统socket,其中n还是显示器号。
客户主动连接服务器上的端口6000+n,连接上后,客户通过TCP连接向服务器发送请求(如创建一个窗口),服务器返回应答。服务器也发送事件给客户,如鼠标按下、键盘按下、窗口暴露、窗口大小改变等。
下图强调了客户与X服务器进程间通信:
TCP并发服务器每次收到一个新的TCP连接请求时,可能会产生一个新的进程,每个客户和一个不同的服务器进程通信。对于X,所有客户都是和同一服务器进程通信的。
X客户和服务器之间交换的数据依赖于特定的程序,如运行Xclock,Xclock在服务器的一个窗口中显示客户机当前的时间和日期,如果我们指定每隔1秒修改一次时间,那么每隔1秒就会有一个X报文通过TCP从客户传输到服务器;如果我们运行的是Xterm,我们敲的每个键都会变成一个32字节的X报文(加上标准的IP和TCP首部是72字节),相反方向上的回送字符是一个更大的X报文。
Xscope是一个检查X客户与服务器之间交换的信息的程序,大多X窗口实现都提供这个程序:
要使用Xscope监视X连接,首先在服务器主机上启动xscope进程,xscope默认在端口6001上监听TCP的连接请求,然后客户连接时指定显示器号为1而不是0,使得客户与xcope相连,当客户的连接请求到达时,xscope创建与端口6000上的真正服务器的一个TCP连接,在客户和服务器之间复制所有的数据,同时生成请求与应答的一个可读的描述。
在主机svr4上运行xclock客户,同时在sun主机上启动xscope。svr4上启动xclock的命令如下:
以上命令以数字形式显示时间和日期,同时更新间隔设为5秒。
运行xscope时使用-q选项以产生最小的输出:
前两个报文是客户与服务器之间标准的连接建立过程,第一个报文是客户标识它的字节顺序以及它希望的服务器版本,第二个报文中服务器响应有关自己的信息。
第三个报文包含了两个客户请求,第一个请求在服务器上创建一个客户可以画的图形上下文,第二个请求想从服务器上得到一个属性。服务器在第四个报文中给出了两个请求的应答。
第五个和第六个报文形成了返回一个atom(具有唯一整型标识符的属性,可降低网络传输量)的单个请求。服务器在第七个报文返回了这个atom。
为了将X用于局域网,对X协议使用的编码进行了优化,因为在局域网中花在对数据解码和编码的时间短比传输数据量小更重要,尽管这对于以太网是适用的,但对于低速串行线,如SLIP链路、PPP链路,就有问题了。
低带宽X(LBX)的标准使用以下技术减少网络流量:快速缓存、只发送与前面分组不同部分、压缩技术。
xscope可以与服务器运行在不同主机上,此时xscope可用TCP端口6000作为监听端口。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)