特許第6690959号(P6690959)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターデジタル シーイー パテント ホールディングスの特許一覧

特許6690959TCPハンドシェークをリフォームするデバイス及び方法
<>
  • 特許6690959-TCPハンドシェークをリフォームするデバイス及び方法 図000002
  • 特許6690959-TCPハンドシェークをリフォームするデバイス及び方法 図000003
  • 特許6690959-TCPハンドシェークをリフォームするデバイス及び方法 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6690959
(24)【登録日】2020年4月13日
(45)【発行日】2020年4月28日
(54)【発明の名称】TCPハンドシェークをリフォームするデバイス及び方法
(51)【国際特許分類】
   H04L 29/08 20060101AFI20200421BHJP
【FI】
   H04L13/00 307A
【請求項の数】9
【外国語出願】
【全頁数】12
(21)【出願番号】特願2016-27475(P2016-27475)
(22)【出願日】2016年2月17日
(65)【公開番号】特開2016-154332(P2016-154332A)
(43)【公開日】2016年8月25日
【審査請求日】2019年2月14日
(31)【優先権主張番号】15305261.8
(32)【優先日】2015年2月20日
(33)【優先権主張国】EP
(73)【特許権者】
【識別番号】518341334
【氏名又は名称】インターデジタル シーイー パテント ホールディングス
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【弁理士】
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】イーン,オリヴィエ
(72)【発明者】
【氏名】ノイマン,クリストフ
【審査官】 宮島 郁美
(56)【参考文献】
【文献】 国際公開第2014/172499(WO,A1)
【文献】 米国特許第07921282(US,B1)
【文献】 特開2006−074104(JP,A)
【文献】 米国特許出願公開第2014/0325064(US,A1)
【文献】 中国特許出願公開第103475706(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00−12/28,12/44−12/955,29/00
H04B7/24−7/26,H04W4/00−99/00
(57)【特許請求の範囲】
【請求項1】
TCPハンドシェークターミネータデバイスであって
少なくとも1つの外部デバイスと前記TCPハンドシェークターミネータデバイスにおける処理手段との間でメッセージを受信及び送信するインターフェースを有し、
当該TCPハンドシェークターミネータデバイスは、
TCPハンドシェークサーバーデバイスから、前記インターフェースを介して、TCPハンドシェークイニシエータデバイスが対応するSYNメッセージを送信しているSYN−ACKメッセージを受信、前記SYN−ACKメッセージは前記TCPハンドシェークサーバーデバイスのソースIPアドレスを含み、
前記SYN−ACKメッセージに対応するACKメッセージを、前記インターフェースを介して前記ソースIPアドレスによって示される前記TCPハンドシェークサーバーデバイスへ送信する
ように構成された処理手段
更に有するTCPハンドシェークターミネータデバイス。
【請求項2】
送信されたSYNメッセージの記録を保存するTCPスタックにアクセスする手段と、
当該TCPハンドシェークターミネータデバイスが前記対応するSYNメッセージをあたかも送信していたかのように前記TCPスタックにパッチを適用し、及び、前記対応するSYNメッセージに対応する記録を作成することにより、当該TCPハンドシェークターミネータデバイスが前記対応するSYNメッセージをあたかも送信していたかのように、前記TCPハンドシェークを再構築する手段と、
を更に有する請求項1に記載のTCPハンドシェークターミネータデバイス。
【請求項3】
各々の記録は前記SYNメッセージのシーケンス番号を含み、当該TCPハンドシェークターミネータデバイスは、前記SYN−ACKメッセージにおける対応する整数から1を減算することにより、前記対応するSYNメッセージの前記シーケンス番号を取得する手段を更に有する、請求項2に記載のTCPハンドシェークターミネータデバイス。
【請求項4】
前記SYN−ACKメッセージをインターセプトし、そのインターセプトをプロセッサに通知するファイヤウォール手段と、前記ソースIPアドレスに向けて送信される前記対応するSYNメッセージを生成する手段と、TCPスタックを更新する手段とを更に有し、
前記ファイヤウォール手段は、前記プロセッサにより生成される前記対応するSYNメッセージをインターセプトし、前記SYN−ACKメッセージを前記プロセッサに転送するのみである、請求項1に記載のTCPハンドシェークターミネータデバイス。
【請求項5】
TCPハンドシェークターミネータデバイスにおいてTCPハンドシェークを実行するための方法であって:
TCPハンドシェークサーバーデバイスからTCPハンドシェークイニシエータデバイスが対応するSYNメッセージを送信しているSYN−ACKメッセージを受信することであって、前記SYN−ACKメッセージは前記TCPハンドシェークサーバーデバイスのソースIPアドレスを含む、受信すること
記SYN−ACKメッセージに対応するACKメッセージを前記ソースIPアドレスによって示される前記TCPハンドシェークサーバーデバイスへ送信すること
を有する方法。
【請求項6】
アクセス手段により、送信されたSYNメッセージの記録を保存するTCPスタックにアクセスすることと、
再構築手段により、前記TCPハンドシェークターミネータデバイスが前記対応するSYNメッセージをあたかも送信していたかのように前記TCPスタックにパッチを適用し、及び、前記対応するSYNメッセージに対応する記録を作成することにより、前記TCPハンドシェークターミネータデバイスが前記対応するSYNメッセージをあたかも送信していたかのように、前記TCPハンドシェークを再構築することと、
を更に有する請求項に記載の方法。
【請求項7】
各々の記録は前記SYNメッセージのシーケンス番号を含み、
当該方法は、取得手段が、前記SYN−ACKメッセージにおける対応する整数から1を減算することにより、前記対応するSYNメッセージの前記シーケンス番号を取得することを更に有する、請求項に記載の方法。
【請求項8】
ファイヤウォール手段により、前記SYN−ACKメッセージをインターセプトすること
前記ファイヤウォール手段により、そのインターセプトをプロセッサに通知すること
SYNメッセージ生成手段により、前記対応するSYNメッセージを生成すること
SYNメッセージ送信手段により、前記ソースIPアドレスに向けて前記対応するSYNメッセージを送信すること
更新手段により、TCPスタックを更新すること
前記ファイヤウォール手段により、前記プロセッサにより生成された前記対応するSYNメッセージをインターセプトすること;及び
前記ファイヤウォール手段により、前記SYN−ACKメッセージを前記プロセッサに転送すること
を更に有する請求項に記載の方法。
【請求項9】
命令を記憶する非一時的な記憶媒体であって、前記命令は、プロセッサにより実行される場合に、請求項ないしのうち何れか1項に記載の方法を実行する、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般にコンピュータシステムに関連し、特にそのようなシステムにおけるTCP/IPハンドシェークを実行することに関連する。
【背景技術】
【0002】
このセクションは様々な技術的側面を読者に紹介するように意図されており、以下に記述及び/又は請求される本開示の様々な側面に関連する。本説明は、本開示の様々な側面の適切な理解を促すように背景情報を読者に提供することを支援するものと考えられる。従って、これらの記述は、その観点から読み取られるべきであり、従来技術の自認としてではなく理解されるべきである。
【0003】
本説明において、「クライアント」という言葉はTCPクライアント(すなわち、SYNメッセージ及びACKメッセージを送信するデバイス)に関連して使用されることが可能であり、及び、「サーバー」という言葉はTCPサーバー(すなわち、SYNメッセージを受信するデバイス)に関連して使用されることが可能である。そのような「クライアント」は、より一般的な用語の使い方では(ウェブサーバーのような)サーバーであってもよいこと、及び、「サーバー」はそれに応じてウェブクライアントのようなクライアントであってもよいことが、認められるであろう。これらの用語がどのように解釈されるべきかは文脈から明らかである。
【0004】
TCP/IPは非常に良く知られた通信プロトコルである。2つのデバイスの間でTCP/IPコネクションを設定するために、デバイスは図1に示されるTCPハンドシェークを実行する。第1デバイス(クライアントと言及される)は、第1デバイスのIPアドレス及び第1の整数mを含むSYN(m)メッセージを、第2デバイス(サーバーと言及される)に送信する。サーバーがリクエストを受け入れると、受信したIPアドレス宛にSYN-ACK(m+1,n)メッセージで応答し、そのメッセージは、第2の整数nと、第1の整数mを1つインクリメントしたもの(すなわち、m+1)とを含む。SYNメッセージを送信した後、クライアントは、送信したSYNメッセージの記録を維持し、所定の期間にわたって待機し;対応するSYN-ACKメッセージを、期間が経過する前に受信しなかった場合、待機することを止める。サーバーからSYN-ACKメッセージを受信すると、クライアントは、SYN-ACKメッセージがm+1を含むことを検査する。含んでいる場合、第2の整数nを1つだけインクリメントしたもの(すなわち、n+1)を含むACK(n+1)メッセージをサーバーへ送信することにより、受信を確認する。サーバーは、最終的に、ACKメッセージがn+1を含むことを確認する。サーバーの確認が成功すると、以後、ハンドシェークは適切に実行されている。
【0005】
クライアントが、複数のサーバーと並列的にハンドシェークを実行しようとするような所定の状況において、デバイスが、ハンドシェークの間、割り当てられたリソースを維持しなければならないことは、問題となり得る。送信又は受信されるSYNの各々に関し、TCPスタックは1つの伝送制御ブロック(Transmission Control Block:TCB)の記録を開始し、各々の記録は何百バイトも必要とする。3方向ハンドシェークの際に、ネットワーク速度に関する何らの事前予測もなされていない。従って、TCBの記録はおそらく長時間にわたって生き残り、リソースを消費することになる。更に悪いことに、接続されていないデバイス或いはTCPスタックに応答しないデバイスに対するSYNの送信が、ある時間(タイムアウト持続時間)にわたって、対応するTCBを維持する場合、リソースを浪費してしまう。
【0006】
TCPハンドシェークに関する問題の少なくとも一部を克服する解決手段をもたらすことが望まれることは、認められるであろう。本開示はそのような解決手段を提供する。
【発明の概要】
【0007】
第1側面において、本原理はTCPハンドシェークを実行するデバイスに関連する。本デバイスは、少なくとも1つの外部デバイスと当該デバイスのプロセッサとの間でメッセージを送信するように構成されるインターフェース;並びに
インターフェースからSYN-ACKメッセージを受信することであって、当該デバイスは対応するSYNメッセージを送信しておらず、SYN-ACKメッセージはソースアドレスを含む、こと;SYN-ACKメッセージに対応するACKメッセージを生成すること;及び、ソースアドレスへの送信のためにインターフェースにACKメッセージを送信すること;を行うように構成されるプロセッサ;を有する。
【0008】
第1側面の様々な形態は、以下を含む:
・ プロセッサが、送信されたSYNメッセージの記録を保存するTCPスタックにアクセスするように構成され、かつ、当該デバイスが対応するSYNメッセージをあたかも送信していたかのようにTCPスタックにパッチを適用し(patching)、及び、対応するSYNメッセージに対応する記録を作成することにより、当該デバイスが対応するSYNメッセージをあたかも送信していたかのように、TCPハンドシェークを再構築するように構成される。各々の記録はSYNメッセージのシーケンス番号を含むこと、及び、SYN-ACKメッセージにおける対応する整数から1を減算することにより、対応するSYNメッセージのシーケンス番号を取得するように、プロセッサが更に構成されることは、有利である。
【0009】
・ 当該デバイスは、SYN-ACKメッセージをインターセプトし、そのインターセプトをプロセッサに通知するように構成されるファイヤウォールを更に有する。プロセッサは、ソースアドレスに向けて送信される対応するSYNメッセージを生成し、TCPスタックを更新するように更に構成される。ファイヤウォールは、プロセッサにより生成される対応するSYNメッセージをインターセプトし、SYN-ACKメッセージをプロセッサに転送するのみであるように更に構成される。
【0010】
・ プロセッサは、データのリクエスト(第1の整数を含む)をサーバーに送信し、 サーバーからデータを受信し、第1の整数及びSYN-ACKメッセージとともに受信された第2の整数を利用して、SYN-ACKメッセージがリクエストに関連することを確認するように更に構成される。
【0011】
第2側面において、本原理は、TCPハンドシェークを実行するための方法に関連する。デバイスのプロセッサは、SYN-ACKメッセージを受信し、デバイスは対応するSYNメッセージを送信しておらず、SYN-ACKメッセージはソースアドレスを含み、デバイスのプロセッサは、SYN-ACKメッセージに対応するACKメッセージを生成し、ソースアドレスへ送信する。
【0012】
第2側面の様々な形態は、以下を含む:
・ 本方法が、送信されたSYNメッセージの記録を保存するTCPスタックにアクセスするステップと、デバイスが対応するSYNメッセージをあたかも送信していたかのようにTCPスタックにパッチを適用し、及び、対応するSYNメッセージに対応する記録を作成することにより、デバイスが対応するSYNメッセージをあたかも送信していたかのように、TCPハンドシェークを再構築するステップとを更に有する。各々の記録はSYNメッセージのシーケンス番号を含むここと、及び、プロセッサが、SYN-ACKメッセージにおける対応する整数から1を減算することにより、対応するSYNメッセージのシーケンス番号を取得するように構成されることは、有利である。
【0013】
・ 当該デバイスは、SYN-ACKメッセージをインターセプトし、そのインターセプトをプロセッサに通知するように構成されるファイヤウォールを更に有する。プロセッサは、ソースアドレスに向けて送信される対応するSYNメッセージを生成し、TCPスタックを更新するように更に構成される。ファイヤウォールは、プロセッサにより生成される対応するSYNメッセージをインターセプトし、SYN-ACKメッセージをプロセッサに転送するのみであるように更に構成される。
【0014】
・ プロセッサは、データのリクエスト(第1の整数を含む)をサーバーに送信し、 サーバーからデータを受信し、第1の整数及びSYN-ACKメッセージとともに受信された第2の整数を利用して、SYN-ACKメッセージがリクエストに関連することを確認するように更に構成される。
【0015】
第3側面において、本原理はプロセッサを有するサーバーに関連し、プロセッサは、データのリクエストをクライアントから受信することであって、データは第1部分及び第2部分を有し、リクエストはクライアントのアドレスを含む、こと; 第1部分をクライアントに送信すること;及び、TCPハンドシェークのSYNメッセージを、第2部分をクライアントに提供するように構成される別のデバイスへ送信することであって、SYNメッセージはクライアントのアドレスをソースアドレスとして含む、こと;を行うように構成される。
【0016】
第3側面の形態は、リクエストが整数を含むこと、及び、プロセッサが、整数を別のデバイスへSYNメッセージとともに送信するように更に構成されることを含む。
【0017】
第4側面において、本原理は、サーバーのプロセッサにおける方法に関連し、本方法は、データのリクエストをクライアントから受信するステップであって、データは第1部分及び第2部分を有し、リクエストはクライアントのアドレスを含む、ステップ;第1部分をクライアントに送信するステップ;及び、TCPハンドシェークのSYNメッセージを、第2部分をクライアントに提供するように構成される別のデバイスへ送信するステップであって、SYNメッセージはクライアントのアドレスをソースアドレスとして含む、ステップ;を有する。
【0018】
第4側面の形態は、リクエストが整数を含むこと、及び、プロセッサが、整数を別のデバイスへSYNメッセージとともに送信することを含む。
【0019】
第5側面において、本原理は、命令を記憶する非一時的な記憶媒体に関連し、命令は、プロセッサにより実行される場合に、第2側面の方法を実行する。
【図面の簡単な説明】
【0020】
本原理の好ましい特徴が、非限定的な具体例により、添付図面に関連して説明される。
図1図1は従来技術によるTCPハンドシェークを示す。
図2図2は本原理を実現するシステムを示す。
図3図3は本原理に従ってデバイスでTCPハンドシェークを実行する方法を示す。
【発明を実施するための形態】
【0021】
図2は本原理を実現するシステム200を示す。システム200は、イニシエータデバイス(又は開始装置)210と、少なくとも1つのサーバーデバイス(又はサーバー装置)220と、少なくとも1つのターミネータデバイス(又は終端装置)230とを有する。いくつかのデバイスしか示されていないが、これらのデバイスの各々210、220、230は、少なくとも1つのハンドシェーク処理ユニット(プロセッサ)211、231と、メモリ212、232と、少なくとも1つの通信インターフェース(I/O)213、233とを有し、通信インターフェースは、他のデバイスからプロセッサへ及びプロセッサから他のデバイスへのメッセージを通信するように構成される。ターミネータデバイス230はファイヤウォール234を含むことも可能であり、ファイヤウォールは場合によってはプロセッサ231の中又は別のプロセッサ(図示せず)の中に実装される。図示のデバイスは簡明化の理由から非常に簡略化されていること、及び、実際のデバイスは内部接続及び電力供給などのような機能を更に有することを、当業者は認めるであろう。プロセッサは、本願で説明されるように、メッセージを取り扱うことや、計算を実行すること等のための命令(場合によっては、少なくとも部分的にメモリに保存される)を実行するように構成される。非一時的な記憶媒体(図示せず)は命令を格納し、命令は、プロセッサにより実行されると、本願で説明されるようにターミネータデバイスでTCPハンドシェーク方法を実行する。
【0022】
TCPハンドシェークを実行するために、イニシエータデバイス210は、SYN(m)メッセージ240をサーバー220へ送信することにより、それを開始する。SYNメッセージは、第1の整数mと、標準的な従来のハンドシェークとは異なり、ターミネータデバイスのIPアドレスとを含む。この後、イニシエータデバイス210は、送信したSYNメッセージ240に関する全てを忘れることが可能であり;イニシエータデバイス210にとってTCBを保存することは有用ではなく、その理由は、イニシエータデバイスは対応する如何なるSYN-ACKメッセージも受信しないであろうからである。例えば多くのサーバーデバイスの監視に特に適した一実施形態では、イニシエータデバイス210は、ターミネータデバイス間の負荷のバランスをとるために、(複数の)ターミネータデバイスのネットワークアドレスの中からソースアドレスを選択することが可能であり;従って、ターミネータデバイスにとって、各自の負荷についてのフィードバックをイニシエータデバイスに提供することは有用である。
【0023】
サーバー220は、従来のサーバーのように反応し、すなわち、m+1及び第2の整数nを含む対応するSYN-ACKメッセージ(m+1,n)とともに応答する。サーバー220は、SYNメッセージ240のソースIPアドレスへレスポンスを送信し、その理由は、サーバー220は、それがSYN-ACKメッセージ240の送信元のIPアドレスであると考えているからであることに、留意すべきである。
【0024】
SYN-ACKメッセージを受信するターミネータデバイス230は、対応するTCBを保存しておらず、これは、SYN-ACKメッセージがTCPハンドシェークに関する最初の接触(ファーストコンタクト)であることを意味する。そして、ターミネータデバイス230は、あたかも当初のSYNメッセージ240を送信していたかのように、TCPハンドシェークを(改めて)構築する必要がある。これは様々な方法で実行されることが可能であり、以下に2つの具体例が示される。
【0025】
第1方法は、TCP状態マシンを「ESTABLISHED(設定済み)」に設定すること、及び、第1の整数mに対応するシーケンス番号を利用してTCBを再構築することにより、TCPスタックにパッチを適用することである。シーケンス番号は、SYN-ACKメッセージ250で受信したインクリメントされた整数から1を減算することにより、すなわち(m+1)-1を計算することにより、容易に算出される。一般に、TCPスタックはSYNメッセージ240のタイムスタンプも維持しており;このタイムスタンプは、SYN-ACKメッセージ250の受信時点より前の時間を利用して再構築されてもよい。この方法の利点は簡易(lightweight)であることであるが、その一方において、TCPコードにパッチを適用する点で複雑化するかもしれない。
【0026】
第2方法は、ターミネータデバイス230におけるファイヤウォール234を利用してSYN-ACKメッセージ250をインターセプト(受信)し、その受信をターミネータデバイス230の機能部に通知することである。機能部は、サーバー220へ向けて送信されるがファイヤウォールによってインターセプトされる対応するSYN(m)メッセージを生成し、ファイヤウォールはSYN-ACKメッセージ250をTCPスタックに転送するのみである。この方法の利点は、TCPスタックが修正されないことであるが、ファイヤウォール及び機能部のような追加的なリソースを必要とする。
【0027】
TCPスタックは、プロセッサが保存に十分なリソースを有する場合にはプロセッサに若しくはメモリに、又は、それらの組み合わせで保存されることが可能である。何れにせよ、プロセッサはTCPスタックに対するアクセス(権)を有する。
【0028】
そして、ターミネータデバイス230はACK(n+1)メッセージ260をサーバー220に送信し、以後ハンドシェークは終了する。
【0029】
図3は、本原理によるターミネータデバイスにおけるTCPハンドシェークを実行する方法を示す。ターミネータデバイス230は、今後のTCPハンドシェークのための如何なるTCBも保存していない;言い換えれば、開始SYNメッセージを送信しておらず、及び、そのようなメッセージが送信されたことにさえ気付いていなくてもよい。
【0030】
ステップS310において、ターミネータデバイスの通信インターフェースは、SYN-ACK(m+ 1,n)メッセージをサーバーから受信する。ステップS320では、ターミネータデバイスは、例えば、上述した2つの方法の何れかを利用して、あたかもオリジナルのSYNメッセージを送信していたかのように、TCPハンドシェークを再構築する。そして、ターミネータデバイスは、ステップS330において、ACK(n+1)メッセージをサーバーに送信し、以後ハンドシェークは終了する。
【0031】
本原理は、ゲートウェイや移動電話のようなリモート監視装置で使用されてもよい。そのような監視に対する従来のソリューションは、主に、 (何十万ないし何百万もの)大量のデバイスに起因する問題に遭遇し、その理由は、監視サーバーにおいて、SYNメッセージが送信される各デバイスにリソースが割り当てられるからである。主な従来のソリューションは、横並びのスケーリング(horizontal scaling)であり、すなわち、監視されるべきデバイス数の関数として(それに応じて)監視サーバーを追加している。スケーリングのコストはせいぜい直線的であるが、通常、外的なインフラストラクチャが必要になる。
【0032】
本原理はその問題を少なくとも部分的に克服できることが認められるであろう。イニシエータデバイスは、如何なる状態も維持せず、如何なるTCBも保存せず、これらは、(SYNメッセージを送信するのに必要なリソースを除いて)監視される各々のデバイスにリソースを割り当てる必要がないことを意味する。監視されるデバイスは、上述したように従来の方法で動作する。最終的に、ターミネータデバイス(この例では、通常、1つより多い)は、SYN-ACKメッセージの受信の場合に、監視されるデバイスにリソースを割り当てることしか要しない。従って、何らかの又は他の理由で応答しないデバイスにリソースを割り当てる必要はない。
【0033】
本原理は、ウェブブラウザのようなクライアントが、様々なプロバイダにより提供される情報を有するウェブページを要求する場合に使用されてもよい。そのようなウェブページの主な具体例は、オンライン新聞のフロントページであり、それは、新聞自体により提供されるニュース記事とは別に、様々な広告プロバイダにより提供さえる広告を含んでいる。
【0034】
本原理は次のような例にも使用可能であることが認められるであろう。クライアントがサーバーからのウェブページを要求する場合に、サーバーは、イニシエータデバイスの役割を果たし、及び、トラッキング(tracking)、広告、キャッシング(caching)、組込コンテンツ等を要求されたウェブページに提供する第三者サーバーにSYNメッセージを送信することが可能である。サーバーは、これらのSYNメッセージのソースアドレスをなりすまし(spoof)、SYNメッセージがクライアントから由来しているように見せる。第三者サーバーは、通常のTCPハンドシェークに従って動作し、すなわち、それらは、クライアントに送信されるSYN-ACKメッセージとともに「応答」する。そして、SYN-ACKメッセージを受信する場合に、クライアントはターミネータデバイスのように動作し、すなわち、TCPコネクションを再接続し、SYNメッセージを第三者サーバーへ送信する。
【0035】
SYNクッキー(SYN-cookies)に類似する特徴を利用することは有用である:クライアントのリクエストは或る整数を有し、その整数は、クライアントへ送信されるSYN-ACKメッセージに含めるために、サーバーにより第三者サーバーへ転送される。このようにして、クライアントは、受信されるSYN-ACKメッセージが、ウェブページのリクエストに関連することを確認することが可能である。第三者サーバーは、整数をそのまま含めてもよいが、含める前に、例えば(SYNメッセージ中の整数に対してなされたのと同様に)整数をインクリメントすることにより、整数を処理してもよく、何れにせよ、受信される整数は、SYN-ACKメッセージがリクエストに関連することの確認を可能にする。
【0036】
これについての利点は、接続の高速化が可能になることであり、その理由は、クライアントと第三者サーバーとの間の接続が迅速化するからであり、また、サーバーがTCPハンドシェークを開始する場合にウェブページ中の第三者サーバーに関する情報をクライアントが待機する必要がないからである。修正されたTCPハンドシェークを処理することが可能であることを、クライアントが例えばリクエストにおいてサーバーに通知することは有利であり、その理由は、そのように動作できないデバイスは第三者サーバーからのSYN-ACKメッセージを単に拒否することになるからである。
【0037】
本原理は、少なくとも所定の状況において、従来のTCPハンドシェークを改善することが可能なTCPハンドシェークを提供することが、認められるであろう。
【0038】
本説明及び(適切であるならば)特許請求の範囲及び図面に開示される各々の特徴は、独立に又は何らかの適切な組み合わせにより提供されてよい。ハードウェアで実現されるように説明される特徴は、ソフトウェアで実現されてもよく、その逆も成り立つ。参照番号が特許請求の範囲に登場する場合、それらは例示であるに過ぎず、特許請求の範囲に対する如何なる効力の制限も有しない。
[付記1]
TCPハンドシェークを実行するデバイスであって:
少なくとも1つの外部デバイスと当該デバイスの処理手段との間でメッセージを送信するインターフェース手段;並びに
インターフェースからSYN−ACKメッセージを受信することであって、当該デバイスは対応するSYNメッセージを送信しておらず、前記SYN−ACKメッセージはソースアドレスを含む、こと;
前記SYN−ACKメッセージに対応するACKメッセージを生成すること;及び
前記ソースアドレスへの送信のために前記インターフェースに前記ACKメッセージを送信すること;のための処理手段;
を有するデバイス。
[付記2]
送信されたSYNメッセージの記録を保存するTCPスタックにアクセスする手段と、
当該デバイスが前記対応するSYNメッセージをあたかも送信していたかのように前記TCPスタックにパッチを適用し、及び、前記対応するSYNメッセージに対応する記録を作成することにより、当該デバイスが前記対応するSYNメッセージをあたかも送信していたかのように、前記TCPハンドシェークを再構築する手段と、
を更に有する付記1に記載のデバイス。
[付記3]
各々の記録は前記SYNメッセージのシーケンス番号を含み、当該デバイスは、前記SYN−ACKメッセージにおける対応する整数から1を減算することにより、前記対応するSYNメッセージの前記シーケンス番号を取得する手段を更に有する、付記2に記載のデバイス。
[付記4]
前記SYN−ACKメッセージをインターセプトし、そのインターセプトをプロセッサに通知するファイヤウォール手段と、前記ソースアドレスに向けて送信される前記対応するSYNメッセージを生成する手段と、TCPスタックを更新する手段とを更に有し、
前記ファイヤウォール手段は、前記プロセッサにより生成される前記対応するSYNメッセージをインターセプトし、前記SYN−ACKメッセージを前記プロセッサに転送するのみである、付記1に記載のデバイス。
[付記5]
データのリクエストをサーバーに送信する手段であって、前記リクエストは第1の整数を含む、手段;
前記サーバーからデータを受信する手段;及び
前記第1の整数及び前記SYN−ACKメッセージとともに受信された第2の整数を利用して、前記SYN−ACKメッセージが前記リクエストに関連することを確認する手段;
を更に有する付記1に記載のデバイス。
[付記6]
デバイスにおいてTCPハンドシェークを実行するための方法であって:
受信手段により、SYN−ACKメッセージを受信することであって、前記デバイスは対応するSYNメッセージを送信しておらず、前記SYN−ACKメッセージはソースアドレスを含む、受信すること;
生成及び送信手段により、前記SYN−ACKメッセージに対応するACKメッセージを生成し、前記ソースアドレスへ送信すること;
を有する方法。
[付記7]
アクセス手段により、送信されたSYNメッセージの記録を保存するTCPスタックにアクセスすることと、
再構築手段により、前記デバイスが前記対応するSYNメッセージをあたかも送信していたかのように前記TCPスタックにパッチを適用し、及び、前記対応するSYNメッセージに対応する記録を作成することにより、前記デバイスが前記対応するSYNメッセージをあたかも送信していたかのように、前記TCPハンドシェークを再構築することと、
を更に有する付記6に記載の方法。
[付記8]
各々の記録は前記SYNメッセージのシーケンス番号を含み、
当該方法は、取得手段が、前記SYN−ACKメッセージにおける対応する整数から1を減算することにより、前記対応するSYNメッセージの前記シーケンス番号を取得することを更に有する、付記7に記載の方法。
[付記9]
ファイヤウォール手段により、前記SYN−ACKメッセージをインターセプトすること;
前記ファイヤウォール手段により、そのインターセプトをプロセッサに通知すること;
SYNメッセージ生成手段により、前記対応するSYNメッセージを生成すること;
SYNメッセージ送信手段により、前記ソースアドレスに向けて前記対応するSYNメッセージを送信すること;
更新手段により、TCPスタックを更新すること;
前記ファイヤウォール手段により、前記プロセッサにより生成された前記対応するSYNメッセージをインターセプトすること;及び
前記ファイヤウォール手段により、前記SYN−ACKメッセージを前記プロセッサに転送すること;
を更に有する付記6に記載の方法。
[付記10]
リクエスト送信手段により、データのリクエストをサーバーに送信することであって、前記リクエストは第1の整数を含む、送信すること;
データ受信手段により、前記サーバーからデータを受信すること;及び
確認手段により、前記第1の整数及び前記SYN−ACKメッセージとともに受信された第2の整数を利用して、前記SYN−ACKメッセージが前記リクエストに関連することを確認すること;
を更に有する付記6に記載の方法。
[付記11]
データのリクエストをクライアントから受信する手段であって、前記データは第1部分及び第2部分を有し、前記リクエストは前記クライアントのアドレスを含む、手段;
前記第1部分を前記クライアントに送信する手段;及び
TCPハンドシェークのSYNメッセージを、前記第2部分を前記クライアントに提供するように構成される別のデバイスへ送信する手段であって、前記SYNメッセージは前記クライアントのアドレスをソースアドレスとして含む、手段;
を有するサーバー。
[付記12]
前記リクエストは整数を含み、前記サーバーは、前記整数を前記別のデバイスへ前記SYNメッセージとともに送信する手段を更に有する、付記11に記載のサーバー。
[付記13]
サーバーにおける方法であって:
受信手段により、データのリクエストをクライアントから受信することであって、前記データは第1部分及び第2部分を有し、前記リクエストは前記クライアントのアドレスを含む、受信すること;
第1部分送信手段により、前記第1部分を前記クライアントに送信すること;及び
SYNメッセージ送信手段により、TCPハンドシェークのSYNメッセージを、前記第2部分を前記クライアントに提供するように構成される別のデバイスへ送信することであって、前記SYNメッセージは前記クライアントのアドレスをソースアドレスとして含む、送信すること;
を有する方法。
[付記14]
前記リクエストは整数を含み、当該方法は、前記SYNメッセージ送信手段により、前記整数を前記別のデバイスへ前記SYNメッセージとともに送信することを更に有する、付記13に記載の方法。
[付記15]
命令を記憶する非一時的な記憶媒体であって、前記命令は、プロセッサにより実行される場合に、付記6ないし10のうち何れか1項に記載の方法を実行する、記憶媒体。
図1
図2
図3