通信设备和通信控制方法

文档序号:7660043阅读:157来源:国知局
专利名称:通信设备和通信控制方法
技术领域
本发明涉及一种通信装置以及一种使用TCP/IP协议通信提 供应用通信的通信控制方法。
背景技术
在本说明书中,"应用装置"是指一种连接到网络并且能以 TCP/IP协议为底层协议进行应用通信的装置。通常,TCP/IP协议处理经常由称作TCP/IP协议组的软件实 现。图2显示TCP/IP通信中软件处理的分层模型。在图2中, TCP/IP协议组由附图标记201所示范围内的软件处理(software processing)表示。图2中的202是应用层,并且是使用TCP/IP通 信的应用通信协议处理。存在许多种协议,其中包括诸如超文 本传输协议(HTTP)之类的标准协议、按应用 (application-by-application)唯一定义和实现的协议等等。203是套接字(socket)层,通过应用层处理使用底层TCP/IP 协议来管理软件接口处理。"套接字(Socket)"指TCP/IP通信中的 终端点(end-point),可以通过进行TCP/IP通信的网络装置IP地 址和该装置中每个TCP/IP通信例程中所分配的端口号来识别出 "套接字"。套接字接口是应用软件处理TCP/IP通信的接口 ,许 多操作系统(OS)都支持套接字接口 。204是传送层协议处理,205是网络层协议处理。在TCP/IP 中,TCP和UDP(用户数据报协议)作为传输层协议而存在,而 IPv4(IP第4版)和IPv6(IP第6版)作为网络层协议而存在。206是 链路层,并且是取决于网络物理介质的通信协议处理。207是最 底层,它是用于控制网络的物理介质存取控制(MAC)装置的驱动器。传统上,由包含在应用装置内部的中央处理器(CPU)执行的软件来实现TCP/IP协议处理,从而在应用装置中实现TCP/IP 通信。即使到现在,在诸如个人计算机之类富有处理资源的装 置中,仍然是通过包含在操作系统(OS)中的TCP/IP协议处理来 实现TCP/IP通信。然而,近年来,应用装置所发送接收的数据量已经增大, 而且对TCP/IP通信的软件处理施加给CPU的处理负荷已经变得 非常大。例如,诸如网络照相机和网络视频分配服务器之类的 视频服务器装置、网络媒体播放机和网络兼容硬盘记录机之类 的数字音频/视频(AV)装置已经得到广泛使用。此外,在诸如通 过网络输入和输出视频的装置中,涉及用于实时发送和接收高 分辨率图像数据的通信处理的处理负荷正在增长。为了应对TCP/IP通信的CPU处理负荷的增长,正在实现一 种卸载TCP/IP协议处理的方法,其目的在于减少应用装置的 CPU负荷并提高TCP/IP通信吞吐量。在TCP/IP通信中,"卸载 (offloading),,是指主要利用单独的处理装置而不是应用装置的 CPU来处理图2中数字208所指的软件。例如,存在由不同于应 用装置CPU的微处理器执行卸载处理的情况,也存在通过专用 硬件电路对软件中TCP/IP处理计算量大的部分进行高速处理的 情况。美国专利6,941,386号公开了 一种涉及智能网络接口卡 (INIC)的方法,该卡安装于包含在主装置中的通信处理装置中, 或者安装于包含在主装置的外部扩展接口中的通信处理装置 中。釆用这种方法,实现了通过硬件电路处理的TCP/IP协议处 理,并且卸载了由主装置CPU执行的TCP/IP协议组的软件处理。在这个传统实例中,这种方案保持由CPU执行的通用协议
供了两种处理由通用协议组执行的慢速处理路径,以及由硬 件处理执行的快速处理路径。这是因为硬件处理不支持TCP/IP 协议处理或者以;哽件实现的成本不合理。另夕卜,近年来,存在通过专用硬件完全卸载由应用装置CPU 执行的TCP/IP协议处理的情况,因此用于TCP/IP通信的CPU资 源使用减少到最小。然而,对于严格限制硬件资源成本的集成装置而言,利用 硬件卸载TCP/IP协议处理的方案将可处理的通信连接数量限制 为较小的数量。因此,存在一个问题应用装置不能同时打开 很多个通信连接并进行通信。此外,完全采用专用硬件卸载图2所示数字208所指的范围 中的全部协议处理(通常由软件处理)会导致硬件电路的规模变 得太大。因此,在成本方面,这种方案不适合于严格限制所设 置的硬件资源的集成装置。发明内容本发明提供一种用于提高通信设备中的TCP/IP通信性能的技术。另外,本发明提供一种用于实现高吞吐量的技术,以及一 种用于在保持合理成本的同时通过硬件实现TCP/IP通信处理的技术。根据本发明的一个方面,提供一种通信设备,其执行利用 TCP/IP协议的应用通信,所述通信设备包括网络通信单元和应 用系统单元,其中,所述应用系统单元利用由所述网络通信单 元执行的第一 TCP/IP协议处理和由所述应用系统单元执行的 第二 TCP/IP协议处理之一 来执行应用通信,以及所述网络通信
单元基于应用通信的通信状况将用于处理应用通信的处理切换为所述第一TCP/IP协议处理和所述第二TCP/IP协议处理之根据本发明的另 一个方面,提供一种通信设备的通信控制 方法,所述通信设备执行利用TCP/IP协议的应用通信,所述通 信设备包括网络通信单元和应用系统单元,所述方法包括以下 步骤利用由所述网络通信单元执行的第一TCP/IP协议处理和 由所述应用系统单元执行的第二TCP/IP协议处理之一来执行 应用通信,以及基于所述应用通信的通信状况将用于处理应用 通信的处理切换为所述第一 TCP/IP协议处理和所述第二 TCP/IP协议处理之一。参考附图,本发明的更多特征将从下列示例性实施例中得 以显现。


