远端数据传输方法及使用此方法的虚拟媒体系统
技术领域
本发明是关于一种远端数据传输方法及使用此方法的虚拟媒体系统;具体而言,本发明是关于一种可避免数据传输延迟所造成的通用串行总线的超时重置的远端数据传输方法,以及使用此远端数据传输方法的虚拟媒体系统。
背景技术
虚拟媒体是一种将例如光碟机、硬碟机等实体或虚拟的客户端媒体设备连接至伺服器端电脑,而使伺服器端电脑得以存取自身实体媒体的方式来存取客户端媒体设备的方法。
对于网络管理员等需要管理大量电脑的人而言,由于伺服器端电脑可以如同使用自身实体媒体一般地利用虚拟媒体来进行软件安装,甚至是利用虚拟媒体来开机,以完成操作系统或应用程序等软件的安装或病毒扫描等工作,因此其便利性可见一斑。
由于通用串行总线(Universal Serial Bus,USB)介面可提供许多强大的功能,再加上其使用上的方便性,一般虚拟媒体系统的伺服器端电脑多以通用串行总线作为其连接介面。图1A为已知的虚拟媒体系统的示意图。如图1A所示,伺服器端1的主机单元2与虚拟媒体单元3之间藉由通用串行总线4相连接,虚拟媒体单元3与客户端5之间则藉由网络6相连接。藉由虚拟媒体单元3的连接,主机单元2可使用存取通用串行总线装置的方式与客户端5中的媒体设备进行通信,进而存取其中的媒体数据。
图1B为图1A所示虚拟媒体系统传输数据成功的示意图。如图1B所示,在通用串行总线协定中,使用CBW(Command Block Wrapper,指令块封包)来发送指令请求(如指令1的数据请求),并相应地使用CSW(Command Status Wrapper,指令状态封包)来发送状态应答(如指令1执行成功)。本例由于在2秒钟的应答时限内收到指令1执行成功的指令状态块封包,因此数据传输成功。
然而,在通用串行总线协定中,通用串行总线主机(host)在对通用串行总线装置发出请求后超过应答时限(time-out)而未收到通用串行总线装置的状态应答时,会对该通用串行总线装置进行重置(reset),而数据在网络中传输的过程中往往会因为网络带宽不足、传输距离过长或网络壅塞等因素而造成传输的迟延,因此主机单元与虚拟媒体单元之间的连接往往会因为虚拟媒体单元与客户端之间的网络的连接问题而中断。
图1C及图1D为图1A所示虚拟媒体系统的两种传输数据失败的状况的示意图。如图1C所示,由于主机单元未在2秒钟的应答时限内收到表示指令1执行成功的指令状态块封包,因此指令1的数据请求被视为失败。如图1D所示,虽然客户端已将所有数据回传给虚拟媒体单元,但由于主机单元未在2秒钟的应答时限内收到表示指令1执行成功的指令状态块封包,因此指令1的数据请求被视为失败。此两种情况发生时主机单元皆会对虚拟媒体单元进行重置,使得指令1的数据传输操作必须整个重来,浪费的是时间与带宽等成本。犹有甚者,在网络状况较差的情况下,甚至会反复进行重置而使得数据传输等操作最终不能完成。
发明内容
本发明的目的在于提供一种远端数据传输方法及使用此方法的虚拟媒体系统,相较于先前技术,可避免数据传输延迟所造成的通用串行总线的超时重置。
本发明的远端数据传输方法用于伺服器端及客户端之间,伺服器端包含主机单元及虚拟媒体单元。虚拟媒体单元以通用串行总线协定与主机单元进行通信,而主机单元对虚拟媒体单元发出的请求具有应答时限。此远端数据传输方法包括下列步骤:(a)主机单元发送数据请求至虚拟媒体单元;(b)虚拟媒体单元根据数据请求要求客户端传输数据;(c)判断应答时限结束前的预留期间是否已届至;(d)若预留期间未届至,则判断虚拟媒体单元是否已根据数据请求完成数据的接收,若已完成接收则将数据传输至主机单元,若未完成接收则继续自客户端接收数据,并回到步骤(c);(e)若预留期间已届至,则虚拟媒体单元驱使主机单元执行延迟程序并取得自身媒体装置的状态,虚拟媒体单元同时自客户端接收数据,而后主机单元重新发送数据请求至虚拟媒体单元,然后回到步骤(c)。本发明远端数据传输方法利用延迟程序的机制来避免虚拟媒体单元与客户端之间的数据传输延迟造成主机单元与虚拟媒体单元之间的通信被重置。
本发明虚拟媒体系统包含主机单元、通用串行总线单元及虚拟媒体单元。虚拟媒体单元经由通用串行总线单元与主机单元进行通信。主机单元对虚拟媒体单元发出请求后经过应答时限仍未完成应答程序时,与虚拟媒体单元之间的通信会被重置。其中当虚拟媒体单元自主机单元收到一个新的数据请求时,据以要求客户端传输数据并加以接收;在应答时限结束前的预留期间届至前,若虚拟媒体单元已根据数据请求完成数据的接收,则将数据传输至主机单元,否则继续自客户端接收数据;在预留期间届至后,主机单元被虚拟媒体单元驱使进入执行延迟程序,虚拟媒体单元同时自客户端接收数据,而后主机单元重新发送数据请求至虚拟媒体单元。本发明虚拟媒体系统利用虚拟媒体单元驱使主机单元进入执行延迟程序的机制来避免虚拟媒体单元与客户端之间的数据传输延迟造成主机单元与虚拟媒体单元之间的通信被重置。
附图说明
图1A为已知的虚拟媒体系统的示意图;
图1B为图1A所示虚拟媒体系统传输数据成功,主机单元不发生重置的示意图;
图1C为图1A所示虚拟媒体系统的虚拟媒体单元在时限内未收完数据造成主机单元重置发生,而使虚拟媒体系统传输数据失败的示意图;
图1D为图1A所示虚拟媒体系统的虚拟媒体单元收完数据,但未在时限内将数据传给主机单元,造成主机单元重置发生而使虚拟媒体系统传输数据失败的示意图;
图2为本发明远端数据传输方法的一实施例的示意图;
图3A为本发明虚拟媒体系统的一实施例的示意图;
图3B为图3A所示虚拟媒体系统使用图2所示远端数据传输方法的一实施例的示意图;
图4为图2所示远端数据传输方法中的延迟程序的一实施例的示意图;
图5为图4所示远端数据传输方法中发送错误信息至主机单元的一实施例的示意图;以及
图6为图2所示远端数据传输方法中将数据传输至主机单元的一实施例的示意图。
主要元件符号说明
10伺服器端
11主机单元
12虚拟媒体单元
13通用串行总线单元
20客户端
30以太网络
具体实施方式
本发明提供一种远端数据传输方法及使用此方法的虚拟媒体系统。在较佳实施例中,本发明的远端数据传输方法使用于虚拟媒体系统或虚拟媒体装置中。然而在其他实施例中,本发明的远端数据传输方法可使用于其他类型的系统或装置中。
图2为本发明远端数据传输方法的一实施例的示意图;图3A为本发明虚拟媒体系统的一实施例的示意图。如图3A所示,此虚拟媒体系统包含伺服器端10及客户端20,伺服器端10包含主机单元11及虚拟媒体单元12,图2的远端数据传输方法可用于主机单元11、虚拟媒体单元12及客户端20。主机单元11与虚拟媒体单元12之间以通用串行总线单元13连接,亦即以通用串行总线协定进行通信。其中主机单元11为通用串行总线主机(host),虚拟媒体单元12则为通用串行总线装置。在本实施例中,虚拟媒体单元12与客户端20之间藉由以太网络(Ethernet)30来连接;然而在其他实施例中,可藉由其他类型的网络或其他装置来连接。
图3B为图3A所示虚拟媒体系统使用图2所示远端数据传输方法的一实施例的示意图。如图3B所示,主机单元使用前述的CBW来发送指令请求(例如指令1的数据请求),虚拟媒体单元则相应地使用前述的CSW来发送状态应答(例如指令1执行失败)。由于在通用串行总线协定中,通用串行总线主机对通用串行总线装置发出的请求具有应答时限T1,因此当主机单元对虚拟媒体单元发出请求后,超过应答时限T1(在本实施例中为2秒)而未收到虚拟媒体单元的状态应答时,主机单元会重置与虚拟媒体单元之间的连接。
如图2及图3B所示,此远端数据传输方法包括下列步骤:在步骤110中,主机单元发送数据请求至虚拟媒体单元。在较佳实施例中,此数据请求使用CBW来发送。在步骤120中,虚拟媒体单元根据数据请求要求客户端传输数据至虚拟媒体单元。在本实施例中,由于本实施例的虚拟媒体单元与客户端之间藉由以太网络相连接,因此数据请求使用以太网络封包(例如TCP/IP封包)来发送。
在步骤130中,主机单元判断应答时限结束前的预留期间T2是否已届至。预留期间T2为长度小于应答时限T1的一段时间,其长度较佳大于虚拟媒体单元对主机单元发送CSW加上主机单元对虚拟媒体单元发送CBW所需的时间,使得主机单元在收到虚拟媒体单元的状态应答后有足够的时间发送指令请求至虚拟媒体单元以作为反应。
若预留期间T2已届至,表示主机单元不可能在应答时限T1结束前收到虚拟媒体单元的状态应答并作出反应,则在步骤170中,虚拟媒体单元驱使主机单元进入延迟程序并取得虚拟媒体单元的状态,虚拟媒体单元同时自客户端接收数据,而后主机单元重新发送数据请求至虚拟媒体单元,然后回到步骤130。图4为图2所示远端数据传输方法中的延迟程序的一实施例的示意图。如图4及图3B所示,在较佳实施例中,图2所示的步骤170包含:在步骤171中,若预留期间已届至,则虚拟媒体单元发送相应于数据请求的指令失败应答至主机单元。虚拟媒体单元以发送指令失败应答的方式来驱使主机单元进入延迟程序。在较佳实施例中,指令失败应答使用CSW来发送。在步骤172中,当主机单元收到指令失败应答时,发送包含要求虚拟媒体单元回报错误信息的设备状态请求至虚拟媒体单元。此步骤为延迟程序的两个步骤中的第一个。主机单元发送设备状态请求的真正目的并不是要使虚拟媒体单元回报设备状态,而是用来使主机单元相应地进行等待。在较佳实施例中,使用CBW来发送操作码(operation code,opcode)为0x03(即request sense)的指令,以要求虚拟媒体单元回报包含错误信息的感测数据(sense data)。
感测数据中包含键码限定符(Key Code Qualifier,KCQ)错误码。表1为键码限定符错误码的值列表,键码限定符错误码包含三个栏位:识别键栏(sense key field)、额外识别码(additional sense code,ASC)栏以及额外识别码限定符(additional sensecode qualifier,ASCQ)栏。在较佳实施例中,识别键栏的值(value)为02h,额外识别码栏的值为04h,额外识别码限定符栏的值则为01h,以表示虚拟媒体单元即将处于可用的状态,使主机单元可相应地进行等待;然而在其他实施例中,上述栏位可以为表1所列的其他值、其他可用于请求虚拟媒体单元的设备状态的值或其他可使主机单元相应地进行等待的值。
表1
在步骤173中,当虚拟媒体单元收到设备状态请求时,发送错误信息至主机单元。图5为图4所示远端数据传输方法中发送错误信息至主机单元的一实施例的示意图。如图5及图3B所示,在较佳实施例中,图4中的步骤173包含:在步骤1731中,虚拟媒体单元发送错误信息至主机单元;在步骤1732中,虚拟媒体单元发送相应于设备状态请求的指令成功应答至主机单元。在较佳实施例中,指令成功应答系使用CSW来发送。在步骤174中,主机单元根据错误信息重新发送数据请求至虚拟媒体单元。此步骤为延迟程序的两个步骤中的第二个。此时虚拟媒体单元不会如同步骤120一样地根据数据请求要求客户端传输数据至虚拟媒体单元,而是继续自客户端接收尚未接收完成的数据(步骤160)。需注意的是,在步骤171至步骤174的延迟程序执行过程中,虚拟媒体单元可同时自客户端接收数据(步骤160)。有别于一般的通用串行总线主机对通用串行总线装置的状态询问程序(例如通用串行总线主机周期性地询问通用串行总线装置是否有数据要传送),延迟程序是用来避免虚拟媒体单元与客户端之间的数据传输延迟造成主机单元与虚拟媒体单元之间的通信被重置。
若预留期间T2未届至,表示主机单元有可能在应答时限T1结束前收到虚拟媒体单元的状态应答并作出反应,则在步骤140中,主机单元判断虚拟媒体单元是否已根据数据请求完成数据的接收。在较佳实施例中,根据自虚拟媒体单元收到的利用CSW发送的状态应答来判断数据接收是否已完成。若数据接收已完成,则在步骤150中,虚拟媒体单元将数据传输至主机单元。图6为图2所示远端数据传输方法中将数据传输至主机单元的一实施例的示意图。如图6及图3B所示,图2中的步骤150包含:在步骤151中,虚拟媒体单元将数据传输至主机单元;在步骤152中,虚拟媒体单元发送相应于数据请求的指令成功应答至主机单元。若数据接收尚未完成,则在步骤160中,虚拟媒体单元继续自客户端接收数据,并回到步骤130。
本发明远端数据传输方法利用延迟程序的机制来避免虚拟媒体单元与客户端之间的数据传输延迟造成主机单元与虚拟媒体单元之间的通信被重置。
本发明已由上述相关实施例加以描述,然而上述实施例仅为实施本发明的范例。必需指出的是,已揭示的实施例并未限制本发明的范围。相反地,包含于申请专利范围的精神及范围的修改及均等设置均包含于本发明的范围内。