説明

通信装置、画像形成装置及びプログラム

【課題】自装置と他の装置との間で確立された接続ごとに、他の装置から受信するパケットに対する確認応答を遅延確認応答にするか否かを選択できるようにする。
【解決手段】受信ホストのソケットレベル2におけるACK情報管理部5が、送信ホストから受信するパケットに対する確認応答を遅延ACKと即時ACKの何れにするかを指定するためのACK情報を、ソケット番号及びTCPコネクション情報と関連付けて保持する。そして受信ホストは、TCPレベル3におけるACK処理選択部6が、この関連付けられた情報を参照することにより、TCPコネクションにおいて受信されたパケットに対して遅延ACKと即時ACKの何れを行うかを判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、画像形成装置及びプログラムに関する。
【背景技術】
【0002】
特許文献1には、受信したデータの種類が「連続」である場合には、原則として遅延確認応答を用いた処理を行い、受信したデータの種類が「非連続」である場合には、原則として遅延確認応答を用いずTCPに基づいた通常の受信処理を行うパケット通信装置が記載されている。
【0003】
非特許文献1には、TCP/IPネットワークにおいて、LPRなどのTCP/IPポートへの印刷が遅くなることがあり、これを回避するためPUSHフラグが有効なパケットを受信すると即時ACKすることが記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−72372号公報
【非特許文献】
【0005】
【非特許文献1】“Windows 2000でTCP/IPポートへの印刷が遅い”、[online]、マイクロソフト・コーポレーション、平成18年8月2日、[平成22年9月9日検索]、インターネット<URL:http://support.microsoft.com/kb/816627/ja>
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の目的は、自装置と他の装置との間で確立された接続ごとに、他の装置から受信するパケットに対する確認応答を遅延確認応答にするか否かを選択できるようにすることにある。
【課題を解決するための手段】
【0007】
請求項1に記載の発明は、他の装置からパケットを受信してから予め定めた時間の経過後に当該パケットに対する確認応答を当該他の装置へ返信する遅延確認応答を行うか否かを指定するための情報である確認応答情報を設定する設定手段と、前記設定手段が設定した前記確認応答情報と、他の装置から受信するパケットに含まれる、自装置と当該他の装置との間で確立された接続を識別するために用いられる識別情報とを関連付けた関連付け情報を保持する保持手段と、他の装置から受信するパケットに含まれる前記識別情報に基づき、前記保持手段に保持されている前記確認応答情報を参照することにより、当該パケットに対して前記遅延確認応答を行うか否かを判定する判定処理を行う判定手段とを備えたことを特徴とする通信装置である。
請求項2に記載の発明は、前記判定手段は、OSI(Open Systems Interconnection)基本参照モデルにおけるトランスポート層にて前記判定処理を行い、前記設定手段及び前記保持手段は、前記トランスポート層とは異なる階層にて、それぞれ前記確認応答情報を設定し、前記関連付け情報を保持することを特徴とする請求項1に記載の通信装置である。
請求項3に記載の発明は、前記設定手段は、他の装置から予め定められた基準値以下のデータ量を含むパケットを前記トランスポート層にて受信するときであって、かつ当該パケットが当該トランスポート層よりも上位の階層に渡されることを示す付加情報を当該パケットが含むときに、前記確認応答情報として、前記遅延確認応答を行うことを指定するための情報を設定することを特徴とする請求項2に記載の通信装置である。
請求項4に記載の発明は、自装置と一又は複数の他の装置との間における現在の通信量を把握する把握手段を更に備え、前記設定手段は、前記把握手段が把握した前記通信量に基づき、前記確認応答情報を設定することを特徴とする請求項1乃至3のいずれかに記載の通信装置である。
請求項5に記載の発明は、前記把握手段は、前記通信量として、自装置と一又は複数の他の装置との間で現在確立されている接続の個数を把握し、前記設定手段は、前記把握手段が把握した前記個数が予め定められたしきい値以上であるときに、前記確認応答情報として、前記遅延確認応答を行うことを指定するための情報を設定することを特徴とする請求項4に記載の通信装置である。
請求項6に記載の発明は、自装置と一又は複数の他の装置との間における現在の通信量を把握する把握手段と、前記把握手段が把握した前記通信量に基づき、前記他の装置からパケットを受信してから予め定めた時間の経過後に当該パケットに対する確認応答を当該他の装置へ返信する遅延確認応答を行うか否かを指定するための情報である確認応答情報を設定する設定手段と、前記設定手段が設定した前記確認応答情報と、前記他の装置から受信するパケットに含まれる、自装置と当該他の装置との間で確立された接続を識別するために用いられる識別情報とを関連付けて保持する保持手段と、前記他の装置から受信するパケットに含まれる前記識別情報に基づき、前記保持手段に保持されている前記確認応答情報を参照することにより、当該パケットに対して前記遅延確認応答を行うか否かを判定する判定処理を行う判定手段と、前記判定手段が行う前記判定処理に従い前記他の装置に確認応答を返信しながら当該他の装置から受信したパケットを介して、画像データを取得する取得手段と、前記取得手段により取得された前記画像データに基づき、画像を形成する画像形成手段とを備えたことを特徴とする画像形成装置である。
請求項7に記載の発明は、コンピュータに、第1の通信装置が第2の通信装置からパケットを受信してから予め定めた時間の経過後に当該第1の通信装置が当該パケットに対する確認応答を当該第2の通信装置へ返信する遅延確認応答を行うか否かを指定するための情報である確認応答情報を設定する機能と、設定された前記確認応答情報と、前記第1の通信装置が前記第2の通信装置から受信するパケットに含まれる、当該第1の通信装置と当該第2の通信装置との間で確立された接続を識別するために用いられる識別情報とを関連付けて保持手段に保持させる機能と、前記第1の通信装置が前記第2の通信装置から受信するパケットに含まれる前記識別情報に基づき、前記保持手段に保持されている前記確認応答情報を参照することにより、当該パケットに対して当該第1の通信装置が当該第2の通信装置へ前記遅延確認応答を行うか否かを判定する機能とを実現させることを特徴とするプログラムである。
【発明の効果】
【0008】
請求項1の発明によれば、自装置と他の装置との間で確立された接続ごとに、他の装置から受信するパケットに対する確認応答を遅延確認応答にするか否かを選択することができる。
請求項2の発明によれば、本構成を有していない場合に比較して、トランスポート層における処理に負荷をかけずに、他の装置から受信するパケットに対する確認応答を遅延確認応答にするか否かを選択することができる。
請求項3の発明によれば、本構成を有していない場合に比較して、他の装置へ確認応答を送信することによる通信量の増大を抑えることができる。
請求項4の発明によれば、自装置と他の装置との間における現在の通信量に応じて、他の装置から受信するパケットに対する確認応答を遅延確認応答にするか否かを選択することができる。
請求項5の発明によれば、一又は複数の他の装置と通信することにより自装置に負荷がかかってきたときであっても、本構成を有していない場合に比較して、他の装置に対する処理の遅延の発生を抑えることができる。
請求項6の発明によれば、一又は複数の他の装置と通信することにより自装置に負荷がかかってきたときであっても、本構成を有していない場合に比較して、他の装置から受信した画像データについての画像形成処理の遅延の発生を抑えることができる。
請求項7の発明によれば、第1の通信装置と第2の通信装置との間で確立された接続ごとに、第1の通信装置が第2の通信装置から受信するパケットに対する確認応答を遅延確認応答にするか否かを選択することができる。
【図面の簡単な説明】
【0009】
【図1】第1の実施形態に係るTELNETサーバに適用される通信プロトコルの階層構造を示した概念図である。
【図2】TELNETサーバのハードウェア構成例を示したブロック図である。
【図3】TELNETサーバのソケットレベルにおけるACK情報管理部の機能構成例を示したブロック図である。
【図4】第1の実施形態に係るTELNETサーバのアプリケーションレベルにおける動作例を示したフローチャートである。
【図5】TELNETサーバのTCPレベルにおける受信処理の動作例を示したフローチャートである。
【図6】第2の実施形態に係るLPRサーバのアプリケーションレベルにおける動作例を示したフローチャートである。
【図7】LPRサーバのTCPレベルにおける受信処理の動作例を示したフローチャートである。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
通信プロトコルとしてTCP/IP(Transmission Control Protocol/Internet Protocol)を採用する通信においては、受信ホストが、送信ホストからパケットを受信するたびに、送信ホストへ確認応答(ACK:Acknowledgement)を返信し、通信の信頼性を確保している。しかしながら、パケットが短時間に多数送信されると、それに伴い確認応答も多数返信されるため、トラフィックが増大してしまう。
【0011】
このため、パケットを受信してから予め定めた時間経過後に、受信ホストがそれまでに受信したパケットに対する確認応答を送信ホストへ返信するという遅延確認応答(以下、「遅延ACK」という)が用いられている。これに対し、受信したパケットに対する確認応答を直ちに送信ホストへ返信することを即時確認応答という(以下、「即時ACK」という)。
【0012】
受信ホストが送信ホストからパケットを短時間に多数受信する場合は、遅延ACKを用いることによりトラフィックが低減される。しかしながら、遅延ACKのための待機時間内に受信ホストが後続するパケットを受信しない場合は、遅延ACKを用いることにより却って通信速度が低下してしまう。
【0013】
そこで、ネットワークから受信したパケットのアドレスからアプリケーションを特定し、その結果に基づいて遅延ACKと即時ACKの何れを行うかを決定することが考えられる。例えば、ポート番号が21であれば、アプリケーションはFTPでありデータが連続するため、遅延ACKを有効とし、ポート番号が23であれば、アプリケーションはTELNETであり送信ホストと受信ホストが交互に通信しデータが非連続するため、即時ACKを有効とすることなどが考えられる。
【0014】
また、TCPヘッダのコードビットに含まれるPSHフラグが有効であれば、そのパケットはデータの区切れを示すと考えられる。そこでこのときは、受信ホストは後続データがないと判断し、通信速度の低下を防ぐために即時ACKを行うことも考えられる。
【0015】
しかしながら、例えば受信ホストがTELNETサーバの場合は、TELNETクライアントからPSHフラグが有効でありかつ少量サイズのデータのパケットを受信するため、上記の方法をとると即時ACKを行うことになる。PSHフラグの本来の意味は、これが有効なパケットを受信したらそのパケットを上位の階層に渡すということであり、必ずしも、通信相手に対して即時に応答するということではない。このため、PSHフラグが有効か否かということに基づき即時ACKを選択すると、ACKの返信によりトラフィックの増大を招くことになる。
【0016】
また、例えば受信ホストがLPRサーバの場合は、複数のLPRソケットでパケットを受信するため、上記の方法のように遅延ACKと即時ACKの選択をアプリケーションで固定すると、全ての受信において即時ACKしたときに、LPRサーバに負荷がかかり、処理遅延が発生し得る。
【0017】
そこで、以下に説明する第1及び第2の実施形態では、受信ホストが、送信ホストから受信するパケットに対する確認応答を遅延ACKと即時ACKの何れにするかを指定するためのACK情報を、ソケット番号及びTCPコネクション情報と関連付けて保持する。そして、受信ホストは、この関連付けられた情報を参照することにより、TCPコネクションにおいて受信されたパケットに対して遅延ACKと即時ACKの何れを行うかを判定する。
【0018】
<第1の実施形態>
第1の実施形態では、通信装置の一例としての受信ホストがTELNETサーバ10である場合の例を説明する。
図1は、第1の実施形態に係るTELNETサーバ10に適用される通信プロトコルの階層構造を示した概念図である。図示するように、TELNETサーバ10に適用される通信プロトコルの階層には、最上位から下位に向かって順に、アプリケーションレベル1、ソケットレベル2、TCPレベル3、下位層4がある。上位の階層は下位の階層からデータを受け取り、上位の階層は下位の階層にデータを渡す。図1ではこれらのデータのやり取りを、それぞれ上向き及び下向きの矢印で示している。
【0019】
これらの階層をOSI(Open System Interconnection)基本参照モデルと比較すると、アプリケーションレベル1はアプリケーション層に、ソケットレベル2はセッション層に、TCPレベル3はトランスポート層にそれぞれ対応する。下位層4は、ネットワーク層、データリンク層及び物理層をまとめたものである。第1の実施形態では、トランスポート層のプロトコルとしてTCPを用いる。
【0020】
ソケットレベル2は、アプリケーション層とトランスポート層の間で定義されるAPI(Application Program Interface)としての機能に加えて、ACK情報管理部5を備えている。また、TCPレベル3は、通常のTCPの機能に加えて、ACK処理選択部6を備えている。このように、ACK情報管理部5とACK処理選択部6は、図1に示す通信プロトコルの階層構造において、互いに異なる階層に設けられている。尚、ACK情報管理部5とACK処理選択部6の機能の詳細については後述する。
【0021】
図2は、TELNETサーバ10のハードウェア構成例を示したブロック図である。図示するように、TELNETサーバ10は、CPU(Central Processing Unit)11と、RAM(Random Access Memory)12と、ROM(Read Only Memory)13と、HDD(Hard Disk Drive)14と、入出力コントローラ15と、通信インタフェース16とを備える。
【0022】
CPU11は、OS(Operating System)やアプリケーション等の各種ソフトウェアを実行する。
RAM12は、CPU11の作業用メモリ等として用いられるメモリである。
ROM13は、CPU11が実行する各種プログラム等を記憶するメモリである。
HDD14は、各種ソフトウェアに対する入力データや各種ソフトウェアからの出力データ等を記憶する記憶領域である。
入出力コントローラ15は、入力手段として設けられるマウス、キーボード、及び表示手段として設けられるディスプレイ等をそれぞれ接続する。
通信インタフェース16は、ネットワークを介してTELNETクライアントとの間でデータを送受信する。
【0023】
図1に示す下位層4のうち、データリンク層及び物理層に相当する部分の機能は、通信インタフェース16により実現される。また、アプリケーションレベル1、ソケットレベル2及びTCPレベル3並びに下位層4のうちネットワーク層に相当する部分の各機能は、ソフトウェアにより実現される。即ち、CPU11が、ROM13等に記憶されたプログラムをRAM12に読み込んで実行することにより実現される。
【0024】
以下では、第1の実施形態に係るTELNETサーバ10の機能構成について詳細に説明する。
まず、図1に示すソケットレベル2におけるACK情報管理部5について説明する。ACK情報管理部5は、遅延ACKと即時ACKの何れを行うかを指定するためのACK情報を、ソケット番号及びTCPコネクション情報と関連付けて保持し、アプリケーションレベル1及びTCPレベル3との間でACK情報の受け渡しを行う。言い換えると、アプリケーションレベル1とTCPレベル3は、それぞれソケット番号とTCPコネクション情報を介して、ソケットレベル2におけるACK情報を参照する。
【0025】
図3は、TELNETサーバ10のソケットレベル2におけるACK情報管理部5の機能構成例を示したブロック図である。図示するように、ACK情報管理部5は、ACK情報設定手段51と、ACK情報解除手段52と、ACK情報問合せ手段53と、ACK情報保持手段54と、ACK情報取得手段55とを備える。これらのうち、ACK情報保持手段54は、例えばRAM12により実現される。また、ACK情報設定手段51、ACK情報解除手段52、ACK情報問合せ手段53及びACK情報取得手段55の各機能は、CPU11がROM13等に記憶されたプログラムをRAM12に読み込んで実行することにより実現される。
【0026】
ACK情報設定手段51は、アプリケーションレベル1において、TELNETサーバ10がTELNETクライアントからTCP接続の接続要求を受け付けたときに、TELNETクライアントと接続されたソケットについて、ACK情報を設定する。ACK情報とは、TELNETクライアントから受信するパケットに対する確認応答を遅延ACKと即時ACKの何れにするかを指定するための情報(確認応答情報の一例)である。ACK情報には、例えば即時ACKを指定するための「即時ACK有効」、遅延ACKを指定するための「遅延ACK有効」などがある。第1の実施形態に係るTELNETサーバ10のACK情報設定手段51は、ACKの返信によるトラフィックの増大を抑制するという観点から、ACK情報として、遅延ACKを指定するための「遅延ACK有効」を設定する。第1の実施形態では、設定手段の一例として、ACK情報設定手段51を設けている。
尚、ソケットとは、TCP/IPで通信を行うコンピュータが持つIPアドレスと、ポート番号とを組み合わせたネットワークアドレスである。
【0027】
ACK情報解除手段52は、アプリケーションレベル1において、TELNETサーバ10とTELNETクライアントとのTCP接続が切断されるときに、TELNETクライアントと接続されたソケットについてのACK情報の設定(第1の実施形態では「遅延ACK有効」の設定)を解除する。
【0028】
ACK情報問合せ手段53は、ACK情報設定手段51により設定されているACK情報の個数についての問い合わせをアプリケーションレベル1から受け付け、その個数をアプリケーションレベル1に返信する。ACK情報設定手段51がTCP接続ごとにACK情報を設定することから、このACK情報の個数は、TELNETサーバ10と一又は複数のTELNETクライアントとの間で現在確立されているTCP接続の個数に相当する。そして、TCP接続の個数が多いほど、TELNETサーバ10とTELNETクライアントとの間における現在の通信量も多くなると考えられる。アプリケーションレベル1は、ACK情報問合せ手段53にACK情報の個数を問い合わせてTCP接続の個数を得ることにより、TELNETサーバ10とTELNETクライアントとの間における現在の通信量を把握する。第1の実施形態では、把握手段の一例として、ACK情報問合せ手段53を設けている。
【0029】
ACK情報保持手段54は、ACK情報設定手段51により設定されたACK情報を、そのACK情報に対応するソケットのソケット番号及びTCP接続のTCPコネクション情報と関連付けて保持する。ここで、ソケット番号とは、TELNETクライアントと接続されたソケットについてのIPアドレスとポート番号の対応を識別子化したものである。また、TCPコネクション情報とは、TELNETクライアントとの間で確立されたTCP接続におけるIPアドレスとポート番号とを含む情報である。第1の実施形態では、識別情報の一例として、ソケット番号及びTCPコネクション情報を用いており、保持手段の一例として、ACK情報保持手段54を設けている。
【0030】
ACK情報取得手段55は、TCPレベル3においてTELNETサーバ10がパケットを受信したときに、そのTCP接続のTCPコネクション情報に関連付けられたACK情報をACK情報保持手段54から取得する。
【0031】
また、TCPレベル3におけるACK処理選択部6(図1参照)は、受信したパケットのTCPヘッダに含まれるTCPコネクション情報に基づき、ソケットレベル2のACK情報管理部5に保持されているACK情報を参照することにより、TCPコネクションにおいて受信されたパケットに対して遅延ACKと即時ACKの何れを行うかを選択する。第1の実施形態では、判定手段の一例として、ACK処理選択部6を設けている。
【0032】
以下では、第1実施形態に係るTELNETサーバ10の動作について、詳細に説明する。
図4は、第1の実施形態に係るTELNETサーバ10のアプリケーションレベル1における動作例を示したフローチャートである。
【0033】
TELNETサーバ10はソケット生成からアクセプトまで一連のソケット処理を行いTELNETクライアントからの接続を待つ。即ち、TELNETサーバ10は、まず接続要求を受け付けるためのソケットを確保し(socket)(ステップ101)、監視するポート番号を指定する(bind)(ステップ102)。そして、ソケットを接続要求の監視モードにし(listen)(ステップ103)、TELNETクライアントからの接続要求を受理する(accept)(ステップ104)。
【0034】
TELNETサーバ10は、TELNETクライアントから接続要求を受け付けると、その接続におけるソケットについて、ソケットレベル2のACK情報設定手段51にACK情報として「遅延ACK有効」を設定させ(ステップ105)、TELNETクライアントからのデータ到着を待つ。
このとき、ソケットレベル2においては、ACK情報設定手段51が、アプリケーションレベル1からの指示により設定されたACK情報を、ACK情報保持手段54へ引き継ぐ。上述の通り、ACK情報保持手段54は、このACK情報を、ソケット番号及びTCPコネクション情報と関連付けて保持する。
【0035】
そして、TELNETクライアントからデータを受信すると(recv)(ステップ106)、TELNETサーバ10は、受信したデータを解析する(ステップ107)。解析の結果、受信データの終了でない場合は(ステップ108でNo)、TCPレベル3のACK処理選択部6による、後述する遅延ACK回避判断処理の結果に応じてACKが付与された応答が、TELNETサーバ10からTELNETクライアントへ送信される(send)(ステップ109)。その後、処理はステップ106へ戻り、TELNETサーバ10のデータ受信が終了するまで、ステップ106からステップ109までの処理が繰り返される。
【0036】
そして、受信データ終了になると(ステップ108でYes)、TELNETクライアントとのTCP接続が切断される。このとき、ソケットレベル2のACK情報解除手段52に、TELNETクライアントと接続されたソケットについての「遅延ACK有効」の設定を解除させる(ステップ110)。その後、TELNETサーバ10は、TELNETクライアントからの次の接続要求を受理するまで待機し、ステップ104以下の処理が繰り返される。
【0037】
次に、TCPレベル3においてTELNETサーバ10が行う受信処理について説明する。
図5は、TELNETサーバ10のTCPレベル3における受信処理の動作例を示したフローチャートである。
【0038】
TELNETサーバ10は、まずTELNETクライアントからパケットを受信する(ステップ201)。通常、TELNETクライアントは、全てのパケットについて、TCPヘッダのコードビットに含まれるPSHフラグを有効に設定して送信するため、TCPレベル3では、パケットを受信すると規定のPSHフラグ処理が行われ、そのパケットがTCPレベル3よりも上位の階層であるソケットレベル2に渡される(ステップ202)。このとき、受信されたパケットのTCPヘッダに含まれるTCPコネクション情報がソケットレベル2に渡される。そして、TCPレベル3のACK処理選択部6は、現在TCPレベル3において受信処理を行っているTCP接続におけるTCPコネクション情報に関連付けられたACK情報を、ACK情報保持手段54からACK情報取得手段55を介して取得する(ステップ203)。
【0039】
続いて、ACK処理選択部6は、ステップ203で取得したACK情報に基づき、分岐処理を行う(ステップ204)。即ち、ACK情報が「即時ACK有効」であれば即時ACK処理を選択し(ステップ205)、ACK情報が「遅延ACK有効」であれば遅延ACK処理を選択して(ステップ206)、受信パケットを上位層へ引き継ぐ(ステップ207)。このステップ204における分岐処理が、確認応答を即時確認応答と遅延確認応答の何れにするかを判定する判定処理の一例としての、遅延ACK回避判断処理である。
その後、処理はステップ201に戻り、TELNETサーバ10は次のパケット到来を待つ。
以上により、TELNETサーバ10の動作についての説明を終了する。
【0040】
第1の実施形態では、ACK情報として「遅延ACK有効」が設定されているため、ステップ206において遅延ACK処理が選択される。したがって、TELNETクライアントによりパケットのTCPヘッダに「PSHフラグ有効」が設定されていても、即時ACKされることなく遅延ACK処理が行われ、即時ACKに起因するトラフィックの増大が抑制される。
第1の実施形態に係るTELNETサーバ10のように、TCPレベル3において受信するパケットが、「PSHフラグ有効」の設定(そのパケットを上位の階層に渡すことを示す付加情報の一例)を含み、かつそのパケットに含まれるデータ量が少ない(予め定められた基準値以下である)ときは、ACK情報として「遅延ACK有効」を設定すればよい。
【0041】
<第2の実施形態>
第2の実施形態では、通信装置の一例としての受信ホストがLPRサーバである場合の例を説明する。LPR(Line PRinter daemon protocol)は、TCP/IPネットワークを経由して印刷を行うためのプロトコルである。第2の実施形態に係るLPRサーバは、ネットワークを介してそのLPRサーバに接続されたプリンタ等に印刷を行わせる。
第2の実施形態においても、通信プロトコルの階層構造、LPRサーバのハードウェア構成及びACK情報管理部5の機能構成例は、図1から図3に示した第1の実施形態のTELNETサーバ10のものと同様である。このため、第2の実施形態においても、第1の実施形態と同一の符号を用いる。
【0042】
ただし、第2の実施形態に係るLPRサーバのACK情報設定手段51は、LPR受信タスクの処理遅延を抑制するという観点から、第1の実施形態とは異なり、ACK情報として「PSHフラグ付き遅延ACK有効」(図6及び図7では、「遅延ACKwithPSH」と記載する)又は「遅延ACK有効」を設定する。「PSHフラグ付き遅延ACK有効」は、TCPヘッダのPSHフラグが有効に設定されているパケットを受信した場合のみ、即時ACKを行うことを意味する。また、「遅延ACK有効」は、常に遅延ACKを行うことを意味する。
これ以外の構成要素については、第1の実施形態と同様であるため、その詳細な説明は省略する。
【0043】
以下では、第2実施形態に係るLPRサーバの動作について、詳細に説明する。
図6は、第2の実施形態に係るLPRサーバのアプリケーションレベル1における動作例を示したフローチャートである。
【0044】
まず、図6(A)は、LPRメインタスクのフローチャートである。LPRサーバはソケット生成からアクセプトまで一連のソケット処理を行いLPRクライアントからの接続を待つ。即ち、LPRサーバは、まず接続要求を受け付けるためのソケットを確保し(socket)(ステップ301)、監視するポート番号を指定する(bind)(ステップ302)。そして、ソケットを接続要求の監視モードにし(listen)(ステップ303)、LPRクライアントからの接続要求を受理する(accept)(ステップ304)。
【0045】
LPRサーバは、LPRクライアントから接続要求を受け付けるとLPR受信タスクを起動する(ステップ305)。その後、処理はステップ304に戻って、LPRメインタスクは複数受信に備えるため、次の接続を待つ。
【0046】
図6(B)は、LPR受信タスクのフローチャートである。LPRサーバが複数の接続要求を受け付けると、それぞれの接続要求について、図6(B)の処理が並列して実行される。
LPR受信タスクは、まず、ソケットレベル2におけるACK情報問合せ手段53を介して、現在設定されているACK情報の個数(即ち、現在確立されているTCP接続の個数)を問い合わせる(ステップ311)。これにより、アプリケーションレベル1では、LPRサーバとLPRクライアントの間における現在の通信量を把握する。
【0047】
そして、得られたACK情報の個数が予め定めたしきい値以下であれば(ステップ312でYes)、その受信タスクについて、ソケットレベル2におけるACK情報設定手段51に、ACK情報として「PSHフラグ付き遅延ACK有効」を設定させる(ステップ313)。
一方、ステップ311で得られたACK情報の個数が予め定めたしきい値よりも大きければ(ステップ312でNo)、その受信タスクについて、ソケットレベル2におけるACK情報設定手段51に、ACK情報として「遅延ACK有効」を設定させる(ステップ314)。これは、LPRサーバが複数のLPRクライアントとの間で接続を確立しているときに、個々の受信について即時ACKをしているとLPRサーバに負荷がかかるため、遅延ACKを行うことにより処理量を減らして、個々のLPR受信タスク自体の処理遅延を防ぐためである。
【0048】
また、このときソケットレベル2においては、第1の実施形態と同様に、ACK情報設定手段51が、アプリケーションレベル1からの指示により設定されたACK情報を、ACK情報保持手段54へ引き継ぐ。上述の通り、ACK情報保持手段54は、このACK情報を、ソケット番号及びTCPコネクション情報と関連付けて保持する。
【0049】
そして、LPR受信タスクでは、LPRサーバがLPRクライアントからデータを受信し(recv)(ステップ315)、TCPレベル3のACK処理選択部6による遅延ACK回避判断処理の結果に応じてACKが付与された応答を、LPRクライアントへ送信する(send)(ステップ316)。受信データの終了でない場合は(ステップ317でNo)、処理はステップ311へ戻り、LPRサーバのデータ受信が終了するまで、ステップ311からステップ317までの処理が繰り返される。
【0050】
そして、受信データが終了になると(ステップ317でYes)、ソケットレベル2のACK情報解除手段52に、現在のLPR受信タスクについてのACK情報(「PSHフラグ付き遅延ACK有効」又は「遅延ACK有効」)の設定を解除させ(ステップ318)、LPR受信タスクは処理を終了する。
【0051】
次に、TCPレベル3においてLPRサーバが行う受信処理について説明する。
図7は、LPRサーバのTCPレベル3における受信処理の動作例を示したフローチャートである。
【0052】
LPRサーバは、まずLPRクライアントからパケットを受信する(ステップ401)。受信したパケットのTCPヘッダが「PSHフラグ有効」に設定されている場合には、TCPレベル3では、パケットを受信すると規定のPSHフラグ処理が行われ、そのパケットがTCPレベル3よりも上位の階層であるソケットレベル2に渡される(ステップ402)。このとき、受信されたパケットのTCPヘッダに含まれるTCPコネクション情報がソケットレベル2に渡される。そして、TCPレベル3のACK処理選択部6は、現在TCPレベル3において受信処理を行っているTCP接続におけるTCPコネクション情報に関連付けられたACK情報を、ACK情報保持手段54からACK情報取得手段55を介して取得する(ステップ403)。
【0053】
続いて、ACK処理選択部6は、ステップ403で取得したACK情報に基づき、分岐処理を行う(ステップ404)。即ち、ACK情報が「即時ACK有効」であれば即時ACK処理を選択し(ステップ405)、ACK情報が「遅延ACK有効」であれば遅延ACK処理を選択する(ステップ406)。
【0054】
また、ACK情報が「PSHフラグ付き遅延ACK有効」であれば、ACK処理選択部6は更に、ステップ401において受信したパケットのTCPヘッダが「PSHフラグ有効」に設定されているか否かを判定する(ステップ407)。「PSHフラグ有効」が設定されていれば、ステップ405において即時ACK処理が選択され、「PSHフラグ有効」が設定されていなければ、ステップ408において遅延ACK処理が選択される。
このステップ404とステップ407における分岐処理が、確認応答を即時確認応答と遅延確認応答の何れにするかを判定する判定処理の一例としての、遅延ACK回避判断処理である。
【0055】
その後、受信パケットは上位層へ引き継がれ(ステップ409)、処理はステップ401に戻って、LPRサーバは次のパケット到来を待つ。
以上により、LPRサーバの動作についての説明を終了する。
【0056】
第2の実施形態では、ACK情報保持手段54に保持されているACK情報の個数が予め定めたしきい値以下であるとき、即ち、LPRサーバが接続を確立しているLPRクライアントの個数(LPRサーバとLPRクライアントとの間における通信量)が少ないときには、ACK情報として「PSHフラグ付き遅延ACK有効」が設定されるため、TCPヘッダに「PSHフラグ有効」が設定されていなければ、ステップ408において遅延ACK処理が選択される。また、ACK情報の個数が予め定めたしきい値よりも大きいとき、即ち、LPRサーバが接続を確立しているLPRクライアントの個数(LPRサーバとLPRクライアントとの間における通信量)が多いときにも、ACK情報として「遅延ACK有効」が設定されるため、ステップ406において遅延ACK処理が選択される。したがって、複数のLPR受信タスクを実行することにより負荷がかかってきたときであっても、LPRサーバは、個々の受信について即時ACKせず遅延ACKを行うことにより処理量を減らして、個々のLPR受信タスク自体の処理が遅延することを抑制する。
【0057】
尚、LPRサーバは、図2に示したような汎用のコンピュータの構成により実現されるものに限らず、それ自体が、通信インタフェース16により受信された画像データに基づき画像を形成する画像形成部を備えたプリンタ等の画像形成装置であってもよい。即ち、LPRサーバは、ACK処理選択部6が行う遅延ACK回避判断処理に従いACKを返信しながらLPRクライアントから受信したパケットを介して画像データを取得し、取得された画像データに基づき画像を形成する画像形成装置であってもよい。
【0058】
また、第1の実施形態に係るTELNETサーバ10においても、第2の実施形態に係るLPRサーバと同様に、ACK情報問合せ手段53が現在設定されているACK情報の個数(即ち、現在確立されているTCP接続の個数)を問い合わせ、これにより把握されるTELNETサーバ10とTELNETクライアントの間における現在の通信量に基づいて、ACK情報設定手段51がACK情報を設定するようにしてもよい。
【0059】
また、第1及び第2の実施形態にて説明した、遅延ACK回避判断処理の機能は、TELNETサーバ10やLPRサーバとは独立した汎用のコンピュータで実現してもよい。そのようなコンピュータのハードウェアは、図2に示したTELNETサーバ10と同様の構成を備えていればよい。
【0060】
尚、本実施の形態を実現するプログラムは、通信手段により提供することはもちろん、CD−ROM等の記録媒体に格納して提供するようにしてもよい。
【符号の説明】
【0061】
1…アプリケーションレベル、2…ソケットレベル、3…TCPレベル、4…下位層、5…ACK情報管理部、6…ACK処理選択部、10…TELNETサーバ、51…ACK情報設定手段、52…ACK情報解除手段、53…ACK情報問合せ手段、54…ACK情報保持手段、55…ACK情報取得手段

