Windows+网络编程技术(二)Windows_网络编程技术(二)_.pdf





《Windows+网络编程技术(二)Windows_网络编程技术(二)_.pdf》由会员分享,可在线阅读,更多相关《Windows+网络编程技术(二)Windows_网络编程技术(二)_.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下载第2章 重 定 向 器Wi n d o w s使应用程序能通过操作系统内建的文件系统服务在网络上通信。有时候,我们将之称为“网络操作系统”(N O S)能力。本章准备利用Windows 95、Windows 98、Wi n d o w sN T、Windows 2000和Windows CE等均含有的Wi n d o w s文件系统组件,向大家展示这些网络连接能力。本章的目的是让大家理解这些能力与邮槽和命名管道连网技术的关系。邮槽和命名管道连网技术分别是第3章和第4章的主题。若应用程序希望访问本地系统中的文件,需要依赖操作系统来满足 I/O(输入输出)请求。我们通常把它称为“本地 I/O”
2、。例如,在一个应用程序打开或关闭文件时,需要由操作系统来决定如何访问包含了指定文件内容的一个设备。找到设备后,I/O请求会被转发给一个本地设备驱动程序。通过网络来访问一个设备也同样。然而,I/O请求必须通过网络转发给对应的远程设备。我们将其称为“I/O重定向”(I/O Redirection)。例如,Wi n d o w s允许我们将一个本地磁盘标识符(如 E:)映射或重定向到远程计算机上的一个目录共享入口。应用程序若指出自己需要使用E:时,操作系统便会将 I/O请求自动重定向至一个设备,那个设备叫作“重定向器”(R e d i r e c t o r)。重定向器会建立到远程计算机的一个网络信
3、道,以便访问指定的远程目录。随后,应用程序可自由使用一些常规的文件系统 A P I函数,比如R e a d F i l e(读文件)和Wr i t e F i l e(写文件)等。虽然实际是通过网络访问的,但表面上却与访问本地文件无异。本章着重讲解了如何通过重定向器将普通的 I/O请求“重定向”到远程设备。本章内容对于以后的学习异常重要,重定向机制是邮槽和命名管道技术的基础。首先,我们打算解释如何通过网络,使用“多U N C提供者”(Multiple UNC Provider,MUP)资源定位符,通过“通用命名规范”(Universal Naming Convention,UNC)来引用远程文
4、件。随后,我们讲解了M U P如何调用一个网络提供者,从而揭示出怎样通过一个重定向器,在“服务器消息块”(Server Message Block,SMB)协议的帮助下,在不同的计算机之间建立数据通信。最后,我们探讨了网络安全方面的一些问题。使用基本的文件 I/O操作,通过网络来访问文件时,这些安全问题是必须考虑到的。2.1 通用命名规范“U N C路径”?为网络文件及设备的访问建立了一套统一的规范。它最大的特点便是不必指定或引用一个已映射到远程文件系统的本地驱动器字母。这一点非常重要,因为应用程序可变得“与驱动器字母无关”。在复杂的网络环境中,应用程序不必对此有任何顾忌。同引用本地驱动器字母
5、的方法相比,U N C名字要优越得多,因为在访问共享资源时,不必担心用光有限的驱动器字母的问题。另外,驱动器字母的分配也和具体的用户有着密切的联系如果进程在你的用户环境中不能运行,便无法利用由你规定的驱动器字母映射关系。U N C名字完全解决了这些问题,它的格式如下:服务器 共享名 路径第一部分是 服务器,必须以两个反斜杠开头,紧跟着一个服务器名字。服务器的名字代表着网络中的一台远程服务器,我们想访问的远程文件便位于其中。在 U N C名字中,第二部分是 共享名,它对应着远程服务器上的一个“共享入口”或者“共享位置”。所谓“共享位置”,实际就是文件系统中的一个目录(包括根目录),表示可共享的资
6、源便放在这个位置下面,是其他机器获取共享资源的“入口”。而第三部分 路径?对应的是共享位置下的某个具体目录(或子目录)。举个例子来说,假定现在有一台名为 M y s e r v e r的服务器,在其本地硬盘驱动器D:上设置了一个共享目录,名为 D:M y f i l e s C o o l M u s i c,并将这一长串名字简化为“M y s h a r e”这个易记的“共享名”。现在,假定该共享目录下含有一个名为 S a m p l e.m p 3文件。那么,假如网络中其他任何一台机器想引用(访问)这个 M P 3音乐文件,只需像下面这样指定它的U N C名字即可:M y s e r v
7、e r M y s h a r e S a m p l e.m p 3可以看出,与其将一个本地驱动器映射到共享目录 M y s h a r e,还不如通过网络用U N C名字来直接引用一个文件因为所有机器使用的都是同样的U N C名字!若通过U N C名字在网络中引用文件,应用程序便不必关心通过网络建立连接的细节,这显然是一种非常出色的设计。使用 U N C名字,系统便可非常轻松地定位网络服务器共享目录以及文件路径。网络通信的所有细节都是由网络提供者的“重定向器”来负责控制的,本章稍后即会对此进行详细论述。完成了第 3和第4章的学习之后,大家便会知道邮槽和命名管道技术非常依赖U N C名字。在
8、图2-1中,我们展示了Wi n d o w s环境下在网络操作系统上建立 U N C连接所需的一些常规组件。此图也显示了数据流在客户机与服务器的N O S组件之间逐渐推进的情况。以前面的U N C路径 M y s e r v e r M y s h a r e S a m p l e.m p 3为基础,本章将对每一个组件进行细致讲解,并阐述通过一个网络来打开这个文件的过程。图2-1 重定向器的各个组件46计计第一部分附传统网络API下载客户户户机应用程序本地I/O重定向器服务器服务MUP重定向器网络提供者传送驱动程序传送驱动程序网络接口卡网络接口卡服户务户器2.2 多UNC提供者M U P如图
9、2-1是一种资源定位器,负责选择具体的网络提供者,来满足 U N C连接请求。所谓“网络提供者”(Network Provider),其实就是一种服务,可通过网络硬件访问位于一台远程计算机上的资源(如文件和打印机)。M U P需要通过一个网络提供者,在以 U N C名字为基础的所有文件及打印机I/O请求上提供服务,建立通信关系。Windows NT、Windows 2000、Windows 95以及Windows 98均支持多个网络提供者的安装。举个例子来说,?Wi n d o w s平台支持一个名为“M i c r o s o f t网络用户”(Client for MicrosoftN e
10、 t w o r k)的网络提供者。当然,亦可安装除微软以外的其他网络提供者,比如 N o v e l l公司的Novell Client v3.01 for Windows 95/98等等。换句话说,一次可能有多个网络提供者为一个U N C请求提供服务。但必须注意的是,Windows CE目前仅支持一个网络提供者:“M i c r o s o f t网络用户!”M U P的基本任务便是决定具体由哪个网络提供者来满足一个 U N C请求。为作出这个决定,M U P需将请求中提到的 U N C名字发给已经安装好的每一个提供者(以并行方式)。若某个网络提供者表明自己能够提供 U N C名字牵涉到的
11、那一种服务,M U P便会将请求中剩余的部分发给它。如果有多个提供者都表示能够服务一个 U N C请求,M U P便会根据优先级,挑选出最恰当的一个提供者。网络提供者的优先级是由各个提供者在系统内安装的顺序决定的。在Windows NT、Windows 2000、Windows 95和Windows 98中,要想对这种优先级进行改动,可考虑对注册表(R e g i s t r y)中一个名为P r o v i d e r O r d e r的键值进行修改。它的位置在:H K E Y _ L O C A L _ M A C H I N E S Y E T E M C u r r e n t C
12、o n t r o l S e t C o n t r o l N e t w o r k P r o v i d e r O r d e r根据优先级,已安装的各个网络提供者会按照先后顺序排列。由于 Windows CE只有一个网络提供者,所以根本就不会用 M U P来解析U N C名字。相反,U N C请求会直接进入那个唯一的提供者。2.3 网络提供者如前所述,网络提供者实际只是一种服务,通过网络硬件来访问位于远程计算机上的共享资源,比如文件和打印机等等。事实上,这正是网络操作系统的一种核心功能。网络提供者具备的最主要的功能之一便是将本地磁盘标识符(如 E:)重定向至远程机器上的一个磁盘目
13、录。作为提供者,它必须能为 U N C连接请求提供服务。在 Wi n d o w s环境中,网络提供者需要向操作系统展示出一个重定向器,从而做到这一点。Wi n d o w s最有特色的一个网络提供者称为“M i c r o s o f t网络用户”,以前叫作“M i c r o s o f t网络提供者”(M S N P)。打开前述的注册表目录,排在第一名的往往便是“M S N P 3 2”。通过M S N P,可在Windows NT 4、Windows 2000、Windows 95、Windows 98和Windows CE间自由地通信。但要注意的是,Windows CE不支持多个网络
14、提供者,只提供了对 M S N P的内建客第2章计重 定 向 器计计47下载户端支持。2.4 重定向器简介“重定向器”由网络提供者展示给用于接收和处理远程 I/O服务请求的操作系统。要做到这一点,它需要格式化服务请求消息,再将其发给远程计算机的重定向器服务器服务。远程机器的重定向器服务器服务收到这个请求之后,?会以发出本地I/O请求的方式,来满足这一请求。由于重定向器需要为较高级的服务(如 M U P)提供I/O服务,所以会在应用程序面前,将网络层的工作细节隐藏起来。这样一来,应用程序便毋需为重定向器提供协议特有的一些参数。因此,我们认为网络提供者是“与协议无关”的。换言之,在几乎任何网络配置
15、中,应用程序都能正常运作。M S N P提供了一个特殊的重定向器,可直接与网络传送层和 N e t B I O S打交道,以便在客户机与服务器之间建立通信。本书第 1章讨论的NetBIOS API函数提供了一系列编程接口,正好可以做相同的事情。由 M S N P提供的这个重定向器有一个通俗的名字,叫作“L A N管理器重定向器”(LAN Manager Redirector)。之所以叫这个名字,是由于当初设计它的时候,针对的便是老式的Microsoft LAN Manager软件,以便为 M S-D O S应用程序提供网络操作系统能力(欲了解N e t B I O S编程接口的详情,请参阅第
16、1章)。N e t B I O S接口可通过大量网络协议进行通信。这便使得M S N P重定向器具有了“与协议无关”的特性,即应用程序不必关注某种网络协议的具体工作细节!若在自己的程序中使用了 M S N P重定向器,便能通过T C P/I P、N e t B E U I甚至I P X/S P X进行通信。显然,这是一种非常有价值的特性,因为无论网络在物理上是如何构成的,程序都可以正常地实现通信。然而,我们仍应留意一个重要的问题。两个应用程序要想通过网络相互通信,那么对两个工作站来说,必须有一种协议是“通用”的。换言之,两者必须至少安装同一种通信协议。举个例子来说,假定工作站 A只安装了T C
17、 P/I P,而工作站B只安装了I P X。此时,尽管M S N P重定向器是“与协议无关”的,但仍会对此一筹莫展,无法通过一个网络在这两个工作站之间建立正常的通信。M S N P重定向器与其他工作站通信时,需要向对方的“重定向器服务器”服务发送消息。这些消息采用一种固定的结构形式,称为 S M B。至于重定向器具体如何收发消息,要由“服务器消息块文件共享”(Server Message Block File Sharing)协议来决定,或简称S M B协议。2.5 服务器消息块S M B协议最早是由微软及 I n t e l于8 0年代末期联合开发成功的。当时的设计宗旨是让远程的文件系统能由
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 网络 编程 技术 Windows_

限制150内