数据通信协议的制作方法

文档序号:7951113阅读:242来源:国知局
专利名称:数据通信协议的制作方法
数据通信协议本申请是申请人于2005年12月9日提交的、申请号为“200510127997. 8”的、发明名称为“数据通信协议”的发明专利申请的分案申请。有关申请的交叉参考本申请要求于2005年5月25日提交的美国临时专利申请第60/685,008号的优先权,并且该专利申请引用在此作为参考。本申请涉及同时提交的、被转让于本发明的受让
"Data Communication Coordination with Sequence Numbers" ( ^JMJ1K 序号的数据通信协调)的、代理人档案号为5660/313764的共同待批的美国专利申请,该专利申请引用在此作为参考。
背景技术
许多诸如SMB (服务器信息块)协议的如今依然在使用的数据通信协议是在计算资源非常不同的时期所开发的,例如,那时网络带宽通常是有限的并且存储器非常珍贵。结果,当在当代网络中使用时,这样的协议可能限制总体性能。例如,由于是在存储器有限的情况下设计的,所以使用了小的缓冲器大小,以致需要更多的往返行程以传递大量数据。此外,现有的SMB协议具有随着时间而变得明显的其他限制。例如,现有的SMB协议容易受到服务拒绝攻击;协议的设计使其难于对抗这些攻击。同样地,确保分组安全的方法是麻烦的。并且,当前没有用于执行类似服务质量的操作的机制,因为例如受信任的客户端获得与不被信任的客户端相同的服务器资源。虽然SMB协议的各种修订版或方言(dialect)已经随着时间而被开发,但是那些方言中的每个方言实质上是基于补丁的方式,该方式调节多个部分以添加某些额外的特征。如此,可扩展性不直接。总而言之,尽管现有的SMB修订版依然是经常使用的以及有价值的协议,但当与当代网络资源结合使用时是较不理想的。

发明内容
简而言之,本发明的各种方面针对数据通信协议,客户端和服务器使用该数据通信协议用于诸如文件共享之类的通信。客户端发送标识一组客户端理解的协议方言的协商分组至服务器。分组以一种格式存在以使在不要求另一请求的情况下,不能通过第二数据通信协议通信的服务器可表明应该使用第一通信协议。如果服务器能够通过第二数据通信协议通信,那么它将这样回应。客户端将调用通过由服务器表明的相应协议处理与服务器通信的驱动。在一示例实现中,第二通信协议是SMB 2.0或更高级的版本。协议的其他方面和增强可包括具有附加的其他上下文数据的创建命令,以及包括多个相关命令或无关命令的复合命令。还有其他方面和增强包括涉及请求在独立数据信道上的数据传送的多信道命令、确保安全连接被建立的签名能力验证请求、以及响应于请求从服务器传送扩展的错误数据的能力。当服务器接收到复合请求时,服务器确定该复合请求是否包括无关命令或相关命令。当复合请求包括无关命令时,每个请求被处理成单独请求,否则,当复合请求包括相关命令时,每个请求被顺序地处理。当相关命令包括创建/打开命令时,来自创建/打开命令的文件处理被用于在服务器上的每个后续的相关命令,例如,不需要等待来自客户端的处理返回。其他优点将从以下结合附图的详细的描述中变得明显。


