(57)【要約】【課題】  ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等の通信プロトコルを使用した通信が継続的に行われているネットワークにおいて、通信量を増加させることなく、さらに、既存のデータ中継装置のプログラムや設定を変更することなく、位置情報の送信方法、および前記送信方法にて送信された前記位置情報の受信方法を提供することである。【解決手段】  送信単位の特定の部分において、受信した複数の送信単位の特定の部分(特定フィールド)の差分値を取得する。ここで、差分値を格納可能な特定のフィールドとは、既存のプロトコルで、送信単位毎に異なる値を格納すること、と定義されているフィールドである。【選択図】  図３
2015005886.tif 000002
【特許請求の範囲】
【請求項１】
送信する情報を格納する記憶部と、
前記記憶部から所定のデータ量毎に複数に分割された前記情報を順番に取り出し、当該取り出した前記所定のデータ量の前記情報に、当該情報をパケットのヘッダの特定の領域に格納して送信するための所定の演算を行なって送信用情報を生成するデータ生成部と、
前記送信用情報を前記パケットのヘッダの特定の領域に格納したパケットを生成するパケット生成部と、を有することを特徴とする送信装置。
【請求項２】
請求項１に記載の送信装置であって、
前記パケットはＩＰパケットであり、前記ヘッダの特定の領域はＩＰパケットごとに異なる値を付与することが定められた領域であり、
前記パケット生成部は、前記分割された情報を送信するときに、直前に生成したパケットの前記特定の領域に格納されている値に、前記分割された情報を加算した加算値を算出し、さらに当該加算値に所定の値を加算したものを、前記分割された情報を送信するパケットの前記特定の領域に格納することを特徴とする送信装置。
【請求項３】
請求項２に記載の送信装置であって、
前記パケット生成部は、前記情報の送信を開始するときに、直前に生成したパケットの前記特定の領域に格納されている値に予め定められた値を加算したものを、これから生成するパケットの前記特定の領域に格納することを特徴とする送信装置。
【請求項４】
受信する情報を記憶する記憶部と、
ネットワークを介して受信したパケットのヘッダの特定の領域から値を抽出する抽出部と、
同じ送信元から受信した複数のパケットそれぞれのヘッダの前記特定の領域から抽出した複数の値を前記記憶部に降順もしくは昇順の少なくともいずれかで並べて格納する再構成部と、を有し、
前記再構成部は、前記記憶部に格納された複数の値に、前記特定の領域からデータを再構成するための所定の演算を行なって前記パケットの送信元の装置により送信された情報を再構成することを特徴とする受信装置。
【請求項５】
請求項４に記載の受信装置であって、
前記パケットはＩＰパケットであり、前記特定の領域はＩＰパケットごとに異なる値を付与することが定められた領域であり、
前記再構成部は、前記記憶部の前記複数の値のうち、前後に連続して並ぶ２つの値の組それぞれに対し、当該２つの値のうち大きい方の値から小さい方の値を減算して減算値を算出し、さらに当該減算値から所定の値を減算することで前記パケットの送信元の装置により送信された情報を再構成し、当該再構成した情報を前記記憶部に格納することを特徴とする受信装置。
【請求項６】
請求項５に記載の受信装置であって、
前記再構成部は、送信元装置から受信するパケットのヘッダの前記特定の領域から抽出した値を前記記憶部に格納するときに、当該抽出した値と、当該パケットより１つ前に受信したパケットのヘッダの前記特定の領域から抽出した値と、の差分を計算し、当該差分が予め定めた値である場合に、前記記憶部に格納された前記複数の値に対し、前記再構成の処理を行うことを特徴とする受信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等を通信プロトコルとするネットワークにおける、送信機器及びその送信方法と、受信機器及びその受信方法に関する。
【背景技術】
【０００２】
近年、ＩＰ通信を行う、タブレットやスマートフォン等の携帯端末が急速に普及してきた。この携帯端末の多くは、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）によって、位置情報を取得可能なものが多い。しかし、通信を行う際は電波を出力するため、携帯端末のバッテリを消費する。
【０００３】
携帯端末では、一時的に充電装置より遠い場所に持ち運ぶのが通常の利用方法であり、バッテリ消費を可能な限り抑えたいという要求がある。よって、バッテリ消費をする通信を可能な限り抑えたい。
【０００４】
一方、携帯端末では継続的に位置情報を伝達したい場合がある。例えば、下記場合がある。（１）親が子供の位置情報を定期的に把握し、緊急時に直接迎えに行く際に、直近時刻の位置情報を知りたい場合。（２）登山者が親族に、登山者自身の位置情報を常に連絡しておき、事故等による捜索時に遭難位置を特定したい場合。以上のことから、通信量を増加せず継続的に位置情報を伝達したい要求がある。
【０００５】
本技術分野の背景技術として、特開平１１−３５５８１６号公報（特許文献１）がある。この広報には、「システム１００は、システム１００が有する各機器のメンテナンス情報などをＩＳＲ信号１０６に格納して送信する。ＧＰＳデータ１０５がＩＳＲ信号１０６と共に格納され送信される。ＩＳＲ信号１０６は、例えばネットワークに対して送信され、離れた位置にあるコントロールセンタで受信される。」と記載されている（要約参照）。
【０００６】
また、特開２００７−２４３７１３号公報（特許文献２）がある。この広報には、「無線でネットワーク１６に接続される移動通信端末装置１０が、位置情報の送信要求を受け付けるための専用アドレスで位置情報送信要求メールを受信する手段と、位置情報送信要求メールが受信されたとき、ＧＰＳ衛星１２よりＧＰＳ情報を受信する手段と、受信されたＧＰＳ情報に基づき現在の位置情報を取得する手段と、取得された位置情報を、返信メールとして、所定のメールアドレスに送信する手段と、を具備するように構成される。」と記載されている（要約参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−３５５８１６号公報
【特許文献２】特開２００７−２４３７１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のような、追加でデータを送信する場合に、特定のフィールドの解釈を変更するといった既存の通信規約を変更する方法は、既存のプロトコルを使用している送受信を行うプログラムの変更が必要である。一度開発したプログラムを改造することは、改造の際に不具合を作り込んでしまう恐れがあり、通常避けたいことである。
【０００９】
また、別のメール送信といった、別の通信規約にてデータを送信する方法の場合は、中継装置のプログラムまたは設定を変更する必要という課題があった。既存の中継装置の設定を変更する場合には、未発見の不具合に遭遇する場合もあり、通信サービスを一時中断するといったことも必要となる場合もある。
【００１０】
本発明の目的は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等の通信プロトコルを使用した通信が継続的に行われているネットワークにおいて、通信量を増加させることなく、さらに、既存のデータ中継装置のプログラムや設定を変更することなく、追加情報を端末装置から送信し、当該追加情報を受信する装置で追加情報を復元する方法や手段を提供することである。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の送信装置は、送信する情報を格納する記憶部と、記憶部から所定のデータ量毎に複数に分割された情報を順番に取り出し、当該取り出した所定のデータ量の情報に、当該情報をパケットのヘッダの特定の領域に格納して送信するための所定の演算を行なって送信用情報を生成するデータ生成部と、送信用情報をパケットのヘッダの特定の領域に格納したパケットを生成するパケット生成部と、を備えるよう構成される。
【発明の効果】
【００１２】
本発明により、送信したい情報を送信するためにだけ用いられるパケットを作成せずとも、他の目的で送信されるパケットに情報を同乗させることができる。
【図面の簡単な説明】
【００１３】
【図１】実施例のネットワーク構成図である。
【図２】携帯端末のハードウェア構成図である。
【図３】携帯端末のソフトウェア構成を示した説明図である。
【図４】位置情報付与制御データを示した説明図である。
【図５】現在位置情報データ構成を示した説明図である。
【図６】送信するIdentificationフィールドを算出するフローチャートである。
【図７】ＰＣのハードウェア構成図である。
【図８】ＰＣのソフトウェア構成を示した説明図である。
【図９】受信Identification値一時記憶域のデータ構成を示した説明図である。
【図１０】再構築済データを示した説明図である。
【図１１】受信したIdentification値を保存する処理を示したフローチャートである。
【図１２】保存してあるIdentification値からデータを復元する処理を示したフローチャートである。
【図１３】第２の実施形態における携帯端末のソフトウェア構成を示した説明図である。
【図１４】第２の実施形態におけるＰＣのソフトウェア構成を示した説明図である。
【図１５】複数のＩＰパケットのIdentification値を用いて、データを送信する方法を示した説明図である。
【図１６】複数のＩＰパケットのIdentification値を用いて、データを受信する方法を示した説明図である。
【図１７】複数のパケットを受信した際における受信Identification値一時記憶域のデータ構成を示した説明図である。
【発明を実施するための形態】
【００１４】
（第１の実施形態）
本発明の第１の実施の形態について、図面を用いて説明する。本実施例における、通信方法のネットワーク接続構成を図１に示す。図１は、一般的なインターネット接続構成を示しており、個人が屋外などで使用する無線ネットワーク１と、当該個人または別の個人が屋内などで使用するＰＣを接続したＩＰネットワーク２ｂとの間に、無線ネットワーク１とＩＰネットワーク２ｂを接続させる為のＩＰネットワーク２ａが、中継ネットワークとして存在する構成である。
【００１５】
無線ネットワーク１とＩＰネットワーク２ａを中継するために、電波基地局１０２が設置されている。ＩＰネットワーク２ａとＩＰネットワーク２ｂを中継する為に、ＩＰルータ１０３が設置されている。無線ネットワーク１には、携帯端末１０１があり、電波基地局１０２と電波を使用して通信を行う。ＩＰネットワーク２ｂには、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）１０４ａとＰＣ１０４ｂがあり、それぞれＩＰルータ１０３に接続されている。
【００１６】
本実施例では、図１のネットワークにおけるデータの通信方法について、図２乃至図６および図１５を用いて携帯端末１０１から送信する処理を説明し、図７乃至図１２および図１６、図１７を用いてＰＣ１０４が受信する処理をそれぞれ説明する。
【００１７】
まず、携帯端末１０１がＰＣ１０４ｂへＩＰｖ４プロトコルを用いてデータを送信する場合を例に説明する。携帯端末１０１は、本実施例で説明する手法により生成されるIdentification値を含み、かつ、宛先アドレスをＰＣ１０４ｂに設定されているＩＰｖ４アドレスに設定したＩＰｖ４パケットを生成し、前記ＩＰパケットを電波フレームに載せて、電波基地局１０２へ送信する。電波基地局１０２は、電波フレームからＩＰパケットを抽出し、ＩＰパケットの宛先ＩＰアドレスに従い、ＩＰルータ１０３へＩＰパケットを送信する。ＩＰルータ１０３は、ＩＰパケットの宛先ＩＰアドレスに従い、ＰＣ１０４ｂにＩＰｖ４パケットを転送する。本実施例によると、ＩＰｖ４パケット形式は、従来のＩＰｖ４パケット形式と互換性があり、電波基地局１０２やＩＰルータ１０３を、本実施例の為の特別な変更をしなくて済む効果がある。
【００１８】
以下、図１に示す構成において、携帯端末１０１が、ＰＣ１０４ａへ本実施例によるＩＰｖ４パケットの送信を行う場合について説明する。なお、ＰＣ１０４ａとＰＣ１０４ｂは同様の構成である。
【００１９】
図２は、携帯端末１０１の装置構成を示した図である。携帯端末１０１は、少なくとも、７つのハードウェアブロックで構成される。以下に各ハードウェアブロックについて説明する。ＣＰＵ２０１は携帯端末１０１の制御を司る。不揮発メモリ２０２は、本実施例のソフトウェアプログラムや本装置の動作を決定する設定ファイル等の情報を格納する。メインメモリ２０３は、ＣＰＵ２０１から実行可能なソフトウェアプログラムの命令や、ソフトウェアプログラムが使用する変数等の一時的に使用するデータを記憶する。タイマ割込発生器２０４は、ソフトウェアプログラムから設定された周期で、定期的にＣＰＵ２０１へ割込を発生させる。ＧＰＳ受信部２０５は、地球の衛星軌道上にあるＧＰＳ衛星から、ＧＰＳ信号を受信する。電波送受信部２０６は、基地局１０２への電波を送信および、基地局１０２からの電波受信をする。これらハードウェアブロックは、バス２５１で相互に接続される。また、上記ハードウェアブロックに電力を供給するバッテリ２１１がある。
【００２０】
図３は、携帯端末１０１のソフトウェア構成を示した説明図である。携帯端末１０１は、設定アプリケーション３０１、文字チャットアプリケーション３０２、音声アプリケーション３０３を含む。ソケットインターフェイス３０４ａ、３０４ｂ、３０４ｃは、ユーザ空間からカーネル空間へデータパケットを送信する。
【００２１】
設定アプリケーション３０１は、携帯端末１０１の使用者の操作により、本実施例の特徴である、Identification値差分を用いた通信（以下、「Ident差分通信」という）を行う機能のＯｎまたはＯｆｆを設定する機能を具備する。設定アプリケーション３０１は、ソケット３０４ａを介し、情報付与設定制御部３０５へ使用者の設定操作結果を、０または１の数値を用いて伝える。数値が０の場合は「Ident差分通信をしない」とし、前記数値が１の場合は「Ident差分通信をする」とする。
【００２２】
情報付与設定制御部３０５は、数値が０の場合、定期タイマ割込発生器２０４に、１分に１回の間隔でタイマ割込を発生させるように定期タイマ割込発生器２０４のレジスタ等を変更し、また、位置情報付与制御データ３５１に設定操作結果を書込む。位置情報更新制御部３０６は、定期タイマ割込発生器２０４からタイマ割込みを受け取ると、ＧＰＳ受信部２０５から、現在の位置情報である緯度と経度を取得し、現在位置情報３５２へ前記位置情報を書込む。
【００２３】
文字チャットアプリケーション３０２は、データ欠落が無いことを保障するＴＣＰプロトコルを用いる。文字チャットアプリケーション３０２は、携帯端末１０１の使用者より、文字情報を送信する操作が行われた際に、ソケット３０４ｂを介して、ＴＣＰ制御部３０７へ文字データを送信する。ＴＣＰ制御部３０７は、文字データにＴＣＰヘッダを加えてＴＣＰパケットを生成し、ＩＰｖ４制御部３０９へＴＣＰパケットを送信する。ＩＰｖ４制御部３０９は、ＩＰｖ４ヘッダを構成する際に、本実施例の特徴であるIdentification値生成部３１０にIdentification値を要求する。
【００２４】
なお、一般的に広く使用されているＷｉｎｄｏｗｓ（登録商標）  ＯＳやＬｉｎｕｘ（登録商標）  ＯＳでは、Identification値を１つずつ加算していくのみの計算方法となっている。一方、本実施例では、Identification値生成部３１０は、位置情報付与制御データ３５１および現在位置情報から、ＩＰｖ４ヘッダのIdentificationフィールドに設定すべきIdentification値を算出する。ＩＰｖ４制御部３０９は、算出されたIdentification値をＩＰｖ４ヘッダのIdentificationフィールドに設定し、ＴＣＰパケットにＩＰｖ４ヘッダを加え、ＩＰｖ４パケットを生成する。このようにＩＰｖ４制御部３０９はパケットを生成する機能部である。つぎに、ＩＰｖ４制御部３０９は、途中経路の通信単位の最大長であるＭＴＵ値を超える場合は、Identification値を同一にした上で、ＩＰｖ４パケットを複数に分割する。ＩＰｖ４パケット分割の際に、分割前のＩＰｖ４パケットが同一の場合は、Identification値を同一にしなければならない規約がＩＰｖ４プロトコルにはある。本実施例の特徴として、ＩＰｖ４分割処理の前のIdentification値計算の際に、差分値を付与することにより、既存のプロトコル仕様に準拠して、ＩＰｖ４パケットヘッダを構築できる利点がある。
【００２５】
その後、ＩＰｖ４制御部３０９は、ＩＰｖ４パケットをリンクレイヤ制御部３１１に送信する。リンクレイヤ制御部３１１は、電波通信用のヘッダをＩＰｖ４パケットに付与し、電波通信用フレームとする。電波送受信用制御用デバイスドライバ３１２は、電波送受信部２０６を制御し、前記電波通信用フレームを、携帯端末１０１の外部へ送信する。
【００２６】
音声アプリケーション３０３は、パケット欠落は許容するが高速なＵＤＰプロトコルを用いる。音声アプリケーション３０３は、音声データを音声パケットに変換し、ソケット３０４ｃを用いて、ＵＤＰ制御部３０８へ送信する。ＵＤＰ制御部３０８は、前記音声パケットにＵＤＰヘッダを付与し、ＵＤＰパケットとしてＩＰｖ４制御部３０９へ送信する。
【００２７】
図３のカーネル空間やユーザ空間のソフトウェアは、図２のメインメモリ２０３や不揮発メモリ２０２といった記憶部に格納され、適宜ＣＰＵ２０１がこれら記憶部から読み出して実行する。また、現在位置情報３５２のデータも、上記記憶部に格納される。
【００２８】
以降は、本実施例の特徴とするIdentification値の生成から電波送受信部２０６への送信までの方法は、前記文字チャットアプリケーション３０２が文字データを送信する際と同様である。このことから、本実施例の特徴とするIdent差分通信による現在位置情報の送信方法は、アプリケーションを限定することなく、適用することが可能である。
【００２９】
図４は、位置情報付与制御データ３５１の構造を示した説明図である。位置情報送信開始フラグ４０１は、０または１の数値が格納される。数値が０の場合は「Ident差分通信を行わない」を意味し、数値が１の場合は「Ident差分通信を行う」ことを意味する。送信先毎送信状態データベース４０２は、送信先ごとに送信状態データ４１０を複数格納することができる。送信状態データ４１０は、宛先ＩＰアドレス４１１と、送信済Identification値４１２と、本実施例の特徴である送信中データ位置４１３が含まれる。このデータは、メインメモリ２０３に記憶される。
【００３０】
宛先ＩＰアドレス４１１は、ＩＰｖ４制御部３０９が、ＩＰパケットを構築する際に、ＩＰパケットに格納する送信先ＩＰアドレスと同一のＩＰアドレスの送信状態データ４１０を取得する為の検索キーである。送信済Identification値４１２は、ＩＰｖ４制御部３０９が構築するＩＰパケットの一つ前に送信したＩＰパケットのＩＰヘッダに格納したIdentｉｆｉｃａｉｔｏｎ値である。送信中データ位置４１３は、ＩＰｖ４制御部３０９が構築するＩＰパケットのIdentificationフィールドに格納する為の数値を算出するIdentification値生成部３１０が、「Ident差分通信」によって送信したいデータの、現在位置情報３５２におけるバイト単位の位置を格納する。
【００３１】
送信先毎送信状態データベース４０２は、ＩＰｖ４制御部３０９が構築したパケットに含まれるＩＰｖ４宛先アドレスと、送信状態データ４１０に含まれる宛先ＩＰアドレス４１１を比較し、一致するものを検索して取得することができるデータベースである。宛先ＩＰアドレス毎に、送信済Identification値４１２と送信中データ位置４１３をメインメモリ２０３に記憶させておくことにより、複数の通信先と通信中の場合でも、Identification値生成部３１０は、適切なIdentification値を生成することが可能となる利点がある。
【００３２】
位置情報付与制御データ３５１に関する操作の処理で、最も計算時間を要するものは、これから送信するＩＰｖ４パケットのＩＰｖ４宛先アドレスと、位置情報付与制御データ３５１の宛先ＩＰアドレス４１１を比較し、一致するものを「検索」する処理である。しかし、送信中データ位置４１３を除いて、位置情報付与制御データ３５１に示す構造は、既に実装されているカーネルソフトウェアもある。例えば、世界的に広く使用されているＬｉｎｕｘ（登録商標）カーネルでは、宛先ＩＰアドレス４１１と、送信済Identification値４１２はｉｎｅｔ＿ｐｅｅｒ構造体に含まれている。本実施例では、前記ｉｎｅｔ＿ｐｅｅｒ構造体に、本実施例の特徴である送信中データ位置４１３を格納する変数を追加することにより、位置情報付与制御データ３５１を構成することができる。また、Ｌｉｎｕｘ（登録商標）カーネルでは、ＩＰｖ４パケットのＩＰｖ４宛先アドレスとｉｎｅｔ＿ｐｅｅｒ構造体に含まれている宛先ＩＰアドレス４１１を比較し、一致するものを「検索」する処理も、パケット送信毎に常に実行していることから、本実施例を実施する際も、前記検索処理による計算時間の増加は無い、という利点がある。
【００３３】
図５は、本実施例においてIdentificationフィールドを用いて追加的に送信する情報である、現在位置情報３５２の構造を示した説明図である。緯度５０１は、浮動小数点表現で緯度の数値がビッグエンディアンのバイト順で格納され、サイズは４バイトである。16進数表現では緯度５１１のデータとして格納される。経度５０２は、浮動小数点表現で経度の数値がビッグエンディアンのバイト順で格納され、メモリサイズは４バイトである。16進数表現では経度５１２として格納される。チェックサム５０３は、緯度５０１と経度５０２のバイト単位の合計値の２５６の剰余であり、メモリサイズは１バイトである。16進数表現ではチェックサム５１３のデータとして格納される。前記チェックサム５０３は、緯度５０１または経度５０２のいずれか、または、両方が更新される際に、算出する。本実施例では、位置情報更新制御部３０６が、緯度５０１と経度５０２を更新する際に、チェックサム５０３も更新する。
【００３４】
本実施例では、現在位置情報３５２の９バイトのデータが「Ident差分通信」で送信したいデータ、追加情報である。なお、図４の送信中データ位置４１３の数値は緯度５１１の先頭バイトを「１」とし１バイトにつき１ずつ増加する。また、経度５１２の先頭バイトを「５」とし、チェックサムの位置を「９」とする。例えば送信中データ位置４１３が「６」の場合は、緯度５１２の２番目のデータである「０ｂ」を指すことを意味する。
【００３５】
ここで、本実施例の特徴である「Ident差分通信」による送信方法の原理を、図面を用いて説明する。図１５は、本実施例の特徴である「Ident差分通信」を、複数のＩＰパケットのIdentificationフィールド１５０２を用いて送信する方法を表した説明図である。なお、ＩＰｖ４パケット１５０１のＩＰｖ４ヘッダは、Identificationフィールド１５０２以外にも複数の情報が含まれるが、本実施例では「…」の記号を用いて省略表記する。また、本実施例で用いるIdentificationフィールド１５０２は、「パケット毎に異なる値が設定されていれば良い」というルールがＩＰｖ４プロトコルで規定されている。本実施例によると、Identificationフィールド１５０２は、パケット毎に異なる値となるので、インターネットでも広く用いられているＩＰｖ４プロトコルに準拠したパケットを送信することができ、携帯端末１０１とＰＣ１０４ａおよびＰＣ１０４ｂの間にある装置の変更は不要である、という利点がある。
【００３６】
ＩＰパケット１５０１ａ〜ＩＰパケット１５０１ｌは、１２個のＩＰｖ４パケットである。ＩＰパケット１５０１ａからＩＰパケット１５０１ｌの順に送信する。即ち、最初にＩＰパケット１５０１ａを送信し、最後にＩＰパケット１５０１ｌを送信する。Identificationフィールド１５０２ａ〜Identificationフィールド１５０２ｌは、それぞれ、ＩＰパケット１５０１ａ〜ＩＰパケット１５０１ｌのＩＰｖ４ヘッダに含まれるIdentificationフィールドである。
【００３７】
本実施例で示す「Ident差分通信」では、連続するＩＰｖ４パケットのIdentification値の差分値で、通信したいデータを携帯端末１０１から対向装置であるＰＣ１０４ａまたはＰＣ１０４ｂへ伝達する。差分値には、次に示す３つの付与ルールを定める。
第１の付与ルールとして、送信したいデータを付与する前に、送信したいデータが始まることを意味する「開始記号」として「差分値１」とする。
第２の付与ルールとして、送信したいデータには、送信したいデータの１バイト毎に２を加えたものを差分値とする。
第３の付与ルールとして、送信したいデータの終端には、チェックサムに2を加えたものを差分値とする。
【００３８】
第１の付与ルールで差分値を「１」としているのは、差分値として最も小さな値だからである。また、第２の付与ルールや第３の付与ルールで差分値を「２」としてるのは、差分値として「１」の次に小さな値だからである。これら差分値は「１」や「２」以外の数値でも構わないが、第１の付与ルールの差分値と第２の付与ルールの差分値、および第１の付与ルールと第３の付与ルールの差分値はそれぞれ異なる値にする。
【００３９】
この３つの付与ルールを前提とした「Ident差分通信」を用いた送信方法を、図５に示す位置情報データを例に、図１５を用いて説明する。まず、第１のＩＰパケット１５０１ａのIdentificationフィールド１５０２ａの値を16進数表現で「１０００」とする。本実施例では、値「１０００」を初期値として例示するが、他の値でも良い。以下、図１５におけるIdentificationフィード１５０２ａ〜Identificationフィールド１５０２ｌの数値および加算する値は、16進数表現である。
【００４０】
つぎに、第２のＩＰパケット１５０１ｂのIdentificationフィールド１５０２ｂの値を、第１の付与ルールに従い、Identificationフィールド１５０２ａの値に１を加算した値の「１００１」とする。
【００４１】
つぎに、第３のＩＰパケット１５０１ｃより、第２の付与ルールに従い、緯度５１１の４バイトのデータを先頭から１バイトずつ付与する。具体的には、緯度データ５１１の１バイトの目のデータである、16進数表現で「４２」の値に２を加算した値である「４４」を、Identificationフィールド１５０２ｂの値に加算し、加算結果である「１０４５」をIdentificationフィールド１５０２ｃの値とし、第３のＩＰパケット１５０１ｃとする。
【００４２】
ここで、先に送信したＩＰパケットのIdentificationフィールド１５０２の値に、これから送信するデータの値を加算するため、連続して送信されるＩＰパケットのIdentificationフィールド１５０２の値は異なるものとなる。しかしながら第２の付与ルールでさらに２を加算するようにしているのは、送信するデータ値がゼロの場合を想定しているためである。仮に２を加算しないと、ゼロの情報をIdentificationフィールド１５０２に格納して送信するときに、前後のパケットで同じIdentificationフィールド１５０２の値となり、ＰＣ１０４ａはこれらパケットが送信元でフラグメンテーションにより分割されたパケットと誤認識してしまう。このため、送信したい情報がゼロの場合も考慮して、第２の付与ルールでは２を加算している。
【００４３】
つぎに、第４のパケット１５０１ｄも、第３のＩＰパケット１５０１ｃと同様の手順にて、ただし、加算する値は、緯度５１１の２バイト目のデータである16進数表現で「０ｄ」を用いてIdentification値１５０２ｃを算出する。以下、第５のＩＰパケット１５０１ｅから第１０のＩＰパケット１５０１ｊまで、第３および第４のＩＰパケットと同様の手順で、ただし、加算に用いる値を送信したいデータである緯度５１１の３バイト目から経度５１２の４バイト目までのデータをそれぞれ昇順に用いる。
【００４４】
つぎに、第１１のパケット１５０１ｋのIdentification値は、チェックサム５１３の値である16進数表現「ｄｄ」に、第３の付与ルールを適用して２を加算し、16進数表現で「ｄｆ」をIdent差分値とする。第１１のパケット１５０１ｋの、一つ前に送信する第１０のＩＰパケット１５０１ｊのIdentificationフィールド１５０２ｊの「１２ｅｅ」に、計算したIdent差分値を「ｄｆ」を加算した「１３ｃｄ」を、Identificationフィールド１５０２ｋに設定し、第１１のパケット１５０１ｋを構成する。
【００４５】
つぎに、送信したいデータの終端に到達したので、次の送信パケットである第１２のパケット１５０１ｌは、第１の付与ルールに従い、差分値１を加算したものをIdentificationフィールド１５０２ｌに設定する。以上で、緯度５１１の４バイトと、経度５１２の４バイトと、チェックサム１バイトの合計９バイトのデータを、１２個のＩＰｖ４パケットを用いて送信する。
【００４６】
図６は、ユーザ空間のアプリケーションのパケット送信処理フローを示した説明図である。次に、携帯端末１０１において、文字チャットアプリケーション３０２が、パケットを送信する際に、ＩＰｖ４パケットヘッダに付与するIdentification値を算出する処理について図６を用いてさらに具体的に説明する。
【００４７】
Identification値生成部３１０は、ＩＰｖ４制御部３０９よりＩＰｖ４パケットを受け取ると、当該ＩＰｖ４パケットの宛先ＩＰアドレスで送信先毎送信状態データベース４０２を検索し、宛先ＩＰアドレスに対応する送信状態データ４１０を取得する。そしてIdentification値生成部３１０は取得した送信状態データ４１０内の位置情報送信開始フラグ４０１を取得する。取得した位置情報送信開始フラグ４０１により、条件分岐を行う（ステップＳ６０１）。位置情報送信開始フラグ４０１が０の場合は本実施例の「Ident差分通信」をしないモードであり、送信中データ４１３位置を０に設定する（ステップＳ６１１）。
【００４８】
つぎに、取得した送信状態データ４１０の送信中データ位置４１３の数値によって、３通りの条件分岐をする。送信中データ位置４１３が１未満の場合と、１以上かつ８以下の場合と、９以上の場合にて分岐を行う（ステップＳ６０２およびステップＳ６０３）。値８という数値は、本実施例で送信対象としている緯度５０１と経度５０２のデータサイズの合計が８バイトの為である。なお、前記条件分岐に用いる上限値は、送信するデータのバイト単位サイズの同値とする。
【００４９】
送信中データ位置４１３の数値が１以上かつ８以下の場合は、一連の位置情報の送信途中の場合である。この場合、Identification値生成部３１０は、現在位置情報３５２の先頭から送信中データ位置４１３の数値を加算したメモリの位置を１バイト取得する（ステップＳ６０４）。Identification値生成部３１０は、現在位置情報３５２から取得した１バイトの値と、送信済みIdentification値４１２の値を加算し、さらに加算した値に２を加算して新たに送信するIdentification値を算出する（ステップＳ６０５）。また、Identification値生成部３１０は、送信済Identification値４１２を新たに算出したIdentification値で上書き変更する。また、Identification値生成部３１０は、送信中データ位置４１３を１加算し、前記加算した値で送信中データ位置４１３を変更する（ステップＳ６０６）。
【００５０】
ステップＳ６０５においてIdentification値に２を加算する理由は、前述の第２の付与ルールに従うためである。第１の付与ルールではデータの開始を示す「Ident差分値」を１としており、第２の付与ルールではデータの開始を示す「Ident差分値」１と区別をする為に２を加算している。この値は、可能な限り小さい値にすることが好ましいが、差分０にすると、複数の異なるパケットを同一のIdentification値で送信してしまうことになり、ＩＰｖ４ヘッダのIdentification値の本来の使用方法と異なってしまう為、差分０にはできない。よって、本実施例の第２の付与ルールでは１の次の数字である２を差分値としている。
ステップＳ６０３において送信中データ位置４１３の数値が９以上の場合は、緯度５１１、経度５１２の８バイトの情報を送信し終わっている状態である。この場合、Identification値生成部３１０は送信済みIdentification値４１２に、チェックサム５０３の値を加算し、さらに加算した値に２を加算して新たに送信するIdentification値を算出する（ステップＳ６２１）。また、Identification値生成部３１０は、送信済Identification値４１２を新たに算出したIdentification値で上書き変更する。「２を加算する」処理を行う理由は、ステップＳ６０５と同様である
そしてIdentification値生成部３１０は、送信中データ位置４１３を０に変更する（ステップＳ６２２）。チェックサム５０３を送信することで、一連の位置情報を全て送信し終わるからである。
【００５１】
ステップＳ６０２において送信中データ位置４１３の数値が１未満の場合は、一連の位置情報を送信し終えて新たな位置情報の送信を始める場合か、開始情報送信フラグ４０１が０に設定されていて、本実施例の「Ident差分通信」をしないモードになっている場合のいずれかである。この場合、Identification値生成部３１０は、送信済みIdentification値４１２に１を加算し、加算した値にIdentification値４１２を変更する（ステップＳ６３１）。つぎに、Identification値生成部３１０は、送信中データ位置４１３を１に変更する。（ステップＳ６３２）。「Ident差分通信」をしないモードである場合、ステップＳ６１１にて送信中データ位置４１３は０にリセットされる。
【００５２】
最後に、Identification値生成部３１０は、変更された送信済Identification値４１２を戻り値としてＩＰｖ４制御部３０９に受け渡す（ステップＳ６０７）。ＩＰｖ４制御部３０９は、受け渡されたIdentification値をこれから送信するＩＰｖ４パケットのIdentificationフィールドに付与する。
【００５３】
以上のことから、本実施例によると、ＩＰｖ４パケットの送信を行う携帯端末１０１は、ＩＰｖ４パケット形式に必須としているIdentification値の計算ルールを変更することにより、もともと別の目的で作成されたＩＰｖ４パケットに追加情報として位置情報を載せることができるので、通信量を増やすことなく、位置情報を送信することが可能であり、バッテリ２１１の消費を抑えることができる利点がある。また、本実施例によると、頻繁に実行するパケット送信過程の処理において、処理コストが高い反復処理は、図６に示すとおり存在しない。よって、ＣＰＵ使用時間を抑えることができ、また、バッテリ２１１の消費を抑えることができる利点がある。
【００５４】
以上が「Ident差分通信」の送信装置である携帯端末１０１の実施例の説明である。次に、受信する側の処理について説明する。図７は、ＰＣ１０４ａのハードウェア構成を示した説明図である。なお、ＰＣ１０４ａ、ＰＣ１０４ｂは、それぞれ同様の構成である。ＰＣ１０４ａには、少なくとも、４つのハードウェアブロックを備える。以下に各ハードウェアブロックについて説明する。
【００５５】
ＣＰＵ７０１は、ＰＣ１０４ａの制御を司る。ハードディスク７０２は、ソフトウェアやＰＣ１０４ａの動作を決定する設定ファイル等の情報を格納する。メモリ７０３は、ソフトウェアの実行に際してＣＰＵ７０１が一時的に利用する領域である。ＣＰＵ７０１がソフトウェアプログラムを実行する場合には、ハードディスク７０２から前記実行するソフトウェアプログラムをメモリ７０３に転送する。この方法は、通常のＯＳと同様である。Ｅｔｈｅｒパケット送受信部７０４は、ＩＰネットワーク２ｂとの間でＩＰパケットを送受信する。上述のハードウェアブロックは、バス７５１で相互に接続される。
【００５６】
図８は、ＰＣ１０４ａのソフトウェア構成を示した説明図である。なお、ＰＣ１０４ａ、ＰＣ１０４ｂは、それぞれ同様の構成である。ＰＣ１０４ａは、文字チャットアプリケーション８０１、位置情報データ取得アプリケーション８０２を含む。ソケットインターフェイス８０３ａ、８０３ｂは、ユーザ空間からカーネル空間へデータパケットを送信する。ＴＣＰ制御部８０４は、ＴＣＰパケットからＴＣＰヘッダを取り除き、ソケット８０３ａへ、文字チャット内容の文字列データを渡す。ＲＡＷ制御部８０５は、ソケット８０３ｂへ、ＩＰｖ４ヘッダを含んだＩＰｖ４パケットをソケット８０３ｂへ渡す。
【００５７】
ＩＰｖ４制御部８０６は、受信したＩＰｖ４パケットが送信元の携帯端末１０１または中間経路のＩＰルータ１０３で、ＩＰｖ４パケットが分割されていた場合は、分割していたパケットデータを結合し、再構築する。再構築の際には、ＩＰｖ４制御部は、受信していたパケットが同一Identification値の場合は、同一パケットと見なして、再構築を行う。ＩＰｖ４パケットのIdentification値は、既存の通信規約では、この為だけに使用される。本実施例は、再構築の処理の後に、本実施例の特徴である、「Ident差分通信」データの復元を行うため、既存の通信規約を遵守できる利点がある。
【００５８】
ＩＰｖ４パケット制御部は、前記再構築処理の後、ＩＰｖ４パケットの複製を作成し、ＲＡＷ制御部８０５へ渡し、つぎに、ＩＰｖ４ヘッダを取り除き、ＴＣＰ制御部へＩＰｖ４ヘッダを取り除いたパケットを渡す。リンクレイヤ制御部８０７は、ＥｔｈｅｒパケットからＭＡＣアドレスを取り除き、ＩＰｖ４制御部８０６へＩＰｖ４パケットを渡す。Ｅｔｈｅｒパケット送受信制御デバイスドライバ８０８は、Ｅｔｈｅｒパケット送受信部７０４からハードウェアに到着したＥｔｈｅｒパケットを取得し、リンクレイヤ制御部８０７へＥｔｈｅｒパケットを渡す。
【００５９】
本実施例の特徴である位置情報データ取得アプリケーション８０２は、受信Identification値一時領域８５１と、再構成済データ８５２を備える。データ再構成部８１１は、受信Identification値一時記憶域８５１にアクセスし、「Ident差分通信」内容を復元し、前記復元した内容を再構成済データ８５２に格納する。
【００６０】
Identification値抽出部８１２は、ソケット８０３ｂ経由でＲＡＷ制御部８０５からＩＰｖ４ヘッダ含まれているＩＰｖ４パケットを受信し、前記ＩＰｖ４パケットのＩＰｖ４ヘッダの中に含まれているIdentification値を取得する。つぎに、前記取得したIdentification値を受信Identification値一時記憶域８５１に格納する。
【００６１】
図９は、受信Identification値一時記憶域８５１の構造を示した説明図である。受信Identification値一時記憶域８５１は、先頭データ番地９０１と、複数のIdentificationデータ９０２ａ〜９０２ｃを備える。先頭データ番地９０１は、Identificationデータ９０２が格納されているメモリ番地を格納する。ただし、Identificationデータ９０２が一つも存在しない場合は「０」が入る。ソフトウェアプログラム起動時には前記先頭データ番地９０１には「０」を代入する。
Identificationデータ９０２は、次データ番地９０３と、Identification値９０４を備える。次データ番地９０３は、次のIdentificationデータ９０２を格納するメモリ番地である。本実施例では、Identificationデータ９０２は一般的に「チェーンデータ」構造ないし「線形リスト」構造と言われるデータ構造をとっており、次データ番地９０３をたどっていくことで一連のデータに順番にアクセスすることができる。なお本実施例でＰＣ１０４ａは、受信したパケットのヘッダのIdentificationフィールド１５０２に格納されている値を、受信Identification値一時記憶域８５１に昇順で格納する場合を例として説明しているが、降順で格納しても構わない。
【００６２】
最後のIdentificationデータ９０２を構成する次データ番地９０３には、値０が格納されている。値０は、データの終端を示すものである。一般的なＯＳでは０番地は、データを格納することはなく、アクセスできない番地として予約されている。よって、０番地は、ソフトウェアの色々な部分で、特別な意味を待たせることができる。本発明の図９の構成では「値０の番地はIdentificationデータの終端」を現す。
【００６３】
Identificationデータ９０２の構成は、線形リスト構造にすることは必須ではなく、他のデータ構造である、例えば配列や二分木でも実施可能である。しかし、本実施例ではIdentificationデータ９０２の追加および削除が容易であり、ＣＰＵ時間を可能な限り少なくすることが可能である最良の実施の形態として、線形リスト構造で示している。
【００６４】
図１０は、再構築済データ８５２の構造を示した説明図である。再構築済データ８５２は、複数の再構築済バイト１００１〜１００８を備える。「［］」記号の中に入っている整数は、データ配列のバイト単位のインデックスである。データ再構成部８１１は、携帯端末１０１からＩＰｖ４パケットを受信すると、以下に示すルールに従いＩＰｖ４パケットのIdentification値から追加情報である位置情報を抽出する。
【００６５】
図１６を用いて「Ident差分通信」の受信の概念について説明する。図１６は、ＰＣ１０４ａが受信した複数のＩＰパケット１５０１ａ〜ＩＰパケット１５０１ｌのデータからIdentification値を抽出する概念を表した説明図である。なお、ＩＰパケット１５０１ａ〜ＩＰパケット１５０１ｌおよび、Identificationフィールド１５０２ａ〜Identificationフィールド１５０２ｌは、図１５で説明したものと同様である。
【００６６】
「Ident差分通信」のデータ受信方法は、「Ident差分通信」のデータ送信方法と逆の演算をすることにより、実施する。即ち、以下の３つの抽出ルールを定める。
第１の抽出ルールとして、「差分値１」を「開始記号」とし「Ident差分値」が「１」の場合はデータが始まることを意味する。
第２の抽出ルールとして、「Ident差分値が」２以上の場合は、Ident差分通信にて送信したいデータまたはチェックサムであることを意味する。
第３の抽出ルールとして、「差分値１」の開始記号の一つ前のパケットは、チェックサムであり、それ以外のパケットはデータであることを意味する。
【００６７】
まず、データ再構成部８１１は、受信した第２のＩＰパケット１５０１ｂのIdentificationフィールド１５０２ｂの値「１００１」から、受信した第１のＩＰパケット１５０１ａのIdentificationフィールド１５０２ａの値「１０００」を減算する。減算した値は16進数表現で「１」であるので、第１の抽出ルールより、「開始記号」と判断できる。
【００６８】
つぎに、データ再構成部８１１は、受信した第３のＩＰパケット１５０１ｃのIdentificationフィールド１５０２ｃの値「１０４５」から、受信した第２のＩＰパケット１５０１ｂのIdentificationフィールド１５０２ｂの値「１００１」を減算する。前記減算した値は16進数表現で「４４」であり、２以上であるので、第２の抽出ルールより、Ident差分通信にて送信したいデータまたはチェックサムであることがわかる。
【００６９】
さらに、データ再構成部８１１は、受信した第４のパケット１５０１ｄのIdentificationフィールド１５０２ｄと、受信した第３のパケット１５０１ｃのIdentificationフィールド１５０２ｃの差分値は16進数表現で「０ｄ」であり、２以上であるので、第３の抽出ルールより、前記受信した第３のパケットと前記受信した第２のパケットの差分である「４４」から２を減算した値「４２」は、チェックサムではなく「Ident差分通信」にて送信したいデータであることがわかる。
【００７０】
データ再構成部８１１は、同様の手順を、受信した第３パケット１５０１ｃから受信した第１２のパケット１５０１ｌまで実施することにより、「Ident差分通信」にて送信したいデータである緯度５１１の「４２  ０ｄ  ｄｅ  ５９」および、経度５１２の「４３  ０ｂ  ９ｆ  ６ａ」およびチェックサム５１３「ｄｄ」を抽出する。
【００７１】
図１１および図１２は、本実施例の特徴である、データ再構成部８１１が、複数のIdentification値の複数差分値から、データを再構成するフローチャートを示した説明図である。次に、携帯端末１０１が送信した「Ident差分通信」で送信した位置データから、ＰＣ１０４ａの位置情報データ取得アプリケーション８０２のデータ再構成部８１１が、前記位置データを再構成する方法を、図９乃至図１２および図１６を使い、さらに具体的に説明する。
【００７２】
まず、図１６に示す第１のＩＰパケット１５０１ａをＰＣ１０４ａが受信した際の処理を図１１とともに説明する。このときの受信Identification値一時記憶域８５１は図９に示す状態Ａであり、Identificationデータはまだ格納されていない。データ再構成部８１１は、受信Identification値一時記憶域８５１に格納されている先頭データ番地９０１が示すデータ格納番地を取得する（ステップＳ１１０１）。
【００７３】
第１のＩＰパケット１５０１ａを受信した際には、Identificationデータ９０２が一つも存在しない状態であり、取得したデータ番地が０である（ステップＳ１１０２）。このためデータ再構成部８１１は受信Identification値一時記憶域８５１に、ＩＰパケット１５０１ａのIdentificationデータ９０２ｃを作成し、Identification値９０４ｃに「１０００」を挿入する（ステップＳ１１０４）。このとき、次データ番地９０３ｃには、先頭データ番地９０１が格納している番地である「０」を格納する。
【００７４】
つぎに、データ再構成部８１１は、Identificationデータ９０２ｃに格納されている次データ番地９０３ｃを取得する（ステップＳ１１０５）。第１のＩＰパケット１５０１ａを受信した際は、この値は０であるので、ステップＳ１１０７、Ｓ１１０８は実行せずに図１１のフローを終了する（ステップＳ１１０６）。以上の処理を行うことにより、受信Identification値一時記憶域８５１は、図９に示す「状態Ｂ」となる。
【００７５】
つぎに、図９に示す「状態Ｂ」の構成の際に、第２のＩＰパケット１５０１ｂを受信した際の処理を例に、再び図１１のフローを説明する。データ再構成部８１１は、受信Identification値一時記憶域８５１に格納されている先頭データ番地９０１が示すデータ格納番地を取得する（ステップＳ１１０１）。この場合、先頭データ番地９０１が格納しているのはIdentificationデータ９０２ｃのアドレスであるのでステップＳ１１０２ではＹｅｓの方向に進む。
【００７６】
データ再構成部８１１は、ステップＳ１１０１で取得した先頭データ番地９０１で指定されるIdentificationデータ９０２ｃに格納されているIdentification値９０４ｃが、Identification値抽出部８１２より抽出された第２のＩＰパケット１５０１ｂのIdentification値未満か否か、値を比較する（ステップＳ１１０３）。この場合、Identification値９０４ｃは「１０００」であり、受信したパケットのIdentification値１５０２ｂは「１００１」であるため、ステップＳ１１０４に移る。
【００７７】
なお、Identification値９０４がIdentification値抽出部８１２より抽出されたIdentification値１５０２以上の場合はステップＳ１１０３でＮｏの方向に条件分岐し、次データ番地９０３に格納されている、線形リストの次のIdentificationデータ９０２が格納されている番地を取得する（ステップＳ１１２１）。なお、Ｓ１１２１が実行される場合は、携帯端末１０１が送信したパケット群の順序が、ＰＣ１０４に届く前に、何らかの理由で入れ替わってしまった場合のみである。前記順序入れ替えが発生するのは稀である為、通常ステップＳ１１２１は実行されない。本発明によると、ループ処理となるステップＳ１１２１を通常は実行されないようにしており、受信時のＣＰＵ負荷を抑える利点がある。
【００７８】
つぎに、データ再構成部８１１は、ステップＳ１１０１で取得した、Identificationデータ９０２ｃのデータ格納番地の前に、新しいIdentificationデータ９０２ｂを挿入する。具体的には、データ再構成部８１１は、Identificationデータ９０２ｂの次データ番地９０３ｂに、先頭データ番地９０１つまりIdentificationデータ９０２ｃのアドレス値を格納し、その後、先頭データ番地９０１に、Identificationデータ９０２ｂのメモリ番地（アドレス値）を代入する（ステップＳ１１０４）。
【００７９】
つぎに、データ再構成部８１１は、ステップＳ１１０４にて新たに挿入したIdentificationデータ９０２ｂの次データ番地９０３ｂを取得する（ステップＳ１１０５）。そしてデータ再構成部８１１は、取得した番地が０か否かをチェックする（ステップＳ１１０６）。この場合、取得した次データ番地９０３ｂは０ではないため、条件分岐でＹｅｓに進む。データ再構成部８１１は、Identification値抽出部８１２がＩＰパケット１５０１ｂから抽出したIdentification値「１００１」から、ステップＳ１１０５で取得した次データ番地９０４ｂで指定されるIdentificationデータ９０２ｃに格納されているIdentification値９０４ｃ「１０００」を減算し、減算結果が１であるか否か判断する（ステップＳ１１０７）。
【００８０】
この場合、減算結果は１００１−１０００＝１となるため、条件分岐でＹｅｓ側に進み、図１２に示すIdentificationデータの再構築処理を行う（ステップＳ１１０８）。このときの引数はステップＳ１１０５で取得した次データ番地９０３ｂ、つまりIdentificationデータ９０２ｃのアドレスである。
【００８１】
データ再構築サブルーチン（ステップＳ１１０８）では、まず、データ再構成部８１１は引数である次データ番地９０３ｂで指定されるIdentificationデータ９０２ｃの次データ番地９０３ｃを取得する（ステップＳ１２０１）。この場合、図９の状態Ｃでは次データ番地９０３ｃの値は０である。次にデータ再構成部８１１は、取得した次データ番地９０３ｃが０か否か判定する（ステップＳ１２０２）。ここでは０であるので条件分岐でＮｏの方向に進み、データ再構成部８１１は、引数で指定されたIdentificationデータ９０２ｃから、リスト構造の末尾のIdentificationデータを受信Identification値一時記憶領域８５１から削除する（ステップＳ１２０８）。この場合、Identificationデータ９０２ｃのみが削除され、Identificationデータ９０２ｂは残る。
【００８２】
続いて、ＰＣ１０４ａが第３のＩＰパケット１５０１ｃを受信した際には、図１１の前述に示す処理を行うことにより、Identificationデータ９０２ｃの前にIdentificationデータ９０２aが挿入され、受信済みIdentification値一時記憶域８５１は、図９の状態Ｄに示す構成になる。さらに続いて、第４のＩＰパケット１５０１ｄから第１２のＩＰパケット１５０１ｌを受信した際には、図１１の前述に示す処理を繰り返し行うことにより、受信済みIdentification値一時記憶域８５１は、図１７に示す状態になる。
【００８３】
Identification値一時記憶域８５１が図１７の状態になった際に、最後に挿入されたIdentificationデータ９０２ｄのIdentification値９０４ｄと、その前に挿入されたIdentificationデータ９０２ｅのIdentification値９０４ｅの差分値が「１」の為（ステップＳ１１０７）、Identificationデータ９０２ｅの番地を引数として、再び、データ再構成サブルーチンが実行される（ステップＳ１１０８）。
【００８４】
データ再構成部８１１は、引数となっている次データ番地９０３ｄが指すIdentificationデータ９０２ｅの次データ番地９０３ｅを取得し、（ステップＳ１２０１）その番地がゼロでないかどうか確認する（ステップＳ１２０２）。この場合次データ番地９０３ｅにはIdentificationデータ９０２ｆのアドレスが格納されているためゼロではなく、条件分岐でＹｅｓの方向に進む。
【００８５】
つぎにデータ再構成部８１１は、引数にて本サブルーチンに渡された次データ番地９０３ｄで指し示されるIdentificationデータ９０２ｅに格納されているIdentification値９０４ｅの「13cd」から、前記ステップＳ１２０１で取得した次データ番地９０３eで指し示されるIdentificationデータ９０２ｆに格納されているIdentification値９０４ｆの「12ee」を減算し、そこからさらに２を減算した値を取得する（ステップＳ１２０３）。以下、前記減算結果値を「受信チェックサム」と表記する。図１７に示す構成の際には、前記受信チェックサムは、16進数表現で13cd-12ee-2=ddである。なお、前記受信チェックサムは、送信処理であるステップＳ６２１で構築した値に対応する。
【００８６】
つぎにデータ再構成部８１１は、ステップＳ１２０１で取得した次データ番地９０３eで指し示されるIdentificationデータ９０２ｆに格納されている、次データ番地９０３ｆを取得する（ステップＳ１２０４）。データ再構成部８１１は、ステップＳ１２０４で取得したデータ開始番地から、受信Identification値一時記憶領域８５１に１つのリスト構造で登録されている最後のデータまでの、すべてのデータの「Ident差分値」のバイト単位の加算値を取得し、この加算した値の10進数表現で256の剰余、16進数表現では100の剰余を算出する（ステップＳ１２０５）。この算出した剰余を「チェックサム値」とする。ここで「Ident差分値」は、Identification値９０４から、次データ番地９０３に示されるメモリ番地に格納されているIdentificationデータ９０２のIdentification値９０４を減算し、さらに２を減算したものである。
【００８７】
図１７に示す構成の際には、まずデータ再構成部８１１は、Identificationデータ９０２ｆに格納されているIdentification値９０４ｆの「12ee」からIdentificationデータ９０２ｇに格納されているIdentification値９０４ｇの「1282」を減算し、さらに２を減算し、「Ident差分値」は16進数表現で6aとなる。ステップＳ１２０４では同様の計算を次データ番地９０３が０になるまで繰り返すことによって、「Ident差分値」6aに続いて9f、0b、43、59、de、0d、42のIdent差分値を取得する。これらすべてのIdent差分値を加算すると6a+9f+0b+43+59+de+0d+42=2ddであり、16進数表現の100の剰余はddである。
【００８８】
つぎにデータ再構成部８１１は、ステップＳ１２０３で取得した「受信チェックサム」とステップＳ１２０５で取得した「チェックサム値」を比較する（ステップＳ１２０６）。図１７に示す構成の際には、前記受信チェックサムおよび前記チェックサム値のどちらもddで等しいので、Ｙｅｓの方向に条件分岐する。ステップＳ１２０６のチェックにより、途中の通信経路でデータが改ざんされた場合や、パケットが廃棄されてしまった場合に、データ再構成部８１１が、誤ったデータを受信することなく、廃棄できる利点がある。
【００８９】
つぎにデータ再構成部８１１は、ステップＳ１２０４で取得した「データ開始番地」、つまり次データ番地９０３ｆで指し示されるIdentificationデータ９０２ｇを先頭に、ステップＳ１２０５に示す手順で取得したIdent差分値を、再構築済データ８５２の領域［７］から［０］の方向へ順次格納する（ステップＳ１２０７）。図１７の場合、先頭のIdent差分値「6a」は、［７］のインデックスで示される再構築済バイト１００８に格納され、次のIdent差分値「9f」は［６］のインデックスで示される再構築済バイト１００７へ格納される。残りのIdent差分値についても同様に格納すると、再構築済データ８５２は図１０に示す状態となる。本実施例の位置情報は、８バイトなので、再構築済みバイト１００８から再構築済バイト１００１を使用して、８バイトを表現する。
【００９０】
以上の手順により、携帯端末１０１から送信された、前記携帯端末１０１が備える現在位置情報３５２の内容が、「Ident差分通信」方法を用いることにより、通信量を増やすことなく、ＰＣ１０４ａが備える再構築済データ８５２で、受け取ることができる。
【００９１】
実施例１では、一連の位置情報を送信し終わったときに第１の付与ルールに従い「差分値１」となるＩＰパケットを送信した（図６のＳ６３１）。第１の付与ルールは「開始記号」を付与するというルールであり、実施例１ではこれが一連のデータの終了を表わす情報も兼ねることで、続けて位置情報を送信することができる。しかし、連続して位置情報を送信する必要がない場合などは、第４の付与ルールとして、送信したいデータの終わりを意味する「終了記号」として「差分値１」とするよう決めても良い。このように第４の付与ルールを決めておけば、受信側の装置は一連のデータを受信して「差分値１」のデータを受信した時点でIdentificationフィールドに格納された情報の抽出をやめることができる。受信側の装置は、その後再び「差分値１」のIdentificationフィールドのパケットを受信したときに、情報の抽出を開始すればよい。
（第２の実施形態）
本実施例では、位置情報に限らず、任意の追加情報も送信可能な携帯端末１０１および、前記追加情報も受信可能なＰＣ１０４ａの例を説明する。図１３は、第２の実施形態における、携帯端末１０１のソフトウェア構成図の例である。図１３のうち、既に説明した図３に示された同一の符号を付された構成と、同一の機能を有する部分については、説明を省略する。
【００９２】
携帯端末１０１は、追加情報送信アプリケーション１３０１、ソケットインターフェイス３０４ｉ、ＵＤＰ−Ｌｉｔｅ制御部１３０２、追加送信仮想ネットワークドライバ１３０３を含む。ソケットインターフェイス３０４ｉは、ユーザ空間からカーネル空間へデータパケットを送信する。追加情報送信アプリケーション１３０１は、位置情報に限らず、アプリケーション開発者またはアプリケーション使用者が任意の追加送信情報を送信するプログラムである。追加情報送信アプリケーションは、ソケット３０４ｉを使用して、ＵＤＰ−Ｌｉｔｅ制御部１３０２に追加送信したい情報を送信する。
【００９３】
前記ソケット３０４ｉは、ソケット３０４ｂやソケット３０４ｃと同一のインターフェイスであり、本実施例によると、既存カーネルが提供するインターフェイスを利用できる利点がある。また、本実施例では、ＵＤＰ−Ｌｉｔｅプロトコルを使用しているが、別のプロトコルを使用しても良い。例えば、ＴＣＰを使用する場合は、追加情報送信アプリケーション１３０１は、ＴＣＰ制御部３０７に情報を送信し、一方、ＵＤＰを使用する場合は、追加情報送信アプリケーション１３０１は、ＵＤＰ制御部３０８へ情報を送信する。
【００９４】
ＵＤＰ−Ｌｉｔｅ制御部１３０２は、ＵＤＰ−Ｌｉｔｅヘッダを付与したＵＤＰ−Ｌｉｔｅパケットデータを作成し、ＩＰｖ４制御部３０９へ送信する。ＩＰｖ４制御部３０９は、第１の実施形態と同様に、Identification値生成部３１０にアクセスし、ＩＰｖ４ヘッダに設定するIdentification値を取得し、リンクレイヤ制御部３１１へ、前記ＵＤＰパケットにＩＰｖ４ヘッダを付与したＩＰｖ４パケットを送信する。リンクレイヤ制御部３１１は、経路情報に従って、送信するデバイスを決定する。一般的に広く使われているＷｉｎｄｏｗｓ（登録商標）  ＯＳやＬｉｎｕｘ（登録商標）  ＯＳでは、前記経路情報をルーティングテーブルと言われる構造にて、保持しており、出力デバイスを決定する仕組みも具備している。本実施形態では、既存の技術であるルーティングテーブルに、特定の宛先アドレスの場合は、追加送信仮想ネットワークドライバ１３０３を出力デバイスとして登録することにより、実施する例を示す。
【００９５】
追加送信仮想ネットワークドライバ１３０３は、リンクレイヤ制御部３１１が送信したパケットデータを追加送信情報１３１２に追加する。Identｉｆｉｃａｉｏｎ値生成部３１０は、第１の実施形態と同様の方法で、ＩＰｖ４パケットの、Identification値を計算する。そして、前記Identification値生成済みのデータは、追加送信情報１３１２より削除する。
【００９６】
なお、文字チャットアプリケーション３０２や、音声アプリケーション３０３は、前記特定の宛先アドレス以外のアドレスを宛先アドレスに設定して、パケット送信するよう、ソケット３０４ｂまたはソケット３０４ｃに指示しているので、電波送受信制御用ドライバ３１２にパケットが送信される。本実施例によると、前記送信されるパケットは、本発明の特徴であるIdentification値の計算結果が適用される。
【００９７】
図１４は、第２の実施形態における、ＰＣ１０４ａのソフトウェア構成図の例である。なお、ＰＣ１０４ａとＰＣ１０４ｂは同様の構成である。図１４のうち、既に説明した図８に示された同一の符号を付された構成と、同一の機能を有する部分については、説明を省略する。
【００９８】
ＰＣ１０４ａは、追加情報受信アプリケーション１４０１、ソケットインターフェイス８０３ｉ、ＵＤＰ−Ｌｉｔｅ制御部１４０２、追加受信仮想ネットワークドライバ１４０３を含む。ソケットインターフェイス８０３ｉは、カーネル空間からユーザ空間へデータパケットを受信するインターフェイスである。また、第２の実施形態によると、ＰＣ１０４ａは、受信Identification値一時記憶域８５１を受信したＩＰｖ４パケットヘッダにある送信元ＩＰアドレス毎に持つ（受信Identification値一時記憶域８５１ａ、受信Identification値一時記憶域８５１ｂ）。
【００９９】
データ再構成部８１１は、第１の実施形態と同様の方法で、再構成済みデータ８５２を作成する。つぎに、データ再構成部８１１は、再構成済みデータ８５２のデータ部としたパケットを作成し、追加受信仮想ネットワークドライバ１４０３に送信する。追加受信仮想ネットワークドライバ１４０３は、前記パケットをリンクレイヤ制御部８０７に送信する。
【０１００】
つぎに、リンクレイヤ制御部８０７は、Ｅｈｔｅｒヘッダの記載のプロトコル番号に従って、ＩＰｖ４制御部８０６に、前記パケットからＥｈｔｅｒヘッダを除去し、ＩＰｖ４パケットとして、パケットを送信する。つぎに、ＩＰｖ４制御部８０６は、第１の実施形態と同様の手順で、Identification値抽出部８１２に、Identication値差分データから、データを差構成させる処理を動作させる。ただし、前記Identification値の差分は、本実施例の特徴である「Ident差分通信」はしていない状態であり、通常、前記差分値は１のみである。よって、図１１に示すフローチャートに示すとおり、ステップＳ１１０７は、常にＹｅｓとなり、その結果、ステップＳ１２０７が実行され、受信Identification値一時記憶域８５１にデータが増え続けることがない。その結果、ステップＳ１１２１は実行されない。特に、ステップＳ１１２１は反復処理であるので、ＣＰＵを使う処理量が増えるが、追加受信仮想ネットワークドライバ１４０３より受信したパケットに対しては、データ再構成部８１１の処理コストは、増加しない利点がある。
【０１０１】
つぎに、ＩＰｖ４制御部８０６は、ＩＰｖ４パケットのＩＰｖ４ヘッダに記載されているプロトコル番号に従って、ＵＤＰ−Ｌｉｔｅ制御部１４０２に、ＩＰｖ４パケットからＩＰｖ４ヘッダを除去し、ＵＤＰ−Ｌｉｔｅパケットとして、パケットを送信する。つぎに、ＵＤＰ−Ｌｉｔｅ制御部１４０２は、ソケットインターフェイス８０３ｉを介して、追加情報受信アプリケーション１４０１に追加情報を送信する。
【０１０２】
なお、第２の実施形態にて、ＵＤＰ−Ｌｉｔｅプロトコルを例としたが、他のプロトコルでも代用可能である。ただし、本発明では、チェックサムによるデータの完全性チェックを行っており、ＴＣＰやＵＤＰが備えるチェックサムの機構を省いても良い。ＵＤＰ−Ｌｉｔｅは、チェックサムによるデータの完全性チェック範囲を縮小できるプロトコルであり、ＵＤＰよりＣＰＵの処理量を削減できる利点がある。
【０１０３】
また、Ｌｉｎｕｘ（登録商標）  ＯＳでは、ＰＦ＿ＰＡＣＫＥＴプロトコルにより、ＯＳのプロトコル実装をバイパスして、ネットワークドライバにデータを送信する方法がある。第２の実施形態によると、追加送信仮想ネットワークドライバ１３０３に、ユーザ空間で動作するアプリケーションがデータを送信することにより、各プロトコルヘッダが追加されることなく、さらに効率的に「追加情報」を送信することができる。
【０１０４】
以上の手順により、携帯端末１０１から送信された、前記携帯端末１０１が備える任意の「追加情報」が、「Ident差分通信」方法を用いることにより、通信量を増やすことなく、ＰＣ１０４ａが備える追加情報受信アプリケーション１４０１で、受け取ることができる。
【０１０５】
以上の実施例では、Ident差分通信の受信側において、受信した複数の送信単位の特定の部分（特定フィールド）の差分値を取得するようにした。ここで、差分値を格納可能な特定のフィールドとは、既存のプロトコルで、送信単位毎に異なる値を格納すること、と定義されているフィールドである。具体的には、ＩＰｖ４ヘッダのIdentificationフィールドや、ＩＰｖ６拡張ヘッダのIdentificationフィールドや、ＳＣＴＰ  ＩＮＩＴ  Ｃｈｕｎｋの検証タグフィールドである。ＩＰｖ４ヘッダのIdentificationフィールドは、パケット毎に異なる値を送信することが規約で決められている。また、ＩＰｖ６拡張ヘッダのIdentificationフィールドは、送信元がパケット分割（フラグメント）をする際に付与する必要があるＩＰｖ６拡張ヘッダの中に構成されるフィールドであり、パケット分割する前のパケット毎に、異なる値を付与する必要がある。また、ＳＣＴＰ  ＩＮＩＴ  Ｃｈｕｎｋの検証タグフィールドは、ＳＣＴＰセッション毎に異なる値を設定する必要ある。いずれのフィールドも、連続した値である必要はないが、異なる値を設定する必要がある、といった特徴があるフィールドである。
【０１０６】
本実施例の送信側装置は、主に、送信単位の特定フィールドに、追加で送信したいデータを、特定フィールドの値に加算して送信する手段を具備する。また受信側装置は、送信された複数の送信単位の前記特定フィールドの値の差分から、前記追加で送信したいデータを抽出する手段を具備する。「追加で送信したいデータ」として「位置情報」を例に説明した。
【０１０７】
本実施例では、送信装置と受信装置とで送信単位を決めてある通信方法であって、送信単位のデータ中に、送信単位毎に異なる値を付与する必要がある特定領域が一つ以上ある通信方法を利用した。送信装置は、送信したいデータを格納するメモリと、データの値をもとに、領域の値を送信単位毎に所定の方法で計算する手段とを備える。受信装置は、送信装置から受信した送信単位毎に、特定領域から送信装置の送信したいデータを格納するメモリ内容を所定の方法で復元する手段と、を備える。
【０１０８】
本実施例に記載の手法によって、通信量を増やすことなく、追加で位置情報等のデータ送受信ができるようになり、かつ、以下のような効果を奏する。
既存のプロトコル仕様に準拠しているので、既存の送信および受信プログラムは、そのまま利用可能である。
元々通信しているプロトコルを使用するので、既存の中継設備のプログラム変更や設定変更が不要となる。
既存のプロトコルにおいて「中継装置で内容を変更してはならない」と定義されている領域を使用するので、中継装置でデータが中継されても情報が残り、既存装置の設定変更も不要となる。
【符号の説明】
【０１０９】
１  無線網
２ａ  ＩＰ網
２ｂ  ＩＰ網
１０１  携帯端末
１０２  電波基地局
１０３  ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ルータ
１０４ａ  パーソナルコンピュータ
１０４ｂ  パーソナルコンピュータ
３１０  Identification値生成部
３５１  位置情報付与制御データ
８１１  データ再構成部
８１２  Identification値抽出部
８５１  受信Identification値一時記憶領域
８５２  再構成済データ８５２
【図１】
2015005886.tif 000003
【図２】
2015005886.tif 000004
【図３】
2015005886.tif 000005
【図４】
2015005886.tif 000006
【図５】
2015005886.tif 000007
【図６】
2015005886.tif 000008
【図７】
2015005886.tif 000009
【図８】
2015005886.tif 000010
【図９】
2015005886.tif 000011
【図１０】
2015005886.tif 000012
【図１１】
2015005886.tif 000013
【図１２】
2015005886.tif 000014
【図１３】
2015005886.tif 000015
【図１４】
2015005886.tif 000016
【図１５】
2015005886.tif 000017
【図１６】
2015005886.tif 000018
【図１７】
2015005886.tif 000019