本发明涉及一种网络控制器和方法,且更加特别地涉及一种便于扩展通讯协议功能的网络控制器。
背景技术:
:最近,通过将装置连入网络从而提供新的附加值的趋势正在增长。因此,增加网络功能并改善连接性变得很有必要。为了应付这种扩展,通过提供独立于应用程序的将通讯协议处理模块化的API从而降低开发成本并便于增加功能的技术是众所周知的。已经提出一种技术(例如JP-2004-506977-A),该技术可以生成协议无关和装置无关的应用程序和内容,并将该内容转换为通过使用资源描述框架(RDF)的任何协议和装置都支持的内容数据。并且,还提出了一种处理的共享模块化和它的配置的技术(例如JP-2004-005503-A),该技术是为了便于开发和增加提供Web服务的应用程序。然而,JP-2004-506977-A和JP-2004-005503-A中所描述的技术需要实质的开发资源来增加和扩展通讯协议的功能。此外,在对每一个通讯协议独立地进行开发并从例如OSS的现有的资源中分出来的情况下,在整个通讯协议中存在许多冗余处理,并且这导致了产生例如ROM和RAM的资源的浪费。对于嵌入式系统,在只有有限的可用资源的的情况下,这个问题尤其突出。此外,由于这样多的冗余处理而导致的需要的许多修改使维护变得复杂,所述修改例如是错误修改。并且,通讯协议和应用程序层之间有过多的模糊界限,在存在多个应用程序的情况下,就会有开发资源的浪费,这种浪费是由在应用程序中的包含通讯处理的一部分而引起的。技术实现要素:本发明提供了新颖的网络控制器和方法,其不需要大的开发资源来添加并扩展通讯协议的功能且保持高的通讯质量,不会产生资源浪费,方便维护,并可以被应用于嵌入式系统。更确切地说,本发明提供一种网络控制器,该网络控制器包括经由网络与多个终端进行通讯的网络接口、与利用多种通讯协议的上层应用程序进行通讯的上层应用程序接口、控制多个协议处理步骤以便利用多种通讯协议经由网络与多个终端进行通讯的协议处理步骤控制器以及分析多种通讯协议并进一步包括协议报头分析单元的协议分析单元,其中协议报头分析单元单独分析多种通讯协议的多个通讯协议报头。附图说明当结合附图仔细考虑时,通过参考以下详细说明,将容易地得到并且更好地理解本公开的更加全面的评价和许多附加优点。图1是说明包含作为本发明的实施例的网络控制器的系统的配置的图表。图2是说明作为本发明的实施例的网络控制器的硬件配置的图表。图3是说明作为本发明的实施例的网络控制器的功能块的图表。图4A和4B是说明用于作为本发明的实施例的网络控制器的、要求经由网络发送数据的数据格式和请求数据的图表。图5A和5B是说明对请求数据做出响应的数据格式和响应数据的图表,其中该请求数据是要求经由网络发送数据用于作为本发明的实施例的网络控制器的数据。图6A和6B是说明作为本发明的实施例的数据格式和要求共享经由网络接收到的数据的请求数据的图表。图7是说明作为本发明的实施例的通过远程网络共享接收到的数据的数据格式和响应数据的图表。图8是说明包含第一实施例的网络控制器并在本发明中作为服务器工作的设备的操作的实例的时序图。图9是说明包含第一实施例的网络控制器并在本发明中作为服务器工作的设备的操作的实例的时序图。图10是说明包含第一实施例的网络控制器并在本发明中作为服务器工作的设备的操作的时序图。图11A和11B是说明包含第一实施例的网络控制器并在本发明中作为服务器工作的设备的操作的时序图。图12A和12B是说明包含第二实施例的网络控制器并在本发明中作为HTTP客户端工作的设备的操作的时序图。图13A和13B是说明包含第二实施例的网络控制器并在本发明中作为HTTP客户端工作的设备的操作的时序图。图14A和14B是说明包含第二实施例的网络控制器并在本发明中作为HTTP客户端工作的设备的操作的时序图。图15是说明包含第二实施例的网络控制器并在本发明中作为HTTP客户端工作的设备的操作的时序图。图16A和16B是说明包含第二实施例的网络控制器并在本发明中作为HTTP客户端工作的设备的操作的时序图。图17A和17B是说明包含第二实施例的网络控制器并在本发明中作为HTTP客户端工作的设备的操作的时序图。图18A和18B是说明包含第二实施例的网络控制器并在本发明中作为HTTP客户端工作的设备的操作的时序图。图19A和19B是说明包含第二实施例的网络控制器并在本发明中作为HTTP客户端工作的设备的操作的时序图。图20是说明包含第三实施例的网络控制器并执行在本发明中作为HTTP客户端的加密通讯的设备的操作的时序图。图21A和21B是说明包含第三实施例的网络控制器并执行在本发明中作为HTTP客户端的加密通讯的设备的操作的时序图。图22是说明包含第三实施例的网络控制器并执行在本发明中作为HTTP客户端的加密通讯的设备的操作的时序图。图23A和23B是说明包含第三实施例的网络控制器并执行在本发明中作为HTTP客户端的加密通讯的设备的操作的时序图。具体实施方式在描述附图中所示的较佳实施例时,为了清楚起见使用具体的术语。但是,本发明的公开内容并不打算局限于所选择的具体的术语,而是可以理解成,每一个具体元件都包括所有具有同样功能、以类似的方式操作并获得类似的结果的技术等效物。下面将参考附图详细描述本发明的实施例。在本发明中,与通讯方的协商处理步骤、分析包结构以及独立于通讯协议的API为实现所有通讯协议的处理。只有分析协议报头的部分(通讯控制部分)对于每一个协议单独实现。图1是说明包含作为本发明的实施例的网络控制器的系统的配置的实例的图表。在图1中,系统由网络控制器1、投影仪2以及输入装置3构成。网络控制器1包括用户接口(UI),通过应用程序实现功能并控制与外部装置的通讯。投影仪2是例如液晶投影仪的投影仪,并利用灯泡将例如来自于网络控制器1的图像的数据投影到墙面等上。例如电源按钮和选择按钮等的输入装置3将输入数据发送给网络控制器1。图2是说明作为本发明的实施例的网络控制器的硬件配置的图表。如图2所示,网络控制器1由通讯处理器11、主处理器12和外部设备13构成。通讯处理器11控制通讯(通过网络)并由中央处理单元(CPU)101、ROM102、本地接口(I/F)103、存储装置104、RAM105以及网络I/F106构成。主处理器12是所谓的CPU,且外部设备将图像数据等输出给类似于上述投影仪的外侧。通讯处理器11是在通过本发明中的网络控制器1控制网络时起重要作用的处理器。本地I/F103是例如USB和PCIe的接口,且网络I/F106是例如无线LAN和有线LAN的网络接口。图3是说明作为本发明的实施例的网络控制器的功能块的图表。如图3所示,通过本发明的网络控制器1来控制通讯是通过执行客户端处理步骤存储单元201、服务器处理步骤存储单元202、应用程序层处理步骤管理单元203、应用程序层包处理单元205、应用程序层有效负载(payload)管理单元208、应用程序层报头管理单元209、用于每一个协议的报头管理单元、通讯数据格式控制单元215以及装置信息管理单元216中的每一个功能来进行的。对于协议管理单元,有DNS报头管理单元210、HTTP报头管理单元211、PJLink报头管理单元212、DHCPv4报头管理单元213以及SNMP报头管理单元214。应用程序层报头管理单元209单独分析来自每一个管理单元的报头信息。在网络控制器控制作为客户端终端的通讯的情况下,客户端处理步骤存储单元201(协议处理步骤控制单元)在建立连接后存储客户端的具体的包发送/接收处理步骤。客户端处理步骤存储单元201顺序执行多个客户端处理步骤并实现包发送/接收。客户端处理步骤包括DNS客户端处理步骤、HTTP客户端处理步骤以及(用于获得代理认证方法)HTTP客户端处理步骤,且客户端处理步骤存储单元201同时执行那些处理步骤中的一个。在网络控制器作为服务器控制通讯的情况下,服务器处理步骤存储单元202(协议处理步骤控制单元)在建立连接后存储服务器的具体的包发送/接收处理步骤。应用程序层处理步骤管理单元203管理在应用程序层中的发送/接收包的整个过程。并且,应用程序层处理步骤管理单元203控制连接和断开通讯。在这个方面,应用程序层处理步骤管理单元203参照存储在协议重发信息表204中的超时时间和重试的次数。应用程序层包处理单元205(协议分析方法)知道在应用程序层中的包由报头和有效负载构成。应用程序层包处理单元205基于从上层(应用程序)接收到的数据为应用程序层生成包并将他们传到下层,在该下层中下一个处理被执行。同样,应用程序层包处理单元205基于从下层接收到的数据为应用程序层分析包并将他们传到上层,在该上层中下一个处理被执行。应用程序层包处理单元205还编码/解码数据块。当应用程序层包处理单元205基于从下层接收到的数据为应用程序层分析包并将它们传到上层,在该上层中下一个处理被执行时,应用程序层包处理单元205参照分配给上层应用程序的表206(关联表,anassociationtable)。随后将详细描述分配给上层应用程序的表206。如果需要的话,应用程序层处理步骤管理单元203和应用程序层包处理单元205使用SSL/TLS207。SSL/TLS207控制在应用程序层以下的层的加密通讯。应用程序层处理步骤管理单元203在SSL/TLS握手(例如共享加密密钥和认证通讯方)中使用SSL/TLS207,且应用程序层包处理单元205在加密和解码要被发送和接收的数据中使用SSL/TLS207。应用程序层有效负载管理单元208(有效负载分析单元)知道应用程序层中的有效负载的结构。应用程序层报头管理单元209(协议报头分析单元)知道应用程序层中的报头的结构。更进一步地,应用程序层报头管理单元209包含DNS报头管理单元210、HTTP报头管理单元211、PJLink报头管理单元212、DHCPv4报头管理单元213以及SNMP报头管理单元214,这些单元单独管理每一个协议报头。DNS报头管理单元210知道每一种类型的DNS报头的报头结构。同样,DNS报头管理单元210知道存储在DNS报头中的信息。更进一步地,DNS报头管理单元210知道向其发送DNS报头和从其接收DNS报头的通讯方。HTTP报头管理单元211知道HTTP报头的结构,且PJLink报头管理单元212知道PJLink指令的格式。同样,DHCPv4报头管理单元213知道DHCPv4报头的结构,且SNMP报头管理单元214知道SNMP报头的结构。通讯数据格式管理单元215知道在应用程序层中的有效负载的数据格式,且装置信息管理单元216知道装置信息管理单元217。认证数据管理单元218知道可以利用协议传输的认证数据的格式。认证数据管理单元218管理HTTP报头管理单元211、PJLink报头管理单元212以及装置信息管理单元216的每一个认证数据。输入/输出数据存储单元219存储与协议处理相对应的输入数据和输出数据。输入/输出数据存储单元219存储处理协议和处理结果所必需的输入数据,并且可以被普遍访问。接下来,下面参考表1A和1B描述分配给上层应用程序的表206。表1A表1B分配给上层应用程序的表206是当应用程序层包处理单元205将数据传输给上层应用程序时应用程序层包处理单元205所使用的分布表。分配给上层应用程序的表206提供了确定“使用的资源和传输控制方法”的规则。接下来,将在下面描述“内容数据的特性”。“内容数据的特性”可以从例如HTTP的应用程序协议的报头信息(控制信息)被获得。“操作对象”有三种类型的特性,“/service/projection”、“/state”以及“/property”,这些都与每一个数据的内容相对应,且它们识别分配的目的地的应用程序。这里有三种类型的“操作方法”,“POST”、“PUT”以及“GET”,它们与每一个数据的内容相对应,且它们识别用于包含在有效负载中的内容数据的操作。同样,这里有三种类型的“MIME类型”,“application/json”、“image/jpeg”以及“video/x-rncb”,它们与每一个数据的内容相对应,且它们识别包含在有效负载中的内容数据的类型。更近一步地,这里有两种类型的“包含操作对象的子系统的名称”,“OMAP”和“Shockley”,它们与每一个数据的内容相对应,且它们由系统配置所确定并且它们识别用于为每一个传输目的地传输每一个数据的存储器。接下来,将在下面描述表1B中的“使用的资源和传输控制方法”。对于“控制信息包含在被传输的数据中了吗?”有两种类型,“是”和“否”,它们与每一个数据的内容相对应,且它们确定报头信息是否被传到应用程序。同样,这里有三种类型的“使用的缓存”,“SRAM_WHIO(小尺寸)”、“SRAM_WHIO(大尺寸)”以及“SRAM_DATA”,它们与每一个数据的内容相对应,且它们识别在传输数据中所使用的缓存类型。更近一步地,这里有两种类型的“传输单位”,“缓存大小或者实际数据大小”以及“数据块大小(以通讯方所指定的划分数据的单位)”,它们与每一个数据相对应,且它们识别对于每一个传输时间的传输数据的单位。例如,如果数据的内容是No.3的投影数据(PC屏幕),则“操作对象”是“/service/projection”、“操作方法”是“PUT”、“MIME类型”是“video/x-rncb”以及“包含操作对象的子系统的名称”是“OMAP”。更近一步地,“控制信息包含在被传输的数据中了吗?”为“是”、“使用的缓存”是“SRAM_WHIO(大尺寸)”以及“传输单位”是“数据块大小(以通讯方所指定的划分数据的单位)”。接下来,以下将参考图4A和4B描述响应于来自应用程序的请求,在向网络传输数据时的数据格式以及其实例。如图4A和4B所示,数据依赖于内部资源和要被发送的数据的大小被划分。图4A的左边所示为数据格式(在应用程序层处划分之前),且图4A的右边以及图4B中按数字顺序所示为划分数据(请求数据1到3)的实例。“划分数据大小”表示在物理层中传输数据的大小。例如,参考请求数据1,虽然划分前应用程序数据是4620字节,划分数据是2032字节。值得注意的是,由于请求数据1变成作为“HTTP报头/主体”的数据,在划分数据的2032字节中的524字节被分配给控制参数。“EOF”是表示划分数据是否为最后数据的参数。“应用程序数据大小”是在逻辑层中的传输数据大小,且在数据被划分的情况下明显与划分数据大小的总和相等。同样,“目的地”是在设备内交换数据的信息且为指定执行下一个处理的模块的参数。“有关报文(message)ID的详细信息”是指定应用程序对网络的请求/响应或者网络对应用程序的请求/响应的参数。“目的地主机”和“目的地端口”是表示外部装置的目的地信息的参数。更具体地,“目的地主机”是IP地址(或域名),且“目的地端口”是网络端口号。“协议类型”是指定例如HTTP和HTTPS(HTTPoverSSL,基于SSL的HTTP)的应用程序协议的参数。同样,“证书CN名称”、“认证证书组”、“在服务器认证失败情况下的操作”以及“进行/不进行证书CN的检查”是在加密通讯中SSL/TLS207所使用的信息。在本实施例中它们通过同时指定加密通讯所必需的信息来隐藏用于SSL/TLS的处理的内容。“使用/不使用代理”是指定是否通过代理建立连接的参数。在本实施例中,它隐藏代理服务器的目的地以及用于通过代理连接的处理的内容。“内容数据”表示要被发送给外部装置中的通讯方的数据的内容。值得注意的是,除了上面所描述的参数以外,图4A和4B中的其他参数(通讯模式、振动以及预约)的描述被省略,这是由于它们在本实施例中与处理的内容无关。接下来,参考图5A和5B描述对网络发送请求的响应数据。那些与参考图4A和4B所描述的元件相同的元件被省略。“源”是表示通讯模块的标识符的参数,且它由接收这个报文的应用程序所看出。“发送结果”是表示执行发送处理的结果的参数。例如,参考响应数据1,“发送结果”是“0x01(成功)”,由于只有响应数据,因此内容数据是0字节,且只有4字节被分配给4字节的应用程序数据作为控制参数。更进一步地,参考图6A和图6B描述共享通过网络接收到的数据的请求的数据格式以及它的实例。那些与参考图4A和4B所描述的元件相同的元件被省略。“内容类型”是表示包含在数据中的内容的数据参数。接下来,参考图7描述请求共享通过网络接收到的数据的响应数据的数据格式以及它的实例。那些与参考图4A和4B所描述的元件相同的元件被省略。如图7所示,由于对于接收结果只有响应数据,因此只有4字节被分配给4字节的应用程序数据作为控制参数。第一实施例下面参考图8到图11A和11B的时序图描述在包含本发明的第一实施例的网络控制器的设备作为HTTP服务器进行操作的情况下的处理的时序。时序图的上部中所示为执行每一个处理的处理单元。在图8到图11A和11B的时序图中从左到右的顺序依次为,人(TRANS_RXTX1_TASK)301、应用程序层协议处理任务302、数据队列303、服务器处理步骤存储单元202、应用程序层包处理单元205、HTTP报头管理单元211、应用程序层有效负载管理单元208、分配给上层应用程序的表206、套接字(socket)I/F网桥304、与应用程序层连接的网桥305以及与装置信息连接的网桥306。在图8中,人301启动应用程序层协议处理任务302(S1)。接着,应用程序层协议处理任务302在服务器处理步骤存储单元202上执行协议处理步骤启动处理(S2)。服务器处理步骤存储单元202等待接收数据直到另外一个设备(HTTP客户端)通过套接字I/F网桥304连接到服务器处理步骤存储单元202(S3)。服务器处理步骤存储单元202生成第一个包(S4)并分配应用程序所使用的存储区域(堆(heap))。用于HTTP请求2051的存储区域分配给应用程序层包处理单元205,用于请求报头2111的存储区域分配给HTTP报头管理单元211,并用于请求主体2081的存储区域分配给应用程序层有效负载管理单元208。在应用程序层协议处理任务302开始执行协议处理步骤之后(S5),服务器处理步骤存储单元202获取下一个处理步骤(S6)。接着,服务器处理步骤存储单元202分析HTTP请求包(S7),HTTP请求包是通过套接字I/F网桥304从另一个装置(HTTP客户端)接收到的(S8)。下面描述在包的分析期间错误出现在Shockley内部的情况下的错误处理。如果错误是套接字错误,则包将完成分析包的信息和套接字错误返回给服务器处理步骤存储单元202,并且服务器处理步骤存储单元202丢弃包并完成处理步骤。如果错误是超时错误,则包返回完成分析包的信息和超时错误,并且服务器处理步骤存储单元202执行重新发送处理。值得注意的是重新发送处理的内容对于每一个协议是不同的。更近一步地,在错误在包内部的情况下,包储存错误信息并将完成分析包的信息和无错误返回给服务器处理步骤存储单元202。当包生成下一个包时,包将错误信息移交给下一个包,并且包返回具有“compose”(“编排”)的错误响应。应用程序层包处理单元205分析HTTP报头管理单元211中的HTTP请求报头(S9)。接着,应用程序层包处理单元205利用分配给上层应用程序的表206获取资源信息,该资源信息与资源识别信息以及由应用程序层包处理单元205指定的资源MIME类型相对应(S10)。然后,应用程序层包处理单元205检查是否可以通过与装置信息连接的网桥306将投影数据传输给外部装置(例如投影仪)(S11)。也就是说,应用程序层包处理单元205指定传输目的地应用程序。值得注意的是,如果在搜索资源时出现错误,那么分配给上层应用程序的表206就将错误响应(E_RESOURCE_INFO_ERROR_REASON_NOT_FOUND,E_RESOURCE_INEO_ERROR_REASON_UNSUPPORTED_OPERATION,E_RESOURCE_INFO_ERROR_REASON_UNSUPPORTED_MEDIA)返回给应用程序层包处理单元205。同样,在S11中检查是否可以传输投影数据时,如果由于某种原因不可以传输,例如外部装置正处于节能模式,那么外部装置就通过与装置信息连接的网桥将错误响应返回给应用程序层包处理单元205。接下来,如图9所示,在从应用程序层协议处理任务302接收执行协议处理步骤的通知(S12)后,则服务器处理步骤存储单元202获取下一个处理步骤(S13)。接着,服务器处理步骤存储单元202分析应用程序层包处理单元205(S14),并且应用程序层包处理单元205分析HTTP请求主体(S15)。应用程序层包处理单元205通过与应用程序层连接的网桥305获取缓存(S16)并通过套接字I/F网桥304接收有效负载数据(S17)。接着,应用程序层包处理单元205分析接收到的有效负载数据(S18)并将分析的数据通过与应用程序层连接的网桥305发送给应用程序(S19)。上述从S16到S19的步骤是子系统之间的通讯并通过发送请求共享经由网络接收到的数据的命令被执行。同样,重复上述从S16到S19的处理直到完成有效负载的分析。值得注意的是,在从用户获取用于内容的缓存的情况下,单独访问控制由SEM_TRANS_CNTNT执行直到完成有效负载的分析。如果对有效负载的访问被单独地控制且单独访问控制在1秒内没有被释放,那么应用程序层包处理单元205就通过与应用程序层连接的网桥305将未探测到的响应返回给应用程序。同样,在内容缓存的情况下,在S19中应用程序层包处理单元205首先仅将报头传输给OMAP。当在不是数据块的情况下用户的缓存变满并完成有效负载的分析时,以及当在是数据块的情况下用户的缓存变满并为一个数据块完成有效负载的分析时,那个传输被执行。接下来,如图10所示,在从应用程序层协议处理任务接收执行协议处理步骤的通知(S20)后,服务器处理步骤存储单元202获取下一个处理步骤(S21)。接着,服务器处理步骤存储单元202在应用程序层包处理单元205中生成下一个包(S22),且应用程序层包处理单元205接收来自于应用程序的数据并分配存储区域用于生成HTTP响应2052(堆)。应用程序层包处理单元205在HTTP报头管理单元211中生成下一个报头(S23),且HTTP报头管理单元211分配存储区域用于生成HTTP响应报头(堆)。同样,应用程序层包处理单元205在应用程序层有效负载管理单元208中生成下一个有效负载(S24),且应用程序层有效负载管理单元208分配存储区域用于生成HTTP响应主体2082(堆)。伴随生成响应包,应用程序层包处理单元205、HTTP报头管理单元211以及应用程序层有效负载管理单元208的请求处理被完成(从S25到S27的销毁(destroy))。服务器处理步骤存储单元202在应用程序层包处理单元205中生成HTTP响应包(S28)并等待来自于上层应用程序的输入数据。应用程序层协议处理任务302等待来自于数据队列303的队列(S29)。接下来,如图11A和11B所示,在从应用程序层协议处理任务302接收执行协议处理步骤的通知(S30)后,服务器处理步骤存储单元202获取下一个处理步骤(S31)。接着,服务器处理步骤存储单元202在应用程序层包处理单元205中生成HTTP响应2052(S32)。应用程序层包处理单元205在HTTP报头管理单元211中生成HTTP响应报头2112(S33)。值得注意的是,由于用于共享经由网络接收到的数据的响应的命令包含错误信息,因此错误信息作为错误响应被返回。接着,应用程序层包处理单元205经由套接字I/F网桥304将HTTP响应报头2112发送给另一个装置(HTTP客户端)(S34)。接下来,在从应用程序层协议处理任务302接收执行协议处理步骤的通知(S35)后,服务器处理步骤存储单元202获取下一个处理步骤(S36)。接着,服务器处理步骤存储单元202在应用程序层包处理单元205中生成HTTP响应5052(S37)。应用程序层包处理单元205在应用程序层有效负载管理单元208中生成HTTP响应主体2082(S38)。接着,应用程序层包处理单元205经由套接字I/F网桥304将HTTP响应主体2082发送给另一个装置(HTTP客户端)(S39)。接着,应用程序层包处理单元205经由与应用程序层连接的网桥305释放缓存(S40)。接下来,在从应用程序层协议处理任务302接收执行协议处理步骤的通知(S41)后,服务器处理步骤存储单元202询问应用程序层包处理单元205它是否重新使用会话(S42)。接着,应用程序层包处理单元205询问HTTP报头管理单元211它是否重新使用会话(S43)。如果会话被重新使用,则处理返回到S3中的等待接收而不关闭会话(循环1)。如果会话没有被重新使用,则在关闭会话后处理返回到S3中的等待接收(循环1)。伴随发送响应包,应用程序层包处理单元205、HTTP报头管理单元211以及应用程序层有效负载管理单元208的响应处理被完成(从S44到S46的销毁)。在从应用程序层协议处理任务302接收完成协议处理步骤的通知(S45)后,服务器处理步骤存储单元202断开经由套接字I/F网桥304与另一个装置(HTTP客户端)的连接(S47)。伴随着关闭连接,应用程序层协议处理任务302完成在服务器处理步骤存储单元202中的处理(S48中的销毁)。值得注意的是,除了分析HTTP报头和生成HTTP报头以外的服务器处理在公用单元中被实现。同样,在接收数据和等待重新使用会话的通知时的超时处理等是通过由应用程序层处理步骤管理单元203参照协议重发信息表204中的超时时间来完成的。第二实施例下面参考图12A和12B到图19A和19B的时序图描述在包含本发明的第二实施例的网络控制器的设备作为HTTP客户端进行操作的情况下的处理的时序。时序图上方所示为执行每一个处理的处理单元。在从图12A和12B到图15的时序图中,从左到右为人(TRANS_RXTX1_TASK)401、应用程序层协议处理任务402、应用程序层输入/输出参数数据列表403、HTTP客户端处理步骤(用于获取代理认证方法)存储单元404、应用程序层包处理单元405、HTTP报头管理单元406、HTTP客户端处理步骤(用于通过代理连接)存储单元407、HTTP客户端处理步骤(协议默认)存储单元408、套接字I/F网桥409以及与装置信息连接的网桥410,以及DNS客户端处理步骤存储单元411。在图12A和12B中,人401启动应用程序层协议处理任务402(S101)。在执行“rcv_dtp”处理(S102)以及“启动AppProc”处理(S103)后,应用程序层协议处理任务402在应用程序层输入/输出参数数据列表403中分配存储区域(堆)。在执行“生成AppProc”处理(S104)后,应用程序层协议处理任务402通过与装置信息连接的网桥410获取外部装置的设置信息(S105)。接着,应用程序层协议处理任务402将参数添加至应用程序层输入/输出参数数据列表403(S106)。在S106中,其值为SHostInfo结构的“UAppLayerParamValue”结构被添加至清单。如果代理在“SHostInfo”结构中被用作“f_host_name”,那么代理服务器的名称从INFO被获取并被设置。如果代理没有被使用,那么用于通过网络发送的请求的目的地主机被设置。同样,如果代理在“SHostInfo”结构中被用作“f_host_port”,那么代理服务器的端口号从INFO被获取并被设置。如果代理没有被使用,那么用于通过网络发送的请求的目的地端口被设置。应用程序层协议处理任务402分配在DNS客户端处理步骤存储单元411中执行处理的存储区域(堆)。在这个情况下,如果目的地是IP地址,那么DNS处理步骤没有被生成。通过“getInetAddr”(“获得InetAddr”)被转换成二进制IP地址并被发送给HTTP处理步骤的构造器(网络字节顺序)。同样,在包含在“AppLayerList”(“APP层列表”)中的SHostInfo结构中,“TRANS_FALSE”被设置为“fis_fixed”和“fis_received_response”,且在包含在“AppLayerList”中的SHostInfo结构中,“TRANS_TRUE”被设置为“fis_fixed”和“fis_received_response”。同样,应用程序层协议处理任务402分配在HTTP客户端处理步骤(用于获取代理认证方法)存储单元404中执行处理的存储区域(堆)。在这个情况下,检查请求通过网络发送的成员,且HTTP客户端处理步骤(用于获取代理认证方法)仅在代理被使用的情况下被生成。同样,应用程序层协议处理任务402分配在HTTP客户端处理步骤(用于通过代理连接)存储单元407中执行处理的存储区域(堆)。在这个情况下,检查请求通过网络发送的成员,且如果代理和HTTP被使用,那么用于通过代理进行连接的“ClientProc”的时间被生成。更近一步地,应用程序层协议处理任务402分配在HTTP客户端处理步骤(协议默认)存储单元408中执行处理的存储区域(堆)。在这个情况下,检查请求通过网络发送的成员,且如果代理和HTTP被使用,那么用于通过代理进行连接的“ClientProc”的实例被生成。接下来,应用程序层协议处理任务402将新的参数添加至应用程序层输入/输出参数数据列表403(S107)。在这个情况下,其值为“SUserData”结构的“UAppLayerParamValue”结构被添加至列表。应用程序层协议处理任务402依次执行DNS客户端处理步骤存储单元411中的启动协议处理步骤(S108)、执行协议处理步骤(S109)以及完成协议处理步骤(S110)。在这个情况下,在包含在“AppLayerParamList”中的“SHostInfo”结构中的“fipv4_address”和“fis_fixed”被设置为解析名称的结果。在上述S110中的处理被重复进行直到DNS客户端的处理步骤被完成(循环41)。同样,如果在每一个客户端处理步骤的结束出现套接字错误(包括取消),那么下面所述的错误处理被执行。即,(a)删除运行处理步骤和等待处理步骤的处理,(b)释放对通过网络进行发送的请求的用户缓存的处理,(c)将对通过网络发送的请求的响应返回到OMAP的处理(连接主机失败:0x02)。接着,应用程序层协议处理任务402完成DNS客户端处理步骤存储单元411中的处理(S111中的销毁)并执行“更新ExecutingProc”处理(S112)。如果目的地信息在S112中被确定(HostInfo->fis_fixed是TRANS_TRUE),那么其次执行等待处理(设置为the_executing_proc)。如果目的地信息在S112中没有被确定(HostInfo->fis_fixed是TRANS_FALSE)且在查询主DNS服务器后有响应(HostInfo->fis_received_response是TRANS_TRUE),那么错误响应(连接主机失败:0x02)被返回。如果在查询主DNS服务器后没有响应(HostInfo->fis_received_response是TRANS_FALSE),那么DNS处理步骤目标被生成并被执行成为目的地次级DNS服务器。在这个情况下,如果次级DNS服务器为“0.0.0.0”,那么错误响应(连接主机失败:0x02)被返回。同样,如果在询问次级DNS服务器后名称无法被解析,那么错误响应(连接主机失败:0x02)被返回。接下来,在图13A和13B中,应用程序层协议处理任务402启动HTTP客户端处理步骤(用于获取代理认证方法)存储单元404中的协议处理步骤(S113)。HTTP客户端处理步骤(用于获取代理认证方法)存储单元404在套接字I/F网桥409中生成套接字(S114)、设置套接字选项(连接超时信息)(S115)、执行连接处理(S116)、设置套接字选项(发送超时信息)(S117)以及设置套接字选项(接收超时信息)(S118)。在生成包时(S119),HTTP客户端处理步骤(用于获取代理认证方法)存储单元404为在应用程序层包处理单元405中生成请求4051以及在HTTP报头管理单元406中生成请求报头4061分配存储区域(堆)。接下来,在从应用程序层协议处理任务402接收执行协议处理步骤的通知(S120)后,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404获取下一个处理步骤(S121)。接着,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404执行“compose(由getNextAction所表示的动作,E_NECT_ACTION_COMPOSE)”的处理(S122)。应用程序层包处理单元405在HTTP报头管理单元406中执行分析处理(S123)。该处理是用于分析HTTP报头的,该HTTP报头包含在用于通过网络从OMAP发送的请求中。在这种情况下,检查请求通过网络发送的成员,并且请求URI被转换成绝对URI。应用程序层包处理单元405在HTTP报头管理单元406中生成请求报头4061(S124)并通过套接字I/F网桥409将请求报头发送给另一个终端(S125)。接下来,如图14A和14B所示,在从应用程序层协议处理任务402接收执行协议处理步骤的通知(S126)后,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404获取下一个处理步骤(S127)。接着,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404生成请求4051(S128)。接下来,在从应用程序层协议处理任务402接收执行协议处理步骤的通知(S129)后,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404获取下一个处理步骤(S130)。接着,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404在应用程序层包处理单元405中生成下一个包(S131)并为生成响应4052分配存储区域(堆)。应用程序层包处理单元405在HTTP报头管理单元406中生成下一个报头(S132)并为生成响应报头4062分配存储区域(堆)。接下来,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404完成在应用程序层包处理单元405和HTTP报头管理单元406中的处理(在S133和S134中的销毁)。接下来,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404在应用程序层包处理单元405中执行分析处理(S135)。接着,应用程序层包处理单元405通过套接字I/F网桥409接收HTTP响应(S136)。应用程序层包处理单元405在HTTP报头管理单元406中执行分析处理(S137)并在认证数据管理单元412中为拾取认证数据分配存储区域(堆)。在这个情况下,如果状态码是417(Proxy-Authenticate),则由于报头包括认证数据,因此“AuthInfo”被生成,并且其值为“AuthInfo”的“UAppLayerParamValue”被添加到“AppLayerParamList”。另外地,如果状态码不是417,则假设没有代理认证。在这个情况下,“AuthInfo”不被生成,并且其值为“AuthInfo”的“UAppLayerParamValue”不被添加到“AppLayerParamList”。HTTP报头管理单元406在应用程序层输入/输出参数数据列表403中添加参数(S138)。接着,HTTP报头管理单元406在认证数据管理单元412中分析认证数据(S139)。如果在S139中“TRANS_FALSE”被返回,则“SAuthInfo->fis_failed”被设置为“TRANS_TRUE”。如果(e)认证方法不被支持或者(f)在认证数据中有格式错误,则“decompose”(“分解”)被设置为“TRANS_FALSE”。接下来,如图15所示,在接收到来自于应用程序层协议处理任务402的执行协议处理步骤的通知(S140)后,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404获取下一个处理步骤(S141)。接着,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404在应用程序层包处理单元405中分析响应(S142)。接下来,在接收到来自于应用程序层协议处理任务402的执行协议处理步骤的通知(S143)后,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404获取下一个处理步骤(S144)。接着,HTTP客户端处理步骤(用于获取代理认证方法)存储单元404在应用程序层包处理单元405中完成处理(S145中的销毁),且应用程序层包处理单元405在HTTP报头管理单元406中完成处理(S146中的销毁)。应用程序层协议处理任务402在HTTP客户端处理步骤(用于获取代理认证方法)存储单元404中执行完成协议处理步骤的处理(S147),且HTTP客户端处理步骤(用于获取代理认证方法)存储单元404关闭与套接字I/F网桥409的连接(S148)。接下来,应用程序层协议处理任务402在HTTP客户端处理步骤(用于获取代理认证方法)存储单元404中完成处理(S149中的销毁)。在这个情况下,如果“AppParamList”的“SAuthInfo->fis_failed”为“TRANS_TRUE”,(g)对请求通过网络发送的响应(认证代理失败:0x06)被返回给OMAP,(h)执行处理步骤和等待处理步骤被删除,以及(i)用于通过网络发送的请求的用户缓存被释放。接着,处理分支成alt421(利用传输明文在HTTP客户端处接收信息)或者alt422(利用通过代理进行连接以及以SSL/TLS传输数据在HTTP客户端处接收信息)。下面参考图16A和16B描述处理分支成alt421(利用传输明文在HTTP客户端处接收信息)的图像形成设备情况。图16A和16B中从左到右有应用程序层协议处理任务402、应用程序层输入/输出参数数据列表403、HTTP客户端处理步骤(协议默认)存储单元408、应用程序层包处理单元405、HTTP报头管理单元406、认证数据管理单元412、应用程序层有效负载管理单元413、套接字I/F网桥409、与应用程序层连接的网桥414、与装置信息连接的网桥410以及用于加密的网桥415。在接收到来自于应用程序层协议处理任务402的启动协议处理步骤的通知(S150)后,HTTP客户端处理步骤(协议默认)存储单元408在套接字I/F网桥409中生成套接字(S151)。如果在启动协议处理步骤中出现错误,那么例如(j)删除执行处理步骤,(k)释放用于通过网络发送的请求用户缓存,以及(l)将对通过网络发送的请求的响应(连接主机失败:0x02)返回给OMAP的错误处理被执行。接下来,HTTP客户端处理步骤(协议默认)存储单元408在套接字I/F网桥409中设置套接字选项(连接超时信息)(S152)、执行连接处理(S153)、设置套接字选项(发送超时信息)(S154)并设置套接字选项(接收超时信息)(S155)。在生成请求包时(S156),HTTP客户端处理步骤(协议默认)存储单元408分配存储区域(堆)用于在应用程序层包处理单元405中生成请求4053、在HTTP报头管理单元406中生成请求报头4063以及在应用程序层有效负载管理单元413中生成请求主体4131。接下来,在接收到来自于应用程序层协议处理任务402的执行协议处理步骤的通知(S157)后,HTTP客户端处理步骤(协议默认)存储单元408获取下一个处理步骤(S158)。接着,HTTP客户端处理步骤(协议默认)存储单元408在应用程序层包处理单元405中生成请求4053(S159)。应用程序层包处理单元405在与应用程序层连接的网桥414中释放缓存(S160)。在这个情况下,只有在位置空闲的情况下,从用户获取的内容缓存被用于发送包的缓存。这个处理之所以被执行是因为在位置空闲的情况下HTTP报头的大小可以超出8K字节。接下来,应用程序层包处理单元405在HTTP报头管理单元406中生成请求报头4063(S161)。HTTP报头管理单元406在认证数据管理单元412中执行“setURI”处理(S162)以及“setMethod”处理(S163)。HTTP报头管理单元406在认证数据管理单元412中生成认证数据(S164)。在这个情况下,只有在使用代理的情况下处理会分支成alt43。同样,在那个情况下,用于认证的用户名称和密码从INFO被获取。值得注意的是,代理是否被使用是由AuthInfo的可利用性来确定的。在分支的alt43中,认证数据管理单元412通过与装置信息连接的网桥410从外部装置获取设置(S165)。接着,处理在基本认证的情况下分支成alt431并在摘要式认证的情况下分支成alt432。在alt431中,认证数据管理单元412在用于加密的网桥415中利用“base64”解码(S166)。另外地,在alt432中,认证数据管理单元412在用于加密的网桥415中生成随机数(S167)并执行摘要式计算(S168)。应用程序层包处理单元405通过套接字I/F网桥409将请求包发送给另一个装置(S169)并释放缓存(S170)。这个处理被执行是因为从用户获取的内容缓存被用于发送包的缓存。同样,在不执行“dhStart”处理时,从用户获取的内容缓存无法被释放。因此,在“getDhBufAsPacket”处理中获取的内容缓存被保留,且当下次调用“getDhBuf”时,该保留的内容缓存被返回。更进一步地,在位置空闲的情况下,由于对通过网络发送的请求的响应被返回且“getDhBuf/dhStart”处理在执行“freeDhBufAsPacket”处理之后被自动执行,因此内容缓存无一例外地被释放。接下来,在图17A和17B中,在从应用程序层协议处理任务402接收执行协议处理步骤的通知(S171)后,HTTP客户端处理步骤(协议默认)存储单元408获取下一个处理步骤(S172)。接着,HTTP客户端处理步骤(协议默认)存储单元408在应用程序层包处理单元405中生成请求4053(S173)。应用程序层包处理单元405在应用程序层有效负载管理单元413中生成请求主体4131(S174)并通过套接字I/F网桥409将请求主体发送给另一个装置(S175)。接下来,应用程序层包处理单元405在与应用程序层连接的网桥414中释放缓存(S176)。在这个处理中,用于请求通过网络发送的命令的用户缓存被释放。值得注意的是,应用程序层包处理单元405从列表中删除其值为“SUserData”结构的“UAppLayerParamValue”结构。更进一步地,应用程序层包处理单元405在与应用程序层连接的网桥414中获取缓存(S177)。在从用户获取内容的缓存的情况下,通过执行“SEM_TRANS_CONTNT”处理,单独访问控制被进行。在已经单独控制访问的情况下,需要等待单独访问控制的释放。值得注意的是,可以防止多个内容数据在OMAP传输的时候被混乱以及防止通过进行单独访问控制而使得在OMAP侧变得很难区分。应用程序层包处理单元405在子系统之间的通讯中通过与应用程序层连接的网桥414发送命令,该命令是用于对请求通过网络发送的响应。然而,就对通过网络发送的最后请求的响应而言,如果“SAuthInfo”被包含在“AppParamList”中,则没有发送对响应的命令。应用程序层包处理单元405为内容释放缓存的单独访问控制。在等待用户之后,应用程序层协议处理任务402在应用程序层输入/输出参数数据列表403中添加参数(S179)。应用程序层协议处理任务402将其值为“SUserData”结构的“UAppLayerParamValue”结构添加到列表。值得注意的是,从S171到S179的处理被重复进行直到完成生成有效负载(循环42)。接下来,在从应用程序层协议处理任务402接收执行协议处理步骤的通知(S180)后,HTTP客户端处理步骤(协议默认)存储单元408获取下一个处理步骤(S181)。接着,HTTP客户端处理步骤(协议默认)存储单元408在应用程序层包处理单元405中生成下一个包(S182)并为生成响应4054分配存储区域(堆)。同样,应用程序层包处理单元405在HTTP报头管理单元406中生成下一个报头(S183)并为生成响应报头4064分配存储区域(堆)。更进一步地,应用程序层包处理单元405在应用程序层有效负载管理单元413中生成下一个有效负载(S184)并为生成响应主体4132分配存储区域(堆)。HTTP客户端处理步骤(协议默认)存储单元408完成应用程序层包处理单元405中的处理(S185中的销毁)。应用程序层包处理单元405完成HTTP报头管理单元406中的处理(S186中的销毁)并完成应用程序层有效负载管理单元413中的处理(S187中的销毁)。接下来,HTTP客户端处理步骤(协议默认)存储单元408在应用程序层包处理单元405中执行分析处理(S188)。应用程序层包处理单元405在套接字I/F网桥409中执行“recvSocket”处理(S189)。更进一步地,应用程序层包处理单元405在套接字I/F网桥409中执行“decompose”处理(S190)。在这个情况下,如果状态码是417(Proxy-Authenticate),那么在“AppParamList”中的“SAuthInfo->fis_failed”被设置为“TRANS_TRUE”。如果状态码不是417,“AppParamList”中的“SAuthInfo->fis_failed”被设置为“TRANS_FALSE”。同样,利用作为“decompose”的输出参数“packet_attr”,HTTP报头管理单元406将是否已知有效负载的大小返回到应用程序层包处理单元405。如果有效负载的大小是已知的,那么“packet_attr.f_has_payload_size”被设置为“TRANS_TRUE”。如果有效负载的大小不是已知的,那么“packet_attr.f_has_payload_size”被设置为“TRANS_FALSE”。如果“AuthInfo”被包含在“AppParamList”中,那么在“SAuthInfo->fis_failed”的值为“TRANS_TRUE”的情况下HTTP客户端处理步骤(协议默认)存储单元408返回对通过网络发送的请求的响应(认证代理失败:0x06),并在“SAuthInfo->fis_failed”的值为“TRANS_FALSE”的情况下HTTP客户端处理步骤(协议默认)存储单元408返回对通过网络发送的请求的响应(成功:0x01)。接下来,如图18A和18B所示,在从应用程序层协议处理任务402接收执行协议处理步骤的通知(S191)后,HTTP客户端处理步骤(协议默认)存储单元408获取下一个处理步骤(S192)。接着,HTTP客户端处理步骤(协议默认)存储单元408在应用程序层包处理单元405中执行分析处理(S193)。应用程序层包处理单元405在应用程序层有效负载管理单元413中执行有效负载数据格式的设置处理(S194)。在这个情况下,如果有效负载大小是已知的,那么“has_payload_size”被设置为“TRANS_TRUE”且“payload_size”被设置为有效负载大小的值。如果有效负载大小不是已知的,那么“has_payload_size”被设置为“TRANS_FALSE”且“payload_size”被设置为0。接下来,应用程序层包处理单元405在与应用程序层连接的网桥414中执行“getDhBuf”处理(S195)。在这个情况下,如果从用户获取内容的缓存,那么通过“SET_TRANS_CNTNT”处理进行单独访问控制直到对有效负载的分析结束。值得注意的是,从S195到S199的处理(随后将描述)被重复进行直到对有效负载的分析结束(循环43)。接下来,应用程序层包处理单元405在套接字I/F网桥409中执行“recvSocket”处理(S196)。如果在“recvSocket”处理中出现错误,那么处理分支成alt44。在这个情况下,应用程序层包处理单元405在与应用程序层连接的网桥414中执行“dhStart”处理(S197)。也就是说,在将未完成的传输数据传输给OMAP后,处理走出循环(循环43)。值得注意的是,在无“Content-Length”(“内容长度”)时接收HTTP响应以及关闭与服务器的连接的情况下,处理经过这个路径。接下来,应用程序层包处理单元405在应用程序层有效负载管理单元413中执行“decompose”处理(S198)。在这个情况下,如果有效负载大小是已知的,那么“E_PAYLOAD_RESULT_COMPLETE”在接收到所有有效负载的时候被返回且“E_PAYLOAD_RESULT_NOT_COMPLETE”在完成接收到所有有效负载之前被返回。如果有效负载大小不是已知的,那么“E_PAYLOAD_RESULT_NOT_COMPLETE”总是被返回。接下来,应用程序层包处理单元405在与应用程序层连接的网桥414中执行“dhStart”处理(S199)。在这种情况下,应用程序层包处理单元405首先仅将报头传输给OMAP。传输给OMAP只在以下情况下被执行:在不是数据块的情况下用户缓存变满且对有效负载的分析结束,以及在是数据块的情况下用户缓存变满且对于一个数据块的有效负载的分析结束。接下来,应用程序层包处理单元405为来自于用户的内容释放缓存的单独访问控制值得注意的是,在出现套接字错误的情况下,应用程序层包处理单元405利用作为输出参数的“error_reason”将错误原因返回到HTTP客户端处理步骤(协议默认)存储单元408。同样,如果出现套接字错误,那么HTTP客户端处理步骤(协议默认)存储单元408将“E_TRANS_EXECUTE_RESULT_NOT_COMPLETED_EXECUTE_AGAIN”返回给应用程序层协议处理任务402。应用程序层协议处理任务402完成对请求共享通过网络接收到的数据的响应。值得注意的是,在出现套接字错误时完成处理步骤的情况下,应用程序层协议处理任务402通过执行“AppProtocolTask”(“App协议任务”)处理丢弃对请求共享通过网络接收到的数据的响应。接下来,在从应用程序层协议处理任务402接收执行协议处理步骤的通知(S200)后,HTTP客户端处理步骤(协议默认)存储单元408获取下一个处理步骤(S201)。接着,HTTP客户端处理步骤(协议默认)存储单元408询问应用程序层包处理单元405是否重新使用对话(S202)。应用程序层包处理单元405在HTTP报头管理单元406中询问“keepAlive”(S203)。接着,HTTP客户端处理步骤(协议默认)存储单元408完成应用程序层包处理单元405中的处理(S204中的销毁),且应用程序层包处理单元405完成HTTP报头管理单元406中的处理(S205中的销毁)以及完成应用程序层有效负载管理单元413中的处理(S206中的销毁)。如果有“keepAlive”(“保持活着”),则处理分支成alt45。在这个情况下,HTTP客户端处理步骤(协议默认)存储单元408生成包(S207)。也就是说,HTTP客户端处理步骤(协议默认)存储单元408生成包含报头和有效负载的包的实例。如果“fis_secured”被设置为“TRANS_TRUE”,那么“AppLayerPacket/setLowLayerSecured”(“App层包/设定低层安全”)被调用使得安全通讯可以被继续。接下来,如图19A和19B所示,下面描述在不重新使用对话(alt46)的情况下分支的处理以及在重新使用对话(alt47)的情况下分支的处理。在不重新使用对话(alt46)的情况下,在处理“clearAppProc”之后(S208),应用程序层协议处理任务402在与应用程序层连接的网桥414中为通过网络接收数据的请求释放缓存(S209)。接下来,应用程序层协议处理任务402在HTTP客户端处理步骤(协议默认)存储单元408中完成协议处理步骤(S210),且HTTP客户端处理步骤(协议默认)存储单元408在套接字I/F网桥409中关闭连接(S211)。接下来,应用程序层协议处理任务402完成HTTP客户端处理步骤(协议默认)存储单元408中的处理(S212中的销毁)并完成应用程序层输入/输出参数数据列表403中的处理(S213中的销毁)。在这个情况下,保留在列表上的其值为“SHostInfo”结构的“SAppLayerParam”结构以及其值为“SAuthInfo”结构的“SAppLayerParam”结构被删除。接着,处理返回至S102(rcv_dtp)。换句话说,在重新使用对话的情况下(alt47),在处理“trcv_dtq”(S214)后,处理进一步地分支(alt471或者alt472)。在不是E_OK的情况下(alt471),在处理“clearAppProc”完成后,处理返回至S102(rcv_dtp)。在E_OK的情况下,处理进一步地分支(alt4721或者alt4722)。在目的地地址和端口号不一样的情况下(alt4721),在处理“clearAppProc”之后,处理返回至S102(rcv_dtp)。在目的地地址和端口号相同的情况下(alt4722),应用程序层协议处理任务402在HTTP客户端处理步骤(协议默认)存储单元408中执行“isConnectionEstablished”(“连接建立了”)处理(S215)。接着,HTTP客户端处理步骤(协议默认)存储单元408询问套接字I/F网桥409与服务器之间的连接是否被维持(S216)。接下来,处理进一步分支(alt47221或者alt47222)。在连接被维持的情况下(isConnected的返回值为“TRAN_TRUE”)(alt47221),处理返回至S103(startAppProc)。在这个情况下,由于运行处理步骤已经存在,所以处理跳至“execute”处理。换句话说,在连接没有被维持的情况下(isConnected的返回值为“TRAN_FALSE”)(alt47222),在处理“clearAppProc”之后,处理返回至S102(rcv_dtp)。第三实施例下面参考图20到图23A和23B的时序图描述在包括本发明的第三实施例的网络控制器的设备作为HTTP客户端操作的情况下的处理的时序。时序图的上部所示为执行每一个处理的处理单元。值得注意的是,关于从接收自应用程序的数据生成HTTP请求包的处理的描述被省略,这是由于它与第二实施例中的相同,且以下描述集中于加密通讯处理。本发明的第三实施例与第二实施例之间的区别在于:为了在第三实施例中执行加密通讯,执行SSL/TLS对话启动处理和对话完成处理。也就是说,在第三实施例中的发送/接收数据中利用SSL/TLS,数据被加密发送并被解码接收。值得注意的是,利用通过网络发送的请求的属性(“证书CN名称”、“认证证书组”、“在服务器认证失败情况下的操作”以及“进行/不进行证书CN的检查”),加密通讯的所有处理步骤被隐藏。图20中从左到右有:人(TRANS_RXTX1_TASK)501、应用程序层协议处理任务502、客户端处理步骤存储单元506、应用程序层包处理单元507、应用程序层有效负载管理单元508、HTTP报头管理单元511、套接字I/F网桥503、与应用程序层连接的网桥504以及SSL/TLS505。在从人501接收启动任务的通知后,应用程序层协议处理任务502启动(S401)。应用程序层协议处理任务502等待数据队列(S402)。通过来自用户的中断,等待队列被设置为数据队列。在这个情况下,上面参考图4A和4B所描述的通过网络发送的请求数据在子系统之间的通讯中被接收。值得注意的是,在装置报头的情况下,OMAP能源节省0被设置为划分的数据大小且EOF为“0x00”。换句话说,在应用程序报头的情况下,OMAP通讯将通讯数据大小设置为应用程序数据大小。在这个情况下,目的地为“0x0003(RXTX3)”,控制报文为“0x02”,报文ID的详细信息为“0x0D”,通讯模式为“0x00”且振动为“0x00”。接下来,在“handleDataQueueEvent”处理(S403)和“handleUserEvent”处理(S404)之后,“startAppProc”函数被执行(S405)。“open_error_reason”由“startAppProc”函数定义并作为输出参数传送到被调用的函数。应用程序层协议处理任务502在客户端处理步骤存储单元506中分配存储区域以便通过构造器处理客户端处理步骤(堆)。在这个情况下,确定SSL通讯是否被执行的标志被设置成第三自变量(argument)。接着,应用程序层协议处理任务502通过“open”执行启动处理步骤。客户端处理步骤存储单元506通过动作方法执行启动处理步骤(S406)。接着,客户端处理步骤存储单元506在套接字I/F网桥503中生成套接字并调用外部“SOCK_Socket”(S407)。客户端处理步骤存储单元506执行客户端的协议处理步骤启动处理(S408)。接下来,客户端处理步骤存储单元506在套接字I/F网桥503中设置套接字选项并调用外部“SOCK_SetSockOption”(S409)。接着,客户端处理步骤存储单元506通过套接字I/F网桥503与外部装置连接(S410)。在这个情况下,外部“SOCK_Connect”被调用。客户端处理步骤存储单元506在SSL/TLS505中执行SSL/TLS对话启动处理(S411)。在这个情况下,参考用于通过子系统之间的通讯的网络进行发送的请求数据的参数,如果协议类型为HTTPS(0x02),则“TLS_OpenSocket”被调用。同样,在这个时刻,属性为具有“fis_secured”的SSL/TLS属性被储存。客户端处理步骤存储单元506在应用程序层包处理单元507中为生成HTTP请求5051分配存储区域,在应用程序层有效负载管理单元508中为生成请求主体5081分配存储区域并在HTTP报头管理单元511中为生成请求报头5111分配存储区域(堆)。同样,客户端处理步骤存储单元506设定在应用程序层包处理单元507中正在进行安全通讯(S412)。值得注意的是,在出现错误的情况下,客户端处理步骤存储单元506将“sendErrorResponse”(“发送错误响应”)的错误响应返回给应用程序层协议处理任务502。对于相应于返回给OMAP的发送的结果,“0x01”指的是“成功”,“0x02”指的是“与主机的连接失败”,“0x03”指的是“与SSL的连接失败”,“0x04”指的是“在服务器处的认证失败”,“0x05”指的是“在客户端处的认证失败”,“0x06”指的是“在代理处的认证失败”以及“0x07”指的是“数据通讯的失败”。接下来,在接收到来自于应用程序层协议处理任务502的执行协议处理步骤的通知(S413)后,客户端处理步骤存储单元506获取下一个处理步骤(S414)。接着,客户端处理步骤存储单元506在应用程序层包处理单元507中生成HTTP请求5051(S415)。同样,应用程序层包处理单元507在HTTP报头管理单元511中生成请求报头5111(S416)并通过SSL/TLS505启动加密发送处理(S417)。在这个情况下,在“fis_low_layer_secured(TRANS_TRUE)”的情况下“TLS_WriteSocket”被调用,且在“fis_low_layer_secured(TRANS_FALSE)”的情况下“SOCK_Write”被调用。接下来,如图21A和21B所示,在接收到来自于应用程序层协议处理任务502的执行协议处理步骤的通知(S418)后,客户端处理步骤存储单元506获取下一个处理步骤(S419)。接着,客户端处理步骤存储单元506在应用程序层包处理单元507中生成HTTP请求5051(S420)。应用程序层包处理单元507在应用程序层有效负载管理单元508中生成请求主体5081(S421)。同样,应用程序层包处理单元507在SSL/TLS505中执行加密发送处理(S422)。更进一步地,应用程序层包处理单元507在套接字I/F网桥503中执行缓存释放处理(S423)、缓存获取处理(S424)以及发送处理(S425)。在这个情况下,应用程序层包处理单元507发送对通过网络发送的请求的响应数据。在这个情况下,发送源是“TRANS_RXTX3(0x0003)”,且发送的结果是“成功(0x01)”。同样在这个情况下,对于装置报头,划分的数据大小是4字节,且EOF是“0x00”。换句话说,对于应用程序报头,应用程序数据大小是4字节,目的地是“0x0001”,控制报文ID是“0x03”,报文ID的详细信息是“0x0D”,通讯模式是“0x00”以及振动是“0x00”。接下来,应用程序层包处理单元507确定返回值(S426)。在这个情况下,如果发送自OMAP的数据为划分的数据,那么“AppLayerPayload”(“App层有效负载”)的返回值为“E_PAYLOAD_RESULT_NOT_COMPLETED”且“AppLayerPacket”的返回值为“E_PACKET_RESULT_NOT_COMPLETE_WAIT_TNPUT”。接下来,在接收到来自于应用程序层协议处理任务502的执行协议处理步骤的通知(S427)后,客户端处理步骤存储单元506获取下一个处理步骤(S428)。接着,客户端处理步骤存储单元506在应用程序层包处理单元507、应用程序层有效负载管理单元508以及HTTP报头管理单元511中生成响应包。这个处理的详细内容与上述第二实施例中的相同,所以详细的解释被省略(步骤S429到S442)。接下来,如图22所示,客户端处理步骤存储单元506在应用程序层包处理单元507中分析在S437中生成的HTTP响应5053(S443)。应用程序层包处理单元507接收经由SSL/TLS505编码的数据(S444)。应用程序层包处理单元507在HTTP报头管理单元511中分析响应报头5113(S445)。接下来,如图23A和23B所示,在接收到来自于应用程序层协议处理任务502的执行协议处理步骤的通知(S446)后,客户端处理步骤存储单元506获取下一个处理步骤(S447)。接着,客户端处理步骤存储单元506在应用程序层包处理单元507中启动分析处理(S448)。应用程序层包处理单元507经由与应用程序层连接的网桥504获取缓存(S449)。在这个情况下,只有HTTP报头被首先发送给OMAP。接着,应用程序层包处理单元507经由与应用程序层连接的网桥504执行发送处理(S450)并经由SSL/TLS505接收编码的数据(S451)。应用程序层包处理单元507在应用程序层有效负载管理单元508中执行分析处理(S452),并经由与应用程序层连接的网桥504执行发送处理(S453)。接下来,在接收到来自于应用程序层协议处理任务502的执行协议处理步骤的通知(S454)后,客户端处理步骤存储单元506获取下一个处理步骤(S455)。接着,客户端处理步骤存储单元506完成应用程序层包处理单元507中的处理(S456中的销毁),应用程序层包处理单元507完成HTTP报头管理单元511中的处理(S457中的销毁),以及应用程序层有效负载管理单元508中的处理(S458中的销毁)。最后,在接收到来自于应用程序层协议处理任务502的完成协议处理步骤的通知(S459)后,客户端处理步骤存储单元506关闭加密通讯对话(S460)。接着,客户端处理步骤存储单元506与套接字I/F网桥503断开连接(S461)。应用程序层协议处理任务502完成客户端处理步骤存储单元506中的处理(S462)。根据上面教导,可以有多种附加的修改方案和改变。因此可以理解的是,在所附加的权利要求的范围内,除了这里所特别描述的内容外,本专利说明书所公开的内容可以被实施。由于可以被计算机领域的技术人员所领会,根据本说明书的教导,本发明可以通过方便地使用传统的通用数字计算机来实现。基于本发明教导,合适的软件编码可以轻而易举地由技能丰富的编程人员准备,因为这对软件领域中的那些技术人员来说是显而易见的。本发明也可以通过准备专用集成电路来实现或者通过互相连接传统的元件电路的合适的网络来实现,因为这对相关领域中的那些技术人员来说是轻而易举且是显而易见的。当前第1页1 2 3