[0054]图2示出了本发明一个实施例提供的建立主机110和计算设备140之间的网络套接字连接的过程。网络套接字连接以与HTTP连接相似的方式开始,但是提供了主机110与浏览器程序124之间的连续的双向的基于网络的连接。当浏览器程序143试图建立网络套接字连接时,浏览器程序143指示网络套接字模块145发送网络套接字握手请求到端口80 (默认的HTTP端口)或BMC120的网络套接字模块124的端口 443 (HTTPS端口)。网络套接字握手请求类似于HTTP请求中使用的GET指令,但是其包括更多网络套接字指令并可看作是“升级的”请求。一旦接收到网络套接字握手请求之后,网络服务器126根据网络套接字握手请求中的升级的信息可识别出该请求为网络套接字握手请求而不是HTTP请求。网络服务器126发送握手应答信息至浏览器程序143。相应地,可建立起浏览器程序143与网络服务器126之间的网络套接字连接150。
[0055]图3A和3B提供了网络套接字握手请求和HTTP请求之间的对比,其中图3A示出了使用GET指令的HTTP请求的一个例子,图3B示出了网络套接字握手请求的一个例子。如图3A所示,响应HTTP请求的应答信息的头部指示应答信息中的内容的信息,包括内容的类型为文本/网页文件、内容文件的长度以及内容中使用的语言。响应HTTP请求的应答信息的头部的最后一行用于指示在应答的最后关闭主机110和浏览器程序124之间的连接。相比来说,图3B中所示的网络套接字握手请求的前两行包含与HTTP请求相同的GET指令。网络套接字握手请求的随后的行包括升级的信息,用于通知网络套接字模块124进行升级或从常规HTTP请求切换至网络套接字协议。进一步地,与响应HTTP请求的应答信息不同,响应于网络套接字握手请求的握手应答信息的头部不指示在响应的最后关闭连接。
[0056]一旦建立了网络套接字连接150,网络套接字模块124和网络套接字模块145都可通过连接发送数据至另一端。数据格式可为任何有效的UTF-8字符串格式,例如JSON或XML,但是如果想用的话其他数据格式也可使用。
[0057]网络套接字模块124和145可为各种类型和设计,例如PHP网络套接字、Java网络套接字、Web-Socket-ruby、Socket 10_mode,或其他类型的网络套接字应用。为了将网络套接字模块124设置为主机110侧的网络套接字服务器,必须提供主机110及使用的端口(例如端口 80或443)的域名或IP地址以指示主机110的位置,并且必须建立多个指令以响应某些“事件”,例如打开套接字(即网络套接字连接)、接收套接字中的握手请求或其他信息或者关闭套接字。当建立了网络套接字服务器时,网络套接字客户端可使用统一资源定位地址(URL)连接至网络套接字服务器,统一资源定位地址体系开头为“ws”,替代常规HTTP体系的开头“http”,或者是统一资源定位地址体系开头为“wss”,替代常规HTTP体系的开头“https”。
[0058]图4A和4B示出了本申请某些实施例提供的基于网络的虚拟媒体重定向特性。如图4A所示,主机110可包括用作I/O设备的USB端口 115。BMC120可包括虚拟媒体模块112,该虚拟媒体模块112通过由USB端口 115建立的USB连接121与主机110通信,并通过USB连接121将介质存储模拟到主机110。USB连接允许BMC120模拟USB大容量存储设备到主机110上,例如软盘、⑶-ROM或硬盘驱动器。在某些实施例中,那些被模拟的设备可被主机用作开机设备。正如将在后续详细讨论的,计算设备140可为主机110提供程序或数据以作为被模拟的设备的程序或数据。在某些实施例中,在虚拟媒体模块122模拟开机设备到主机110上时,主机110可从计算设备140的程序和数据启动,该计算设备被传送至BMC120并被用作开机设备。尽管未明确示出,主机110和计算设备140可包括用于执行基于网络的虚拟媒体重定向的其他部件。
[0059]举例来说,BMC120可基于USB连接模拟大容量存储设备,例如被模拟的⑶-ROM设备。被模拟的CD-ROM设备可用于将计算设备140上的ISO镜像文件148的内容重定向到主机110。被模拟的⑶-ROM设备还可用于提供主机110和BMC之间的带外通信。被模拟的⑶-ROM设备对主机110来说是标准的USB⑶-ROM。因此,主机110上执行的操作系统可利用使用的操作系统的以及所提供的标准CD-ROM来与CD-ROM设备通信。可能需要自定义的硬盘驱动器。
[0060]在某些实施例中,计算设备140包括操作系统144和运行在操作系统144上的浏览器程序143。进一步地,计算设备140包括存储ISO镜像文件148的存储器142。ISO镜像文件148通常是存档文件或光盘的磁盘镜像,包括文件系统和数据。在某些实施例中,浏览器程序143遵从HTML5标准,并能直接地不使用任何本地调用来读取ISO镜像文件148。例如,当给出了 ISO镜像文件148的位置时,浏览器程序143可直接使用操作系统(OS) 144以获取ISO镜像文件148并读取ISO镜像文件的内容。正如将在后续详细讨论的,当受到BMC120的网络服务器126上生成的网页的指示时,浏览器程序143会将ISO镜像文件148的信息,如文件系统结构(例如ISO镜像文件148中的文件系统的文件名清单),以及特定文件的数据发送至BMC120。这些信息可通过网络套接字与BMC120通信。一旦接收到这些信息,BMC120可利用虚拟媒体模块122将这些信息作为被模拟的媒体的数据提供给主机110。
[0061]图4B示出了本申请某些实施例提供的主机110、BMC120和计算设备140之间的媒体重定向流程。在操作410中,浏览器程序143通过网络发送请求至BMC120以请求虚拟媒体重定向网页。请求可为HTTP格式。在接收到该请求虚拟媒体重定向的请求之后,在操作412中,BMC120的网络服务器126发送虚拟媒体重定向网页至浏览器程序143。因此,浏览器程序143可显示该虚拟媒体重定向网页,以允许计算设备140的用户输入或选择即将在操作414中被BMC120模拟的虚拟媒体的配置信息。虚拟媒体的配置信息可包括即将被BMC120模拟的虚拟媒体的类型以及即将被模拟为被模拟的虚拟媒体的内容计算设备140上的数据。在某些实施例中,虚拟媒体网页可提供存储器142内的ISO镜像文件清单以及虚拟媒体的各种类型清单,如⑶-ROM、SD内存、USB驱动器等以供用户选择。例如,浏览器程序143提供的虚拟媒体重定向网页可使用JavaScript来指示浏览器程序143去获取计算设备140的文件系统以及获取可用的ISO镜像文件清单。
[0062]在操作414中,用户可通过浏览器程序143提供的虚拟媒体重定向网页配置虚拟媒体模块。例如,用户可配置BMC122以降⑶-ROM模拟到主机110并将ISO镜像文件148的数据用作被模拟的CD-ROM的数据。在用户输入配置信息之后,在操作416中,浏览器程序143可根据用户的输入获取所选择的数据,如存储在存储器142中的ISO镜像文件148。例如,浏览器程序143执行包含在虚拟媒体重定向网页中的JavaScript,进而浏览器程序143被指示去获取所选择的ISO镜像文件148。然后,在操作418中,浏览器程序143发送简历虚拟媒体模块122的指令到BMC120的网络服务器126。接收到用户指令之后,在操作420中,虚拟媒体模块122模拟所要求的类型的虚拟媒体(如CD-ROM)到主机110上。
[0063]当主机检测到被模拟的虚拟媒体并把它认作真实的物理媒体时,在操作422中,主机110可试图读取被模拟的虚拟媒体的文件信息。在某些实施例中,文件信息包括文件系统结构,如虚拟媒体的文件名清单。在操作424中接收到请求文件系统结构的请求时,虚拟媒体模块122可指示网络服务器发送HTTP应答信息,如包含请求ISO镜像文件148的文件系统结构的JavaScript的网页,至浏览器程序143。当浏览器程序143接收到HTTP应到信息时,在操作426中,浏览器程序143,例如被JavaScript所指示,访问存储在存储器142中的ISO镜像文件148以获取文件系统结构。
[0064]然后,在某些实施例中,在操作428中,浏览器程序143发送网络套接字握手请求至网络服务器126以建立在网络套接字协议下的通信通道。在接收到网络套接字握手请求之后,在操作430中,网络服务器126指示在BMC120上的网络套接字模块124打开网络套接字。类似地,在操作432中,浏览器程序143指示在计算设备140上的网络套接字模块145打开网络套接字。在操作434中,建立了网络套接字模块124与网络套接字模块145之间的网络套接字连接。
[0065]一旦建立了网络套接字连接,在操作436中,浏览器程序143发送在操作426中所获取的文件系统结构至网络套接字模块145。在操作438中,在计算设备140侧的网络套接字模块145通过网络套接字连接发送文件系统结构至在BMC120侧的网络套接字模块124。在操作440中,网络套接字模块12发送文件系统结构至BMC120的网络服务器126。然后,网络服务器126发送文件系统结构至虚拟媒体模块122。在操作442中,虚拟媒体模块122将文件系统结构提供给主机,以作为在操作422中由主机110发起的并指向由虚拟媒体模块所模拟的虚拟媒体的文件系统结构读操作的结果。因此,主机110获得虚拟媒体的被模拟的文件系统结构,并可从虚拟媒体处请求文件和数据。
[0066]当主机110试图从被模拟的虚拟媒体中读取某一文件时,在操作444中,虚拟媒体模块122接收到主机110发起的这个读操作。然后,虚拟媒体模块122指示网络服务器126主机110请求了一特定文件。然后网络服务器126通过网络套接字连接150发送请求文件的请求至浏览器程序143。具体地,在操作446中,网络服务器126发送请求至网络套接字模块124。在操作448中,网络