(57)【要約】      （修正有）【課題】データを送信ノードから宛先ノードに移送する方法を提供する。【解決手段】宛先ノードに移送するために送信ノードにおいて選択データを処理してデータパケットのストリームを形成することを含む。ストリームは、データパケットのグループを含む。グループは、選択データのセグメントを搬送する。セグメントは、選択データのフラグメントを含み、セグメント識別子に関連する。各フラグメントは、フラグメント識別子に関連する。グループの各データパケットは、対応するフラグメントと、フラグメント識別値と、セグメント識別値と、検証チェック値とを搬送する。グループの最後のデータパケットは、セグメント終了値を搬送する。データパケットのグループを宛先ノードに送信することを含み、データパケットのグループの送信間で宛先ノードからのセグメント応答メッセージを待機することなく送信が継続するように最後のデータパケットは最後に送信される。【選択図】図３
2013123219.tif 000002
【特許請求の範囲】
【請求項１】
データを移送する方法であって、
ａ）選択データ（９０２）を処理してデータパケットのストリーム（９０４）を形成するステップであって、データパケットの前記ストリームがデータパケット（９１８）の第１のグループ（９０８）を少なくとも含み、データパケットの前記第１のグループが前記選択データの第１のセグメント（９１０）を搬送し、前記第１のセグメントが前記選択データの第１の複数のフラグメント（９１２）を含み、前記第１のセグメントが、前記選択データに関して一意のセグメント識別子に関連し、前記第１の複数のフラグメント中の各フラグメントが、前記第１のセグメントと前記選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連し、前記第１のグループの各データパケットが、前記第１の複数のフラグメントのうちの対応するフラグメントと、前記対応するフラグメントに関連する前記フラグメント識別子と、前記第１のセグメントに関連する前記セグメント識別子と、前記対応するデータパケットを検証する際に使用される検証チェック値（９２０）とを搬送し、前記第１のグループの最後のデータパケット（９２２）が、前記対応するデータパケットを前記第１のグループの前記最後のデータパケットとして識別するセグメント終了値（９２４）を搬送する、ステップと、
ｂ）１つまたは複数の通信パスを介して送信ノード（８００）から宛先ノード（８１２）に前記第１のグループを送信するステップとを含む方法であって、前記第１のグループの前記データパケットの送信間で前記宛先ノードからの第１のセグメント応答メッセージを待機することなく送信が継続するように、前記第１のグループの前記最後のデータパケットが最後に送信される、方法。
【請求項２】
前記選択データの前記フラグメントのサイズが前記送信ノードと前記宛先ノードとの両方に知られている、請求項１記載の方法。
【請求項３】
前記第１のセグメントを形成する前記第１の複数のフラグメントのフラグメント量が前記送信ノードと前記宛先ノードとの両方に知られている、請求項１記載の方法。
【請求項４】
ｃ）前記第１のグループの全てのデータパケットが前記宛先ノードによってうまく受信および検証されたことを示す第１のセグメント応答メッセージが前記宛先ノードから受信されるまでは少なくとも、前記送信ノードにおいてデータパケットの前記第１のグループをセグメント送信バッファ（８２０）に記憶するステップをさらに含む、請求項１記載の方法。
【請求項５】
ｃ）前記第１のグループの全てのデータパケットが前記宛先ノードによってうまく受信および検証されたことを示す第１のセグメント応答メッセージを前記送信ノードにおいて前記宛先ノードから受信するステップと、
データパケットの第２のグループ、前記選択データの第２のセグメント、および前記選択データの第２の複数のフラグメントに対してａ）およびｂ）を繰り返すステップとをさらに含み、データパケットの前記ストリームがデータパケットの前記第２のグループも少なくとも含み、データパケットの前記第２のグループが前記第２のセグメントを搬送し、前記第２のセグメントが前記第２の複数のフラグメントを含む、請求項１記載の方法。
【請求項６】
ｃ）前記第１のグループの少なくとも１つのデータパケットが前記宛先ノードによってうまく受信および検証されなかったことを示す第１のセグメント応答メッセージを前記送信ノードにおいて前記宛先ノードから受信するステップと、
ｄ）再送間で前記宛先ノードからの別のセグメント応答メッセージを待機することなく再送が継続するように、前記送信ノードから前記宛先ノードに、前記宛先ノードによってうまく受信および検証されなかった前記第１のグループの各データパケットを再送し前記第１のグループの前記最後のデータパケットを再送するステップとをさらに含む、請求項１記載の方法。
【請求項７】
前記宛先ノードからの前記第１のセグメント応答メッセージが、うまく受信および検証されなかった前記第１のグループの各データパケットに関連する前記セグメント識別子および前記フラグメント識別子を示す、請求項６記載の方法。
【請求項８】
ｃ）前記第１のグループの前記最後のデータパケットが前記宛先ノードに送信されてから所定時間内にセグメント応答メッセージが前記宛先ノードから受信されなかった場合に、前記第１のグループの前記最後のデータパケットを前記送信ノードから前記宛先ノードに再送するステップをさらに含む、請求項１記載の方法。
【請求項９】
データを移送する方法であって、
ａ）宛先ノード（１２００）において送信ノード（１２１４）から第１のデータパケット（９１８）を受信するステップであって、前記第１のデータパケットが、１つまたは複数の通信パスを介して前記送信ノードから前記宛先ノードに選択データ（９０２）を移送するデータパケットのストリーム（９０４）に関連し、データパケットの前記ストリームが、前記第１のデータパケットが関連するデータパケットの第１のグループ（９０８）を少なくとも含み、データパケットの前記第１のグループが前記選択データの第１のセグメント（９１０）を搬送し、前記第１のセグメントが前記選択データの第１の複数のフラグメント（９１２）を含み、前記第１のセグメントが、前記選択データに関して一意のセグメント識別子に関連し、前記第１の複数のフラグメント中の各フラグメントが、前記第１のセグメントと前記選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連し、前記第１のグループの各データパケットが、前記第１の複数のフラグメントのうちの対応するフラグメントと、前記対応するフラグメントに関連する前記フラグメント識別子と、前記第１のセグメントに関連する前記セグメント識別子と、前記対応するデータパケットを検証する際に使用される検証チェック値（９２０）とを搬送し、前記第１のグループの最後のデータパケット（９２２）が、前記対応するデータパケットを前記第１のグループの前記最後のデータパケットとして識別するセグメント終了値（９２４）を搬送する、ステップと、
ｂ）前記第１のデータパケットによって搬送された前記検証チェック値を使用して、前記第１のデータパケットに対して検証チェックを実施するステップと、
ｃ）前記第１のデータパケットに対する前記検証チェックの正または負の結果、ならびに前記対応するセグメント識別子およびフラグメント識別子を、セグメント応答メッセージバッファ（１２１２）に記憶するステップと、
ｄ）前記第１のグループの前記最後のデータパケットがａ）において受信されるまで、前記第１のグループの次のデータパケットに対してａ）〜ｃ）を繰り返すステップと、
ｅ）前記第１のグループの前記最後のデータパケット中の前記セグメント終了値を検出するステップと、
ｆ）前記セグメント応答メッセージバッファに記憶された情報を処理して、前記第１のグループに関連する第１のセグメント応答メッセージを形成するステップと、
ｇ）１つまたは複数の通信パスを介して前記宛先ノードから前記送信ノードに前記第１のセグメント応答メッセージを送信するステップとを含む、方法。
【請求項１０】
前記送信ノードへの前記第１のセグメント応答メッセージが、前記第１のグループの全てのデータパケットが前記宛先ノードによってうまく受信および検証されたことを示し、前記方法がさらに、
ｈ）データパケットの第２のグループ、前記選択データの第２のセグメント、前記選択データの第２の複数のフラグメント、および第２のセグメント応答メッセージに対してａ）〜ｇ）を繰り返すステップを含み、データパケットの前記ストリームがデータパケットの前記第２のグループも少なくとも含み、データパケットの前記第２のグループが前記第２のセグメントを搬送し、前記第２のセグメントが前記第２の複数のフラグメントを含む、請求項９記載の方法。
【請求項１１】
前記送信ノードへの前記第１のセグメント応答メッセージが、前記第１のグループの少なくとも１つのデータパケットが前記宛先ノードによってうまく受信および検証されなかったことを示す、請求項９記載の方法。
【請求項１２】
前記送信ノードへの前記第１のセグメント応答メッセージが、うまく受信および検証されなかった前記第１のグループの各データパケットに関連する前記セグメント識別子および前記フラグメント識別子を示す、請求項１１記載の方法。
【請求項１３】
ｈ）データパケットの前記第１のグループについて前記セグメント応答メッセージバッファに記憶されたフラグメント識別子のシーケンス化の分断を、ｆ）における前記処理が示すことに少なくとも部分的に基づいて、前記第１のグループに関連する少なくとも１つのデータパケットが前記宛先ノードによって受信されなかったと決定するステップをさらに含む、請求項１１記載の方法。
【請求項１４】
ｈ）前記対応するデータパケットについて前記セグメント応答メッセージバッファに記憶された負の結果を、ｆ）における前記処理が示すことに少なくとも部分的に基づいて、前記第１のグループに関連する少なくとも１つのデータパケットがｂ）における前記検証チェックに失敗したと決定するステップをさらに含む、請求項１１記載の方法。
【請求項１５】
ｈ）前記宛先ノードにおいて前記送信ノードから第１の再送データパケットを受信するステップであって、前記第１の再送データパケットが、前記宛先ノードによってうまく受信および検証されなかった前記第１のグループの少なくとも１つのデータパケットからのものである、ステップと、
ｉ）前記第１の再送データパケットによって搬送された前記検証チェック値を使用して、前記第１の再送データパケットに対して検証チェックを実施するステップと、
ｊ）前記第１の再送データパケットに対する前記検証チェックの正または負の結果を前記セグメント応答メッセージバッファに記憶するステップと、
ｋ）、前記第１のグループの前記最後のデータパケットが再送および受信されるまで、前記宛先ノードによってうまく受信および検証されなかった前記第１のグループの少なくとも１つのデータパケットからの次の再送データパケットに対してｈ）〜ｊ）を繰り返すステップと、
ｌ）前記第１のグループの前記再送された最後のデータパケット中の前記セグメント終了値を検出するステップと、
ｍ）前記セグメント応答メッセージバッファに記憶された情報を処理して、前記第１のグループに関連する第１のセグメント再送メッセージを形成するステップと、
ｎ）１つまたは複数の通信パスを介して前記宛先ノードから前記送信ノードに前記第１のセグメント再送メッセージを送信するステップとをさらに含む、請求項１１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示する主題は、送信ノードからデータを送信するための技法および宛先ノードにおいてデータを受信するための技法を含めた、通信ノード間におけるデータの移送に関する。
【背景技術】
【０００２】
通信プロトコルは、ディジタルメッセージのフォーマット、およびこれらのメッセージをコンピューティングシステム中またはコンピューティングシステム間で交換するための規則の、正式の記述である。例えば、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）モデルは、様々な抽象化レイヤにおける、通信システムのための標準的な機能を採用する。ＯＳＩレイヤは、上位のレイヤにサービスを提供するとともに、下位のレイヤからデータを収集する。ＯＳＩモデルは、物理、データリンク、ネットワーク、トランスポート、セッション、プレゼンテーション、およびアプリケーションレイヤを含む。
【０００３】
通信デバイス間の通信のためのトランスポートレイヤは、コンポーネントおよびプロトコルの階層化アーキテクチャ内で、アプリケーションのための終端間通信サービスを提供する。これらのサービスは、接続指向のデータストリームサポート、信頼性、フロー制御、および多重化を含む。コンピュータネットワーキングで使用されるトランスポートレイヤ通信プロトコルの例のいくつかとしては、ユーザデータグラムプロトコル（ＵＤＰ）および伝送制御プロトコル（ＴＣＰ）がある。
【０００４】
いずれか所与のデータ転送に対しては、データの送信側とデータの受信側とがある。通常、トランスポートレイヤ通信プロトコルは、転送すべき大量のデータを、転送に使用される通信コンポーネントによって容易に管理できる小さいデータパケットに分割する。各データパケットは通常、データパケットの信頼性を受信側が検証するのを可能にする情報を含む。例えば、データパケットはチェックサムパラメータを含む場合があり、受信側は、チェックサムパラメータをチェックして、受信したデータが送信中に改変されなかったことを確認することができる。
【０００５】
各受信データパケットにつき、受信側は通常、対応するパケットの受信を肯定応答するパケットによって送信側に応答して、データパケットが送達されたことおよび次のデータパケットを送ってよいことを送信側に通知する（図１および２参照）。この技法は、一度に１つのアイテム（移送されているデータと肯定応答とのいずれか）しか送信することができないのでレイテンシ遅延を招く。データパケットサイズがより大きければ、この場合は効率が向上するかもしれないが、データ損失の場合には大量のデータを再送することが必要になる。
【０００６】
ＴＣＰなど、いくつかのトランスポートプロトコルは、スライディングウィンドウプロトコルを利用することができ、この場合、送信側は、より前のデータパケットの肯定応答を待機しながら、追加のデータパケットを送信し続けることができる。スライディングウィンドウ技法で肯定応答を待機するのを停止する前に送信できるデータの量の限度を決定するために、ラウンドトリップタイム（ＲＴＴ）および帯域幅能力を考慮することができる。この場合もやはり、この技法の効率は、データがうまく送信されず再送を必要とする場合には著しく悪化する。ＵＤＰなど、他のプロトコルは、パケットデータをストリーミングすることになり、データ損失を補償することまたは再送を提供することはない。したがって、ＵＤＰは、データパケットが乱れた順序で到着したり、重複して現れたり、通知なしに行方不明になったりする可能性のある、信頼性のないサービスを提供する。
【発明の概要】
【０００７】
以上に基づいて、特に大量のデータ（例えば１０００バイトよりも多い）を移送するための、通信ノード間で信頼性のあるデータ通信をより短い時間で提供する技法が、移送速度を向上させるために望ましい。加えて、このような技法は、効率的な再送アルゴリズムを含むことが好ましい。
【０００８】
一態様では、データを移送する方法が提供される。一実施形態では、この方法は、選択データを処理してデータパケットのストリームを形成することを含む。データパケットのストリームは、データパケットの第１のグループを少なくとも含む。データパケットの第１のグループは、選択データの第１のセグメントを搬送する。第１のセグメントは、選択データの第１の複数のフラグメントを含む。第１のセグメントは、選択データに関して一意のセグメント識別子に関連する。第１の複数のフラグメント中の各フラグメントは、第１のセグメントと選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連し、第１のグループの各データパケットは、第１の複数のフラグメントのうちの対応するフラグメントと、対応するフラグメントに関連するフラグメント識別子と、第１のセグメントに関連するセグメント識別子と、対応するデータパケットを検証する際に使用される検証チェック値とを搬送する。第１のグループの最後のデータパケットは、対応するデータパケットを第１のグループの最後のデータパケットとして識別するセグメント終了値を搬送する。この方法はさらに、１つまたは複数の通信パスを介して送信ノードから宛先ノードに第１のグループを送信することを含み、第１のグループのデータパケットの送信間で宛先ノードからの第１のセグメント応答メッセージを待機することなく送信が継続するように、第１のグループの最後のデータパケットは最後に送信される。
【０００９】
別の態様では、データを移送する方法が提供される。一実施形態では、この方法は、宛先ノードにおいて送信ノードから第１のデータパケットを受信することを含む。第１のデータパケットは、１つまたは複数の通信パスを介して送信ノードから宛先ノードに選択データを移送するデータパケットのストリームに関連する。データパケットのストリームは、第１のデータパケットが関連する、データパケットの第１のグループを少なくとも含む。データパケットの第１のグループは、選択データの第１のセグメントを搬送する。第１のセグメントは、選択データの第１の複数のフラグメントを含む。第１のセグメントは、選択データに関して一意のセグメント識別子に関連する。第１の複数のフラグメント中の各フラグメントは、第１のセグメントと選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連する。第１のグループの各データパケットは、第１の複数のフラグメントのうちの対応するフラグメントと、対応するフラグメントに関連するフラグメント識別子と、第１のセグメントに関連するセグメント識別子と、対応するデータパケットを検証する際に使用される検証チェック値とを搬送する。第１のグループの最後のデータパケットは、対応するデータパケットを第１のグループの最後のデータパケットとして識別するセグメント終了値を搬送する。この方法はさらに、第１のデータパケットによって搬送された検証チェック値を使用して、第１のデータパケットに対して検証チェックを実施することを含む。この方法はさらに、第１のデータパケットに対する検証チェックの正または負の結果、ならびに対応するセグメント識別子およびフラグメント識別子を、セグメント応答メッセージバッファに記憶することを含む。第１のグループの最後のデータパケットが受信されるまで、第１のグループの次のデータパケットに対して受信、実施、および記憶を繰り返す。この方法はさらに、第１のグループの最後のデータパケット中のセグメント終了値を検出することを含む。この方法はさらに、セグメント応答メッセージバッファに記憶された情報を処理して、第１のグループに関連する第１のセグメント応答メッセージを形成することを含む。この方法はさらに、１つまたは複数の通信パスを介して宛先ノードから送信ノードに第１のセグメント応答メッセージを送信することを含む。
【００１０】
さらに別の態様では、プログラム命令を記憶した非一過性のコンピュータ可読媒体が提供される。プログラム命令は、コンピュータによって実行されたとき、対応するコンピュータ制御通信ノードに、データ移送方法を実施させる。一実施形態では、この方法は、第１の選択データを処理してデータパケットの第１のストリームを形成することを含む。データパケットの第１のストリームは、データパケットの第１のグループを少なくとも含む。データパケットの第１のグループは、第１の選択データの第１のセグメントを搬送する。第１のセグメントは、第１の選択データの第１の複数のフラグメントを含む。第１のセグメントは、第１の選択データに関して一意のセグメント識別子に関連する。第１の複数のフラグメント中の各フラグメントは、第１のセグメントと第１の選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連する。第１のグループの各データパケットは、第１の複数のフラグメントのうちの対応するフラグメントと、対応するフラグメントに関連するフラグメント識別子と、第１のセグメントに関連するセグメント識別子と、対応するデータパケットを検証する際に使用される検証チェック値とを搬送する。第１のグループの最後のデータパケットは、対応するデータパケットを第１のグループの最後のデータパケットとして識別するセグメント終了値を搬送する。この方法はさらに、１つまたは複数の通信パスを介して通信ノードから宛先ノードに第１のグループを送信することを含み、第１のグループのデータパケットの送信間で宛先ノードからの第１のセグメント応答メッセージを待機することなく送信が継続するように、第１のグループの最後のデータパケットは最後に送信される。
【００１１】
さらに別の態様では、方法が提供される。一実施形態では、この方法は、データを処理して複数のデータセグメントにすることを含む。各データセグメントは、複数のデータフラグメントを含む。データフラグメントは、それぞれのフラグメント識別子と、データフラグメントがその一部をなすセグメントのセグメント識別子とを含む。この方法はさらに、データフラグメントを送信ノードから宛先ノードに送信することを含む。この方法はさらに、セグメントのうちの１つの、１つまたは複数のフラグメントが宛先ノードによって受信されなかったことを示す第１のメッセージを宛先ノードから受信するのに応答して、この１つまたは複数のフラグメントを、再送を示すためにこの１つのセグメントの最終フラグメントと共に、宛先ノードに通信することを含む。この方法はさらに、各セグメントを通信した後で、第１のメッセージ、またはセグメントがうまく受信されたことを示す第２のメッセージを、送信ノードが受信しない場合に、セグメントの最後のフラグメントを宛先ノードに再通信することを含む。
【００１２】
本発明のこれらおよび他の特徴および態様は、添付の図面を参照してよりよく理解されるようになるであろう。図面において、同じ文字は同じ部分を表す。
【図面の簡単な説明】
【００１３】
【図１】従来の通信プロトコルを使用してデバイス間でパケットデータを交換するための既存のプロセスの機能図である。
【図２】従来の通信プロトコルを使用してデバイス間でパケットデータを交換するためのデータ／メッセージフロー図である。
【図３】データを送信ノードから宛先ノードに移送するためのプロセスの例示的な一実施形態のフローチャートである。
【図４】図３との組合せによる、データを送信ノードから宛先ノードに移送するためのプロセスの別の例示的な実施形態のフローチャートである。
【図５】図３との組合せによる、データを送信ノードから宛先ノードに移送するためのプロセスのさらに別の例示的な実施形態のフローチャートである。
【図６】図３との組合せによる、データを送信ノードから宛先ノードに移送するためのプロセスのさらに別の例示的な実施形態のフローチャートである。
【図７】図３との組合せによる、データを送信ノードから宛先ノードに移送するためのプロセスのさらに別の例示的な実施形態のフローチャートである。
【図８】データを送信ノードから宛先ノードに移送するための通信ノードの例示的な一実施形態のブロック図である。
【図９】選択データを処理してデータパケットのストリームを形成するためのプロセスの例示的な一実施形態のデータフロー図である。
【図１０】データを送信ノードから宛先ノードに移送するためのプロセスの例示的な一実施形態のデータ／メッセージフロー図である。
【図１１】データを送信ノードから宛先ノードに移送するためのプロセスの別の例示的な実施形態のフローチャートである。
【図１２】データを送信ノードから宛先ノードに移送するための通信ノードの別の例示的な実施形態のブロック図である。
【発明を実施するための形態】
【００１４】
本開示では、データを送信ノードから宛先ノードに移送する方法の様々な実施形態について述べる。また、移送データを送信または受信するのに使用できる通信ノードの様々な実施形態についても述べる。述べる様々な技法をトランスポートレイヤ通信プロトコルにおいて実施して、データ転送、例えば、データの送信側として動作するホスト／マスタデバイスから、データの受信側として動作する１つまたは複数のクライアント／スレーブデバイスへのデータ転送を、容易にすることができる。
【００１５】
データを送信側から受信側に移送するためのプロセスの例示的な一実施形態では、送信側は、大量のデータをフラグメントに分割する。送信側と受信側の両方が、フラグメントサイズについて事前に合意することができる。送信側は、複数のフラグメントをセグメントにグループ化する。送信側と受信側は、いずれか所与のセグメント中にフラグメントがいくつ存在することになるかについて事前に合意することができる。各フラグメントは、フラグメント番号（例えば１６ビット）およびセグメント番号（例えば１６ビット）を含むことができる。セグメントのフラグメントが送信側によって送信された後、送信側は、受信側から肯定応答パケットを受信する。
【００１６】
セグメント中の最後のパケットが受信側によって受信されたが、セグメント内の全てのフラグメントが受信されたわけではない場合、受信側は、「否定応答」パケットを送信側に送信することになる。「否定応答」パケットは、受信側によって受信されなかったセグメント内のフラグメントの、セグメント番号およびフラグメント番号の指標を含むことになる。送信側は、「否定応答」パケットに応答して、未受信として指定された各フラグメントと、セグメント中の最後のフラグメントとを再送することになる。セグメントの最後のフラグメントを再送することにより、未受信のフラグメントが再送されたことおよびセグメントの全てのフラグメントがこの時点で受信されているはずであることが受信側に知らされる。
【００１７】
送信側がセグメントの全てのフラグメントの送信を完了し、タイムアウト期間中に受信側から肯定応答パケットまたは「否定応答」パケットを受信しない場合、送信側は、セグメント中の最後のフラグメントを再送する。セグメントの最後のパケットを再送することにより、この場合もまた、セグメントの全てのフラグメントがこの時点で受信されているはずであることが受信側に知らされる。
【００１８】
この技法は、フラグメントのグループを送信して肯定応答を待機することによって、レイテンシおよび帯域幅の要件を低減する。うまく受信されたフラグメントは再送されないという点で、再送アルゴリズムは効率的である。唯一の例外は、最後のフラグメントはうまく受信されたが、同じセグメント中のより前のフラグメントはうまく受信されない場合であり、より前のフラグメントと最後のフラグメントの両方が再送される。技術的効果としては、送信側と受信側のノードまたはデバイスの間のメッセージングが低減されるため、データ転送またはダウンロードはより速く、少なくとも現在のデータ移送方法と同じ信頼性を有する。
【００１９】
データ転送の速度向上の結果として得られる技術的および商業的利点は、より積極的なユーザ体験である。一応用例では、前述の技法を実施して、１つまたは複数の通信パスを介してナトリウム電池管理システムにファームウェアを移送することによって通信端末からファームウェアをロードすることができる。この例示的な応用例では、移送時間は、あらゆるパケットに肯定応答するトランスポートプロトコルを使用した場合にかかるであろう時間の、約３分の１として測定された。
【００２０】
本明細書に開示する場合の通信ノードまたはデバイスは、パーソナルコンピュータ、サーバ、ハンドヘルドもしくはラップトップデバイス、モバイルデバイス（携帯電話機、パーソナルディジタルアシスタント（ＰＤＡ）、メディアプレーヤなど）マルチプロセッサシステム、通信に適合した消費者電子デバイス、ミニコンピュータ、メインフレームコンピュータ、分散コンピューティング環境、または、任意の適切なコンピュータプラットフォーム、コンピュータ制御デバイス、もしくは通信ノードを含み得るが、これらに限定されない。
【００２１】
本明細書に開示する通信ノードは、送信または受信されるデータ（データの中間形式を含む）と、肯定応答を待機する間の送信データの一時的コピーと、対応するセグメントの最後のフラグメントの受信を待機する間のセグメント応答メッセージに関する情報とを記憶するために、ローカル記憶デバイスを備えるかまたは外部記憶デバイスへのアクセスを有してよい。本明細書に開示する場合の記憶デバイスは、揮発性メモリデバイス（ランダムアクセスメモリ（ＲＡＭ）など）、不揮発性メモリデバイス（読取専用メモリ（ＲＯＭ）、フラッシュメモリなど）、磁気記憶デバイス、光学記憶デバイス、または任意の適切な記憶デバイスを任意の組合せで含み得るが、これらに限定されない。
【００２２】
本明細書に開示する通信ノードは、通信インタフェースを含む。本明細書に開示する場合の通信インタフェースは、モデム、ネットワークインタフェース、無線周波数（ＲＦ）送受信機、赤外線（ＩＲ）ポート、ユニバーサルシステムバス（ＵＳＢ）ポート、または任意の適切な通信インタフェースを任意の組合せで含み得るが、これらに限定されない。通信インタフェースは、有線接続、ワイヤレス接続、またはこれらの任意の適切な組合せを含み得る。
【００２３】
本明細書に開示する通信ノードは、キーボード、キーパッド、マイクロホン、ポインティングデバイス、マウス、トラックボール、ジョイスティック、タッチスクリーン、タッチパッド、カメラ、または任意の適切な入力デバイスなどの入力デバイス（複数可）を任意の組合せで含み得る。本明細書に開示する通信ノードは、表示装置、スピーカ、プリンタ、モニタ、または任意の適切な出力デバイスなどの出力デバイス（複数可）を任意の組合せで含み得る。
【００２４】
図３を参照すると、データを送信ノードから宛先ノードに移送するためのプロセス３００の例示的な一実施形態が、３０２で開始する。３０２では、１つまたは複数の通信パスを介して送信ノードから宛先ノードに選択データを移送するために、送信ノードにおいて選択データが処理されてデータパケットのストリームが形成される。データパケットのストリームは、データパケットの第１のグループを少なくとも含む。データパケットの第１のグループは、選択データの第１のセグメントを搬送する。第１のセグメントは、選択データの第１の複数のフラグメントを含む。第１のセグメントは、選択データに関して一意のセグメント識別子に関連する。第１の複数のフラグメント中の各フラグメントは、第１のセグメントと選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連する。
【００２５】
第１のグループの各データパケットは、第１の複数のフラグメントのうちの対応するフラグメントと、対応するフラグメントに関連するフラグメント識別子を表すフラグメント識別値と、第１のセグメントに関連するセグメント識別子を表すセグメント識別値と、対応するデータパケットを検証する際に使用される検証チェック値とを搬送する。第１のグループの最後のデータパケットは、対応するデータパケットを第１のグループの最後のデータパケットとして識別するセグメント終了値を搬送する。
【００２６】
３０４で、第１のグループは、１つまたは複数の通信パスを介して送信ノードから宛先ノードに送信される。第１のグループのデータパケットの送信間で宛先ノードからの第１のセグメント応答メッセージを待機することなく送信が継続するように、第１のグループの最後のデータパケットは最後に送信される。
【００２７】
プロセス３００の別の実施形態では、選択データのフラグメントのサイズは、送信ノードと宛先ノードの両方に知られている。プロセス３００のさらに別の実施形態では、第１のセグメントを形成する第１の複数のフラグメントのフラグメント量は、送信ノードと宛先ノードの両方に知られている。プロセス３００のさらに別の実施形態では、各データパケットに関連する検証チェック値は、対応するデータパケットについてのチェックサム値である。
【００２８】
図３および４を参照すると、データを送信ノードから宛先ノードに移送するためのプロセス４００の別の例示的な実施形態が、図３のプロセス３００を含み、３０４から４０２に続く。４０２では、第１のグループの全てのデータパケットが宛先ノードによってうまく受信および検証されたことを示す第１のセグメント応答メッセージが宛先ノードから受信されるまでは少なくとも、送信ノードにおいて、データパケットの第１のグループがセグメント送信バッファに記憶される。
【００２９】
図３および５を参照すると、データを送信ノードから宛先ノードに移送するためのプロセス５００のさらに別の例示的な実施形態が、図３のプロセス３００を含み、３０４から５０２に続く。５０２では、第１のグループの全てのデータパケットが宛先ノードによってうまく受信および検証されたことを示す第１のセグメント応答メッセージが、送信ノードにおいて宛先ノードから受信される。５０４で、プロセス５００は、データパケットの第２のグループ、選択データの第２のセグメント、および選択データの第２の複数のフラグメントに対して、３０２および３０４を繰り返すことによって継続する。この実施形態では、データパケットのストリームはデータパケットの第２のグループも少なくとも含み、データパケットの第２のグループは第２のセグメントを搬送し、第２のセグメントは第２の複数のフラグメントを含む。
【００３０】
図３および６を参照すると、データを送信ノードから宛先ノードに移送するためのプロセス６００のさらに別の例示的な実施形態が、図３のプロセス３００を含み、３０４から６０２に続く。６０２では、第１のグループの少なくとも１つのデータパケットが宛先ノードによってうまく受信および検証されなかったことを示す第１のセグメント応答メッセージが、送信ノードにおいて宛先ノードから受信される。６０４で、プロセス６００は、再送間で宛先ノードからの別のセグメント応答メッセージを待機することなく再送が継続するように、送信ノードから宛先ノードに、宛先ノードによってうまく受信および検証されなかった第１のグループの各データパケットを再送し第１のグループの最後のデータパケットを再送することによって継続する。プロセス６００の別の実施形態では、宛先ノードからの第１のセグメント応答メッセージは、うまく受信および検証されなかった第１のグループの各データパケットに関連するセグメント識別子およびフラグメント識別子を示す。
【００３１】
図３および７を参照すると、データを送信ノードから宛先ノードに移送するためのプロセス７００のさらに別の例示的な実施形態が、図３のプロセス３００を含み、３０４から７０２に続く。７０２では、第１のグループの最後のデータパケットが宛先ノードに送信されてから所定時間内にセグメント応答メッセージが宛先ノードから受信されなかった場合に、第１のグループの最後のデータパケットが送信ノードから宛先ノードに再送される。
【００３２】
図８を参照すると、通信ノード８００の例示的な一実施形態が、通信コントローラ８０２、データフラグメント化モジュール８０４、データセグメント化モジュール８０６、データパケット構築モジュール８０８、および通信インタフェースモジュール８１０を備える。通信ノード８００（すなわち送信ノード）は、データを別の通信ノード８１２（すなわち宛先ノード）に移送するものである。通信コントローラ８０２は、データフラグメント化モジュール８０４、データセグメント化モジュール８０６、およびデータパケット構築モジュール８０８がデータソース８１４からの選択データを処理するのを制御して、データパケットのストリームを構築するものである。データソース８１４は、通信ノード８００の内部または外部にあるものとすることができる。データソース８１４は、記憶デバイスに記憶されたファイル、デバイスもしくはアプリケーションプログラムから出力されたデータのストリーム、または任意の適切なデータソースとすることができる。通信コントローラ８０２はまた、データパケットのストリームを宛先ノード８１２に送信するよう通信インタフェースモジュール８１０を制御するものである。データパケットのストリームは、送信ノード８００と宛先ノード８１２の両方からアクセス可能な通信ネットワーク８１６を介して、宛先ノード８１２に移送することができる。
【００３３】
通信ネットワーク８１６は、任意の適切なタイプの通信ネットワークを含み得る。様々な実施形態で、通信ネットワーク８１６は、複数の通信ネットワークおよび複数のタイプの通信ネットワークを任意の適切な組合せで含み得る。例えば、通信ネットワーク８１６は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、有線ネットワーク、ワイヤレスネットワーク、セルラーネットワーク、衛星通信ネットワーク、電話ネットワーク、公衆交換電話網（ＰＳＴＮ）、無線通信ネットワーク、衛星テレビジョンネットワーク、ケーブルテレビジョンネットワーク、イントラネット、ネットワーク間ネット（インターネットを含む）、および任意の適切な通信ネットワークの、任意の組合せを含み得る。データパケットのストリームは、通信ネットワーク８１６を通して、１つまたは複数の通信パスを介して宛先ノード８１２に移送することができる。別の実施形態では、データパケットのストリームは、送信ノード８００と宛先ノード８１２との間の直接通信パス８１８を介して宛先ノード８１２に移送することができる。
【００３４】
データフラグメント化モジュール８０４は、選択データをフラグメントに分割するものである。データセグメント化モジュール８０６は、選択データのフラグメントをセグメントにグループ化するものである。データパケット構築モジュール８０８は、選択データのフラグメントおよびセグメントからデータパケットのストリームを形成するものである。データパケット構築モジュール８０８は、各データパケットが選択データのフラグメントに対応し、データパケットの各グループが選択データのセグメントに対応するように、データパケットのストリームをデータパケットのグループに形成する。
【００３５】
データパケット構築モジュール８０８によって形成されたデータパケットのストリームは、データパケットの第１のグループを少なくとも含む。データパケットの第１のグループは、選択データの第１のセグメントを搬送する。第１のセグメントは、選択データの第１の複数のフラグメントを含む。第１のセグメントは、選択データに関して一意のセグメント識別子に関連する。第１の複数のフラグメント中の各フラグメントは、第１のセグメントと選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連する。この実施形態では、第１のグループの各データパケットは、第１の複数のフラグメントのうちの対応するフラグメントと、対応するフラグメントに関連するフラグメント識別子を表すフラグメント識別値と、第１のセグメントに関連するセグメント識別子を表すセグメント識別値と、対応するデータパケットを検証する際に使用される検証チェック値とを搬送する。第１のグループの最後のデータパケットは、対応するデータパケットを第１のグループの最後のデータパケットとして識別するセグメント終了値を搬送する。
【００３６】
通信インタフェースモジュール８１０は、データパケット構築モジュール８０８からデータパケットの第１のグループを受け取って、通信コントローラ８０２の制御下で１つまたは複数の通信パスを介して送信ノード８００から宛先ノード８１２に第１のグループを送信するものであり、第１のグループのデータパケットの送信間で宛先ノード８１２からの第１のセグメント応答メッセージを待機することなく送信が継続するように、第１のグループの最後のデータパケットは最後に送信される。
【００３７】
通信ノード８００の別の実施形態では、選択データのフラグメントのサイズは、通信コントローラ８０２と宛先ノード８１２の両方に知られている。通信ノード８００のさらに別の実施形態では、第１のセグメントを形成する第１の複数のフラグメントのフラグメント量は、通信コントローラ８０２と宛先ノード８１２の両方に知られている。通信ノード８００のさらに別の実施形態では、データパケット構築モジュール８０８によって各データパケットに関連付けられる検証チェック値は、対応するデータパケットについてのチェックサム値である。
【００３８】
さらに別の実施形態では、通信ノード８００はまた、第１のグループの全てのデータパケットが宛先ノード８１２によってうまく受信および検証されたことを示す第１のセグメント応答メッセージが宛先ノード８１２から受信されるまでは少なくとも、データパケットの第１のグループを記憶するための、セグメント送信バッファ８２０を備える。
【００３９】
通信ノード８００の別の実施形態では、第１のグループの全てのデータパケットが宛先ノード８１２によってうまく受信および検証されたことを示す第１のセグメント応答メッセージを、通信コントローラ８０２において宛先ノード８１２から通信インタフェースモジュール８１０を介して受信した後、通信コントローラ８０２は、データパケットの第２のグループ、選択データの第２のセグメント、および選択データの第２の複数のフラグメントに対して、データフラグメント化モジュール８０４、データセグメント化モジュール８０６、データパケット構築モジュール８０８、および通信インタフェースモジュール８１０を制御する。この実施形態では、データパケットのストリームはデータパケットの第２のグループも少なくとも含み、データパケットの第２のグループは第２のセグメントを搬送し、第２のセグメントは第２の複数のフラグメントを含む。
【００４０】
通信ノード８００のさらに別の実施形態では、第１のグループの少なくとも１つのデータパケットが宛先ノードによってうまく受信および検証されなかったことを示す第１のセグメント応答メッセージを、通信コントローラ８０２において宛先ノード８１２から通信インタフェースモジュール８１０を介して受信した後、通信コントローラ８０２は、再送間で宛先ノード８１２からの別のセグメント応答メッセージを待機することなく再送が継続するように、宛先ノード８１２に、宛先ノード８１２によってうまく受信および検証されなかった第１のグループの各データパケットを再送し第１のグループの最後のデータパケットを再送するよう、通信インタフェースモジュール８１０を制御する。通信ノード８００のさらに別の実施形態では、宛先ノード８１２からの第１のセグメント応答メッセージは、うまく受信および検証されなかった第１のグループの各データパケットに関連するセグメント識別子およびフラグメント識別子を示す。
【００４１】
通信ノード８００のさらに別の実施形態では、通信コントローラ８０２は、第１のグループの最後のデータパケットが宛先ノード８１２に送信されてから所定時間内にセグメント応答メッセージが宛先ノード８１２から受信されなかった場合に、第１のグループの最後のデータパケットを宛先ノード８１２に再送するよう、通信インタフェースモジュール８１０を制御する。
【００４２】
図９を参照すると、データフロー図がプロセス９００の例示的な一実施形態を示すが、プロセス９００は、１つまたは複数の通信パスを介して送信ノードから宛先ノードに選択データ９０２を移送するために、送信ノードにおいて中間プロセス９０６を使用して選択データ９０２を処理してデータパケットのストリーム９０４を形成するものである。データパケットのストリーム９０４は、データパケットの２つ以上のグループ９０８を含む。データパケットの各グループ９０８は、選択データ９０２のセグメント９１０を搬送する。各セグメント９１０は、選択データ９０２の複数のフラグメント９１２を含む。各セグメント９１０は、選択データ９０２に関して一意のセグメント識別子９１４に関連する。各フラグメント９１２は、対応するセグメント９１０と選択データ９０２とのうちの少なくとも一方に関して一意のフラグメント識別子９１６に関連する。各グループの各データパケット９１８は、対応する複数のフラグメントのうちの対応するフラグメント９１２と、対応するフラグメント９１２に関連するフラグメント識別子を表すフラグメント識別値９１６と、対応するセグメント９１０に関連するセグメント識別子を表すセグメント識別値９１４と、対応するデータパケットを検証する際に使用される検証チェック値９２０とを搬送する。各グループ９０８の最後のデータパケット９２２は、対応するデータパケット９１８を対応するグループ９０８の最後のデータパケット９２２として識別するセグメント終了値９２４を搬送する。
【００４３】
図１０を参照すると、データフロー図が、データを送信ノード（ノードＡ）から宛先ノード（ノードＢ）に移送するためのプロセスの例示的なシナリオでどのようにデータパケットおよび応答メッセージが交換されるかを示す。ノードＡは、選択データを処理してデータパケットを宛先エンドポイント（ノードＢ）に送信しているエンドポイントである。
【００４４】
ノードＡとノードＢは、開始イベントに基づいて初期メッセージを交換する。ノードＡからの初期メッセージは、マルチパケット転送で２５個のパケットを予期するよう、ノードＢに通知を提供する。ノードＢは、初期メッセージが受信されたことの肯定応答（ｇｏ）を含む応答メッセージを送信する。初期メッセージは、各データパケットによって搬送されるデータフラグメントの合意済みサイズ、および、データパケットのグループによって搬送されるデータセグメント中のフラグメントの合意済み量を確立することができる。ノードＡは、連続したストリーム中でデータパケットの第１のグループを送信することに進む。第１のグループは１０個のデータパケットを含み、また、１０個の対応するデータフラグメントを含む第１のデータセグメントを搬送する。このシナリオでは、ノードＢは、第１のグループの１０個のデータパケット全てをうまく受信する。第１のグループの最後のデータパケットをうまく受信した後、ノードＢは、第１のグループ中の全てのデータパケットの受信を肯定応答する応答メッセージをノードＡに送信する。
【００４５】
ノードＡは、連続したストリーム中でデータパケットの第２のグループを送信することに進む。第２のグループは１０個のデータパケットを含み、また、１０個の対応するデータフラグメントを含む第２のデータセグメントを搬送する。このシナリオでは、ノードＢが第２のグループの２番目および３番目のデータパケットを受信しないか、または、２番目および３番目のデータパケットの検証チェックが失敗する。第２のグループの最後のデータパケットをうまく受信した後、ノードＢは、２番目および３番目のデータパケットがうまく受信されなかったことを示す応答メッセージをノードＡに送信する。
【００４６】
ノードＡは、連続したストリーム中でデータパケットの第２のグループの２番目、３番目、および最後のデータパケットを送信することに進む。このシナリオでは、ノードＢは、第２のグループの２番目、３番目、および最後のデータパケットをうまく受信する。再送を介して最後のデータパケットをうまく受信した後、ノードＢは、第２のグループ中の全てのデータパケットの受信を肯定応答する応答メッセージをノードＡに送信する。
【００４７】
ノードＡは、連続したストリーム中でデータパケットの第３のグループを送信することに進む。第３のグループは５個のデータパケットを含み、また、５個の対応するデータフラグメントを含む第３のデータセグメントを搬送する。このシナリオでは、ノードＢは、第３のグループの５個のデータパケット全てをうまく受信する。第３のグループの最後のデータパケットをうまく受信した後、ノードＢは、第３のグループ中の全てのデータパケットの受信を肯定応答する応答メッセージをノードＡに送信する。
【００４８】
図１１を参照すると、データを送信ノードから宛先ノードに移送するためのプロセス１１００の別の例示的な実施形態が、１１０２で開始する。１１０２では、宛先ノードにおいて第１のデータパケットが送信ノードから受信される。第１のデータパケットは、１つまたは複数の通信パスを介して送信ノードから宛先ノードに選択データを移送するデータパケットのストリームに関連する。データパケットのストリームは、第１のデータパケットが関連する、データパケットの第１のグループを少なくとも含む。データパケットの第１のグループは、選択データの第１のセグメントを搬送する。第１のセグメントは、選択データの第１の複数のフラグメントを含む。第１のセグメントは、選択データに関して一意のセグメント識別子に関連する。第１の複数のフラグメント中の各フラグメントは、第１のセグメントと選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連する。
【００４９】
第１のグループの各データパケットは、第１の複数のフラグメントのうちの対応するフラグメントと、対応するフラグメントに関連するフラグメント識別子を表すフラグメント識別値と、第１のセグメントに関連するセグメント識別子を表すセグメント識別値と、対応するデータパケットを検証する際に使用される検証チェック値とを搬送する。第１のグループの最後のデータパケットは、対応するデータパケットを第１のグループの最後のデータパケットとして識別するセグメント終了値を搬送する。
【００５０】
１１０４で、第１のデータパケットによって搬送された検証チェック値を使用して、第１のデータパケットに対して検証チェックが実施される。次に、第１のデータパケットに対する検証チェックの正または負の結果、ならびに対応するセグメント識別値およびフラグメント識別値が、セグメント応答メッセージバッファに記憶される（１１０６）。１１０８で、プロセス１１００は、第１のグループの最後のデータパケットが１１０２で受信されるまで、第１のグループの次のデータパケットに対して１１０２〜１１０６を繰り返すことによって継続する。
【００５１】
１１１０で、第１のグループの最後のデータパケットに対して１１０２〜１１０６が実施された後、プロセス１１００は、第１のグループの最後のデータパケット中のセグメント終了値を検出することによって継続する。次に、セグメント応答メッセージバッファに記憶された情報が処理されて、第１のグループに関連する第１のセグメント応答メッセージが形成される（１１１２）。１１１４で、第１のセグメント応答メッセージは、１つまたは複数の通信パスを介して宛先ノードから送信ノードに送信される。
【００５２】
プロセス１１００の別の実施形態では、送信ノードへの第１のセグメント応答メッセージは、第１のグループの全てのデータパケットが宛先ノードによってうまく受信および検証されたことを示す。この実施形態では、プロセス１１００はまた、データパケットの第２のグループ、選択データの第２のセグメント、選択データの第２の複数のフラグメント、および第２のセグメント応答メッセージに対して、１１０２〜１１１４を繰り返すことを含む。述べる実施形態では、データパケットのストリームはデータパケットの第２のグループも少なくとも含み、データパケットの第２のグループは第２のセグメントを搬送し、第２のセグメントは第２の複数のフラグメントを含む。
【００５３】
プロセス１１００のさらに別の実施形態では、送信ノードへの第１のセグメント応答メッセージは、第１のグループの少なくとも１つのデータパケットが宛先ノードによってうまく受信および検証されなかったことを示す。プロセス１１００の他の実施形態では、送信ノードへの第１のセグメント応答メッセージは、うまく受信および検証されなかった第１のグループの各データパケットに関連するセグメント識別子およびフラグメント識別子を示す。
【００５４】
さらに別の実施形態では、プロセス１１００はまた、データパケットの第１のグループについてセグメント応答メッセージバッファに記憶されたフラグメント識別子のシーケンス化の分断を、１１１２における処理が示すことに少なくとも部分的に基づいて、第１のグループに関連する少なくとも１つのデータパケットが宛先ノードによって受信されなかったと決定することを含む。さらに別の実施形態では、プロセス１１００はまた、対応するデータパケットについてセグメント応答メッセージバッファに記憶された負の結果を、１１１２における処理が示すことに少なくとも部分的に基づいて、第１のグループに関連する少なくとも１つのデータパケットが１１０４における検証チェックに失敗したと決定することを含む。
【００５５】
さらに別の実施形態では、プロセス１１００はまた、宛先ノードにおいて、送信ノードから第１の再送データパケットを受信することを含む。第１の再送データパケットは、宛先ノードによってうまく受信および検証されなかった第１のグループの少なくとも１つのデータパケットからのものである。この実施形態では、プロセス１１００は、第１の再送データパケットによって搬送された検証チェック値を使用して第１の再送データパケットに対して検証チェックを実施し、第１の再送データパケットに対する検証チェックの正または負の結果をセグメント応答メッセージバッファに記憶することによって、継続する。この実施形態では、第１のグループの最後のデータパケットが再送および受信されるまで、宛先ノードによってうまく受信および検証されなかった第１のグループの少なくとも１つのデータパケットからの次の再送データパケットに対してこれらのステップが繰り返される。再送された最後のデータパケットが受信された後、第１のグループの再送された最後のデータパケット中のセグメント終了値が検出される。次いで、セグメント応答メッセージバッファに記憶された情報が処理されて、第１のグループに関連する第１のセグメント再送メッセージが形成される。次に、第１のセグメント再送メッセージは、１つまたは複数の通信パスを介して宛先ノードから送信ノードに送信される。
【００５６】
図１２を参照すると、通信ノード１２００の例示的な一実施形態が、通信インタフェースモジュール１２０４、データパケット分解モジュール１２０６、データセグメント化解除モジュール１２０８、データフラグメント化解除モジュール１２１０、およびセグメント応答メッセージバッファ１２１２を備える。通信ノード１２００（すなわち宛先ノード）は、別の通信ノード１２１４（すなわち送信ノード）によって移送されたデータを受信するものである。通信コントローラ１２０２は、通信インタフェースモジュール１２０４が送信ノード１２１４からデータパケットのストリームを受信するのを制御するものである。データパケットのストリームは、宛先ノード１２００と送信ノード１２１４の両方からアクセス可能な通信ネットワーク１２１８を介して、送信ノード１２１４から移送することができる。
【００５７】
通信ネットワーク１２１８は、任意の適切なタイプの通信ネットワークを含み得る。様々な実施形態で、通信ネットワーク１２１８は、複数の通信ネットワークおよび複数のタイプの通信ネットワークを任意の適切な組合せで含み得る。例えば、通信ネットワーク１２１８は、ＬＡＮ、ＷＡＮ、有線ネットワーク、ワイヤレスネットワーク、セルラーネットワーク、衛星通信ネットワーク、電話ネットワーク、ＰＳＴＮ、無線通信ネットワーク、衛星テレビジョンネットワーク、ケーブルテレビジョンネットワーク、イントラネット、ネットワーク間ネット（インターネットを含む）、および任意の適切な通信ネットワークの、任意の組合せを含み得る。データパケットのストリームは、通信ネットワーク１２１８を通して、１つまたは複数の通信パスを介して送信ノード１２１４から移送することができる。別の実施形態では、データパケットのストリームは、宛先ノード１２００と送信ノード１２１４との間の直接通信パス１２２０を介して送信ノード１２１４から移送することができる。
【００５８】
通信コントローラ１２０２はまた、データパケット分解モジュール１２０６、データセグメント化解除モジュール１２０８、およびデータフラグメント化解除モジュール１２１０がデータパケットを逆処理するのを制御して、データ宛先１２１６に向けて選択データをアンラップするものである。データ宛先１２１６は、記憶デバイス、処理デバイス、アプリケーションプログラム、または任意の適切なデータ宛先とすることができる。
【００５９】
データパケット分解モジュール１２０６は、ストリームからデータパケットのグループを取り込み、グループを個々のデータパケットに分解し、個々のデータパケットを分解して、対応するデータパケットによって搬送されたデータフラグメントおよびデータセグメントおよび情報を回復するものである。データセグメント化解除モジュールは、データパケットからデータフラグメントを取り込んでデータセグメントに構成するものである。データフラグメント化解除モジュールは、データセグメントのデータフラグメントを取り込んで構成し、データパケットのストリームを介して宛先ノード１２００に移送された選択データの対応部分を形成するものである。
【００６０】
通信インタフェースモジュール１２０４は、宛先ノード１２００において送信ノード１２１４からの第１のデータパケットを受信するものである。第１のデータパケットは、１つまたは複数の通信パスを介して送信ノード１２１４から宛先ノード１２００に選択データを移送するデータパケットのストリームに関連する。データパケットのストリームは、第１のデータパケットが関連する、データパケットの第１のグループを少なくとも含む。データパケットの第１のグループは、選択データの第１のセグメントを搬送する。第１のセグメントは、選択データの第１の複数のフラグメントを含む。第１のセグメントは、選択データに関して一意のセグメント識別子に関連する。第１の複数のフラグメント中の各フラグメントは、第１のセグメントと選択データとのうちの少なくとも一方に関して一意のフラグメント識別子に関連する。この実施形態では、第１のグループの各データパケットは、第１の複数のフラグメントのうちの対応するフラグメントと、対応するフラグメントに関連するフラグメント識別子を表すフラグメント識別値と、第１のセグメントに関連するセグメント識別子を表すセグメント識別値と、対応するデータパケットを検証する際に使用される検証チェック値とを搬送する。第１のグループの最後のデータパケットは、対応するデータパケットを第１のグループの最後のデータパケットとして識別するセグメント終了値を搬送する。
【００６１】
通信コントローラ１２０２は、第１のデータパケットによって搬送された検証チェック値を使用して第１のデータパケットに対して検証チェックを実施し、第１のデータパケットに対する検証チェックの正または負の結果、ならびに対応するセグメント識別値およびフラグメント識別値をセグメント応答メッセージバッファ１２１２に記憶し、第１のグループの最後のデータパケットが受信されるまで第１のグループの次のデータパケットに対して受信と検証チェックの実施と結果の記憶とを繰り返すものである。最後のデータパケットが受信された後、通信コントローラ１２０２は、第１のグループの最後のパケット中のセグメント終了値を検出し、セグメント応答メッセージバッファ１２１２に記憶された情報を処理して第１のグループに関連する第１のセグメント応答メッセージを形成し、１つまたは複数の通信パスを介して宛先ノード１２００から送信ノード１２１４に第１のセグメント応答メッセージを送信するよう通信インタフェースモジュール１２０４を制御するものである。
【００６２】
通信ノード１２００の別の実施形態では、第１のグループの全てのデータパケットが宛先ノード１２００によってうまく受信および検証されたことを示す第１のセグメント応答メッセージを、通信インタフェースモジュール１２０４を介して通信コントローラ１２０２から送信ノード１２１４に送信した後、通信コントローラ１２０２は、データパケットの第２のグループ、選択データの第２のセグメント、選択データの第２の複数のフラグメント、および第２のセグメント応答メッセージに対して、通信インタフェースモジュール１２０４、データパケット分解モジュール１２０６、データセグメント化解除モジュール１２０８、およびデータフラグメント化解除モジュール１２１０を制御する。この実施形態では、データパケットのストリームはデータパケットの第２のグループも少なくとも含み、データパケットの第２のグループは第２のセグメントを搬送し、第２のセグメントは第２の複数のフラグメントを含む。
【００６３】
通信ノード１２００のさらに別の実施形態では、第１のグループの少なくとも１つのデータパケットが宛先ノード１２００によってうまく受信および検証されなかったことを示す第１のセグメント応答メッセージを、通信インタフェースモジュール１２０４を介して通信コントローラ１２０２から送信ノード１２１４に送信する。通信ノード１２００の他の実施形態では、送信ノード１２１４への第１のセグメント応答メッセージは、うまく受信および検証されなかった第１のグループの各データパケットに関連するセグメント識別子およびフラグメント識別子を示す。
【００６４】
通信ノード１２００のさらに別の実施形態では、通信コントローラ１２０２は、データセグメント化解除モジュール１２０８とデータフラグメント化解除モジュール１２１０とのうちの少なくとも一方と共に、データパケットの第１のグループについてのフラグメント識別子のシーケンス化の分断をセグメント応答メッセージバッファ１２１２が示すことに少なくとも部分的に基づいて、第１のグループに関連する少なくとも１つのデータパケットが宛先ノード１２００によって受信されなかったと決定する。通信ノード１２００のさらに別の実施形態では、通信コントローラ１２０２は、データパケット分解モジュール１２０６と共に、対応するデータパケットについての負の結果をセグメント応答メッセージバッファ１２１２が示すことに少なくとも部分的に基づいて、第１のグループに関連する少なくとも１つのデータパケットが検証チェックに失敗したと決定することを含む。
【００６５】
通信ノード１２００のさらに別の実施形態では、通信インタフェースモジュール１２０４は、宛先ノード１２００において送信ノード１２１４から第１の再送データパケットを受信するものである。第１の再送データパケットは、宛先ノードによってうまく受信および検証されなかった第１のグループの少なくとも１つのデータパケットからのものである。この実施形態では、通信コントローラ１２０２は、第１の再送データパケットによって搬送された検証チェック値を使用して第１の再送データパケットに対して検証チェックを実施し、第１の再送データパケットに対する検証チェックの正または負の結果をセグメント応答メッセージバッファに記憶し、第１のグループの最後のデータパケットが再送および受信されるまで、宛先ノードによってうまく受信および検証されなかった第１のグループの少なくとも１つのデータパケットからの次の再送データパケットに対して受信と検証チェックと結果の記憶とを繰り返す。再送された最後のデータパケットが受信された後、通信コントローラ１２０２は、第１のグループの再送された最後のデータパケット中のセグメント終了値を検出し、セグメント応答メッセージバッファ１２１２に記憶された情報を処理して第１のグループに関連する第１のセグメント再送メッセージを形成し、１つまたは複数の通信パスを介して宛先ノード１２００から送信ノード１２１４に第１のセグメント再送メッセージを送信するよう通信インタフェースモジュール１２０４を制御する。
【００６６】
再び図３を参照すると、非一過性のコンピュータ可読媒体の例示的な一実施形態がプログラム命令を記憶し、プログラム命令は、コンピュータによって実行されたとき、データを送信ノードから宛先ノードに移送するためのプロセス３００を、対応するコンピュータ制御通信ノードに実施させる。様々な追加の実施形態では、非一過性のコンピュータ可読メモリに記憶されたプログラム命令は、コンピュータによって実行されたとき、図４〜７および１１に関する、データを送信ノードから宛先ノードに移送するためのプロセス４００、５００、６００、７００、１１００に関連する機能の様々な組合せを、コンピュータ制御ルータに実施させることができる。言い換えれば、前述のプロセスの様々な実施形態は、非一過性のコンピュータ可読媒体に記憶されたプログラム命令によって実現することができる。
【００６７】
同様に、様々な実施形態で、非一過性のコンピュータ可読媒体に記憶されたプログラム命令は、コンピュータによって実行されたとき、図８および１２に関して上述した通信ノード８００、１２００の様々な実施形態に関連する機能の様々な組合せを、コンピュータ制御通信ノードに実施させることができる。例えば、コンピュータ制御デバイスは、通信ノード８００、１２００を含んでよい。図８および１２に関して上述した任意の適切なモジュールが、プログラム命令に関連するコンピュータおよび非一過性のコンピュータ可読媒体を含んでよい。別法として、プログラム命令に関連するコンピュータおよび非一過性のコンピュータ可読媒体は、図８および１２に関して上述したモジュールの任意の適切な組合せと動作可能に通信する、個別のまたは結合したコンポーネントであってもよい。
【００６８】
この書面による記述では、最良の形態を含めて本発明を開示するために、かつ、任意のデバイスもしくはシステムを作成および使用することならびに任意の組み込まれる方法を実施することを含めてどんな当業者でも本発明を実践できるようにするために、例を使用している。本発明の特許取得可能な範囲は、特許請求の範囲によって定義され、また、当業者が思いつく他の例も含み得る。このような他の例が、特許請求の範囲の文字通りの言葉と異ならない構造的要素を有するならば、または、特許請求の範囲の文字通りの言葉と本質的な違いを有さない等価な構造的要素を含むならば、このような他の例も特許請求の範囲内にあるものとする。
【符号の説明】
【００６９】
８００  通信ノード（送信ノード）
８０２  通信コントローラ
８０４  データフラグメント化モジュール
８０６  データセグメント化モジュール
８０８  データパケット構築モジュール
８１０  通信インタフェースモジュール
８１２  通信ノード（宛先ノード）
８１４  データソース
８１６  通信ネットワーク
８１８  直接通信パス
８２０  セグメント送信バッファ
９００  プロセス
９０２  選択データ
９０４  データパケットストリーム
９０６  中間処理
９０８  グループ
９１０  セグメント
９１２  フラグメント
９１４  セグメントＩＤ値
９１６  フラグメントＩＤ値
９１８  データパケット
９２０  検証チェック値
９２２  最後のデータパケット（またはグループ）
９２４  セグメント終了値
１２００  通信ノード（宛先ノード）
１２０２  通信コントローラ
１２０４  通信インタフェースモジュール
１２０６  データパケット分解モジュール
１２０８  データセグメント化解除モジュール
１２１０  データフラグメント化解除モジュール
１２１２  セグメント応答メッセージバッファ
１２１４  通信ノード（送信ノード）
１２１６  データ宛先
１２１８  通信ネットワーク
１２２０  直接通信パス
【図１】
2013123219.tif 000003
【図２】
2013123219.tif 000004
【図３】
2013123219.tif 000005
【図４】
2013123219.tif 000006
【図５】
2013123219.tif 000007
【図６】
2013123219.tif 000008
【図７】
2013123219.tif 000009
【図８】
2013123219.tif 000010
【図９】
2013123219.tif 000011
【図１０】
2013123219.tif 000012
【図１１】
2013123219.tif 000013
【図１２】
2013123219.tif 000014
【外国語明細書】
2013123219000001.pdf