JP2013229935A - ネットワーク通信装置及び方法とプログラム - Google Patents

ネットワーク通信装置及び方法とプログラム Download PDF

Info

Publication number
JP2013229935A
JP2013229935A JP2013145824A JP2013145824A JP2013229935A JP 2013229935 A JP2013229935 A JP 2013229935A JP 2013145824 A JP2013145824 A JP 2013145824A JP 2013145824 A JP2013145824 A JP 2013145824A JP 2013229935 A JP2013229935 A JP 2013229935A
Authority
JP
Japan
Prior art keywords
data
transmission
address
response
identification information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013145824A
Other languages
English (en)
Other versions
JP5591380B2 (ja
Inventor
Takuyuki Matsuo
卓幸 松尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2013145824A priority Critical patent/JP5591380B2/ja
Publication of JP2013229935A publication Critical patent/JP2013229935A/ja
Application granted granted Critical
Publication of JP5591380B2 publication Critical patent/JP5591380B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】IPv6プロトコルを利用してネットワーク上の機器と通信する際のパケットのフィルタリングを実現し、またトラフィックを軽減する。
【解決手段】PC上で動作するプリンタドライバ10において、通信相手の名前と名前解決したアドレスのうち、実際に通信に成功したアドレスを関連付けて記憶し、以降の同一通信相手との通信には記憶しておいたアドレスを使用する。
【選択図】図1

Description

本発明は、例えばPC(パーソナルコンピュータ)上で動作する、ネットワーク上の機器との通信機能に関する。特に、通信プロトコルとしてIPv6(Internet Protocol Version 6)を利用する通信機能に関する。
現行のインターネットプロトコル(IPv4)のアドレスが枯渇しつつあることを受け、アドレス空間の増大、セキュリティ機能の追加、優先度に応じたデータの送信などの改良を施した次世代インターネットプロトコルとしてIPv6が実用になり始めている。IPv6プロトコルでは一つのネットワークインターフェイスに複数のアドレスが割り当て可能な仕様となっている。たとえば、割り当てられるアドレスとしてリンクローカルユニキャストアドレス(以下リンクローカルアドレスと称する)、グローバルユニキャストアドレス(以下グローバルアドレスと称する)などが知られている。さらに、グローバルアドレスとして複数のアドレスを割り当てることができるため、ひとつのホストに対してIPv4アドレスと複数のIPv6アドレスとがDNS(Domain Name System)サーバへ登録される場合がある。
通信相手を特定する為には通常「名前」と呼ばれるFQDN(Fully Qualified Domain Name)が用いられている。なおFQDNとは、DNSのドメインの階層構造に沿ってルートから表示したホスト名あるいはドメイン名である。FQDN のことを以下では単に「名前」と呼ぶことがある。DNSサーバに対して名前を指定してバイナリアドレスを問い合わせると複数のIPv6が取得されることがある。これらのアドレスには問い合わせ元のPCから全て到達可能であるとは限らない。その為、IPv6を使ったTCP通信においてはDNSを使った名前解決の結果として得られる複数のアドレスに対して順次接続試行を行い接続が成功した時点でのアドレスを相手アドレスとして使用することになる。IPv6を使ったUDP通信ではなおさらアプリケーションが通信相手に対してパケット再送などの手法を使って到達性を確認しなければならない為、これも本質的にTCP通信と同じように順次複数のアドレスに対してパケットを送信することを試みなければならない。この様に、IPv6通信は本質的に複数アドレスに伴うネットワークトラフィックの増大と接続までの試行時間の増大をもたらす。
さらに相手アドレスの対向である自アドレスとしても同様に複数アドレスが存在する。通信相手のアドレスが決まると、そのアドレスに対応する自アドレスはRFC3484( "Default Address Selection for Internet Protocol version 6(IPv6)") として既定されているアルゴリズムに則り選択されることになっている。このアドレス選択アルゴリズムは通常プロトコルスタックと呼ばれるOS(Operating System)に近いプログラム内で実行されるため、アプリケーションプログラムは選択される自アドレスに関して関与できない。
上記のような複数のIPv6アドレスが2つの通信端点それぞれに存在することによって特にUDPプロトコルを使った通信を行う場合に以下に示すような状況が発生する。通信端点A,B共に自身のIPv6アドレスを3つずつ保持しておりそれぞれ、Addr_A1,Addr_A2,Addr_A3と Addr_B1,Addr_B2,Addr_B3とする。このうち通信端点Bのアドレスのうち2つのアドレスAddr_B1,Addr_B2がDNSに登録されているとする。
図3(A)に示す様に通信端点Aが通信端点Bに対して通信を開始する場合、まずはDNSに対して通信端点Bの名前(ここでは"通信端点B"という名前であるとする)を指定して名前解決を依頼(クエリ)する。DNSサーバでは名前解決の結果として2つのアドレス(Addr_B1,Addr_B2)を通信端点Aに対して返却(レスポンス)する。
名前解決の結果を受け取った通信端点AはAddr_B1に向けてリクエストを送信したところ、通信端点Bに到達したとする。通信端点Bはリクエストに対応したレスポンスを返信するが、このとき通信端点はリクエストの送信元アドレスとしてAddr_A1を知ったのでこのアドレスに対してレスポンスを返信する。すると前述のRFC3484に規定されているアドレス選択アルゴリズムが機能し、通信端点Bの保持する3つのアドレスのうち最適なアドレスとしてAddr_B1ではなくAddr_B3が選択されることがある。このようにして通信端点BからのレスポンスはAddr_B3から通信端点AのAddr_A1に向けて送出される。通信端点Aの側に立つと、未知のアドレスからデータが送られてくるという状況になる。
通信端点Aがリクエストを送出した相手が通信端点Bのみであることが確定している場合には未知のアドレスからのデータを「通信端点Bから送られてきたレスポンスである」と判断できる場合がある。しかし、図3(B)のように通信端点Aからほぼ同時に通信端点Bと通信端点Cの2つの相手にリクエストを送出する場合を考えてみると上記の判断が不可能であることがわかる。図3(B)における通信端点A、通信端点B、通信端点Cのアドレスは各々Addr_A1,Addr_A2,Addr_A3とAddr_B1,Addr_B2,Addr_B3とAddr_C1,Addr_C2,Addr_C3であるとする。さらに、通信端点BのアドレスのうちDNSサーバに登録されているアドレスはAddr_B1,Addr_B2であり、同様に通信端点CのそれはAddr_C1,Addr_C2であるとする。通信端点Aは通信端点Bと通信端点Cの名前をDNSサーバに問い合わせ、先に説明した各端点あたり2つのアドレスをレスポンスとして受け取っているものとする。ここで通信端点Aは通信端点Bと通信端点Cにリクエストを送出し、通信端点BはAddr_B3からAddr_A1に向けてレスポンスを送出し、通信端点CはAddr_C3からAddr_A1に向けてレスポンスを送出したとする。
通信端点Aは見知らぬアドレスAddr_B3とAddr_C3からデータを受信することになる。この2つの受信データは通信端点Bと通信端点Cのいずれから送信されてきたレスポンスデータであるのか判断できない。リクエストの送信先アドレスから必ずレスポンスが送り返されてくることがあてにできるIPv4のようなプロトコルの場合は通信の両端点のポート番号も含んだアドレスの組によって通信相手が特定できるためこのような問題は起きない。このような状況ではレスポンスパケットの送信元アドレスをリクエストパケットの送信先アドレスと一致しない場合にはその受取を拒否するといアドレスに基づくパケットフィルタリングが行えなくなるというセキュリティ上の問題が発生する。
すなわち、見知らぬアドレスから送られてきたデータパケットは何らかのリクエストパケットに対する正規のレスポンスである可能性があるためフィルタリングして破棄することはできない。そのため、いったんどんなパケットも受信しなければならないということを意味する。
DNSサーバへの名前解決に伴うトラフィックの増加、処理の遅延を改善する目的で、IPv4とIPv6のアドレスが登録されているサーバへのアクセスにいずれのプロトコルを用いるかを過去の実績に基づいて決定する方法がある(例えば特許文献1参照)。特許文献1で開示されている従来の技術は主に、IPv4とIPv6が混在する状況を想定している。アクセスしようとするサーバプロセスと過去に通信が可能であったIPプロトコルをサーバプロセスと関連付けてキャッシュしておき、次回のアクセスの再にはそのIPプロトコルおよび対応するアドレスを利用しようとするものである。この従来技術ではDNSサーバへのアクセスを低減すること、及びサーバプロセスがDNSサーバに登録されているプロトコルアドレスの全てでは待ちうけていない場合に無駄なアドレスでのアクセス試行を減じることに効果を発揮する。
特開2007-19612号公報
しかし特許文献1が開示する発明によっても、サーバプロセスからの応答が未知のアドレスから送られてくるという状況では従来技術はキャッシュそのものが行われず、やはり以下の問題を解決することはできない。
1. 送信先として選択したアドレス以外からの応答データを基本的に受信しなければならない。すなわちアドレスによるパケットフィルタリングを解除しなければならないというセキュリティ面での問題がある。
2. IPv4プロトコルとIPv6プロトコルの両方のアドレスを使って通信を行うアプリケーションではDNSサーバへの名前解決の問い合わせ回数が増加する。これがトラフィックを増加させ、また応答時間を遅延させる。
3. ひとつの通信端点について複数のIPv6アドレスがDNSサーバに登録されている場合には、複数のアドレスすべてでパケットの送信を行う可能性がある。すなわちトラフィックが増大する。
本発明は上記問題を解決することを目的とする。そのため、本発明は、複数のアドレスが付与されたネットワーク機器とネットワークを介して通信するデータ通信装置であって、
送信先のネットワーク機器に対応するアドレスを取得する取得手段と、
取得された前記アドレスに対し、送信データを前記送信データの識別情報とともに送信する送信手段と、
識別情報を含む応答データを受信する受信手段と、
前記応答データの識別情報と前記送信データの識別情報とが同じでない場合には前記応答データを要求元に引き渡さず、前記応答データの識別情報と前記送信データの識別情報とが同じである場合には前記応答データを前記要求元に引き渡す応答処理手段と、を有し、
前記応答処理手段は、前記応答データの識別情報と前記送信データの識別情報とが同じである場合には、前記送信データの送信先のアドレスまたは前記応答データの送信元のアドレスと、前記送信先のネットワーク機器とを対応づけて記憶手段に記憶する。
本発明によればアプリケーションは上記課題を解決するという効果を提供することができる。すなわち、アドレスによるパケットフィルタリングを解除しなければならないというセキュリティ面での問題を解消できる。また、IPv4プロトコルとIPv6プロトコルの両方のアドレスを使って通信を行うアプリケーションでも、トラフィックの増大、応答時間を遅延を防止できる。また、ひとつの通信端点について複数のIPv6アドレスがDNSサーバに登録されている場合にも、トラフィックの増大を抑制できる。
実施形態におけるプリンタドライバのブロック図である。 実施形態におけるPCの構成を示すブロック図である。 (A)IPv6アドレスをハンドリングする通信端点とDNSサーバの関係を示す図である。(B)IPv6アドレスをハンドリングする複数の通信端点間で使用されるアドレスの関係を示す図である。 (A)実施形態におけるデータ取得処理を示すフローチャートである。(B)実施形態におけるリクエスト発行処理を示すフローチャートである。(C)実施形態におけるレスポンス受領処理を示すフローチャートである。 実施形態における送受信処理を示すフローチャートである。 (A)実施形態における通信相手アドレス取得処理を示すフローチャートである。(B)実施形態における通信相手アドレス登録処理を示すフローチャートである。 (A)実施形態におけるリクエストデータの構造を示した図である。(B)実施形態におけるレスポンスデータの構造を示した図である。
図2は本発明をプリンタドライバに適用した際にアプリケーションプログラムにロードされて動作するデータ通信装置としてのPCの構成を示すブロック図である。このプリンタドライバがインストールされたPCは、プリンタを制御する印刷制御装置として機能する。PCのオペレーティングシステム(OS)はRAM4、HDD5あるいは後述のディスクドライブ装置の記憶媒体のいずれかの記憶手段に格納されておりCPU3により実行される。さらに、OSはプリンタドライバの依頼により表示装置6に表示を行い、入力装置7からのユーザの入力を取り込んでプリンタドライバに通知することを担っている。さらに、OSは通信部8を制御し、通信部8で接続された周辺装置の他、周辺装置9の制御、入出力を行いプリンタドライバとのデータの入出力を行っている。制御対象の周辺装置には、PCカード、各種ディスクドライブ装置、プリンタ、ネットワークカード等がある。さらにOSはファイルシステム機能を提供しており、ファイルの記憶媒体は図2のHDD5、RAM4に限らず、通信部8を介して接続されたネットワーク上の他のPCも含めた外部記憶装置も含むものである。OSおよびプリンタドライバはPC上のシステムバス1、2を通じて互いに連結されたハードウエアモジュール群のデータを授受している。
プリンタドライバはOSが提供しているアプリケーションプログラムインターフェース(API)を通じてPC上のリソースにアクセスしたりOSの提供する機能を使用したりする。プリンタドライバはアプリケーションプログラムにロードされて印刷データを渡され、それをプリンタが理解できる言語に翻訳することが主な処理である。加えてプリンタドライバは、使用者にプリンタの装備しているステープル装置、スタッカ装置、搭載している用紙トレイなどの状況を取得して表示する機能を提供している。さらに、プリンタドライバは、プリンタ内部に蓄積されている印刷待ちのジョブリストを取得して表示する機能も提供している。
プリンタドライバは、RAM4、HDD5あるいは後述のディスクドライブ装置の記憶媒体のいずれかの記憶手段に格納されており、CPU3により実行される。さらにプリンタドライバはOSが提供するファイルシステムに記憶されているファイルを参照する。以下のプリンタドライバの構成及び動作の説明においては、印刷データの翻訳に関する機能の詳細説明は割愛する。本実施形態のプリンタドライバは使用者が指定した通信相手のネットワーク機器として、ネットワークプリンタや複写機等を想定している。これらネットワークプリンタや複写機等をまとめてプリンタと称する。以下の説明においては、これらプリンタにネットワークを介してアクセスし、プリンタの機種名、プリンタに搭載された機能リスト、プリンタ内部の印刷ジョブリストを取得して、図2の表示装置6に表示する機能に関して詳しく説明する。
図1は本発明のプリンタドライバの構成を示すブロック図である。プリンタドライバは、アプリケーションプログラム等によって作成されたデータを、ユーザが指定したプリンタが解釈実行可能なプリンタ記述言語に翻訳し、翻訳したデータを当該プリンタに送信する。送信されるデータはここでは一般的には送信データと呼ぶが、プリンタに送られる前述の翻訳したデータについては印刷データとも呼ぶ。プリンタドライバ10は表示部50、入力部60、アクセスロジック部20、トランスポート部30、ドライバロジック部40を備えている。最初にプリンタドライバの内部に存在する3つの機能ブロックの定義を行う。
ドライバロジック部40は、アクセスロジック部20に対してプリンタの名前を指定して情報の取得を指示する機能ブロックである。ドライバロジック部40は、プリンタドライバ10の印刷データの翻訳処理とPCの表示装置上に画面を表示する。また、使用者からのプリンタの選択手段、選択したプリンタの機能を取得する指示手段の制御とプリンタから取得した情報の画面への表示を担っている。さらに後述のアクセスロジック部に対してプリンタの名前を指定して所望の情報を取得するように要求を行い、結果を取得する処理も行っている。
なおアクセスロジック部20は、送信データに基づいてリクエストデータを作成し、ドメイン名やホスト名(すなわちFQDN)で指定されるリクエストの送信先を指定してトランスポート部に対しリクエスト送信依頼を行う処理を司るブロックである。リクエスト送信先としてはFQDNだけでなく、IPv4やIPv6(インターネットネットプロトコルバーション6)のバイナリアドレス、コンピュータ名等の形式で指定することができるが、アクセスロジック部20は、少なくともFQDNを指定する。
トランスポート部は依頼されたリクエストデータを依頼された送信先に送出し、それに対するレスポンスを受け取ってアクセスロジック部に引き渡す機能ブロックである。トランスポート部は、送信を依頼されたリクエストの内容およびレスポンスの内容に関して一切の知識を有しないものとする。さらにトランスポート部はFQDNで指定された送信先のバイナリアドレスを特定する目的でDNSサーバへの問い合わせを行う。
プリンタドライバ10はネットワーク上に存在するDNSサーバにアクセスをおこなう。DNSサーバに対してプリンタドライバが通信対象としているプリンタのFQDNを指定し、応答としてそのプリンタに割り当てられているアドレスを受け取る。
入力部60は図2の入力装置7を介して使用者の入力を受取りドライバロジック部に引き渡す。入力される情報として、通信相手であるプリンタのFQDNと取得開始指示とが渡される。表示部50は図2の表示装置6に対して表示すべきデータを作成して表示させる処理を司る。表示内容はプリンタから取得した機種名、搭載された機能リスト、プリンタ内の印刷ジョブリストである。
ドライバロジック部40は入力部60から渡されたプリンタのFQDNとアドレスの取得開始指示をアクセスロジック部20に引き渡す。
アクセスロジック部20は、リクエストID生成部201、通信相手名−リクエストID関連記憶部202、リクエストID−リクエスト関連記憶部203と制御部200とを備えている。アドレスの取得開始指示が与えられると、制御部200はリクエストID生成部201にリクエストIDの生成要求を出す。リクエストID生成部201は制御部200からの要求に応じてユニークなIDを生成して返す。リクエストIDは、比較的長い周期で巡回するIDを用いている。このため、あるプリンタに対して送信する際に生成されたリクエストIDと同じリクエストIDが、同一装置への別のリクエストや他のプリンタへのリクエストに同時に用いられる可能性は非常に低い。逆に言うと、リクエストIDの周期としては、同一のリクエストIDが同一システム内で同時に使用されることがない程度の長さが選択される。ひとつのリクエストIDは、最大で、(送信先のホスト名(本例ではプリンタ)に対してDNSに登録されたアドレス数)×(応答待ち時間)+(スリープからの覚醒時間)+(応答所要時間)程度の時間にわたり使用される可能性がある。この時間を最大ID利用時間とすれば、リクエストIDの周期>最大ID利用時間/(送信要求が発生する平均時間間隔)が満たされれば、リクエストIDのユニークさは保たれる。
通信相手名−リクエストID関連記憶部202は、制御部200から通信相手のFQDNとリクエストIDを渡され、それらを関連付けて記憶する。さらに通信相手名−リクエストID関連記憶部202は、リクエストIDを指定されて関連つけられているFQDNを検索して返却する機能を有している。リクエストID−リクエスト関連記憶部203は制御部からリクエストIDとリクエストデータを渡され、それらを関連付けて記憶する。さらにリクエストID−リクエスト関連記憶部203は、指定されたリクエストIDに関連つけられているリクエストデータを検索して返却する機能を有している。
制御部200は、リクエストID生成部201と、通信相手名−リクエストID関連記憶部202と、リクエストID−リクエスト関連記憶部203と、トランスポート部30とを制御し、通信相手のプリンタから必要な情報を取得する。
また制御部200は外部に存在するDNSサーバ70やプリンタ80のネットワーク上の位置(アドレス)詳細については関知していない。制御部200はトランスポート部30に対してリクエストデータと呼ばれるプリンタとの間で取り決めたプロトコルデータを作成する。プロトコルデータには通信相手を一意に特定するためのユニークなIDであるリクエストIDが埋め込まれている。送信内容であるリクエストデータとその送り先であるところの通信相手名(FQDN)が制御部200からトランスポート部30に対して引き渡されて送信依頼がなされる。
トランスポート部30は、名前解決部301、通信相手名−アドレス関連記憶部304、リクエスト送信部302、レスポンス受信部303を備えている。リクエスト送信部302は入力としてリクエストデータとその送信先であるプリンタの名前すなわちFQDNを受け取る。リクエスト送信部302はその後、名前解決部301に依頼して受け取ったFQDNをアドレスに変換させる。名前解決部301は、リクエスト送信部302から引き渡されたFQDNに関連づけられたアドレスを通信相手名−アドレス関連記憶部304により検索させ、関連するアドレスが見つかればそのアドレスをリクエスト送信部302に引き渡す。通信相手名−アドレス関連記憶部304は、FQDNからアドレスを検索して返す名前解決部301の機能の実質的実行部分として機能している。リクエスト送信部302は、こうして送り先のFQDNに対応したアドレス(通信相手アドレス)を取得する。名前解決に指定するアドレスはIPv4とIPv6のどちらも用いることができる。なお前述したように、IPv6では一つの名前(FQDN)に対して複数のアドレスが付与され得る。
リクエスト送信部302は、取得した通信相手アドレスに対して依頼されたリクエストデータをUDP(User Datagram Protocol)を使って送信する。このとき、名前解決部301から返されたアドレスが複数ある場合には各アドレスに対してリクエストデータを送信して一定時間経過後までに応答がなければ再送する処理を行う。
レスポンス受信部303は、プリンタからの応答データを受信してレスポンスデータとしてアクセスロジック部20に引き渡す機能を提供している。その際、応答データの送信元アドレスも取得して応答データとともに引き渡す。なおプリンタはレスポンスデータをUDPを使って送信する。リクエストとは、パケットに含まれるリクエストIDにより対応付けられる。
図7(A)、図7(B)でプリンタドライバ10とプリンタとの間で授受されるリクエストデータ701とレスポンスデータ702のパケット構造を説明する。図7(A)がプリンタドライバ10からプリンタに向けて送出されるリクエストデータ701である。固定サイズのパケットヘッダと可変長のリクエストボディから成っている。パケットヘッダはレスポンスデータ702とフィールドの構成については共通である。ただしリクエストデータ701では「タイプ」部分にリクエストを意味する数値「0」が指定され、レスポンスデータ702のパケットヘッダの「タイプ」部分にはレスポンスを意味する数値「1」が指定される。パケットヘッダの「パケットサイズ」部分にはリクエストデータ701、あるいはレスポンスデータ702全体のサイズ(オクテット数)が格納される。「ID」部分にはリクエストデータ701を作成した側が指定したリクエストIDが、対応するレスポンスにも格納される。すなわちレスポンスデータ702のパケットヘッダ内の「ID」部分には対応するリクエストデータに格納されていたリクエストIDがそのまま書き込まれる。リクエストボディには、受け取った側に対して希望する処理内容を指定する「コマンド」部分がある。「コマンド」部分に指定する処理内容の種類には、装置の機種名要求、装置に搭載された機能リスト要求、装置内の印刷ジョブリスト要求などが定義されている。リクエストボディ部の「パラメータ」部分には「コマンド」毎に定められたパラメータが指定される。
一方、レスポンスボディには処理内容を示す「コマンド」部分があり、ここには対応するリクエストデータに格納されていた「コマンド」の内容がそのまま格納される。レスポンスボディの「リザルト」部分には処理を実行した結果を意味する値が格納される。成功、パラメータ不正、実行時エラー等の処理の結果を意味する値が定義されている。
次に図4(A)から図6(B)に示すフローチャートによってアクセスロジック部20とトランスポート部30で実行される処理を説明する。図4(A)はアクセスロジック部20での主要な機能であるプリンタからのデータ取得処理を示すフローである。
ステップS10では、送信先のプリンタを指定し、指定したプリンタへのリクエストデータを送信するリクエスト発行処理を行う。ステップS20では、指定したプリンタからのレスポンスデータを、通信相手のアドレスと共に受信するレスポンス受信処理を行う。ステップS30では、リクエストデータと共に指定した送信先(通信相手)名であるFQDNと、レスポンスデータと共に受信したアドレス(例えばIPアドレス)とをトランスポート部30に引き渡す。それにより、通信相手の名前(FQDN)とアドレスとの関連付けをトランスポート部30に行わせる。
ステップS10のデータ取得処理は図4(B)に示すようにステップS11からステップS13までの処理から成っている。ステップS11ではプリンタに送信するリクエストデータを作成するリクエストデータ作成ステップである。ステップS11では、図1のリクエストID生成部201に生成させた、少なくともその時期においてはユニークなリクエストIDをリクエストパケットに埋めこんでリクエストデータを作成する。
ステップS12は通信相手とリクエストデータの関連付けを行う関連づけステップである。ここでの通信相手とはプリンタの名前(FQDN)のことであり、リクエストデータはレスポンスを受け取るまで図1のリクエストID−リクエスト関連記憶部203に内容が複写されて記憶される。ステップS12ではリクエストパケットをリクエストIDと関連づけてリクエストID−リクエスト関連記憶部203に保存する。
ステップS13では、作成したリクエストデータ701をトランスポート部30に対して通信相手であるプリンタの名前(FQDN)とともに渡し、送信を依頼する。送信の依頼と同時に通信相手名―リクエストID関連記憶部202に、プリンタの名前とリクエストIDとを関連づけて記憶する。リクエスト発行処理は以上で終了する。
なおリクエストデータにはリクエストIDそのものが含まれているため、たとえばステップS12ではリクスエストIDとリクエストパケットとを記憶せず、ステップS13で通信相手名とリクエストパケットとを関連づけて記憶しておいても良い。このようにしても特定のリクエストIDを持つリクエストデータを検索することができる。
続いて図4(A)のステップS20のレスポンス受領処理、すなわち応答処理を説明する。図4(C)はレスポンス受領処理の詳細なフローである。レスポンス受領処理はステップS21からステップS23までの処理から成っている。ステップS21はトランスポート部30からのレスポンスデータ702を受け取る処理である。アクセスロジック部20はトランスポート部30に対して定期的にレスポンスデータ到着を問い合わせ、レスポンスデータを受信していれば受け取る。データをまだ受信していない場合には一定周期でトランスポート部30に対してデータ到着を問い合わせる。
データを受信できた場合には、その受信データの送信元アドレス(IPアドレス)も同時に取得する。これは後述するがトランスポート部30がOS付属のプロトコルスタックから取得できる情報である。この後、ステップS22に進む。
ステップS22ではレスポンスデータ702のうちパケットヘッダからリクエストIDを抽出する。さらに抽出したリクエストIDをキーにして図1のリクエストID−リクエスト関連記憶部203に問い合わせリクエストIDに関連づけられたリクエストデータを取得する。すなわち、レスポンスパケットのリクエストIDと過去に送信したリクエストのリクエストIDとを照合する。この処理はプリンタからのレスポンスデータ702がこのプリンタドライバ10から送出されたリクエストデータ701に対する正規のレスポンスであるか否かを判定する為の処理である。レスポンスデータに含まれていたリクエストIDを持つリクエストデータが記憶されているということはそのレスポンスデータが正しい送信相手から返送されてきたという傍証になる。すなわち、送信したリクエストデータのリクエストIDを持つレスポンスデータが正規のレスポンスの蓋然性が高いと判定できる。情報の照合によりリクエストとレスポンスとを対応付ける以上、レスポンスの偽造や誤りを完全に防止することは通常困難であるので、この蓋然性の高さをもって、正規のレスポンスと判定する。これは通常の要求/応答のシーケンスにおいても同様に行われている通りである。一方、送信したリクエストデータのリクエストIDを持たないレスポンスデータは正規のレスポンスではないと判定できる。
もし正規のレスポンスではないと判定された場合には、それ以上の内容の解析は行うことなくレスポンスデータは破棄される。この処理により、ネットワーク上の悪意のある第3者からの偽装パケットをある程度検出して廃棄するフィルタ機能が実現できる。次にレスポンスデータの内容を解析して表示部50に渡す。表示部50では表示用のデータを作成して図2の表示装置6に表示を行う。
ステップS23はリクエストIDから通信相手名を検索する処理である。ステップS22で取得したリクエストIDを指定して、通信相手名−リクエストID関連記憶部202に、指定したリクエストIDに関連づけられた通信相手名(FQDN)を返却させる。ここで得たFQDNとステップS21で取得したレスポンスデータの送信元アドレスとを呼び出し元に返してレスポンス受領処理は終了する。
ステップS30ではステップS20で取得したプリンタのFQDNと同プリンタのアドレスとを入力としてトランスポート部30の名前解決部301の名前−アドレス関連付け機能を呼び出す。名前解決部301は図6(B)の処理を行う。説明は後述する。この後、受信した正規のレスポンスに対応するリクエストデータ及び対応するリクエストIDを、リクエストID−リクエスト関連記憶部203から削除しておく。また、正規のレスポンスを受信できなかったリクエストに関しても、同様に、対応するリクエストデータ及び対応するリクエストIDを、リクエストID−リクエスト関連記憶部203から削除しておく。
図5、図6(A)、図6(B)は、トランスポート部30で実行される処理を示すフローである。図5の送信処理は図4(B)のステップS13においてアクセスロジック部20の処理として説明した「トランスポート部30へ送信依頼」の結果としてトランスポート部30で実行される処理である。図5の送信処理はステップS50、ステップS60〜ステップS67を有する。ステップS50の通信相手アドレス取得処理は図6(A)に詳細なステップとして説明する。ステップS50では、入力として通信相手であるプリンタの名前を受け取る。実際にリクエストを送信する前に通信相手の名前をアドレスに変換する必要がある為、通信相手名−アドレス関連記憶部304と外部のDNSサーバ70のいずれかあるいは両方にアクセスして有効なアドレスの取得を試みる。その詳細は図6(A)で説明する。
図6(A)のステップS51では通信相手名−アドレス関連記憶部304にステップS50の入力として渡された通信相手名がキーとして既に登録済みか否かを判定している。既に登録済みであれば、ステップS53で、通信相手名に関連づけられているアドレスを通信相手名−アドレス関連記憶部304から取得して呼び出し元に返す。通信相手名−アドレス関連記憶部304を「キャッシュ」と呼ぶ場合もある。一方登録されていない場合には、ステップS52でDNSサーバ70に対して名前解決を依頼する。依頼時にはIPv4とIPv6アドレスの両方で解決を依頼する。得られたアドレスが複数ある場合にはそれらをすべてリスト(アドレスリスト)として呼び出し元に返す。プリンタドライバ10が或るプリンタに初めてアクセスを行う場合には、図6(A)のステップS51はNoとなりDNSサーバ70での名前解決が実行される。ここでステップS53にある「キャッシュ」とはDNSサーバ70での名前解決の結果をそのままキャッシュするわけではないことに注意を要する。キャッシュすなわち通信相手名−アドレス関連記憶部304には、後述の図6(B)で示す通信相手アドレス登録処理で入力された情報が保持される。
ステップS50で通信相手であるプリンタのアドレスが取得された後は図5のステップS60以降においてリクエスト送信とレスポンス受信の処理が実行される。図5の送受信処理の概要としては、取得した通信相手のアドレスに対してリクエストパケットを送信してその後規定の応答待ち時間の後に応答があるかを確認する。取得したパケットが複数ある場合には、その内の一つを選択して、選択したアドレスに送信する。規定時間内にレスポンスがない場合には、一アドレスについて規定回数(例えば2回)再送信を繰り返しながら、ステップS50で取得したアドレス全てに対して試行する。名前解決で得られた全アドレスに対してリクエストを送信してもレスポンスが受信できた時点で試行を中止する。
次に送受信処理をステップごとに順に説明していく。図5のステップS60ではステップS50で取得した通信相手のアドレスリストのうち、未だ着目していないアドレスの有無を判定する。すなわちステップS60では、アドレスリストの先頭からアドレスを指し示すインデクスをインクリメントし、そこにアドレスがあるか判定する。未着目のアドレスがあれば、次に取得可能なアドレスがあると判定される。既にアドレスリストの最後尾に達している場合には、ステップS60の処理はNoの判定となり、これ以上の処理が継続できないため終了する。最初のステップS60の判定でNoとなるケースは、通信相手であるプリンタの名前がDNSサーバに登録されていなかった場合とプリンタが電源オフ状態やオフライン状態などで既定時間内に応答が返せなかった場合とが考えられる。次のアドレスが存在する場合にはそのアドレスを着目アドレスとする。このとき、送信回数を数えるカウンタを初期値、たとえば0、に戻す。そしてステップS61に進んで、アドレス毎に送信を試行する所定回数を超えたか否かを判定する。すなわち前記カウンタ値が所定回数を超えていた場合には、ステップS60に移行して次のアドレスの取得を試みる。
ステップS61でNoの場合にはステップS62においてリクエストデータを送信する処理を行う。ステップS61はトランスポート部30のリクエスト送信部302で実行される処理である。ステップS61では、アクセスロジック部20から受け取ったリクエストデータをステップS60で着目したアドレスに送信する。
続くステップS63では所定の応答待ち時間(たとえば5秒)だけ応答を待つ。この待ち時間はプリンタがスリープ状態にあった場合に、覚醒に要する時間と覚醒後にレスポンスするために要する時間とを加味して既定されている。
ステップS64ではプリンタからのレスポンスデータの受信を試みる。具体的にはOS付属のプロトコルスタックが提供している受信データ取得関数を呼び出してデータが到着しているか否かを確認する。
ステップS65では、ステップS64の結果によって受信データを受信したかどうかを判定する。この判定でNoであればステップS67に移行し、送信回数を1増やしてステップS61に移行する。一方ステップS65でYesの場合はプリンタから送信したリクエストに対応するレスポンスを受け取った可能性が高い。そのため、ステップS65でYesの場合はリクエストに対応するレスポンスを受け取ったものと判定する。ステップS66で受信データを、送信の要求元であるアクセスロジック部20に渡すための情報として作成する。この情報にはたとえば受信したレスポンスデータとそのレスポンスデータを送信してきたプリンタのアドレスとが含まれている。
次に、図6(B)の通信相手アドレス登録処理について説明する。この処理は図4(A)のステップS30で、アクセスロジック部20がトランスポート部30の名前解決部301の名前−アドレス関連付け機能を呼び出すことで実行される処理である。図6(B)の通信相手アドレス登録処理は入力としてプリンタのFQDNとアドレスとの組が与えられる。ステップS71ではそのFQDNとアドレスとを関連付けて記憶する。通信相手先名−アドレス関連記憶部304に記憶されたFQDNとアドレスは、アドレスのキャッシュとして参照される。そのため、無参照時間が一定時間を超えたキャッシュのレコード(FQDNとアドレスとの対)に関しては、削除することが望ましい。アドレスが変更されている可能性があるためであり、また、記憶容量が有限なためである。また、キャッシュされたアドレスにリクエストを送信してレスポンスがない場合にも、そのレコードを削除することが望ましい。登録されるアドレスは、正規のレスポンスが返されたリクエストデータの送信先アドレスである。このほかたとえば正規のレスポンスの送信元アドレスであってもよい。
以上の手順により、送信先名称(FQDN)とパケットに付加した識別情報(リクエストID)とを関連づけることで、受信したレスポンスが、送信したリクエストに対応するレスポンスであることを識別できる。そのため、識別したレスポンス以外を廃棄するフィルタリング処理を実現できる。
さらに、IPv4とIPv6のアドレスを一回的に取得することができ、名前解決の回数や所要時間を低減できる。
また、通信に成功したアドレスを送信先名称(FQDN)と関連づけてキャッシュしておくことで、複数のアドレスがIPv6のDNSサーバに登録されている場合にも、パケット送信の試行回数を減少させることができる。これによりネットワークのトラフィックを低減させることができる。
なお本実施形態はプリンタドライバがプリンタに対して印刷データすなわちリクエストデータを送信する場合を例にとって説明したが、データ送信一般について適用することが可能である。すなわち、プリンタドライバ10に代えて、他のアプリケーションプログラムやシステムプログラムに対して本実施形態に係る発明を適用することができる。その場合、アクセスロジック部20とトランスポートロジック部30とが、代替のアプリケーションあるいはシステムプログラム対して、本実施形態と同様に機能する。
また本実施形態では、アクセスロジック部20とトランスポートロジック部30とが、プリンタドライバに含まれるものとして説明した。しかし、アクセスロジック部20とトランスポートロジック部30とは、プリンタドライバの外側にあって、ドライバロジック部40との間で関数呼び出しなどの適当なインターフェースにより呼び出されるものであってもよい。そのような構成であれば、所望のプログラムにアクセスロジック部20とトランスポートロジック部30とのインターフェースを記述することで、アクセスロジック部20とトランスポートロジック部30とを利用することができる。
またリクエストパケットすなわち送信データに含めるIDは、本実施形態では巡回的に生成される符号としたが、たとえば時刻や送信元アドレスと時刻の組み合わせなど、パケットを固有に識別できる符号であればよい。
また、本実施形態では、レスポンスデータと同じリクエストIDを持つリクエストデータが記憶されていた場合、IDのみを識別情報として正規のレスポンスと判定している。しかし、更にデータの内容を照合して、たとえば図7に示されたコマンドなど、対応するリクエストとレスポンスとに共通する値を持つフィールドを照合して一致すれば正規のレスポンスと判定してもよい。すなわちこの場合にはIDに加えて、リクエストとレスポンスの共通フィールドを識別情報として正規のレスポンスと判定する。
なお本発明は、複数の機器(例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
本発明の各工程は、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をパソコン等の処理装置(CPU、プロセッサ)にて実行することでも実現できる。

Claims (9)

  1. 複数のアドレスが付与されたネットワーク機器とネットワークを介して通信するデータ通信装置であって、
    送信先のネットワーク機器に対応するアドレスを取得する取得手段と、
    取得された前記アドレスに対し、送信データを前記送信データの識別情報とともに送信する送信手段と、
    識別情報を含む応答データを受信する受信手段と、
    前記応答データの識別情報と前記送信データの識別情報とが同じでない場合には前記応答データを要求元に引き渡さず、前記応答データの識別情報と前記送信データの識別情報とが同じである場合には前記応答データを前記要求元に引き渡す応答処理手段と、を有し、
    前記応答処理手段は、前記応答データの識別情報と前記送信データの識別情報とが同じである場合には、前記送信データの送信先のアドレスまたは前記応答データの送信元のアドレスと、前記送信先のネットワーク機器とを対応づけて記憶手段に記憶することを特徴とするデータ通信装置。
  2. 前記取得手段は、前記送信先の名前に対応するアドレスが見つけられない場合には、前記送信先の名前をDNSサーバに送信し、当該送信先に複数のアドレスが付与されている場合にはそれらをまとめて取得することを特徴とする請求項1に記載のデータ通信装置。
  3. 前記識別情報には、前記送信データに割り当てられるIDを含むことを特徴とする請求項1または2に記載のデータ通信装置。
  4. 前記アドレスには、インターネットネットプロトコルバーション6のIPアドレスを含むことを特徴とする請求項1乃至3のいずれか一項に記載のデータ通信装置。
  5. コンピュータに、複数のアドレスが付与されたネットワーク機器とネットワークを介して通信させるためのプログラムであって、
    送信先のネットワーク機器に対応するアドレスを取得する取得手段と、
    取得された前記アドレスに対し、送信データを前記送信データの識別情報とともに送信する送信手段と、
    識別情報を含む応答データを受信する受信手段と、
    前記応答データの識別情報と前記送信データの識別情報とが同じでない場合には前記応答データを要求元に引き渡さず、前記応答データの識別情報と前記送信データの識別情報とが同じである場合には前記応答データを前記要求元に引き渡す応答処理手段と、してコンピュータを機能させるためのプログラムであって、
    前記応答処理手段は、前記応答データの識別情報と前記送信データの識別情報とが同じである場合には、前記送信データの送信先のアドレスまたは前記応答データの送信元のアドレスと、前記送信先のネットワーク機器とを対応づけて記憶手段に記憶することを特徴とするプログラム。
  6. 複数のアドレスが付与されたネットワーク機器とネットワークを介して通信するデータ通信装置におけるデータ通信方法であって、
    前記データ通信装置の取得手段が、送信先のネットワーク機器に対応するアドレスを取得する取得工程と、
    前記データ通信装置の送信手段が、取得された前記アドレスに対し、送信データを前記送信データの識別情報とともに送信する送信工程と、
    前記データ通信装置の受信手段が、識別情報を含む応答データを受信する受信工程と、
    前記データ通信装置の応答処理手段が、前記応答データの識別情報と前記送信データの識別情報とが同じでない場合には前記応答データを送信元に引き渡さず、前記応答データの識別情報と前記送信データの識別情報とが同じである場合には前記応答データを前記要求元に引き渡す応答処理工程と、を有し、
    前記応答処理工程では、前記応答データの識別情報と前記送信データの識別情報とが同じである場合には、前記送信データの送信先のアドレスまたは前記応答データの送信元のアドレスと、前記送信先のネットワーク機器とを対応づけて記憶手段に記憶することを特徴とするデータ通信方法。
  7. 請求項4に記載のデータ通信装置と、
    印刷データを生成する手段とを有し、
    前記送信手段は、ネットワークに接続された、インターネットネットプロトコルバーション6のIPアドレスが付与されたプリンタに対して印刷データを送信することを特徴とする印刷制御装置。
  8. 印刷データを生成する手段としてコンピュータを更に機能させ、
    前記送信手段により、ネットワークに接続された、インターネットネットプロトコルバーション6のIPアドレスが付与されたプリンタに対して印刷データを送信することを特徴とする請求項5に記載のプログラム。
  9. 前記プログラムとは、プリンタドライバプログラムであることを特徴とする請求項5に記載のプログラム。
JP2013145824A 2013-07-11 2013-07-11 ネットワーク通信装置及び方法とプログラム Active JP5591380B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013145824A JP5591380B2 (ja) 2013-07-11 2013-07-11 ネットワーク通信装置及び方法とプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013145824A JP5591380B2 (ja) 2013-07-11 2013-07-11 ネットワーク通信装置及び方法とプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009117049A Division JP5328472B2 (ja) 2009-05-13 2009-05-13 ネットワーク通信装置及び方法とプログラム

Publications (2)

Publication Number Publication Date
JP2013229935A true JP2013229935A (ja) 2013-11-07
JP5591380B2 JP5591380B2 (ja) 2014-09-17

Family

ID=49677085

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013145824A Active JP5591380B2 (ja) 2013-07-11 2013-07-11 ネットワーク通信装置及び方法とプログラム

Country Status (1)

Country Link
JP (1) JP5591380B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11284687A (ja) * 1998-03-31 1999-10-15 Nec Corp データ伝送方式
JP2000156707A (ja) * 1998-11-19 2000-06-06 Nec Corp パケット交換局及びパケット交換ネットワークシステム
JP2004166002A (ja) * 2002-11-13 2004-06-10 Toshiba Corp 通信装置、境界ルータ装置、サーバ装置、通信システム、通信方法、ルーティング方法、通信プログラム及びルーティングプログラム
JP2007019612A (ja) * 2005-07-05 2007-01-25 Brother Ind Ltd 情報処理装置、およびプログラム
JP2009077281A (ja) * 2007-09-21 2009-04-09 Fuji Xerox Co Ltd クライアント装置、サーバ装置、データ処理プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11284687A (ja) * 1998-03-31 1999-10-15 Nec Corp データ伝送方式
JP2000156707A (ja) * 1998-11-19 2000-06-06 Nec Corp パケット交換局及びパケット交換ネットワークシステム
JP2004166002A (ja) * 2002-11-13 2004-06-10 Toshiba Corp 通信装置、境界ルータ装置、サーバ装置、通信システム、通信方法、ルーティング方法、通信プログラム及びルーティングプログラム
JP2007019612A (ja) * 2005-07-05 2007-01-25 Brother Ind Ltd 情報処理装置、およびプログラム
JP2009077281A (ja) * 2007-09-21 2009-04-09 Fuji Xerox Co Ltd クライアント装置、サーバ装置、データ処理プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200302370009; 一條 敦: 'セキュリティ対策AtoZ フリー・ソフト実験室 安全性アップのクラッキング対策ツール 第5回 セキュ' Linux WORLD 第1巻 第11号, 20021101, pp.110〜115, (株)IDGジャパン *
JPN6014015254; 一條 敦: 'セキュリティ対策AtoZ フリー・ソフト実験室 安全性アップのクラッキング対策ツール 第5回 セキュ' Linux WORLD 第1巻 第11号, 20021101, pp.110〜115, (株)IDGジャパン *

Also Published As

Publication number Publication date
JP5591380B2 (ja) 2014-09-17

Similar Documents

Publication Publication Date Title
US8463915B1 (en) Method for reducing DNS resolution delay
JP5328472B2 (ja) ネットワーク通信装置及び方法とプログラム
JP4533247B2 (ja) サービス提供システム、サービス提供方法及びサービス提供装置
EP1441487A2 (en) Address query response method, program, and apparatus
KR100652964B1 (ko) 듀얼스택 네트워크 기기 및 그 브로드캐스트 방법
JP4101140B2 (ja) 画像処理装置、画像処理システム、名前登録方法、名前登録プログラム及び記録媒体
WO2006072222A1 (fr) Procede permettant de mettre en oeuvre la synchronisation de donnees du serveur et du cote client dans le mecanisme du systeme de nom de domaine
JP5882855B2 (ja) ホストデバイスを保護するための方法、システム及びプログラム
JP3812285B2 (ja) ネットワークシステム及びネットワーク機器
JP6521762B2 (ja) Httpサーバとその制御方法、画像形成装置およびプログラム
JP2009021921A (ja) IPv4/IPv6デュアルスタック対応端末のための情報提示システム
JP4443482B2 (ja) インターネット印刷システム及びそれを実現するためのプログラム
JP2008311939A (ja) ネットワーク通信機器
US20110235641A1 (en) Communication apparatus, method of controlling the communication apparatus,and program
JP5591380B2 (ja) ネットワーク通信装置及び方法とプログラム
JP2006309642A (ja) プロトコル変換装置及びプロトコル変換プログラム
JP4921864B2 (ja) 通信制御装置、認証システムおよび通信制御プログラム
JP5383415B2 (ja) 通信装置及び通信装置の通信方法並びにプログラム
JP4905376B2 (ja) 複数のネットワークプロトコルに対応した通信システムおよび通信方法
CN107888651B (zh) 用于多简档创建以减轻剖析的方法和系统
JP2012065158A (ja) 通信装置、画像形成装置及びプログラム
JP2006229876A (ja) 機器、能力通知方法及び能力通知プログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140411

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140606

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140630

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140729

R151 Written notification of patent or utility model registration

Ref document number: 5591380

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151