【特許請求の範囲】
【請求項1】
他の装置からパケットを受信してから予め定めた時間の経過後に当該パケットに対する確認応答を当該他の装置へ返信する遅延確認応答を行うか否かを指定するための情報である確認応答情報を設定する設定手段と、
前記設定手段が設定した前記確認応答情報と、他の装置から受信するパケットに含まれる、自装置と当該他の装置との間で確立された接続を識別するために用いられる識別情報とを関連付けた関連付け情報を保持する保持手段と、
他の装置から受信するパケットに含まれる前記識別情報に基づき、前記保持手段に保持されている前記確認応答情報を参照することにより、当該パケットに対して前記遅延確認応答を行うか否かを判定する判定処理を行う判定手段と
を備えたことを特徴とする通信装置。
【請求項2】
前記判定手段は、OSI(Open Systems Interconnection)基本参照モデルにおけるトランスポート層にて前記判定処理を行い、
前記設定手段及び前記保持手段は、前記トランスポート層とは異なる階層にて、それぞれ前記確認応答情報を設定し、前記関連付け情報を保持することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記設定手段は、他の装置から予め定められた基準値以下のデータ量を含むパケットを前記トランスポート層にて受信するときであって、かつ当該パケットが当該トランスポート層よりも上位の階層に渡されることを示す付加情報を当該パケットが含むときに、前記確認応答情報として、前記遅延確認応答を行うことを指定するための情報を設定することを特徴とする請求項2に記載の通信装置。
【請求項4】
自装置と一又は複数の他の装置との間における現在の通信量を把握する把握手段を更に備え、
前記設定手段は、前記把握手段が把握した前記通信量に基づき、前記確認応答情報を設定することを特徴とする請求項1乃至3のいずれかに記載の通信装置。
【請求項5】
前記把握手段は、前記通信量として、自装置と一又は複数の他の装置との間で現在確立されている接続の個数を把握し、
前記設定手段は、前記把握手段が把握した前記個数が予め定められたしきい値以上であるときに、前記確認応答情報として、前記遅延確認応答を行うことを指定するための情報を設定することを特徴とする請求項4に記載の通信装置。
【請求項6】
自装置と一又は複数の他の装置との間における現在の通信量を把握する把握手段と、
前記把握手段が把握した前記通信量に基づき、前記他の装置からパケットを受信してから予め定めた時間の経過後に当該パケットに対する確認応答を当該他の装置へ返信する遅延確認応答を行うか否かを指定するための情報である確認応答情報を設定する設定手段と、
前記設定手段が設定した前記確認応答情報と、前記他の装置から受信するパケットに含まれる、自装置と当該他の装置との間で確立された接続を識別するために用いられる識別情報とを関連付けて保持する保持手段と、
前記他の装置から受信するパケットに含まれる前記識別情報に基づき、前記保持手段に保持されている前記確認応答情報を参照することにより、当該パケットに対して前記遅延確認応答を行うか否かを判定する判定処理を行う判定手段と、
前記判定手段が行う前記判定処理に従い前記他の装置に確認応答を返信しながら当該他の装置から受信したパケットを介して、画像データを取得する取得手段と、
前記取得手段により取得された前記画像データに基づき、画像を形成する画像形成手段と
を備えたことを特徴とする画像形成装置。
【請求項7】
コンピュータに、
第1の通信装置が第2の通信装置からパケットを受信してから予め定めた時間の経過後に当該第1の通信装置が当該パケットに対する確認応答を当該第2の通信装置へ返信する遅延確認応答を行うか否かを指定するための情報である確認応答情報を設定する機能と、
設定された前記確認応答情報と、前記第1の通信装置が前記第2の通信装置から受信するパケットに含まれる、当該第1の通信装置と当該第2の通信装置との間で確立された接続を識別するために用いられる識別情報とを関連付けて保持手段に保持させる機能と、
前記第1の通信装置が前記第2の通信装置から受信するパケットに含まれる前記識別情報に基づき、前記保持手段に保持されている前記確認応答情報を参照することにより、当該パケットに対して当該第1の通信装置が当該第2の通信装置へ前記遅延確認応答を行うか否かを判定する機能と
を実現させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−65158(P2012−65158A)
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願番号】特願2010−207879(P2010−207879)
【出願日】平成22年9月16日(2010.9.16)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】