图l是显示本发明实施例实例的框图。图2是显示TCP/IP通信中软件处理的分层模型的图。图3是显示应用通信中TCP/IP通信部分的处理流程的图。图4是说明用于判断是否在网络通信单元或应用系统单元中执行TCP/IP协议处理的过程的流程图。图5是说明图4中步骤S402的处理的流程图。图6是作为应用装置例子的网络照相机的框图。图7是显示网络照相机的应用通信处理的分层模型的图。图8是显示本发明实施例中通信数据在TCP/IP通信处理模块之间的流动的图。图9是显示用于对每个T C P /1P协议执行协议处理的处理单元和这些处理单元的主要处理细节的图。
图IO是显示TCP通信流程实例的图。图ll是显示当TCP套接字处于CLOSED状态时的SYN发送 处理的图。图12是显示当TCP套接字处于SYN—SENT状态时的 (SYN,ACK)接收处理的图。图13是显示创建TCP连接建立请求待机(standby)套接字的处理的图。图14是显示在LISTEN状态时SYN接收处理的图。 图15是显示当TCP套接字处于SYN—RECV状态时的ACK接 收处理的图。图16是显示当TCP套接字处于ESTABLISHED状态时的数 据发送处理的图。图17是显示当TCP套接字处于ESTABLISHED状态时的数 据接收处理的图。图18是显示当TCP套接字处于ESTABLISHED状态时的FIN发送处理的图。图19是显示当TCP套接字处于FIN_WAIT1状态时的 (FIN,ACK)接收处理的图。图20是显示当TCP套接字处于ESTABLISHED状态时的FIN 接收处理的图。图21是说明套接字切换处理的图。
具体实施方式
第一实施例图l是显示作为根据本发明的通信设备的应用装置的实施 例的实例的框图。在图1中,101表示本实施例的应用装置。这 个应用装置是通信设备,包括网络通信单元102和应用系统单元103,并且使用TCP/IP协议进行应用通信。102是网络通信单元, 10 3是应用系统单元。连接到网络118并发送/接收帧的通信控制 单元105和作为网络通信单元102内的主存4渚装置的本地RAM 106都连接到网络通信单元102的本地总线104。另外,#^亍 T C P /1P协议处理的协议处理单元10 7 、用于执4于数据的总线传送 的DMA控制器(DMAC) 108以及4丸行网络通信单元102内的控制 程序的内部控制处理器(本地C P U) 10 9都连接到本地总线10 4 。CPU 112和存储了系统程序的ROM 113都连接到应用系统 单元103的系统总线lll。另外,作为执行系统程序期间所使用 的主存储装置的RAM 114连接到系统总线lll;系统程序从 ROM 113装入RAM 114,并由CPU112执行。此外,连接到同一 系统总线lll的115和116表示用于实现应用装置的独特应用功 能的硬件处理装置。通过"应用功能单元A"(l 16)和"应用功能单 元B"(115)这样的名称指出这些硬件处理装置。同样在图l中, 117是电源控制单元,它控制对网络通信单元102和应用系统单 元103的供电。在应用装置101中,通信控制单元105物理连接到网络108。 网络108是硬布线的网络(以以太网(Ethernet⑧)为例);然而网络 108可以是无线网络、光纤网络等等。此外,网络108可以连接 到另 一个网络或因特网,以便应用装置101的用户可以通过 TCP/IP通信从远程位置执行应用通信。网络通信单元102内的通信控制单元105具有向网络118发 送/从网络118接收传输帧的功能。例如,就以太网来说,通信 控制单元105包括以太网MAC处理(发送介质控制处理)功能、发 送/接收帧数据功能等。协议处理单元107是专门用于通信协议处理的处理装置,并 且具有执行通用TCP/IP协议处理的功能。具体而言,协议处理
单元107具有执行IPv4、 IPv6、 ICMP、 UDP和TCP包创建处理、发送流控制和拥塞控制、通信错误控制等功能。通过专门实现 为硬件电路(即,LSI),协议处理单元107能实现各种处理的高 速处理。计算和校验用于各个协议包的4交-睑和(checksum)以及 分割和整理IP包都可以作为这种处理的实例。分割T C P的传送 数据以及从接收的包进行整理(重建)可以作为这种处理的其他 实例。此外,用于计算TCP/IP协议软件处理所需时间的处理, 诸如重新发送TCP包、在TCP通信中的ACK(确认)处理等可以作 为这种处理的其他实例。通过协议处理单元107卸载执行应用的CPU 112的TCP/IP 协议处理,可以实现应用通信中的高吞吐量和低延迟。内部控制处理器10 9执行网络通信单元10 2的控制程序。控 制程序控制各个装置的操作以及网络通信单元102内的装置间 的数据流。控制程序还接收来自应用系统单元103的控制命令并 进行内部控制。本地RAM 106用作由通信控制单元105、协议处 理单元107、内部控制处理器109等执行的处理中的数据的临时 存储区。此外,在网络通信单元102内设有总线桥接电路110,它允 许本地总线104和应用系统单元103的系统总线lll之间的数据 传输。换言之,网络通信单元102和应用系统单元103的各总线 电路相互连接,通过总线传输进行通信数据输入/输出。执行数 据的总线传送的装置是D M A控制器10 8 。在网络通信单元10 2内 的装置间传输数据时也使用DMA控制器10 8 。由应用系统单元103实现应用装置101的应用功能。CPU 112控制应用功能单元A(116)和应用功能单元B(115)的操作,执 行作为应用功能的 一部分的应用通信等。应用通信是利用 TCP/IP协议的通信。RAM 114用作CPU 112#1行程序期间的临时存储区,还用作供网络通信单元102和应用功能单元115和116 使用的输入/输出数据緩沖器。CPU 112执行的系统程序能够执 行TCP/IP协议处理。换言之,由应用系统单元103中的软件执行 通用TCP/IP通信功能。另外,经由网络通信单元102内的通信控 制单元105发送/接收包。参考图3说明在上述应用装置101的工作实施例中如何在应 用通信中执行T C P /1P协议处理和数据发送/接收处理。图3说明 应用通信的TCP/IP通信部分的处理流程。在图3中,301-309各 表示一个处理模块。301是执行应用通信的应用。例如,就通过应用发送文件的 文件传输协议(FTP)服务器而言,应用就是该服务器程序。FTP 是使用TCP/IP协议的应用协议。应用301在应用系统单元 103(CPU 112)内执行。应用301使用常规套接字接口 302或者高 速套接字接口 303执行应用通信。在使用常身见套接字接口 302的情况下,通过由网络通信单元 102执行的卸载处理和由应用系统单元103的CPU 112执行的软 件处理之一来执行TCP/IP协议处理。在本实施例中,由这些处 理中的哪个处理批i行TCP/IP协议处理每应用通信例程动态地切 换。应用301不需要识别执行了哪个TCP/IP协议处理(换言之, 上述的卸载处理或软件处理)。然而,在应用301利用高速套接字接口 303执行应用通信的 情况下,优选使用利用网络通信单元102执行卸载处理的TCP/IP 通信。因此,高速套接字接口 303可以用于高速连续处理特定应 用通信的TCP/IP协议处理的情况,以及优选以高吞吐量和低延 迟进行通信的情况。上述每个套接字接口 302和303是由应用系统单元103执行 的软件处理。
在图3中,304是套接字层处理,305是TCP/IP协议处理和链 路层协议处理(链路层处理)。304和305两个都是由应用系统单 元103的CPU 112执行的软件处理。在经由常规套接字接口302 执行304的处理的情况下,由软件执行TCP/IP协议处理。304使 用常规套接字接口 302执行应用301的套接字处理。在每个套接 字中测量发送/接收的数据量。在测量处理中,对于应用通信的 全部例程,都在每个设定的时间量测量发送/接收缓冲器(R A M 114内)输入/输出的数据量。下一步,305是TCP/IP处理,其中执行TCP或UDP协议处理 和IP协议处理,TCP和UDP是传输层协议而IP是网络层协议。 另外,在使用TCP作为传输层协议的通信中对TCP连接状态进 行监视。TCP连接状态参见如RFC-793所示的TCP通信的进行状 态。305中的TCP/IP处理对在每个设定的时间量每个应用通信例 程发送或接收包的次数进行计数。此外,305是链路层协议处理 (链路层处理),其中在有线局域网(比如,IEEE 802.3)协议、无 线局域网(比如,IEEE 802.11 a/b/g)协议等中发送/接收帧。在图3中,306-309表示由网络通信单元102寺丸行的处理,其 中3 0 6 - 3 0 8是由协议处理单元10 7执行的处理。经由常*见套接字 接口 302执行处理306对应于切换了应用通信的TCP/IP协议处理 以便由网络通信单元102执行该处理的情况。306是套接字层处理,并且具有与上述304相同的功能;然 而,尽管304中的套接字层处理是由CPU 112执行的软件处理, 但是306是由协议处理单元107执行的硬件电路处理,并且306 能够进行高速处理。类似地,307是链路层协议处理,具有与上 述305相同的功能,是由协议处理单元107进行的处理。308是用于分析(识别)已接收的包并切换发送/接收包的数 据路径的处理。当发送包时,在305,在RAM 114中创建传输帧,
并且在307,在本地RAM 106中创建传输帧。因此,308根据从 305还是307进行发送来改变读出帧的位置,并且将数据传输到 通信控制单元105。另一方面,当接收到包时,分析从通信控制单元105接收的 帧的数据结构。读出已接收的帧的链路层、网络层和传输层的 协议头结构,并且获得各层的协议类型、起点(origin)IP地址和 起点/目的地的端口号。然后,根据获得的信息,判断是由305 还是由307收到帧数据。根据这个判断,将包传输到RAM 114 和本地RAM106之一,其中RAM 114具有用于305的、用于处理 接收到的帧数据的緩冲器,本地RAM 106具有用于307的、用于 处理接收到的帧数据的緩沖器。'309是通信控制单元105的通信控制处理,并且对发送到网 络118/从网络118接收的数据进行控制。在图3中,310是套接字切换控制,它是管理遍及整个应用 装置系统的TCP/IP通信的处理资源的处理。3 IO管理可由网络通 信单元102处理的通信例程数量的分配。对于每一个应用通信例 程,310还判断从常规套接字接口 302执行套接字层处理304和 306中的哪一个,并且对其进行动态切换。应当注意,在本实施 例中,描述成由网络通信单元102内的内部控制处理器109执行 310。然而,可以由协议处理单元107的硬件处理来执行310。310从304、 305、 306和307中获取判断套接字层处理切换所 需的信息。如上所述,对于通信的每个例程,在每个设定的时 间量,304和306的套接字层处理测量发送/接收緩冲器输入/输 出的数据量。另外,对于每个TCP/IP通信例程,在305和307的 TCP/IP处理中,在每个设定的时间量对发送/接收的包的数量进 行计数。此外,在使用TCP通信的情况下监视TCP连接的状态。 这些结果的信息被发送到套接字切换控制310。套接字切换控制310接收这种信息,根据在应用通信中将执行套接字层处理304 和306中的哪一个来判断切换,并且执行该切换。下一步,将参考图4和5解释套接字切换控制310的上述切换 判断的过程。图4是说明判断是在网络通信单元102还是在应用 系统单元103中#丸行应用通信的TCP/IP协议处理的过程的流程 图。图5是以单独的图表显示图4的S402的细节的图。在S401开始切换判断。在S402,网络通信单元102判断在 全部应用通信例程中待执行的TCP/IP协议处理的优先级 (preferential rank)。S403到S409是对应用通信的全部例程重复的步骤,其中判 断是由网络通信单元102还是由应用系统单元103执行每个应用 通信例程的TCP/IP协议处理。注意,根据S402中确定的优先级按顺序重复这些步骤。在 重复的第一个步骤S404中,判断网络通信单元102处理的通信 例程的数量是否小于或等于限制数量(预定数量);如果是,则 处理进入S405,而如果不是,则处理进入S408。在S405,判断在重复步骤中当前处理的应用通信例程是否 是使用TCP的通信。在是TCP通信的情况下,在S406中判断TCP 连接的状态。当TCP连接状态是"ESTABLISHED"时,在S407中,应用通 信被判断为由网络通信单元102进行TCP/IP协议处理。比如,网 络通信单元102进行的TCP/IP协议处理是由网络通信单元102内 部的专用硬件电路(通信控制单元10 5 、协议处理单元10 7等等) 进行的处理。此外,比如,网络通信单元102进^f亍的TCP/IP协议 处理是网络通信单元102内部的内部控制处理器109执行的软件 处理以及由硬件电路执行的计算处理的结合,该硬件电路是通 信控制单元105、协议处理单元107等等。
另外,在S406中,在通信不是TCP的情况下(也就是说,主 要是UDP通信的情况下),处理进入到S408。在S408中,应用通信的例程被判断为由应用系统单元103 的TCP/IP协议处理进行处理。应用系统单元103的TCP/IP协议处 理是由应用系统单元103内的处理器(CPU 112)执行的软件处 理。通过重复步骤S403到S409,对全部应用通信的例程判断是 由网络通信单元102还是由应用系统单元103才丸行TCP/IP协议处理。如目前所述,当TCP/IP通信的并行例程数量在TCP/IP协议 处理可被卸载的限制次数之内时,使用优先卸载TCP/IP协议处 理的装置。超过限制数量的TCP/IP通信例程通过软件处理进行处理。注意,在本实施例中,根据应用通信的状态来切换是通过 由网络通信单元102执行的TCP/IP协议处理还是由应用系统单 元103执行的TCP/IP协议处理来执行应用通信处理。例如,在引 起建立TCP连接的协商处理的TCP状态下、在TCP连接的结束阶 段的TCP状态下,由应用系统单元103执行TCP/IP协议处理。下一步,将参考图5对S402中的步骤进行解释。如前所述,在S402中,在应用通信的全部例程中,网络通 信单元102判断待执行的TCP/IP协议处理的优先级。在S501开始图5的处理。在S502,判断用于分配优先级的 基础是通信数据量还是通信包的数量。可以预先静态地在应用 装置的系统中设置釆用哪个基础,或者可以在操作期间改变所 采用的基础。在S502中以通信数据量作为标准的情况下,处理进入到 S503,然而在以通信包的数量作为标准的情况下,处理进入到
S504。在S503,根据在各个套接字层处理304和306中测量套接字 緩冲器的数据量的输入/输出结果分配优先级,以便具有较大数 据量的通信具有较高的优先级。另一方面,在S504,根据在各 个TCP/IP处理305和307中对发送/接收的包数量计数的结果,向 具有大量包的通信分配较高的优先级。下一步,在S505中,对S503或S504中创建的优先级进行排 序,以便使用高速套接字接口 303的应用通信具有较高的优先 级。然后用于判断优先级的过程在S506结束。通过这种处理来执行S402中的步骤。根据如上述判断的切换结果,在由网络通信单元102执行应 用通信的TCP/IP协议处理的情况下,套接字切换控制310处理通 过306的套接字层处理模块进行判断的应用通信。然而,在由应 用系统单元103执行应用通信的TCP/IP协议处理的情况下,套接 字切换控制310处理通过套接字层处理模块304进行判断的应用 通信。周期性地在每个设定的时间量执行套接字切换控制310 。 然而,应当注意,在本实施例中,还根据比如在应用通信的增 加/减少大于设定数量的时刻应用通信的状态来执行套接字切 换控制310。这样,应用通信的TCP/IP协议处理自动地在由网络通信单 元102执行的卸载处理和由应用系统单元103内的CPU 112执行 的專欠件处理之间进4亍切4灸。到目前为止已经给出本发明第一实施例的说明。在本实施 例中,当通信并发例程的数量大于可卸载的通信例程的数量时, 通过软件处理执行TCP/IP协议处理。因此,可以打开很多通信 连接并同时进行通信。此外,切换应用装置101,以便由网络通 信单元102优先卸载和处理需要高性能TCP/IP通信的应用通信;
因此,总体上可以改善装置的通信性能。 第二实施例网络照相机是连接到本地局域网的应用装置,本地局域网 经由网络分配已获取的图像。在下文中,作为本发明的示例性 实施例,将描述用作应用装置的网络照相机的情况。本实施例的网络照相机具有实时分配已获取的静态图像数 据或已获取的运动图像数据的功能,具有为处于不同于网络照 相机位置的用户执行诸如开始和停止拍摄、调整平摇/俯仰/缩 放之类远程拍摄操作的功能。网络照相机还包括用于存储已获 取的静止图像、运动图像等的二次存储装置,并且具有传输先 前获取的静止图像数据、运动图像数据等的功能。网络照相机还包括Web服务器,网络照相机能够显示由网络照相机获取的 图像并且由管理员从PC、移动式电话等的浏览器进行拍摄设 置。诸如这些功能的各种功能全都可以通过借由网络的通信远 程地使用。图6是显示体现为网络照相机的本发明的实例的框图。本实 施例的网络照相机的系统配置是以第 一 实施例所述的应用装置 为基础的。因此,图6是基于图1的框图。在图6和图1中相同的 组成元件具有相同的附图标记。在图6中,601是本实施例的网络照相机。603是照相机系统 单元,对应于应用系统单元103。照相机系统单元603使用网络 通信单元102执行多个应用通信例程。615是二次存储装置,比如是硬盘装置或诸如CF卡、SD卡 之类的大容量非易失性存储装置。二次存储装置615连接到系统 总线lll,并且主要用于保存由网络照相机601获取的静止图像 和运动图像数据的文件。616是网络照相机601的摄像单元,包 括镜头、CCD(光电转换元件)、CCD控制单元等等。在摄像单
元616中,通过镜头投影的图像由CCD转换为模拟电信号。此外, 摄像单元616包括图像处理单元,图像处理单元消除已经转换为 模拟电信号的所拍摄图像的噪声并且执行将信号转换为数字数 据的模-数转换。617是编码器,对未压缩的数字图像数据编码(编码和压 缩)。摄像单元616和编码器617连接到系统总线lll,并且由摄 像单元616产生静止图像数据、运动图像数据流等等,摄像单元 616按所设定的时间周期输出未压缩的数字图像数据并且由编 码器617对该图像数据进行编码。本实施例的编码器617是硬件 装置,能够实现图像数据的高速编码,并且遵从诸如JPEG、 MPEG-4之类的多种编码格式。电源控制单元117控制向照相机 系统单元603内的装置111到114和615到617供电和复位这些装 置,以及在不丢失存储于照相机系统单元603整体中的数据的情 况下,启动用于关闭电源的终止处理。CPU 112控制照相机系统单元603内的各个装置、控制照相 机应用的执行等等。RAM 114是主存储装置,用于供CPU 112 执行程序,并且RAM 114用作网络通信单元102、照相机系统单 元603的摄像单元616和编码器617所使用的数据的输入/输出的 区域。由照相机系统单元6 0 3实现网络照相才几6 01的照相机功能。另外,由CPU 112执行的系统程序执行属于应用的功能的 一部分的应用通信。例如,在采用流方式分配已获取的图像的 情况下,摄像单元616获取的未压缩的图像帧数据由编码器617 进行编码,由此产生的压缩图像数据被输出到RAM 114。 CPU 112执行的系统程序从RAM 114中的压缩图像数据中按照能够 通过流协议进行发送的格式创建数据流,并且使用T C P /1P通信 发送数据流。在发送数据流时,对多于一个的接收方单独进行 TCP/IP通信处理。
图7是显示本实施例应用通信处理的分层模型的图。在图7 中,高层的处理取决于或利用了低层的处理。最高层是由网络照相机601的系统程序执行的应用通信的 应用协议通信处理701。应用协议通信处理701依赖于经由常规 套接字接口 702或高速套接字接口 703的较低层的通信处理。702 和703是由CPU 112执行的系统程序的应用程序接口(API),并且 更具体的,它们是兼容通用通信套接字接口的程序接口。由常 规套接字接口 702使用的较低层处理不同于由高速套接字接口 703使用的较低层处理。在图7中,704到706是由CPU 112执行的作为系统程序的一 部分而实现的软件处理。704是通信套接字层处理。705是进行 TCP/IP处理并执行诸如TCP 、 UDP和IP之类的TCP/IP协议处理 的软件。706是以太网协议处理,是创建和发送/接收网络的传 输帧的软件处理,其中,网络的物理介质遵乂人IEEE 802.3标准。在图7中,707到709是与704到706相同的处理。换言之,707 是通信套接字层处理,708是TCP/IP协议处理,而709是以太网 协议处理。通信处理707到709是协议处理单元107的功能,并且 由硬件电路进行高速处理。710是以太网通信控制处理,由上述 通信控制单元105^L行。在图7中,由TCP/IP通信处理704到706和TCP/IP通信处理 707到709之一执行较低层TCP/IP通信处理,使用常规套接字接 口 702的应用通信取决于该较低层TCP/IP通信处理。在采用高速 套接字接口 703的情况下,较低层TCP/IP通信处理是由协议处理 单元107行的处理707到709。在本实施例的网络照相机601中,存在两种用于应用通信的 TCP/IP通信协议处理由CPU U2所寺丸行的^:件进行的处理; 以及由协议处理单元107的硬件进行的处理。两种方式之间的差 异主要是处理速度不同。由协议处理单元107执行的TCP/IP协议 处理实现了高吞吐量、低延迟的TCP/IP通信。本实施例中,使 用常规套接字接口 702的应用处理在这两种TCP/IP通信处理类 型之间自动切换。切换方案和切换本身与第一实施例所述相类似。网络照相机6 01在采用实时流方式分配所获取的图像的情 况下,要求高带宽和低延迟的TCP/IP通信。本实施例中,对这 种通信进行切换以便由网络通信单元102优先进行卸载和处理, 因此有可能改善网络照相机的图像分配性能。第三实施例接下来将描述本发明的第三实施例。本实施例的应用装置 IOI的配置与图l所示配置相同。本实施例中,将i兑明如何在应 用通信中执行T C P /1P协议处理和数据发送/接收处理。图8说明 应用通信中TCP/IP通信处理的数据流。在图8中,1301表示应用装置101的整个TCP/IP通信处理, 并且包括处理模块1302到1309。注意,在图8的1302到1309中, 由虚线包围的作为由应用系统单元103执行的处理的处理模块 是软件处理模块,并且由CPU 112执行。然而,包围在虚线中 的作为由网络通信单元102执行的处理的处理模块是硬件处理 或是软件和硬件两种处理。换言之,这些处理模块是由协议处 理单元107、 DMA控制器108和内部控制处理器109执行的处理。在图8中,1302是执行应用通信的应用。例如,在应用发送 文件的文件传输协议(FTP)服务器中,该应用是服务器程序。 FTP是一种使用TCP/IP协议的应用层协议。应用1302在应用系 统单元103内执行。应用1302使用套接字接口 1303执行应用通 信。套接字接口 1303是一种接口 ,用于执行应用通信以进行数
据发送/接收的软件,并且套接字接口 1303是由应用系统单元 103执行的软件处理模块。它也称为套接字API。在利用套接字 接口 1303进行通信时,由网络通信单元执行的卸载处理和应用 系统单元103的CPU 112执行的软件处理之 一 来执行TCP/IP协议处理。在图9中的图表401是显示根据本实施例对每个TCP/IP协议 执行协议处理的处理单元及其主要处理细节的图表。如该图表 所示,根据协议,由网络通信单元102和应用系统单元103两者 执行应用装置101的TCP/IP通信处理。本实施例中,根据应用通 信状态动态地切换由这些单元中的哪个执行处理。应用1302不 需要监视执行了哪个TCP/IP协议处理。在图8中,1304是套接字层处理模块,而1305是执行TCP/IP 协议处理的模块。1304和1305都是由应用系统单元103的CPU 112执行的软件处理模块。当应用通信:执行1304和1305的处理时,该通信^f吏用TCP , 并且使用以下内容切换TCP协议处理以便由1305中的软件执 行TCP协议处理;该通信1吏用UDP;以及该通信4吏用TCP之外 的协议。在TCP通信中,当执行建立TCP连接时的通信时和关闭TCP 连接时的通信时冲丸行TCP协议处理1305,如图9中虚线包围的区 域402所示。换言之,在本实施例中,在TCP连接的建立阶段和 结束阶段的通信处理由应用系统单元103的CPU 112执行。1304执行应用通信的套接字层处理,并且交换待经由套接 字接口 1303发送/接收的应用的数据。另外,当由1305执行TCP 通信处理时,在1304和1305之间交换通信数据。在由1304执行 套接字层处理的TCP通信中,测出每个TCP套接字发送/接收的 数据量。在这个测量处理中,对全部应用通信例程,在每个设
定的时间量测量套接字发送/接收緩冲器(RAM 114内)输入/输 出的数据量,并且向1310中的套接字切换处理模块通知测量结果。
另 一方面,在应用通信是使用UDP的通信的情况下,由1304 执行套接字层处理。此外,在TCP/IP协议处理模块1305中执行 UDP包发送处理。UDP包接收处理由处理模块1307执行,这将 在下文中提及。因此,1304与1307交换UDP包数据。
13 05的TCP/IP处理模块主要执行TCP通信中的TCP协议处 理以及UDP通信中的发送处理,或者执行TCP和UDP以外的上 层IP层协议处理。另外,TCP/IP处理模块1305也执行诸如ICMP、 ARP之类的协议处理,这些协议不直接用于应用通信,但却是 执行TCP/IP通信所必需的。
此外,1305在TCP通信的建立/关闭连接阶段期间监视TCP 连接状态的变化。TCP连接状态参见如RFC-793所示的TCP通信 进程状态。通常,在建立连接阶段的TCP连接状态称作 SYN—SENT和SYN—RCVD 。 在关闭连接阶段,存在状态 FIN—WAIT1 、 FIN—WAIT2 、 CLOSING 、 TIME—WAIT 、 CLOSE—WAIT和LAST—ACK。在TCP套接字中没有连接的状态 称作CLOSED。换言之,当应用通信(TCP通信)处于上述的TCP 连接状态时,由TCP/IP处理模块13 05执行TCP协议处理。
此外,在1305中,在每个设定的时间量为全部处于 ESTABLISHED状态的TCP连接测量发送/接收的TCP包数量,并 向套接字切换处理模块13 10通知测量结果。
在图8中,1306到1309表示网络通信单元102的处理冲莫块; 由协议处理单元107执行1306到1308。
1306是TCP套接字层处理模块。尽管上述套接字层处理模 块1304是由CPU 112执行的软件处理,TCP套接字层处理模块
1306是由协议处理单元107执行的处理并且能进行高速处理。在 应用通信是使用TCP的通信并且TCP连接处于建立阶段的情况 下执行这种TCP套接字层处理。此时,TCP连接处于称为 ESTABLISHED的状态。1306执行经由套接字接口 1303在应用通 信中发送/接收的数据的交换。由1306测量在执行套接字层处理 的TCP套接字中发送/接收的数据量。在这个测量处理中,对全 部应用通信例程,在每个设定的时间量测量套接字发送/接收緩 冲器(本地RAM 106内)输入/输出的数据量,并且向套接字切换 处理模块1310通知测量结果。1307主要执行处于ESTABLISHED状态的TCP协议处理或 者接收UDP包时的UDP协议处理。此外,1307与1304或1306交 换通信数据,1304和1306是较高层的套接字处理模块。然而, 利用1304进行数据交换仅仅发生在接收UDP包的情况下,而利 用1306进行数据交换仅仅发生在TCP通信的情况下。在应用通 信中进行发送时,1307从1306接受被发送的数据。反之,在接 收时,1307向1306传输被接收的数据。时,在每个设定的时间段测量发送/接收的TCP包数量,并且向 套接字切换处理模块1310通知测量结果。1308是在网络通信单元102内执行的处理模块。当TCP包由 TCP处理模块1307发送时,1308创建IP包并在其上附加IP头。 当接收到IP包时,分析所接收的包的头结构,并且已接收的包 的数据被传输给处理模块1305和1307之一。已接收包的分析处理识别出从通信控制单元10 5接收的帧 的数据结构,并且读出网络层和传输层的协议报头区域。在帧 数据包括IP包的情况下,获得了上层协议类型和起点和目的地 的IP地址;此外在UDP包、TCP包等被归入上层协议的情况下, 获得起点和目的地中指定的端口号。然后,通过预先决定的判断处理,根据获得的信息,判断是由1305还是1307接收帧数据。 随着这个判断,数据转入到RAM 114和本地RAM 106之一 ,其 中RAM 114具有用于1305的、用于处理已接收的帧数据的緩冲 器,而本地RAM 106具有用于1307的、用于处理已接收的帧数 据的緩冲器。注意,由TCP/IP协议处理模块1305发送/接收不包括IP包格 式的数据的帧数据(诸如ARP帧)。通过分析已接收的包,在接 收到这种帧数据的情况下,帧数据传输到应用系统单元。在图8中,在1309中的处理是网络通信的链-各层处理。这个 处理发送"妄收有线局域网(例如IEEE 802.3)或无线局域网(例 如IEEE 802.11a/b/g)协议的帧。此外,这个处理对通信控制单 元105进行控制,并且向网络118发送/从网络118接收帧数据。在图8中,1310是套接字切换处理模块,并且是管理整个应 用装置系统的TCP/IP通信处理资源的处理。1310管理通信例程 数量的分配,这些通信由网络通信单元处理。应当注意,在本 实施例中,1310被描述为由网络通信单元102内的内部控制处理 器109才丸^"。然而,可以由协议处理单元107通过石更件处理来冲丸 行1310。1310对使用套接字接口 1303的每一个应用通信例程进行判 断,判断是应该执行应用系统单元的套接字层处理还是网络通 信单元的套接字层处理,然后根据判断结果执行切换处理。通 过1304、 1305、 1306和1307对判断切换套4妻字层处理所必需的 信息进行通信。在通过1305和1307执行的处理中,在应用通信 使用TCP作为较低层协议的情况下,监视TCP连接状态并且向 套接字切换处理模块1310通知其中的改变。根据这个通知,对 于每个应用通信例程的T C P协议处理,套接字切换处理模块 1310在通过1304和1305由应用系统单元103^l行处理和通过 1306和1307由网络通信单元102执行处理之间进行切换。此外, 套接字切换处理模块1310管理由网络通信单元102执行的通信 处理的TCP连接数量。这种管理限制了由网络通信单元102中的 13 06和1307执行TCP协议处理的TCP套接字的总数,以便TCP 套接字的总数不超过预定的上限数量。下一步,将描述在TCP通信中由网络通信单元102和应用系 统单元103切换TCP协议处理。图IO是显示TCP通信流程简化实例的图。图IO显示客户端 501和服务器502建立TCP连接、发送和接收数据以及结束该连 接的通信。客户端501代表请求方,它请求打开TCP连接。从客户端5 01发出T C P连接建立请求5 0 3 ,然后 一 旦接收到 这个请求,服务器502就返回一个响应于该建立请求的确认504。 连接建立请求503是一种包,其中TCP包头的控制位字段的SYN 位是l,因此简称为SYN包。类似地,响应于建立请求的确认是 一种包,其中TCP包头的控制位字段中的SYN和ACK位是1。 一 旦接收到(SYN,ACK)包504,客户端501发送确认(ACK)505。发 送和接收这三个T C P包的阶段512是通常的T C P连接建立期间 发生的通4言,并净皮称、为三次4屋手(three-way handshake)。在客户端501和服务器502之间正建立TCP连接的情况下, 既发送又接收应用数据。在图10中,箭头506到508指出在阶段 513中发送和接收的数据,阶段513中正在建立连接。客户端501发送请求关闭连接的包509。 509是一种包,其中 在T C P包头的控制位字段中的F IN位是1 。 一旦接收到连接关闭 请求509,服务器502发送TCP包(FIN,ACK)510,该包表示响应 于来自客户端501的关闭请求的确认,并且还表示由服务器502 侧本身发出的关闭请求。
一旦接收到TCP包510,客户端501发
送确认(ACK)511。通过阶段514的通信过程来执行在连接关闭 阶段中的通信。在本实施例中,建立连接的阶^殳512(如图IO中TCP通信流 程实例所示)和关闭连"l妻的阶革殳514中的T C P协i义处理都由应用 系统单元103执行。在连接建立期间,由网络通信单元102或应 用系统单元103在阶4史513中执行这些处理。换言之,在使用TCP 的应用通信中,执行TCP协议处理的处理单元根据TCP连接状 态进行切换。使用图IO所示TCP通信流程为例来说明如何由网络通信单 元102和应用系统单元103执行TCP通信处理,以及TCP协议处 理如何对每个TCP连接进行切换。将参考图11到20对这些内容 进行说明。首先,将参考图ll来说明由应用装置101产生打开TCP连接 的请求的情况。图ll显示用于请求建立TCP连接的一方(即客户 端501)的流程图。图ll左侧的"处理单元,,栏表示由网络通信单 元102和应用系统单元103中的哪个单元来扭i行流程图中每个步 骤的处理。换言之,在图ll中,全部处理步骤仅在应用系统单 元103内即完成。此外,通过如RFC-793所示状态的处理发生于 TCP通信中;因此,图ll右侧"TCP状态"栏示出根据流程图的 TCP连接状态的进程。请求建立TCP连接的处理流程从S601开始。在S602,产生 (创建)用于执行TCP通信的新的TCP套接字。此时,在RAM1" 内确保T C P套接字所使用的发送緩冲器和接收緩沖器。下一步,在S60S中,产生(创建)用于开始TCP通信的TCP 控制块(TCB)。 TCB是用于控制TCP通信的上下文信息(TCP控制 信息),并且是几十个参数的集合数据。对每个TCP连接产生 TCB,并且将TCB绑定到TCP套接字并对其进行管理。当执行
每个TCP通信处理时,参考、更新和使用TCB中的每个参数值。 在S603中,应用系统单元103在RAM 114中创建TCB。下一步, 在S604,在TCP套接字表中注册套接字对(Socket pair)信息。套 接字对信息是TCP连接中两个终点的一组IP地址和TCP端口号。 在这种情况下,套接字对信息是用于在应用装置101中打开TCP 连接的一组IP地址和端口号,以及通信对方的IP地址和端口号。 TCP套接字表是数据库,其中注册了正由应用装置101处理的全 部TCP通信(包括建立和关闭阶段的TCP连接)例程的套接字对。TCP套接字表由网络通信单元102内的协议处理单元107管 理。每个套接字对正在使用的多个TCP套接字、以及指出网络 通信单元102和应用系统单元103中的哪个单元当前正在进行处 理的信息也都随着套接字对信息 一起保存在TCP套接字表中。通过应用系统单元103内的CPU 112执行的软件(驱动程序) 来执行向TCP套接字表注册套接字对信息/从TCP套接字表删除 套接字对信息。在阶段S604中,新创建的TCP套接字仍然没有 连接,因此TCP状态处于CLOSED状态。下一步,在S605,发 送SYN包,并且请求通信对方打开TCP连接。换言之,发送图 IO所示通信流程中的503。下一步,处理进入到S606并且处理 流程结束;然而由于在S605中发送SYN,故TCP状态乂人CLOSED 变为SYN—SENT。下一步,参考图12的流程图,将说明当在发送连接建立请 求(SYN)之后出现SYN—SENT状态的情况下,接收到从通信对 方响应于SYN的确认(SYN,ACK)时出现的处理流程。处理从S701开始。在S702,网络通信单元102分析已接收 的TCP包的头结构,获得套接字对信息,并且搜索TCP套接字 表。在S703,网络通信单元102判断是否存在应接收包的TCP 套接字。由图8中的处理模块1307和1308执行S702中的处理。
换言之,通过1308读出TCP包的头信息来获得套接字对信息, 然后向13 0 7通知套接字对信息。然后处理模块13 0 7搜索T C P套 接字表,判断是否存在应接收包的套接字,并且向1308返回搜 索结果。在S703,当不存在能够接收待接收的TCP包的TCP套 接字时,处理进入S704,并且当存在能够接收待接收的TCP包 的TCP套接字时,处理进入S706。在S704,不能接受所接收的包,因此将表示强制复位的 (RST,ACK)包发送到作为TCP包起点的TCP套接字。这个包中 RST位和ACK位已经在TCP包的头控制位中进行了设置。由图8 中的处理模块1307创建返回的TCP包。在S704中发送(RST,ACK) 包的情况下,处理进入S705并结束。当处理已经从S703进入到S706时,存在能够接收待接收的 TCP包的TCP套接字。因为TCP套接字处于SYN—SENT状态,由 应用系统单元103进行接收,因此在S706中,已接收的TCP包被 传输到应用系统单元103。另外,向TCP/IP处理才莫块1305通知在 搜索TCP套接字表期间所找到的套接字号。在S706,由图8中的 处理模块1308处理包,并且将包传送到应用系统单元103内的 RAM 114的包接收緩沖器中。下一步,进入S707,执行用于接收TCP包的处理,然后进 入到S708,发送确认包(ACK)。发送这个确认包是发送由图10 中505和ACK所表示的TCP包。在S707和S708执行的处理由图8 中的TCP/IP处理模块1305执行。换言之,这些步骤在应用系统 单元103内部执行。当在S708发送了确认包时,处理进入S709,并且执行套接 字切换处理。在S709,从图8中的TCP/IP处理模块1305向套接 字切换处理模块1310提供一个通知,并且切换用于该TCP的套 接字层处理和TCP协议处理,以便此后由网络通信单元102执
行。TCP套接字号、链接到TCP套接字的发送緩冲器和接收緩 冲器的存储地址和TCB信息包含在发送给套接字切换处理模块 1310的通知中。作为用于执行TCB通知的方法,可以传输表示 TCB数据在RAM 114中的存储地址,或者可以传输TCB数据的 细节。注意在下文中,发送到套接字切换处理模块1310的通知 包括这些信息。应当注意,由套接字切换处理模块1310执行的处理不必为 了在网络通信单元102内进行处理而切换用于TCP包的协议处 理。在网络通信单元102可处理的TCP连接数量超过上限的情况 下,不执行切换处理。在这种情况下,在应用系统单元103内执 行TCP通信处理。当S 7 0 9中用于T C P套接字的处理模块的切换处理结束时, 处理进入S710,用于接收(SYN,ACK)包的处理流程正常结束。 此时,TCP连接的TCP状态从SYN—SENT变为ESTABLISHED, 如图12中右侧栏所示。到目前为止,已经参考图11和12说明了在如图IO所示建立 TCP连接的阶段512中,在应用装置101以图10中客户端501 —方 的方式请求待打开的连接的情况下的处理细节。下一步,将说明在图10所示建立TCP连接的阶段512中,应 用装置101以图10中服务器502的方式接受打开TCP连接的请求 的情况。通常,在TCP通信中,需要通过使用处于LISTEN状态 的TCP套接字来等待,以便从通信对方接受连接建立请求。利 用本实施例的应用装置101 ,接受连接建立请求(SYN)的全部 TCP套接字的信息都保存在称为LISTEN表的数据库中。 LISTEN表由网络通信单元102内部的协议处理单元107管理。执 行TCP通信的应用创建处于LISTEN状态的TCP套接字,以便等 待T C P连接建立请求。将参考图13中的流程图来说明这种处理。 在图13中,从S801开始处理。在S802,根据用于待产生的 T C P套接字的指令和用于进入连接待机状态的指令来产生新的 TCP套接字,由应用执行这些指令。在S802创建的TCP套接字 处于CLOSED状态。为了使创建的TCP套接字为LISTEN状态, 向套接字切换处理模块1310传送用于在LISTEN表中注册的指 令。包括接受连接建立请求的套接字号和用于等待的本地IP地 址和TCP端口号的集合被添加到用于注册的指令中。直到此时 的处理是由应用系统单元103内的TCP套接字层处理模块1304 执行的。下一步,处理从S802进入到S803;由套4妄字切换处理才莫块 1310切换新产生TCP套4妻字的处理单元,因此在网络通信单元 102内执行TCP协议处理。下一步,在S804,图8中的TCP处理 模块1307在上述LISTEN表中注册套接字对信息和TCP套接字 号,套接字对信息是一组用于等待TCP连接建立请求的本地IP 地址和端口号。然后处理进入S805并结束。通过这种处理,新 的TCP套接字从CLOSED状态变为LISTEN状态。当接收到打开TCP连接的请求时,使用一组目的地IP地址 和端口号作为关键字搜索LISTEN表,并且判断是否存在与目的 地条件匹配的项。换言之,判断是否存在指定为连接建立请求 目的地的已注册TCP套接字,在存在这种TCP套接字的情况下, 有可能建立TCP连接。下一步,将参考图14说明当从TCP通信中的通信对方接收 到请求建立连接的T C P包(S Y N包)时发生的处理流程。处理流程 从S901开始。首先,在S902,在网络通信单元102内分析已接 收的TCP包的头结构,获得套接字对信息,并搜索LISTEN表 (TCP LISTEN套接字表)。由图8中的处理模块1307和1308执行 S902中的处理。由1308读出TCP包的头信息来获得套接字对信
息,然后向1307通知套接字对信息。然后,处理模块1307搜索 LISTEN表,判断是否存在待接收的套接字,并且向1308返回搜 索结果。在S903 ,在不存在处于LISTEN状态的能够接收已接收的 TCP包(SYN包)的TCP套接字的情况下,或者换言之,不存在可 以接受连接建立请求的TCP套接字的情况下,处理进入到S904 中的处理。在存在这种TCP套接字的情况下,处理进入到S906 中的处理。换言之,在S903,判断是否存在接受连接请求的TCP 套接字。在S904,不能接受已接收的包,因此将表示强制复位 的(RST,ACK)包发送到作为TCP包起点的TCP套接字;然后处理 进入到S905并结束。当处理已经从S903进入到S906时,存在能够接收所接收的 TCP包的TCP套接字。在S906,已接收的TCP包被传送到应用系 统单元103。在S906,由图8中的处理才莫块1308处理包,并且将 包传送到应用系统单元103内的RAM 114的包接收緩冲器中。另 外,将在搜索LISTEN表期间找到的套接字号通知TCP/IP处理模 块1305。下一步,处理进入到S907。由应用系统单元103执行从S907 开始的处理流程。在S907,创建用于建立TCP连接的新TCP套 接字,然后在下一步S908中,创建新的TCB, TCB用在使用TCP 套接字的通信当中。此时,在RAM 114内确保TCP套接字所使 用的发送緩冲器和接收緩冲器。下一步,在S909,在TCP套接 字表中注册新创建的TCP套接字的套接字对信息。在S909向 TCP套接字表中注册的处理类似于图11中S604的处理,它在应 用装置101请求待打开的TCP连接的情况下进行,因此将省略其 详细说明。在S909后,处理进入到S910,其中由TCP处理才莫块 1307发送TCP包(SYN,ACK),该包是响应于连接建立请求的确
认。图10中的504表示所发送的TCP包。如目前所述,由于S910中的处理,新产生的TCP连4妄,人 CLOSED状态变为SYN—RCVD状态。下一步,将参考图15说明在TCP连接中的通信对方接收到 确认(ACK)的情况下的处理流程,其中该TCP连接在发送 (SYN,ACK)TCP包后已变为SYN—RCVD状态。在图15的处理流 程中,已>^妄收的T C P包对应于图10中通信流程的5 0 5所示的确认 (ACK)包。图15中的处理流程从S1001开始。在S1002,网络通信单元 102分析已接收的TCP包的头结构,获得套接字对信息,并且搜 索TCP套接字表。在S1003,网络通信单元102判断是否存在应 接收包的TCP套接字。S1002中的处理与上述图12的S702中的处 理相同。在S1003,当不存在能够接收TCP包的TCP套接字时, 处理进入S1004,并且当存在能够接收TCP包的TCP套接字时, 处理进入S1006。在S1004,不接受包,并将表示强制复位的 (RST,ACK)包发送到作为TCP包起点的TCP套接字;然后处理进 入到S1005并结束。当处理已经从S1003进入到S1006时,存在能够接收待接收 的TCP包的TCP套接字。在S1006,已接收的TCP包被传送到应 用系统单元103。还通知套接字号。S1006执行与上述图12的 S706中相同的处理。下一步,处理进入到S1007,并且对已接 收的TCP包进行接收处理。然后,处理进入到S1008,并且执行套接字切换处理。在 S1008,从图8中的TCP/IP处理模块1305向套接字切换处理模块 1310提供通知,并且切换用于该TCP的套接字层处理和TCP协 议处理,以便此后由网络通信单元102执行切换。该步骤S1008 执行与上述S709相同的处理。
应当注意,由套接字切换处理模块1310执行的处理不必为 了在网络通信单元10 2内进行处理而切换用于T C P包的协议处 理。在由网络通信单元102可处理的TCP连接数量已经达到上限 的情况下,不执行切换处理。在这种情况下,在应用系统单元 103内执行TCP通信处理。当完成了 S1008中用于TCP套接字的处理模块的切换处理 时,处理进入S1009,并且用于已4妻收的TCP包(ACK)的处理流 程正常结束。此时,TCP连接的TCP状态从SYN—RCVD变为 ESTABLISHED,如图15中右侧栏所示。到目前为止,已经参考图13、 14和15说明了在如图IO所示 建立TCP连接的阶段512中,在请求应用装置101以图IO中服务 器502—方的方式打开连接的情况下的处理细节。下一步,将说明当TCP连接处于ESTABLISHED状态时发送 /接收数据的处理细节。这相当于图10所示通信流程实例中的阶 段513的通信,其中目前已建立起TCP连接。目前建立起TCP连 接的状态被称作ESTABLISHED状态。在本实施例中,如同先前 参考图ll到15的说明,当每个TCP连接处于ESTABLISHED状态 时,在网络通信单元102内执行TCP协议处理。图16是当目前已建立起连接时发送数据的处理流程,并且 表示处于ESTABLISHED状态的TCP通信中的数据发送处理。在 图16中,处理首先从S1101开始。在S1102,判断是否将由网络 通信单元102执行TCP套接字处理。在S1102执行的处理由图8 中的套接字接口 1303执行。在套接字切换处理模块1310已经切 换TCP通信的TCP套接字层处理以便在网络通信单元102内进 行处理的情况下,处理进入到S1103。否则,处理将由应用系 统单元103执行并因此处理进入到S1105。 S1103和S1105两个都 是TCP数据发送处理。在图16的S1103和S1105中执行TCP通信
中发送数据时的发送流控制、拥塞控制、分割发送数据处理、重新发送TCP包处理等。然后,处理进入到S1104或者S1106,然后结束。另一方面,图17是当现在已经建立起连接时在接收数据时 的处理流程。处理从S1201开始。在S1202,网络通信单元102 分析已接收的TCP包的头结构,获得套接字对信息,并且搜索 TCP套接字表。在S1203,网络通信单元102判断是否存在应接 收包的TCP套接字。S1202中的处理与上述图12的S702中执行的 处理相同。在S1203,在不存在能够接收所接收的TCP包的TCP 套接字的情况下,处理进入到S1204中的处理,在存在能够接 收所接收的TCP包的TCP套接字的情况下,处理进入到S1206中 的处理。在S1204,不能接受所接收的包,因此将表示强制复 位的(RST,ACK)包发送到作为TCP包起点的TCP套接字;然后处 理进入到S1205并结束。当处理已经从S1203进入到S1206时,存在能够接收所接收 的TCP包的TCP套接字。在S1206,判断接收/处理已接收的TCP 包的处理单元是否是网络通信单元102。在由图8中的套接字切 换处理模块1310已经切换了 TCP通信的TCP套接字层处理以便 在网络通信单元102内进行处理的情况下,处理进入到S1207。 否则,将由应用系统单元103执行处理并因此处理进入到 S1212。 S1207到S1211是由网络通信单元102执行的处理。另一 方面,S1212到S1216是由应用系统单元1034丸行的处理。在S1207,对已接收的TCP包执行TCP协议处理(换言之,执 行TCP包接收处理)。在S1207的处理之后,在S1208中响应于已 接收的TCP包数据,要求发送即时ACK的情况下,在S1209发送 接收确认(ACK)包,然后处理进入到S1210。在不要求发送即时 ACK的情况下,处理从S1208进入到S1210。换言之,在S1208,
判断是否必需发送即时ACK。在S1210,执行TCP套接字层的接 收处理(也就是说,TCP套接字接收处理)。由图8中的TCP套接 字层处理模块1306执行这个处理;在这个处理中,响应于通过 应用的套接字接口 1303获得的数据接收请求,将已接收的数据 传送到应用的接收缓冲存储器中。处理从S1210进入到S1211, 然后处理流程结束。在处理/人S1206进入到S1212的情况下,在S1212,对已接 收的TCP包执行TCP协议处理(换言之,执行TCP包接收处理)。 在S1212的处理之后,在S1213中响应于已接收的TCP包数据, 要求发送即时ACK的情况下,在S1214发送接收确认(ACK)包, 然后处理进入到S1215。换言之,在S1213,判断是否必需发送 即时ACK。当不必发送即时ACK的时候,处理从S1213进入 S1215。在S1215,执行TCP套接字层的接收处理(也就是说,TCP 套接字接收处理)。由图8中的TCP套接字层处理模块1304执行 这个处理;在这个处理中,响应于通过应用的套4妻字4^口 1303 获得的数据接收请求,将已接收的数据传送到应用的接收緩冲 存储器中。处理,人S1215进入到S1216,然后处理流程结束。注意,在S1207和S1212中执行从已接收的包中重新排序(重 建)已接收的数据、响应于已接收的数据判断发送ACK、根据已 接收的来自通信对方的ACK的发送窗口控制等。到目前为止,已经参考图16和17说明了在图10中阶段512 期间由应用装置101发送/接收数据的处理细节,其中当前已建 立了 TCP连接。下一步,将参考图18和19说明在由应用装置101产生关闭 TCP连接请求的情况下执行的处理细节。该说明假定在图IO的 通信流程实例的连接关闭阶段514中,在客户端501 —方执行通 信操作。首先,当TCP连接处于ESTABLISHED状态时,发送关
闭TCP连接的请求。然后,接收到来自通信对方的响应于已发 送的关闭请求的确认,并且接收到来自通信对方的关闭请求, 最后,发送对来自通信对方的关闭请求的确认。图18的处理流程开始于使用处于ESTABLISHED状态的 TCP套接字的应用通过套接字接口 1303指示关闭TCP套接字。 处理首先从S1301开始。在S1302,判断是否将由网络通信单元 102执行TCP套^妄字处理。S1302中的处理由图8的套接字接口 13 0 3执行。在已经由套接字切换处理模块13 10切换了 T C P通信 的T C P套接字层处理以便在网络通信单元10 2内进行处理的情 况下,处理进入到S1303。否则,将由应用系统单元103执行该 处理,因此处理进入到S1306。 S1303到S1305是在网络通信单 元102内执行的处理,而S1306到S1307是在应用系统单元103内 执行的处理。在S1303,发送请求关闭TCP连接的TCP包。这是由FIN发 送指出的,FIN发送如图IO的通信流程实例中的509所示。由图 8中的TCP处理模块1307发送关闭TCP连接的请求。已发送的 TCP包在TCP包头的控制位字段中具有为1的FIN位。下一步,处理进入到S1304,其中执行切换TCP套接字的处 理,以^更此后在应用系统单元103内处理TCP连4姿中的TCP协议 处理。从图8的处理模块1307向套接字切换处理模块1310提供通 知,并且TCP套接字处理从网络通信单元102进入到应用系统单 元103。因此,由图8的处理模块1304和1305执行TCP套接字中 的TCP协议处理和套接字层处理。然后处理进入到S1305并结 束。TCP连接的TCP状态从ESTABLISHED变为FIN—WAIT1 。在处理从S1302进入到S1306的情况下,首先在S1306,发 送请求关闭TCP连接的TCP包。这是由FIN发送指出的,FIN发 送如图IO的通信流程实例中的509所示。由图8中的TCP/IP协议 处理模块1305执行关闭TCP连接的请求的发送。然后处理进入 到S1307并结束。TCP连接的TCP状态从ESTABLISHED变为 歷—WAIT1。从通信对方接收到由图IO的通信流程实例中通信510所示 的TCP包(FIN,ACK), TCP包(FIN,ACK)既表示响应于先前已发 送的连接关闭请求(FIN)的确认,又表示来自于通信对方的关闭 请求。此时的处理流程如图19所示。如图18所示,首先从应用 装置101 —方发送连接关闭请求(FIN),因此在图19中,TCP连 接的TCP状态是FIN—WAIT 1状态。在图19中的处理从S1401开始。在S1402网络通信单元102 分析已接收的TCP包的头结构,获得套接字对信息,并且搜索 TCP套接字表。在S1403,网络通信单元102判断是否存在应接 收包的TCP套接字。在S1402执行的处理与图12中上述S702所执 行的处理相同。在S1403,当不存在能够接收TCP包的TCP套接 字时,处理进入到S1404,并且当存在能够接收TCP包的TCP套 接字时,处理进入到S1406。在S1404,不能接受所接收的TCP 包,因此向作为TCP包起点的TCP套接字发送表示强制复位的 (RST, ACK)包;然后处理进入到S1405并结束。当处理已经/人S1403进入到S1406时,存在能够接收所接收 的TCP包的TCP套接字。在S1406,将已接收的TCP包传送到应 用系统单元103内RAM 114的包接收IC冲器中。另夕卜,通知 TCP/IP协议处理模块1305在搜索TCP套接字表期间所找到的套 接字号。下一步,处理进入到S1407。在应用系统单元103内执行步 骤S1407到S1409。在S1407,执行用于接收TCP包的处理,并且 因为TCP包是来自通信对方的(FIN,ACK)包,所以处理进入到 S1408,并发送确i/、(ACK)。发送这个确认包是发送图IO中511
和ACK所指的TCP包。通过到目前为止执行的处理步骤,TCP 连接的状态从FIN—WAIT1变为TIME—WAIT 。S1409是在TIME一WAIT状态中等待经过2MSL(最大分段寿 命)时间。在经过该时间之后,状态从TIME—WAIT状态变为 CLOSED状态,并且关闭TCP连接。然后处理进入到S1410并结 束。已经参考图18和19说明了在如图IO所示的TCP连接关闭阶 段514中,在应用装置101按图IO中客户端501 —方的方式执行通 信操作的情况下的处理细节。当TCP连接处于ESTABLISHED状 态时,由网络通信单元102执行509所示的FIN发送处理。然后, 切换执行TCP协议处理的处理单元,并且由应用系统单元103 执行在接收510所示的(FIN,ACK)时的处理以及在发送511所示 的ACK时的处理。下一步,将参考图20说明在由应用装置101的通信对方产生 关闭TCP连接请求的情况下执行的处理细节。该说明假定在图 IO通信流程实例的连接关闭阶段514中,在服务器502—方执行 通信操作。首先,利用处于ESTABLISHED状态的TCP连接,接 收到从通信对方发送的TCP连接关闭请求;然后,产生响应于 关闭请求的确认,并且从应用装置101 —方发送表示关闭请求的 TCP包。图20的处理流程开始于当TCP连接处于ESTABLISHED状 态时从通信对方接收到TCP连接关闭请求(FIN), 其中 ESTABLISHED状态表示当前已建立了 TCP连接。处理流程从 S1501开始。在S1502,网络通信单元102分析已接收的TCP包的 头结构,获得套接字对信息,并且搜索TCP套接字表。在S1503, 网络通信单元102判断是否存在应接收包的TCP套接字。在 S1502执行的处理与图12中上述S702所执行的处理相同。在S1503,当不存在能够接收所接收的TCP包的TCP套接字时,处 理进入到S1504,并且当存在能够接收所接收的TCP包的TCP套 接字时,处理进入到S1506。在S1504,不能4姿受已接收的包, 因此向作为TCP包起点的TCP套接字发送表示强制复位的 (RST, ACK)包。在S1504发送了 (RST,ACK)包的情况下,处理 进入到S1505并结束。当处理已经从S1503进入到S1506时,存在能够接收已接收 的TCP包的TCP套接字。在S1506,判断接收/处理已接收TCP包 的处理单元是否是网络通信单元102。在已经由图8中的套接字 切换处理模块1310切换了 T C P通信的T C P套接字层处理以便在 网络通信单元102内进行处理的情况下,处理进入到S1507。否 则,由应用系统单元103执行该处理,因此处理进入到S1511。 由网络通信单元102执行S1507到S1510的处理。另一方面,由 应用系统单元103执行S1511到S1513的处理。在S1507,执行用于接收TCP包的处理,然后处理进入到 S1508。 TCP包是来自通信对方的连接关闭请求(FIN),因此发 送TCP包(FIN,ACK),在该TCP包中已经合并了响应于FIN的确 认和来自应用装置101 —方的连接关闭请求。然后处理进入到 S1509,其中执行切换TCP套接字的处理,以Y更此后在应用系统 单元103内执行TCP套接字处理。从图8的处理模块1307向套接 字切换处理模块131 O提供通知,并且TCP套接字处理从网络通 信单元102进入到应用系统单元103。因此,由图8的处理模块 1304和1305执行TCP套接字中的TCP协议处理和套接字层处 理。此后,处理进入到S1510并结束。在处理从S1506进入到S1511的情况下,在S1511执行用于 接收TCP包的处理,然后处理进入到S1512。在S1512, TCP包 是来自通信对方的连接关闭请求(FIN),因此发送TCP包(FIN,ACK),在该TCP包中已经合并了响应于FIN的确认和来自 应用装置101 —方的连接关闭请求。然后,处理流程进入到 S1513并结束。已经参考图20说明了在如图IO所示的TCP连接关闭阶段 514中,在应用装置101按图10中服务器502—方的方式执行通信 操作情况下的处理细节。当TCP连接处于ESTABLISHED状态 时,由网络通信单元102执行由509所示的FIN发送处理到510所 示的(FIN, ACK)发送处理。关闭TCP连接,然后TCP连接变为 CLOSED状态。同时,切换套接字处理以便在应用系统单元103 内执行套接字处理。下一步,将对关于本实施例中的判断方法进行说明,该方 法由图8的套接字切换处理模块1310执行,用于切换执行TCP 通信处理的处理单元。从由应用系统单元103执行处理切换到由网络通信单元102 执行处理的TCP通信的第 一 个条件是TCP连接处于 ESTABLISHED状态。其理由在于当发送/接收应用通信数据, 或换言之,当当前已建立TCP连接时,应用装置需要高速数据 发送/接收处理。第二个条件是可由网络通信单元102处理的TCP连接数量 在上限范围之内。如前所述,因为TCP连接状态变为 ESTABLISHED,所以诸如图12的S709和图15的S1008之类的处 理步骤执行用于切换执行TCP协议处理的处理单元的处理。如 果此时可以由网络通信单元102处理的TCP连接数量没有达到 上限,那么切换TCP通信处理以便在网络通信单元102内执行 TCP通信处理。然而,如果此时可以由网络通信单元102处理的 TCP连接数量已经达到上限,那么不为了由网络通信单元102 执行TCP通信处理而切换TCP通信处理,并且此后由应用系统
单元103执行TCP通信处理。在本实施例中,如上所述,图8的处理;漠块1305和1307对处 于ESTABLISHED状态的执行TCP协议处理的TCP连接在每个 设定的时间量测量发送/接收的包数量。此外,图8的TCP套接 字层处理模块13 0 4和13 0 6在每个设定的时间量测量由应用发送 /接收的数据量。当从1304、 1305、 1306和1307获得测量结果的 通知时,图8的套接字切换处理模块13 10创建/更新优先级信息。 此时,对于处于ESTABLISHED状态的全部TCP通信例程,创建 /更新优先级信息以便对发送/接收的包的数量大的TCP通信或 发送/接收的数据量大的T C P通信进行由网络通信单元10 2执行的TCP协议处理。当由网络通信单元102处理的TCP通信例程数量已经达到 上限数量时,并且由网络通信单元102进行TCP协议处理的TCP 通信的状态变为ESTABLISHED状态时,切换TCP通信。换言之, 此时,切换TCP通信以4更由应用系统单元103进4亍处理。因此, 由应用系统单元103,正在处理的处于ESTABLISHED状态的 TCP通信被切换成由网络通信单元102处理。在进行这种交换的 时候,根据前述优先级信息选择TCP套接字,然后执行这种交 换。注意,当由网络通信单元102处理的TCP通信例程数量已经 达到上限数量时,对于网络通信单元102和应用系统单元103分 别执行TCP协议处理的TCP通信,可以周期性地判断其交换。 此时,这种交换处理是以上述优先级信息为基础的。另外,可以识别应用通信的具体例程,并且当应用通信处 于ESTABLISHED状态时,可以由网络通信单元102优先执行用 于应用通信的TCP协议处理。通过在应用装置101中预先保留专 门的TCP端口号并与专门应用 一起使用该端口号即可实现这种 情况。此外,即使可以由网络通信单元102处理的TCP连接数量 已经达到上限,当优先级高的TCP通信例程的连接变为 ESTABLISHED状态并发生TCP协议处理切换时,也可将该连接 与低优先级连接进行交换。下一步,将参考图21说明图8的套接字切换处理模块1310 所执行的、执行TCS通信处理的处理单元的切换的处理细节。在图21中,1601表示应用系统单元103的TCP/IP处理模块, 它和图8的处理模块1305相同。1602表示网络通信单元102的 TCP处理模块,与图8的处理模块1307相同。1603表示套接字切 换处理模块,与图8的处理模块1310相同。在TCP套接字处理中, TCP协议处理切换是指1601和1602中的哪一个来执行该处理的 变化。另外,1604和1605分别表示被切换TCP通信处理的TCP套 接字发送緩沖器和接收緩冲器(TCP发送/接收緩冲器),并且 1606表示与TCP套接字有关的TCB。如上述图ll中处理步骤 S602和S603、图14中处理步骤S907和S908等所述,在应用系统 单元103内的RAM 114中确保1604、 1605和1606的数据。在本实 施例中,即使在处理冲莫块1601和1602之间切换了 TCP协议处理, 这些数据緩冲也仍然保持在RAM 114中。换言之,由于这种切 换,不执行复制数据等操作;相反,在切换之后,对RAM 114 中相同的数据进行读取/写入。换言之,由RAM114中的两个处 理模块1601和1602共享这些数据,并且处理TCP套接字的模块 访问这些数据。在TCP套接字通信协议处理的切换中,从1601和1602之一 向套接字切换处理模块1603提供切换通知。通知的详细内容包 括TCP套接字号、发送緩沖器1604和接收緩冲器1605的存储地 址,以及TCB 1606的存储地址。套接字切换处理才莫块1603将该
信息传送给作为切换目的地的处理模块。此外,1607是接收包緩冲器,由1601处理的包被传输到1607 中,而1608是接收包緩冲器,由1602处理的包被传输到1608中。 1607设置在网络通信单元102内的本地RAM 106中,而1608设置 在应用系统单元103内的RAM 114中。如前所述,响应于已接收 的包搜索TCP套接字表;从而获知TCP包的TCP套接字号和由哪 个TCP协议处理模块处理TCP包。然后,包数据被传送到已接 收包緩冲器1607和已接收包緩冲器1608之一。然后,在TCP套接字切换处理中,套接字切换处理模块1603 还在TCP套接字表的TCP套接字项中重写由哪个处理模块执行 处理的信息。到目前为止,已经关于使用TCP通信的应用通信中的TCP 协议处理和TCP套接字层处理,说明了根据TCP连接状态的变 化在网络通信单元102和应用系统单元103之间的切换处理单 元。为了提高应用通信的速度,可以在TCP通信中当前已建立 连接的状态(ESTABLISHED)下高速执行通信处理。因此,有可 能通过在网络通信单元102内部执行这个阶段的TCP协议处理 来提高应用通信的速度。同时,可以卸载对应用系统单元的CPU 112的TCP通信处理负荷。注意,本发明的实施例可通过比如计算机执行程序的方式 来实现。此外,本发明的实施例还可通过用于将程序提供给计 算机的装置来实现,这种装置比如是诸如已经记录了程序的 CD-ROM之类的计算机可读记录介质或者诸如传输程序的因特 网之类的传输介质。此外,本发明的实施例可以以上述程序来 实现。上述程序、记录介质、传输介质和程序产品都包括在本 发明的范围之内。
尽管参考示例性的实施例对本发明进行了描述,但是应当 理解,本发明不限于公开的示例性实施例。所附权利要求的范 围符合最宽的解释,以便覆盖所有这些修改及等同结构和等同 功能。
权利要求
1.一种通信设备,其执行利用TCP/IP协议的应用通信,所述通信设备包括网络通信单元和应用系统单元,其中,所述应用系统单元利用由所述网络通信单元执行的第一TCP/IP协议处理和由所述应用系统单元执行的第二TCP/IP协议处理之一来执行应用通信,以及所述网络通信单元基于应用通信的通信状况将用于处理应用通信的处理切换为所述第一TCP/IP协议处理和所述第二TCP/IP协议处理之一。
2. 根据权利要求l所述的通信设备,其特征在于, 所述应用系统单元执行多个使用TCP/IP协议的应用通信例程;所述应用系统单元使用由所述网络通信单元执行的所述第一 TCP/IP协议处理和由所述应用系统单元l丸行的所述第二 TCP/IP协i义处理之 一 批J亍每个应用通信例禾呈;以及所述网络通信单元基于每个应用通信例程的通信状况将用 于处理每个应用通信例程的处理切换为所述第一 T C P /1P协议处 理和所述第二 T C P /1P协议处理之一 。
3. 根据权利要求l所述的通信设备,其特征在于, 所述第一TCP/IP协议处理是如下处理由包含在所述网络单元中的处理器所执行的软件处理与由硬件电路所执行的计算 处理组合。
4. 根据权利要求l所述的通信设备,其特征在于, 所述第二TCP/IP协议处理是由所述应用系统单元内的处理器执行的软件处理。
5. 根据权利要求l所述的通信设备,其特征在于,所述第一 TCP/IP协议处理和所述第二 TCP/IP协议处理共享 TCP发送/接收緩冲器。
6. 根据权利要求l所述的通信设备,其特征在于,所述第一 TCP/IP协议处理和所述第二 TCP/IP协议处理共享 TCP控制信息。
7. 根据权利要求l所述的通信设备,其特征在于,在特定应用通信的情况下,优先由所述第一 T C P /1P协议处 理扭^亍应用通4言。
8. —种通信设备的通信控制方法,所述通信设备执行利用 T C P /1P协议的应用通信,所述通信设备包括网络通信单元和应 用系统单元,所述方法包括以下步骤利用由所述网络通信单元执行的第一 T C P /1P协议处理和由 所述应用系统单元执行的第二 T C P /1P协议处理之 一 来执行应用 通信,以及基于所述应用通信的通信状况将用于处理应用通信的处理 切换为所述第一 TCP/IP协议处理和所述第二 TCP/IP协议处理之
9. 根据权利要求8所述的通信设备的通信控制方法,其特 征在于,执行多个使用TCP/IP协议的应用通信例程;使用由所述网络通信单元执行的所述第一TCP/IP协议处理和由所述应用系统单元#L行的所述第二 T C P /1P协i义处理之一 #1行每个应用通信例禾呈;以及基于每个应用通信例程的通信状况,将用于处理每个应用通信例程的处理切换为所述第一 TCP/IP协议处理和所述第二TCP/IP协议处理之一。
10. 根据权利要求8所述的通信设备的通信控制方法,其特 征在于,还包括如下步骤在所述第一TCP/IP协议处理和所述 第二 TCP/IP协议处理之间共享TCP发送/接收緩冲器。
11. 根据权利要求8所述的通信设备的通信控制方法,其特 征在于,还包括如下步骤在所述第一TCP/IP协议处理和所述 第二 TCP/IP协议处理之间共享TCP控制信息。
12. 根据权利要求8所述的通信设备的通信控制方法,其特 征在于,还包括如下步骤在特定应用通信的情况下,优先由 所述第一TCP/IP协议处理执行应用通信。
全文摘要
本发明涉及一种通信设备和通信控制方法。该通信设备包括网络通信单元和应用系统单元。所述应用系统单元利用由所述网络通信单元执行的第一TCP/IP协议处理和由所述应用系统单元执行的第二TCP/IP协议处理之一来执行应用通信。所述网络通信单元基于应用通信的通信状况将用于处理应用通信的处理切换为所述第一TCP/IP协议处理和所述第二TCP/IP协议处理之一。
文档编号H04L29/06GK101119388SQ20071014317
公开日2008年2月6日 申请日期2007年8月3日 优先权日2006年8月4日
发明者今尾英司 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1