本发明仅作为例子而被说明,不被附图所限制,其中相同的编号表明相同的元素, 其中图1显示了本发明的各方面可结合于其中的一般计算环境的示例性例子。图2是表示了根据本发明的各方面的、客户端和服务器可在其中进行通信的示例网络环境。图3是一表示根据本发明的各方面的在客户端和服务器之间的示例协商和会话建立的时序图。图4是表示根据本发明的各方面的、包括具有创建上下文的创建命令的各种命令的时序图。图5是表示根据本发明的各方面的、在客户端和服务器之间的复合请求和可能的响应的时序图。图6是根据本发明的各方面、在多信道上客户端-服务器通信的表示。图7是根据本发明的各方面的安全连接的验证的表示。图8是根据本发明的各方面的、使用基于符号连接的例子的扩展的错误返回信息的表示。
具体实施例方式示例性操作环境图1示出了可在其中实现本发明的一合适的计算系统环境100的示例。计算系统环境100只是一合适的计算环境的一例,而不是要提出对本发明使用或功能的范围进行限制。计算系统环境100也不应解释成对于在示例计算系统环境100中所示出的任一组件或其组合有任何依赖或需求。本发明用多个其它通用或专用计算系统环境或配置是可运行的。可以适用于本发明使用的公知的计算系统、环境、和/或配置的实例包括,但不局限于,个人计算机、服务器计算机、手持设备或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、 可编程消费电子产品、网络PC、小型机、大型计算机、包括任何诸如以上系统或设备的分布计算环境等、诸如打印服务器或打印机本身的各种网络应用设备中的一个、以及NAS存储设备等。本发明可以在诸如由计算机执行的程序模块的计算机可执行指令的一般上下文中被描述。一般地,程序模块包括完成特定任务或执行特定抽象数据类型的例行程序、程序、对象、组件、数据结构等。本发明也可以在分布式计算环境中实践,其中通过连接到计算网络的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和/或远程计算机存储介质中。
参见图1,用于实现本发明的示例系统包括采用计算机110形式的通用计算设备。 计算机110的组件可包括,但不局限于,处理单元120、系统存储器130、以及将包括系统存储器在内的各种系统元件耦合至处理单元120的系统总线121。上述系统总线121可以是多种总线体系结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构的任一种的局部总线。举例来说,而非限制,此类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型工业标准体系结构(EISA)总线、视频电子标准技术协会(VESA)局部总线、和也被称为Mezzanine总线的外围部件互连 (PCI)总线。计算机110通常包括各种计算机可读介质。计算机可读介质可以是任何计算机 110能够访问的可用介质,包括易失性的和非易失性的介质、可移动的和不可移动的介质。 举例来说,而非限制,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包括能以任何方法或技术实现的易失性的和非易失性的、可移动的和不可移动的介质, 用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。计算机存储介质包括,但不局限于,RAM、R0M、EEPR0M、闪存或其它存储技术,CD-ROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或任何其它可以被用来存储想要的信息并且可以被计算机110访问的介质。通信介质通常在诸如载波或其它传送机制的已调数据信号中收录计算机可读指令、数据结构、程序模块或其它数据,也包括任何信息传递介质。术语“已调制数据信号”是指在该信号中以编码信息的方式来设置或改变其一个或多个特征的信号。举例来说,而非限制,通信介质包括诸如有线网或直接线缆连接的有线介质,和诸如声音、射频、红外线和其它无线介质的无线介质。任何以上所述的组合也可以包括在计算机可读介质的范围之内。系统存储器130包括以诸如只读存储器(ROM) 131和随机存取存储器(RAM) 132的易失性和/或非易失性存储器的形式的计算机存储介质。包含如在启动期间帮助在计算机 110内各元件之间传送信息的基本例行程序的基本输入输出系统¢10 133,通常存储在 ROM 131中。RAM 132通常包含可以被处理单元120立即访问和/或当前操作的数据和/ 或程序模块。举例来说,而非限制,图1示出了操作系统134、应用程序135、其它程序模块 136和程序数据137。计算机110还可以包括其它可移动/不可移动、易失性/非易失性的计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁性介质读出或写入不可移动、非易失性磁性介质的硬盘驱动器141、从可移动、非易失性磁性磁盘152读出或写入可移动、非易失性磁性磁盘152的磁盘驱动器151、以及从诸如CD ROM或其它光学介质的可移动、非易失性光盘156读出或写入可移动、非易失性光盘156的光盘驱动器155。其它可以使用在示例的操作环境中的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不局限于,盒式磁带、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM、等。硬盘驱动141通常通过诸如接口 140的不可移动存储接口连接到系统总线121,磁盘驱动151 和光盘驱动155通常通过诸如接口 150的可移动存储接口连接到系统总线121。以上讨论并且在图1中示出的驱动器及其它们相关的计算存储介质为计算机110 提供了计算机可读指令、数据结构、程序模块和其它数据的存储。在图1,例如,示出硬盘驱动141存储操作系统144、应用程序145、其它程序模块146、和程序数据147。需要注意的是这些组件可以和操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以和它们不同。在此对操作系统144、应用程序145、其它程序模块146和程序数据147 给出了不同的标号来说明至少它们是不同的副本。用户可以通过诸如写字板、或电子数字转换器164、麦克风163、键盘162和定位设备161把指令和信息输入到计算机110中,定位设备161通常如鼠标、轨迹球或触摸板。其它输入设备(图1中未示)可以包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常由用户输入接口 160连接到处理单元120,上述输入接口 160和系统总线121相耦合。但是上述和其它输入设备也可以由其它接口和总线结构连接到处理单元120,诸如,并行端口、游戏端口或通用串行总线 (USB)。监视器191或其它类型显示设备也可以通过诸如视频接口 190的接口连接到系统总线121。监视器191也可以和触摸屏等集成在一起。需要注意的是监视器和/或触摸屏可以物理地耦合到包含了计算机110的一外壳,诸如写字板式个人计算机。另外,诸如计算机110的计算机也可包括其它外围输出设备,诸如可以通过一输出外围设备接口 194等连接的扬声器195和打印机196。计算机110可以在网络化的环境中运行,该环境使用逻辑连接连接到一个或多个诸如远程计算机180的远程计算机。远程计算机180可以是个人计算机、服务器、路由器、 网络个人计算机、对等设备或其它公共网络节点,通常包括以上描述的和110相关的多个或全部组件,尽管在图1中只示出了存储器存储设备181。在图1中描绘的逻辑连接包括局域网(LAN) 171和广域网(WAN) 173,但是也可以包括其它网络。这样的网络环境在办公室、 企业范围的计算机网络、内联网和因特网中是普遍的。当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或通过诸如因特网的WAN 173建立通信的其他装置。调制解调器172可以是内置的或外置的,可以通过用户输入接口 160或其它适当的机制连接到系统总线121。在一网络连接的环境中,所描述的和计算机110相关的程序模块或其中的一部分可以存储在远程存储器存储设备内。举例说明,但非限制,图1示出了驻留在存储设备181上的远程应用程序185。可以理解的是所示的网络连接是示例的,也可以使用在计算机间建立通信链路的其他手段。数据通信协议在此描述的技术的各方面针对诸如SMB协议的较新版本(2. 0或以上)的数据通信协议。在此一般描述的一个示例实现中,SMB协议被用于文件数据传送。然而,如可被容易理解的那样,本发明不局限于文件数据,也不局限于在此描述的任何具体实现或示例。相反,各种实现本发明的方式都是可行的,包括用于与打印机、指定的数据管道、类属设备等的通信。如此,本发明不局限于在此使用的任何具体的基于文件的示例,而是可以一般在计算中提供益处和优点的多种方式被使用。在此描述的技术的其他各种方面针对SMB的新修订版,文件-服务器交互可基于此SMB的新修订版而构建。如可被理解的那样,提供了一种支持现有(高级)功能的更轻型的协议,并且该协议也更可扩展和更容易用新特征来更新。转到图2,显示了表示一个示例网络环境的框图,在该网络环境中客户端202与服务器204通过一个或多个通信信道通信。尽管客户端202和服务器204的功能和组件被描述成位于两个单独的计算机内,诸如图1的主计算机系统100和远程计算机系统180,但这两个计算机的组件或它们执行的功能可在一个机器上被提供、或可被分布在多个计算机上。
来自应用程序206的网络文件系统命令由客户端重定向器组件208处理,该客户端重定向器组件208与对应的公共网络模块(SRVNET)210通信,以在文件系统212上执行命令。在这样的命令被处理之前,协商客户端和服务器同意的通信协议,一般是双方都理解的最新的版本/方言。一般地,如图3所一般表示的那样,客户端202建立连接并随后与服务器204协商以最终建立会话。尽管客户端可直接对服务器表明其是SMB 2. X客户端,(其中如在此使用的,数字2. X表示相对于现有SMB 1. X版本的任何较新的版本),客户端也可通过向后兼容协商分组协商。通过这种方式,客户端也能与只具有SMB 1.X能力的服务器通信,并且是不需要当较高级协商尝试失败的情况下建立单独连接的。与此同时,用于实现每个协议的代码可被封装至它自己的独立的驱动中。在一示例实现中,客户端SMB引擎组件220提供分组至服务器(例如,服务器 204),该分组表明客户端202正在协商至少是SMB 1. 0会话。对于既说SMBl方言又说协议新的SMB2修订版的客户端202,客户端可发送传统的SMBl协商分组,但是该分组还包括表明该分组实际上请求SMB 2.X(如果可行的话)的指示。具有SMB2能力的服务器将检测到该请求,并以SMB2协商响应来响应。更具体地,为了表明客户端202具有SMB 2. X的能力, SMB 1.0协商分组包括一组方言串,这些串中的一个表明客户端也具有SMB 2. X通信的能力。如此,客户端202发送包括客户端202支持的较小的修订版号的初始协商。一个当前的修订版是0,即SMB 2.0 ;今后,客户端可要求支持方言修订版的任何子集。当服务器204接收分组时,服务器将基于它的能力做出响应。服务器204可以SMB 1.0协商响应做出回应,并带有任何1.X方言信息,或者如果服务器有SMB 2. X通信的能力, 那么它将以SMB 2. 0协商响应做出响应。具体的SMB方言修订版也可被返回,该SMB方言修订版匹配方言串中的一个,一般是在客户端202提供的方言版本中服务器204可处理的最大号的版本。为此,一旦服务器204知道客户端202说的是哪些方言修订版,那么它把这些与服务器204理解的修订版进行比较,并返回较佳的公共方言修订版(通常是最高的)。例如, 如果服务器支持方言1-8,但是客户端只支持1、2、和4,那么服务器将返回4。这提供给客户端202有关它能发送哪个命令到服务器204的清楚的理解。为了选择使用哪个方言,SRVNET 模块210实质上开始协商,把分组以相对于版本/方言从最高至最低的顺序传送至它所具有的每个SMB提供器222^22 ,直到一个SMB提供器同意基于分组内容处理该通信会话为止。此后,在该连接上的通信被传递至那个提供器,在此示例中是SMB 2.0提供器22\。在客户端处,SMB引擎组件220接收响应,并基于响应中的版本/方言信息知道使用哪个客户端SMB组件224l-224n用于与服务器通信。通过这种方式,客户端202和服务器 204商定对于给定的会话使用哪个SMB方言。需要注意的是客户端可具有多个同时运行的 SMB组件224i-224n,每个组件是不同的版本/方言,由此例如客户端可通过SMB 1. X与一个服务器通信,而同时该客户端可通过SMB 2. X与另一个服务器通信。服务器204也返回其他信息给客户端,包括告诉客户端202服务器204是否要求安全签名的安全模式。注意,先前的安全签名是可用的,然而首批少量的(例如,能力协商) 分组畅行无阻,由此攻击者可能迫使一客户端进入较低级协议,而攻击者知道该较低级协议中的弱点。安全连接通过向另一方提供签名的能力验证往返行程来操作(不管签名是否是可用的或不可用的)。图7显示了这样的请求/响应随动会话设置。其他诸如IP地址的信息可被放到分组内以使服务器实际上可验证是它而不是另一实体作出了响应。如果IPSEC 或任何其他形式的网络安全是活动的,那么签名可被关闭。服务器204可返回服务器的能力位,例如,服务器是否明白DFS(分布式文件系统),以及它是否能够LWIO (轻型10)。客户端202不处理它不理解的任何能力位,如果服务器204具有比客户端的相应版本更新的版本,这就可能发生。可在协商交换中被返回的其它信息包括服务器的唯一 ID、服务器可接受的最大读/写大小、用于更快写操作的数据偏移量提示、服务器的当前系统时间、以及用于在扩展的安全性的情况下的种子鉴别(seed authentication)会话设置处理新会话的鉴别过程,该过程可以是多往返行程事件。客户端202查询本地安全系统关于安全块(security blob)以通过网络发送,以及发送第一会话设置,填写了能力、最大大小字段、和以下描述的VcNumber。服务器204接收该块并把它给予安全系统。如果服务器204确定需要更多的信息,那么它将返回它自己的具有错误代码STATUS_ MORE_PROCESSING_REQUIRED的安全块。客户端202把该块发送回上述本地安全系统,并且该过程重复直到失败发生或鉴别成功为止。VcNumber告诉服务器204是否存在从该相同的客户端202建立的其它连接。如果 VcNumber是0,那么服务器204就假设没有从该客户端建立其它连接,并且将拆毁它所发现的任何这样的连接(假设它们是失效的)。如果VcNumber是1或更大,那么服务器204将不拆除任何现有的连接。信道(Channel)告诉服务器204该客户端202正试图与现有的会话建立另一连接。会话可由用户/计算机对来识别,该会话设置是从该用户/计算机对被接收的。信道共享相同的I^eeld/Userld/ftOcessId/FilelD信息。对于信道鉴别,鉴别块可以是询问-响应,该询问-响应在第一信道上被加密,并且通过第二信道被返回,以允许客户端202和服务器204之间相互地鉴证。在成功响应后,服务器204还会通知该客户端202它是否已经被鉴别为Guest (客人)或Null (空)用户,或被鉴别为其中的任何一个。—旦会话被建立,那么客户端202可使用以下描述的包括创建、读、写和关闭的各种命令来执行数据传送,以及执行文件锁定和目录相关的操作。如在以上提到的“利用顺序号的数据通信协调”的专利申请中描述的那样,当使用这些命令时,服务器能控制客户端对服务器资源的使用。并且,协议提供许多关于什么信息被传递以及它如何被传递的有效改进。如在图4中一般化地表示的那样,创建命令已经被扩展成允许上下文信息被附加到命令上;一般地,上下文信息包括标记于创建命令的任意的额外创建参数。例如,用于关于事务文件系统的创建命令的事务标识符可被附加。只要服务器理解该额外的上下文信息,服务器就能被告知扩展的信息,(需要注意的是服务器将忽略它们不理解的额外数据),并返回与上下文关联的信息。如可被容易地理解的那样,这在不更改协议的情况下提供了额外的功能,实质上提供了内置的可扩展性。命令ID和方言修订版号被在以下描述的新的SMB头部所提供。与UCHAR相比,头部具有用于命令字段的USHORT ;通过使用该USHORT的第一字节表示方言、以及使用较后的字节表示命令,对于现有的命令明确定义了命令表,很大一部分可用于以后扩展。一般地, 客户端可对每个方言维护一张表,该表包含对发出给定命令的功能的指针。对于具有支持的单个方言的客户端,表如以下被描述
权利要求
1.网络计算环境中的一种方法,包括把通信从客户端发送至服务器,该通信使用第一数据通信协议并包含所述客户端还支持第二数据通信协议的指示;基于接收到的所述通信如果服务器不能使用第二数据通信协议进行通信,在不要求另一请求的情况下,服务器向客户端发送根据第一数据通信协议格式化的响应;如果服务器能使用第二数据通信协议进行通信,服务器向客户端发送根据第二数据通信协议格式化的响应;以及调用使用由所述服务器用于对命令进行响应而使用的通信协议处理进一步的通信的驱动器。
2.根据权利要求1所述的方法,其特征在于,所述第二数据通信协议是服务器消息块 SMB 2. 0或更高级的版本,来自客户端的通信被另外格式化成其中标识了第二数据通信协议的SMBl分组。
3.根据权利要求1所述的方法,其特征在于,进一步包括把来自客户端的创建命令发送至服务器,所述创建命令具有附加的额外上下文数据。
4 根据权利要求1所述的方法,其特征在于,进一步包括把来自客户端的复合命令发送至服务器,所述复合命令包括多个相关命令。
5.根据权利要求1所述的方法,其特征在于,进一步包括把来自客户端的复合命令发送至服务器,所述复合命令包括多个无关命令。
6.根据权利要求1所述的方法,其特征在于,进一步包括把来自客户端的数据相关命令发送至服务器,所述数据相关命令请求数据信道上的数据。
7.根据权利要求1所述的方法,其特征在于,进一步包括把来自客户端的签名的能力验证请求发送至服务器,以确保安全连接被建立。
8.根据权利要求1所述的方法,其特征在于,进一步包括在客户端接收来自服务器的响应于请求的扩展的错误数据。
9.根据权利要求1所述的方法,其特征在于,进一步包括从客户端发送一组命令中的至少一个命令至服务器,该组命令包括具有附加的额外上下文数据的创建命令、包括多个相关命令的相关复合命令、包括多个无关命令的无关复合命令、和/或请求在单独数据信道上的数据通信的数据相关命令。
10.根据权利要求1所述的方法,其特征在于,进一步包括从客户端发送通信至另一服务器,该通信使用第一数据通信协议并包含所述客户端还支持第二数据通信协议的指示。
11.根据权利要求1所述的方法,其特征在于,所述第二数据通信协议包括多个命令,包括一组命令中的至少一个命令,该组包括多信道I/O命令,用于请求在与多信道命令在其上被发送的信道分开的数据信道上的数据通信;创建命令,包括用于附加额外上下文数据的手段;复合命令,包括多个其他命令;和/或多协议协商命令,所述多协议协商命令允许服务器协商由客户端提供的多个方言修订版中的哪些修订版被用于通信。
12.根据权利要求11所述的方法,其特征在于,所述第二数据通信协议进一步包括一组命令中的至少一个其他命令,该组包括,会话设置命令、注销会话命令、树形连接命令和/ 或树断开连接命令。
13.根据权利要求11所述的方法,其特征在于,所述第二数据通信协议进一步包括一组命令中的至少一个其他命令,该组包括,关闭命令、清除命令、读命令、写命令、打开操作锁命令、锁命令、回送命令、取消命令、ioctl命令、查询目录命令、更改通知命令、设置信息命令、以及查询信息命令。
14.根据权利要求11所述的方法,其特征在于,所述多信道I/O命令包括导致服务器把读数据通过单独的数据信道流式传输到客户端的读命令。
15.根据权利要求11所述的方法,其特征在于,所述多信道I/O命令包括导致客户端把读数据通过单独的数据信道流式传输到服务器的写命令。
全文摘要
描述的是数据通信协议,其中以一种当服务器不能采用客户端想要的协议时不要求客户端重试协商的方式进行客户端和服务器协商。在一个示例实现中,希望的协议是SMB 2.0或更高的版本。协议描述具有可能为内置的可扩展性而附加的额外上下文数据的创建命令、以及包括多个相关命令或无关命令的复合命令。多信道命令请求在单独数据信道上的数据传送,签名的能力验证可被用以确保安全连接被建立,协议提供响应于请求从服务器传送扩展的错误数据的能力。
文档编号H04L29/08GK102394872SQ20111032900
公开日2012年3月28日 申请日期2005年12月9日 优先权日2005年5月25日
发明者A·莫哈蒙德, D·科鲁斯, M·乔治, P·J·玛德哈瓦拉普, S·萨布巴拉彦 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1