JP4313266B2 - サーバ装置、その制御方法およびコネクション確立方法 - Google Patents

サーバ装置、その制御方法およびコネクション確立方法 Download PDF

Info

Publication number
JP4313266B2
JP4313266B2 JP2004221859A JP2004221859A JP4313266B2 JP 4313266 B2 JP4313266 B2 JP 4313266B2 JP 2004221859 A JP2004221859 A JP 2004221859A JP 2004221859 A JP2004221859 A JP 2004221859A JP 4313266 B2 JP4313266 B2 JP 4313266B2
Authority
JP
Japan
Prior art keywords
message
connection
transmitted
identifier
syn
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.)
Expired - Fee Related
Application number
JP2004221859A
Other languages
English (en)
Other versions
JP2006042156A (ja
Inventor
基治 三宅
智尋 中川
浩 稲村
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.)
NTT Docomo Inc
Original Assignee
NTT Docomo 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 NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2004221859A priority Critical patent/JP4313266B2/ja
Priority to EP05015878A priority patent/EP1622334B1/en
Priority to DE602005001426T priority patent/DE602005001426T2/de
Priority to CNB2005100884287A priority patent/CN100403716C/zh
Priority to US11/192,608 priority patent/US7990866B2/en
Publication of JP2006042156A publication Critical patent/JP2006042156A/ja
Application granted granted Critical
Publication of JP4313266B2 publication Critical patent/JP4313266B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1458Denial of Service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

本発明は、クライアント装置とサーバ装置との間にデータを送受信するためのコネクションを確立する技術に関する。
近年、インターネットを介して様々な通信サービスが提供されている。インターネットにおいて利用されている通信プロトコルの一例としては、TCP(Transmission Control Protocol)が挙げられる。TCPは、いわゆるコネクション型の通信プロトコルであり、信頼性の高い通信を実現することが可能である。なお、コネクション型の通信プロトコルとは、データの送受信に先だって、そのデータの送り手側の通信装置(以下、サーバ装置)とその受け手側の通信装置(以下、クライアント装置)との両者に、そのデータの送受信に用いる通信路(以下、コネクション)を示すデータ(以下、コネクション識別子)を交換させ、コネクションの確立を行っておく通信プロトコルである。なお、上記コネクション識別子の一例としては、サーバ装置やクライアント装置に割り当てられている通信アドレスや、各装置がそのデータの送受信に用いる通信ポートを表すデータ(例えば、通信ポート番号)およびシーケンス番号の初期値などが挙げられる。例えば、TCPにおいては、3ウェイハンドシェークと呼ばれる手順で上記コネクションの確立が行われる。以下では、まず、3ウェイハンドシェークの概要について説明する。
図10は、TCPにしたがって通信する機能を有するクライアント装置20とサーバ装置40とが実行する3ウェイハンドシェークの概要を表す図である。例えば、サーバ装置40からのデータの取得を所望するユーザが、サーバ装置40の通信アドレスやそのデータの取得に用いる通信プロトコルを表すデータ(例えば、URLなど)の入力など所定の操作を行うと、クライアント装置20は、図10に示すように、SYNメッセージ200をサーバ装置40へ送信する。このSYNメッセージ200は、サーバ装置40からクライアント装置20へデータを送信する際に用いるコネクション(以下、下りのコネクション)の確立を要求する旨のメッセージであり、このSYNメッセージ200には、上記下りのコネクションのコネクション識別子が書き込まれている。
一方、サーバ装置40は、SYNメッセージ200を受信すると、そのSYNメッセージ200の送信元であるクライアント装置20との間にコネクションの確立を行うために、コンピュータ資源(以下、リソースともいう)の割り当てを行う。具体的には、サーバ装置40は、その通信相手の相手装置(すなわち、クライアント装置20)を識別するデータ(例えば、上記下りのコネクションのコネクション識別子)をRAM(Random Access Memory)などの記憶部へ書き込み記憶する。次いで、サーバ装置40は、上記SYNメッセージ200を受信したことを表すとともに逆方向のコネクション(以下、上りのコネクション)の確立を要求する旨のSYN/ACKメッセージ210をクライアント装置20へ送信する。なお、上りのコネクションとは、クライアント装置20からサーバ装置40へデータを送信する際に用いられるコネクションであり、上記SYN/ACKメッセージ210には、この上りのコネクションのコネクション識別子が書き込まれている。
クライアント装置20は、SYN/ACKメッセージ210を受信すると、そのSYN/ACKメッセージ210からコネクション識別子を読み出しそのコネクション識別子の表すコネクション(すなわち、上りのコネクション)を確立する。そして、クライアント装置20は、SYN/ACKメッセージ210を受信したことを表す確認応答メッセージ(以下、ACK)220をサーバ装置40へ送信する。このACK220を受信すると、サーバ装置40は上記下りのコネクションを確立するとともに、その通信相手を表すデータを上記記憶部から削除して、データの送信を要求する旨のメッセージなどがその通信相手から送信されてくることを待ち受ける。
ところで、上記記憶部の記憶容量などサーバ装置40が有するコンピュータ資源(以下、リソースともいう)は有限であるため、その記憶部に格納することができるコネクション識別子の数にも上限がある。つまり、サーバ装置40は、この上限を超える数のクライアント装置20からACK220が送信されてくることを待ち受けることはできない。このことを悪用してサーバ装置40を利用不能にし、通信サービスの提供を妨害することが企てられる虞がある。いわゆる、SYNFlood攻撃である。
より詳細に説明すると、SYNFlood攻撃とは、多量のSYNメッセージ200をサーバ装置40へ送信し続け、サーバ装置40から返信されてくるSYN/ACKメッセージ210を受信しても、意図的にACK220を返信しないようにすることである。このようなことが為されると、サーバ装置40は、その通信相手との間でコネクションの確立が完了していないものとみなして、そのコネクション識別子を記憶部に保持したまま、ACK220が返信されてくることを待ち続ける。このため、上記SYNFlood攻撃が為されると、記憶部に格納されているコネクション識別子の数が急速に増加して上記上限へ達し、サーバ装置40のリソースが枯渇してしまう。このような状況下では、サーバ装置40は、他のクライアント装置からのコネクション確立要求を受け付けることができなくなり、それら他のクライアント装置に対して通信サービスを提供することができなくなってしまう。このような事態が生じてしまうことを回避するため、従来よりSYNFlood攻撃に対する防御方法が種々提案されており、その一例としては、非特許文献1に開示されたSYNCookieが挙げられる。以下、図10を参照しつつSYNCookieについて説明する。
図11は、SYNCookieによるコネクション確立の概略を説明するための図である。SYNCookieによりコネクションを確立するサーバ装置50は、クライアント装置20から送信されてきたSYNメッセージ200を受信すると、そのメッセージの内容を所定のアルゴリズムにしたがって圧縮しハッシュデータを生成する。そして、このハッシュデータを書き込んだSYN/ACKメッセージ210をクライアント装置20へ送信する。ここで注目すべき点は、SYNメッセージ200を受信した時点では、そのSYNメッセージ200に書き込まれているコネクション識別子の記憶部への書き込みを行わない点である。そして、サーバ装置50は、クライアント装置20から返信されたACK220に上記ハッシュデータが書き込まれていた場合に、そのACK220に書き込まれているコネクション識別子を読み出しそのコネクション識別子の表すコネクション(すなわち、下りのコネクション)を確立する。このように、SYNCookieにおいては、SYNメッセージ200に書き込まれているコネクション識別子を記憶しないようにしたため、意図的にACK220を送信しないようにしてもサーバ装置50のリソースが枯渇してしまうことはなく、SYNFlood攻撃を確実に防御することが可能になる。
J.Lemon, "Resisting SYN flood Dos attacks with a SYN cash", Proceedings of the BSDCon 2002 Conference, 2002., インターネット <http://people.freebsd.org/~jlemon/papers/syncash.pdf>
ところで、TCPにおいては、メッセージを送信してから所定の時間が経過した時点で、相手装置がそのメッセージを受信したことを表すACKが返信されてこなかった場合には、そのメッセージは消失してしまったものとみなして、そのメッセージを再送信するべきことが定められている。例えば、図11のサーバ装置50は、SYN/ACKメッセージ210を送信してから所定の時間が経過しても、ACK220が送信されてこない場合には、そのSYN/ACKメッセージ210を再送信しなければならない。
しかしながら、サーバ装置50においては、このような再送信を行うことはできない。何故ならば、サーバ装置50は、SYNメッセージ200を受信しても、そのSYNメッセージ200に書き込まれているコネクション識別子を記憶しないので、SYN/ACKメッセージ210を再送信する際の送信先を特定することができないからである。このようにSYN/ACKメッセージ210の再送信が不可能になってしまうと、例えば、SYN/ACKメッセージ210に対してクライアント装置20から送信されたACK220が消失してしまった場合に、以下に述べるような問題が発生してしまう。
すなわち、サーバ装置50とクライアント装置20との間では、上りのコネクションについてはクライアント装置20がSYN/ACKメッセージ210を受信した時点で確立されているが、下りのコネクションについては、ACK220が消失してしまったため、確立されていない。つまり、サーバ装置50とクライアント装置20との間のコネクションは不完全な状態になっている。そして、SYN/ACKメッセージ210を再送信することができないのであるから、ACK220をクライアント装置20に再送信させて下りのコネクションを確立することはできない。このことは、上記不完全な状態を解消することができないことを意味している。このように、SYNCookieを採用すると、サーバ装置とクライアント装置とがコネクションを確立する際に、そのコネクションが不完全な状態になってしまうとともに、その不完全な状態を解消することができなくなってしまう虞がある。
本発明は上記課題に鑑みて為されたものであり、クライアント装置とサーバ装置間にコネクションを確立する際に、そのコネクションが不完全な状態のままになることを回避しつつ、SYNFlood攻撃を確実に防御することを可能にする技術を提供することを目的としている。
上記課題を解決するために、本発明は、相手装置から送信されたメッセージを受信する受信手段と、前記相手装置へのデータの送信に用いる下りのコネクションを識別する識別子を含み該下りのコネクションの確立を要求する旨の第1のメッセージが前記受信手段により受信された場合に、前記相手装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨の第2のメッセージを前記相手装置へ送信する送信手段と、前記識別子を含み前記下りのコネクションの確立を要求するとともに前記第2のメッセージを受信したことを表す第3のメッセージが前記受信手段により受信された場合に、該第3のメッセージから前記識別子を読み出す読み出し手段と、前記読み出し手段により読み出された前記識別子に基づいて、前記相手装置との間に前記下りのコネクションを確立するコネクション確立手段とを有するサーバ装置を提供する。
また、上記課題を解決するための本発明の別の態様にあっては、コンピュータ装置を、相手装置から送信されたメッセージを受信する受信手段と、前記相手装置へのデータの送信に用いる下りのコネクションを識別する識別子を含み該下りのコネクションの確立を要求する旨の第1のメッセージが前記受信手段により受信された場合に、前記相手装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨の第2のメッセージを前記相手装置へ送信する送信手段と、前記識別子を含み前記下りのコネクションの確立を要求するとともに前記第2のメッセージを受信したことを表す第3のメッセージが前記受信手段により受信された場合に、該第3のメッセージから前記識別子を読み出す読み出し手段と、前記読み出し手段により読み出された前記識別子に基づいて、前記相手装置との間に前記下りのコネクションを確立するコネクション確立手段として機能させるプログラムと、コンピュータ装置が読み取り可能な記録媒体であって、該プログラムが記録された記録媒体と、を提供するとしても良い。
このようなサーバ装置、プログラムおよび記録媒体によれば、相手装置であるクライアント装置が上記第2のメッセージを受信したことを上記第3のメッセージによって確認した場合に、そのクライアント装置との間に下りのコネクションが確立される。
より好ましい態様においては、前記読み出し手段は、前記識別子の他に、前記下りのコネクションを介して前記クライアント装置へデータを送信する際の通信態様を指示する付加データが前記第3のメッセージに含まれている場合には、前記識別子に加えて該付加データを読み出し、前記コネクション確立手段は、前記読み出し手段により読み出された前記識別子と前記付加データとに基づいて、前記下りのコネクションを確立することを特徴とする上記サーバ装置を提供する。
このような態様にあっては、上記下りのコネクションを確立した後に上記付加データの示す通信態様で上記クライアント装置と通信を行うことが可能になる。これにより、SYNFlood攻撃に対する防御を行いつつ、上記コネクションが不完全な状態のままになることを回避することに加えて、きめ細やかな通信態様で上記クライアント装置と通信を行うことが可能になるといった効果を奏する。
また、別の好ましい態様においては、前記第1のメッセージの送信元と前記第3のメッセージの送信元とが同一であるか否かを、前記第1のメッセージおよび前記第3のメッセージの内容に基づいて判定する判定手段を備え、前記読み出し手段は、前記判定手段の判定結果が肯定的である場合にのみ、前記第3のメッセージから前記識別子を読み出すことを特徴とする上記サーバ装置を提供する。より具体的には、前記第1のメッセージおよび第3のメッセージには、各々の送信元がデータを送信する際に利用するシーケンス番号の初期値を表すシーケンス番号データが書き込まれており、前記判定手段は、前記第1のメッセージに書き込まれている前記シーケンス番号データと前記第3のメッセージに書き込まれているシーケンス番号データとが同一のシーケンス番号を表している場合に、該第3のメッセージの送信元と前記第1のメッセージの送信元とが同一であると判定するとしても良い。
このような態様にあっては、上記第1のメッセージと上記第3のメッセージとが同一の相手装置から送信されたことが確認された場合に、その相手装置との間に下りのコネクションが確立される。
また、別の好ましい態様においては、前記受信手段は、相手装置から送信されてきたメッセージの所定の領域に付加データが書き込まれていた場合には、該メッセージを破棄し、前記送信手段は、前記第2のメッセージを送信する際に、その前記所定の領域へ前記付加データを書き込んで送信することを特徴とする上記サーバ装置を提供する。また、前記受信手段により受信された第1のメッセージが、特定の通信ポートを介して相手装置から送信されたか否かを該第1のメッセージの内容に基づいて判定する判定手段を備え、前記送信手段は、前記受信手段により受信された第1のメッセージが前記特定の通信ポートを介して送信されたと前記判定手段により判定された場合に、前記付加データを前記所定の領域へ書き込んだ第2のメッセージを送信するようにしても良い。
このような態様にあっては、本態様に係る第1のサーバ装置に成りすましている相手装置から本態様に係る第2のサーバ装置へ上記第1のメッセージが送信された場合に、この第2のサーバ装置は上記第2のメッセージの上記所定の領域へ上記付加データを書き込んで上記第1のサーバ装置へ送信する。そして、このような第2のメッセージが上記第1のサーバ装置に受信されても、この第1のメッセージは破棄される。これにより、第1のサーバ装置と第2のサーバ装置との間でメッセージの送受信が際限なく行われることが回避される。
また、上記課題を解決するために、本発明は、通信手段と、制御手段と、を備え、前記制御手段は、相手装置へのデータの送信に用いる下りのコネクションを識別する識別子を含み該下りのコネクションの確立を要求する旨の第1のメッセージが前記通信手段により受信された場合に、該相手装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨の第2のメッセージを前記通信手段により該相手装置へ送信する第1の処理と、前記識別子を含み前記下りのコネクションの確立を要求するとともに前記第2のメッセージを受信したことを表す第3のメッセージが前記通信手段によって受信された場合に、該第3のメッセージから前記識別子を読み出す第2の処理と、前記第2の処理にて読み出した前記識別子に基づいて、前記下りのコネクションを確立する第3の処理と、を行うことを特徴とするサーバ装置を提供する。
また、上記課題を解決するための本発明の別の態様にあっては、コンピュータ装置に、相手装置へのデータの送信に用いる下りのコネクションを識別する識別子を含み該下りのコネクションの確立を要求する旨の第1のメッセージが前記通信手段により受信された場合に、該相手装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨の第2のメッセージを前記通信手段により該相手装置へ送信する第1の処理と、前記識別子を含み前記下りのコネクションの確立を要求するとともに前記第2のメッセージを受信したことを表す第3のメッセージが前記通信手段によって受信された場合に、該第3のメッセージから前記識別子を読み出す第2の処理と、前記第2の処理にて読み出した前記識別子に基づいて、前記下りのコネクションを確立する第3の処理と、を行わせるプログラムと、コンピュータ装置が読み取り可能な記録媒体であって、該プログラムが記録された記録媒体と、を提供するとしても良い。
このようなサーバ装置、プログラムおよび記録媒体によれば、相手装置であるクライアント装置が上記第2のメッセージを受信したことを上記第3のメッセージによって確認した場合に、そのクライアント装置との間に下りのコネクションが確立される。
また、上記課題を解決するために、本発明は、相手装置との間にコネクションを確立し該相手装置へデータを送信するサーバ装置の制御方法において、前記相手装置へのデータの送信に用いる下りのコネクションを識別する識別子を含み該下りのコネクションの確立を要求する旨の第1のメッセージが前記相手装置から送信されてきた場合に、前記相手装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨の第2のメッセージを前記相手装置へ送信する第1のステップと、前記識別子を含み前記下りのコネクションの確立を要求するとともに前記第2のメッセージを受信したことを表す第3のメッセージが前記相手装置から送信されてきた場合に、該第3のメッセージから前記識別子を読み出す第2のステップと、前記第2のステップにて読み出した前記識別子に基づいて、前記下りのコネクションを確立する第3のステップと、を前記サーバ装置に順次行わせることを特徴とする制御方法を提供する。
このような制御方法によれば、相手装置であるクライアント装置が上記第2のメッセージを受信したことを上記第3のメッセージによって確認した場合に、そのクライアント装置との間に下りのコネクションを確立するように上記サーバ装置は制御される。
また、上記課題を解決するため、本発明は、クライアント装置が、送信されたデータの受信に用いる下りのコネクションの確立を要求する旨の第1のメッセージをサーバ装置へ送信する第1のステップと、前記第1のメッセージを受信した前記サーバ装置が、前記クライアント装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨のメッセージを前記クライアント装置へ送信する第2のステップと、前記第2のメッセージを受信した前記クライアント装置が、該第2のメッセージを受信したことを表すとともに前記下りのコネクションの確立を要求する旨の第3のメッセージを前記サーバ装置へ送信する第3のステップと、前記第3のメッセージを受信した前記サーバ装置が、該第3のメッセージの内容に基づいて前記下りのコネクションを確立する第4のステップとを順次行うことを特徴とするコネクション確立方法を提供する。
このようなコネクション確立方法によれば、クライアント装置が上記第2のメッセージを受信したことを上記第3のメッセージによって上記サーバ装置が確認した場合に、そのクライアント装置とサーバ装置との間に下りのコネクションが確立される。
本発明によれば、クライアント装置とサーバ装置間にコネクションを確立する際に、そのコネクションが不完全な状態のままになることを回避しつつ、SYNFlood攻撃を確実に防御することが可能になるといった効果を奏する。
以下、図面を参照しつつ本発明を実施するための最良の形態について説明する。
(A:構成)
(A−1:通信システムの構成)
図1は、本発明の1実施形態に係るサーバ装置30を有する通信システムの全体構成の一例を示す図である。図1に示されているように、この通信システムは、通信網10と、この通信網10に接続されたクライアント装置20およびサーバ装置30とを含んでいる。図1では、1つのクライアント装置と1つのサーバ装置とが通信網10に接続されている場合について例示されているが、多数のクライアント装置が通信網10に接続されているとしても良く、また、多数のサーバ装置が通信網10に接続されているとしても良い。なお、以下では、クライアント装置とサーバ装置とを区別する必要がない場合には、「通信装置」と称する。
図1の通信網10は、例えば、インターネットであり、ルータやゲートウェイなどの中継装置を含んでいる。この通信網10は、自網に接続されている通信装置から所定の通信プロトコル(本実施形態では、TCP)にしたがってメッセージが送信されてきた場合に、そのメッセージを上記中継装置によってその宛先へ適宜ルーティングし送り届けるためのものである。なお、本実施形態では、通信網10がインターネットである場合について説明するが、LAN(Local Area Network)であっても良く、また、移動パケット通信網や無線LANのような無線通信網であっても良い。
図1のクライアント装置20とサーバ装置30とは、何れも通信網10に接続されたパーソナルコンピュータ(以下、「PC」)であり、この通信網10を介してTCPにしたがった通信を行うことができる。より詳細に説明すると、クライアント装置20やサーバ装置30は、図2に示すフォーマットを有するメッセージを生成し、そのヘッダ部の各領域に所定のデータを書き込んで送信する。
図2に示されたフォーマットは、TCPにしたがって送信されるメッセージのフォーマットであり、詳細な図示は省略したが、図2のコントロールフラグ領域は、URG、ACK、PSH、RST、SYNおよびFINの6つのビットフラグを書き込むための領域である。クライアント装置20やサーバ装置30は、これら6つのビットフラグに“1”又は“0”を書き込んで送信することによって、上述した、SYN、SYN/ACKおよびACKの各メッセージを送信することができる。例えば、クライアント装置20からサーバ装置30へ宛ててSYNメッセージを送信する場合には、上記各領域に以下のデータを書き込んで送信する。
すなわち、図2の送信元ポート番号には、通信の開始を要求したアプリケーション(例えば、ブラウザなど)の通信ポート番号が書き込まれる。図2の送信先ポート番号には、その通信相手のアプリケーション(例えば、HTTPD)の通信ポート番号が書き込まれる。図2のシーケンス番号には、上記通信を行う際にクライアント装置20が用いるシーケンス番号の初期値が書き込まれる。そして、コントロールフラグについてはSYNフラグにのみ“1”がセットされ、他のフラグには“0”がセットされる。なお、図2においては省略したが、クライアント装置20とサーバ装置30との間で送受信されるメッセージには、TCPよりも下位の通信プロトコル(例えば、Internet Protocol:以下、「IP」)によってそのメッセージの送信元や宛先である通信装置を表すデータ(例えば、各装置に割り当てられているIPアドレスなどの通信アドレス)が書き込まれたヘッダが更に付加されて送信される。また、本実施形態では、クライアント装置20とサーバ装置30とが、TCPにしたがって通信するPCである場合について説明するが、TCPにしたがって通信するPDA(Personal Digital Assistance)や携帯電話機であっても良いことは勿論である。要は、TCPにしたがって通信する機能を有するコンピュータ装置であれば、何れであっても良い。
さて、図1に示す通信システムにおいて、クライアント装置20はTCPにしたがって通信する従来のコンピュータ装置と何ら変わるところはないので、詳細な説明は省略する。一方、図1のサーバ装置30は、本発明に係るサーバ装置に特徴的な機能を備えており、その機能によって本発明に係るコネクション確立方法でコネクションの確立を行うものである。以下では、サーバ装置30を中心に説明する。
(A−2:サーバ装置30の構成)
まず、図3を参照しつつサーバ装置30の構成を説明する。図3に示されているように、サーバ装置30は、制御部100と、通信インターフェイス(以下、「IF」と表記する)部110と、記憶部120と、これら各構成要素間のデータ授受を仲介するバス130とを有している。
制御部100は、例えばCPU(Central Processing Unit)であり、記憶部120に格納されているソフトウェアを読み出して実行することにより、サーバ装置30の各部を制御することができる。通信IF部110は、通信網10に接続されており、通信網10を介して送くられてくるメッセージを受信し制御部100へ引渡すとともに、制御部100から引渡されたメッセージを通信網10へ送り出すためのものである。
記憶部120は、図3に示されているように、揮発性記憶部120aと不揮発性記憶部120bとを有している。揮発性記憶部120aは、例えばRAMであり、ソフトウェアにしたがって作動している制御部100によってワークエリアとして利用される。一方、不揮発性記憶部120bは、例えば、ハードディスクであり、各種データが格納されている。不揮発性記憶部120bに格納されているデータの一例としては、クライアント装置20からの要求に応じてそのクライアント装置20へ送信するデータや、そのデータをTCPにしたがってクライアント装置20へ送信する際の通信態様を規定するデータ(例えば、輻輳ウィンドウサイズやタイムアウト時間を表すデータなど)が挙げられる。
また、不揮発性記憶部120bには、上記各種データの他に、オペレーティングシステム(Operating System:以下、「OS」)を制御部100に実現させるためのOSソフトウェアや、TCPにしたがった通信を制御部100に実現させるための制御ソフトウェアが格納されている。以下、これらソフトウェアを実行することによって制御部100に付与される機能について説明する。
サーバ装置30の電源(図示省略)が投入されると、制御部100は、まず、OSソフトウェアを不揮発性記憶部120bから読み出し実行する。OSソフトウェアにしたがって作動している制御部100には、サーバ装置30の各部を制御する機能や他のソフトウェアを不揮発性記憶部120bから読み出し実行する機能が付与される。そして、OSソフトウェアの実行を完了し、OSを実現している状態の制御部100は、即座に、上記制御ソフトウェアを不揮発性記憶部120bから読み出し実行する。
そして、上記制御ソフトウェアにしたがって作動している制御部100は、クライアント装置20からSYNメッセージやSYN/ACKメッセージが送信されてきた場合に、以下に述べる3つの処理を図4に示すフローチャートにしたがって行う。すなわち、第1に、クライアント装置20から下りのコネクションの確立を要求する旨のSYNメッセージが送信されてきた場合に、上りのコネクションの確立を要求するSYNメッセージを生成しクライアント装置20へ送信する処理(図4のステップSA3)である。第2に、上記第1の処理にて送信したSYNメッセージを受信したことを表すとともに上記下りのコネクションの確立を要求する旨のSYN/ACKメッセージが送信されてきた場合に、その下りのコネクションを識別するコネクション識別子を上記SYN/ACKメッセージから読み出し取得する処理(図4のステップSA4)である。そして、第3に、上記第2の処理にて取得したコネクション識別子に基づいて、上記下りのコネクションを確立する処理(図4のステップSA5)である。つまり、上記制御ソフトウェアは、サーバ装置30の制御部100に、本発明に特徴的な制御方法を実現させ、本発明に特徴的なコネクション確立方法を実行させるためのソフトウェアである。
また、上記制御ソフトウェアは、制御部100を以下に述べる4つの手段として機能させるソフトウェアである、ということもできる。すなわち、第1に、クライアント装置から送信されたメッセージを通信IF部110を介して受信する受信手段である。第2に、上記受信手段により受信したメッセージが、クライアント装置20との間に下りのコネクションを確立することを要求する旨のSYNメッセージである場合に、上りのコネクションの確立を要求する旨のSYNメッセージを生成しそのクライアント装置20へ送信する送信手段である。第3に、上記受信手段により受信したメッセージが、上記送信手段により送信したSYNメッセージを受信したことを表すとともに上記下りのコネクションの確立を要求する旨のSYN/ACKメッセージである場合に、その下りのコネクションを識別するコネクション識別子をそのSYN/ACKメッセージから読み出す読み出し手段である。そして、第4に、上記読み出し手段により読み出したコネクション識別子に基づいて、上記下りのコネクションを確立するコネクション確立手段である。
以上に説明したように、サーバ装置30のハードウェア構成は一般的なコンピュータ装置のハードウェア構成と同一であり、記憶部120に格納されている各種ソフトウェアを制御部100に実行させることによって、本発明に係るサーバ装置に特有な機能を制御部100に実現させ、本発明に係る制御方法が実現される。これにより、クライアント装置20とサーバ装置30とによって本発明に係るコネクション確立方法が実行される。なお、本実施形態では、本発明に係るサーバ装置に特有な機能をソフトウェアモジュールで実現する場合について説明したが、これらソフトウェアモジュールと同一の機能を担っているハードウェアモジュールを用いてサーバ装置30を構成しても良いことは勿論である。すなわち、上述した受信手段、送信手段、読み出し手段および書き込み手段の各々をハードウェアモジュールで実現しサーバ装置30を構成するとしても勿論良い。
(B:動作)
次いで、サーバ装置30が行う動作のうち、その特徴を顕著に示す動作について図面を参照しつつ説明する。
(B−1:基本動作)
まず、クライアント装置20とサーバ装置30とがコネクションを確立する際に行う動作の流れについて説明する。前述した如くクライアント装置20はTCPにしたがって通信する従来の通信装置と何ら変わるところがないため、ユーザが所定の操作(サーバ装置30のURLの入力など)を行うと、図5に示すようにSYNメッセージ200をサーバ装置30へ送信する。以下、このSYNメッセージ200を受信した場合に、サーバ装置30の制御部100が行う動作について図4を参照しつつ説明する。
サーバ装置30の制御部100は、図4に示すように、通信IF部110を介してメッセージを受信(ステップSA1)すると、そのメッセージがSYNメッセージであるか、それとも、SYN/ACKメッセージであるか、をそのメッセージの内容に基づいて判定する(ステップSA2)。より詳細に説明すると、制御部100は、そのメッセージのコントロールフラグ(図2参照)にてSYNフラグのみに“1”がセットされている場合には、そのメッセージをSYNメッセージである判定し、SYNフラグの他にACKフラグにも“1”がセットされている場合には、SYN/ACKメッセージと判定する。そして、制御部100は、ステップSA2にてSYNメッセージであると判定した場合には、図4のステップSA3の処理を行い、逆に、ステップSA2にてSYN/ACKメッセージであると判定した場合には、図4のステップSA4からステップSA6までの処理を行う。
本動作例では、クライアント装置20からはSYNメッセージ200が送信されてくるのであるから、上記ステップSA3の処理が行われる。このステップSA3においては、制御部100は、ステップSA1にて受信したSYNメッセージの送信元(すなわち、クライアント装置20)へ宛てて、上りのコネクションの確立を要求する旨のSYNメッセージを送信する。その結果、図5に示すように、サーバ装置30からクライアント装置20へSYNメッセージ205が送信されることになる。
一方、クライアント装置20は、上述した如くTCPにしたがって通信する従来のクライアント装置と同一の機能を備えているから、SYNメッセージ205を受信すると、同時接続が為されたものとみなして動作する。ここで、同時接続とは、クライアント装置20とその通信相手とが、略同時にSYNメッセージを送信し、送信したSYNメッセージに対するACKを受信する前に他方が送信したSYNメッセージを受信した場合のことである。TCPにおいては、このような場合には、相手装置から送信されたSYNメッセージを受信したことを契機としてSYN/ACKメッセージを返信するべきことが定められている。このため、クライアント装置20は、SYNメッセージ205を受信したことを表すとともに、下りのコネクションの確立を要求する旨のSYN/ACKメッセージ210をサーバ装置30へ送信する(図5参照)。
サーバ装置30の制御部100は、SYN/ACKメッセージ210を通信IF部110を介して受信(ステップSA1)すると、上述したようにステップSA4からステップSA6までの処理を行う。より詳細に説明すると、制御部100は、クライアント装置20から受信したSYN/ACKメッセージ210から下りのコネクションのコネクション識別子を読み出して取得し(ステップSA4)、そのコネクション識別子の表すコネクションを確立する(ステップSA5)。これにより、クライアント装置20とサーバ装置30との間に下りのコネクションが確立される。そして、制御部100は、上記SYN/ACKメッセージ210を受信したことを表すACK220に上りのコネクションを表すコネクション識別子を書き込んでクライアント装置20へ送信する(ステップSA6)。以降、ACK220がクライアント装置20へ到達すると、クライアント装置20は、そのACK220に書き込まれているコネクション識別子を読み出し、そのコネクション識別子の表すコネクション(すなわち、上りのコネクション)を確立する。
このように、本実施形態に係るサーバ装置30によれば、クライアント装置20から送信されたSYNメッセージ200を受信した時点では、そのSYNメッセージ200に書き込まれているコネクション識別子(すなわち、上りのコネクションのコネクション識別子)を記憶しないので、SYNFlood攻撃を確実に防御することができるといった効果を奏する。
(B−2:ACK220又はSYN/ACK210が消失した場合の動作)
さて、以上では、クライアント装置20およびサーバ装置30から送信された各メッセージが通信網10内で消失することなく、その宛先へ到達する場合について説明した。以下では、上記各メッセージが通信網10内で消失してしまった場合に、クライアント装置20およびサーバ装置30が行う動作について説明する。
まず、図6を参照しつつ、サーバ装置30からクライアント装置20へ宛てて送信されたACK220が消失してしまった場合について説明する。ACK220は、クライアント装置20から送信されたSYN/ACKメッセージ210をサーバ装置30が受信したことをクライアント装置20へ通知する役割を担っている。このため、クライアント装置20は、SYN/ACKメッセージ210を送信してから所定の時間(例えば、Tc秒:図6参照)が経過した時点で、ACK220が返信されてこないと、上記SYN/ACKメッセージ210は消失してしまったものとみなして、そのSYN/ACKメッセージ210を再送信する。以降、図6に示すように、サーバ装置30は、上記再送信されたSYN/ACKメッセージ210を受信するとACK220を再送信する。
このように、本実施形態によれば、サーバ装置30からクライアント装置20へ送信されたACKが消失してしまっても、クライアント装置20がSYN/ACKメッセージ210を再送信することによって、そのACK220の再送信をサーバ装置30へ促すことが可能になる。なお、クライアント装置20から送信されたSYN/ACKメッセージ210が消失した場合にも、ACK220が返信されてくることはないから、上記SYN/ACKメッセージ210を送信してから所定の時間が経過した時点でそのSYN/ACKメッセージ210が再送信されることになる。
また、本実施形態では、ACK220をSYN/ACKメッセージ210に対するACKとして扱う場合について説明した。これは、SYNメッセージ200を送信した後、SYNメッセージ205を受信した時点でそのSYNメッセージ200を送信してからの所定の時間(図6:TC)の計測を中断し、SYN/ACKメッセージ210を送信した時点から再度その所定の時間の経過を計測し直すことを意味している。しかしながら、SYNメッセージ200を送信した後に、SYNメッセージ205を受信しても上記所定の時間の計測を中断しないようにしても良い。このようにすると、上記ACK220は、SYNメッセージ200に対する受信確認の役割を担うことになり、SYNメッセージ200を送信してから所定の時間が経過してもACK220が送信されてこない場合には、SYNメッセージ200が再送信されることになる。
(B−3:SYNメッセージ205又は200が消失した場合の動作)
サーバ装置30から送信されたSYNメッセージ205が消失した場合には、そのSYNメッセージ205に対する受信確認の役割を担っているSYN/ACKメッセージ210が返信されてくることはない。このような場合には、SYNメッセージ205を送信してから所定の時間が経過した時点でSYNメッセージ205を再送信する必要がある。しかしながら、サーバ装置30は、SYNメッセージ200を受信した時点では、そのSYNメッセージ200の送信元を表すデータを記憶しないため、SYNメッセージ205の送信先を特定することができず、その再送信を行うことはできない。
このように、サーバ装置30にSYNメッセージ205を再送信させることはできないものの、本実施形態によれば、図7に示すように、SYNメッセージ200を送信してから所定の時間が経過した時点で、そのSYNメッセージ200がクライアント装置20から再送信されるため、上記SYNメッセージ205をサーバ装置30に再送信させることが可能になる。また、クライアント装置20から送信されたSYNメッセージ200が消失した場合にも、そのSYNメッセージ200を送信してから所定の時間が経過した時点でそのSYNメッセージ200の再送信が行われることは勿論である。
以上に説明したように、本実施形態によれば、クライアント装置20とサーバ装置30との間で送受信されるメッセージのうちの何れが消失した場合であっても、そのメッセージの再送信を行うことが可能であり、サーバ装置30とクライアント装置20との間のコネクションが不完全な状態で確立されたままの状態になることが確実に回避されるといった効果を奏する。
(C:変形例)
以上、本発明を実施するための最良の形態について説明した。しかしながら、以下に述べるような変形を加えても良いことは勿論である。
(C−1:変形例1)
上述した実施形態では、クライアント装置とサーバ装置とがTCPにしたがって通信する場合について説明した。しかしながら、本発明に係るコネクション確立方法により確立されるコネクションは、TCPにしたがって行われるデータ通信のためのコネクションに限定されるものではなく、他の通信プロトコルにしたがって行われるデータ通信のためのコネクションであっても勿論良い。要は、TCPのようにデータの送受信に先立ってコネクションを確立しておくコネクション型の通信プロトコルであれば、どのような通信プロトコルに対しても本発明に係るコネクション確立方法を適用することが可能である。また、上述した如くメッセージを送信してから所定の時間が経過しても、そのメッセージを受信したことを表す確認応答が送信されてこなかった場合に、そのメッセージを再送信する再送信手段を設けておけば、TCP以外のコネクション型の通信プロトコルについてもクライアント装置とサーバ装置との間でコネクションが不完全な状態のままになることが回避されるといった効果を奏する。
(C−2:変形例2)
上述した実施形態では、クライアント装置から送信されたSYN/ACKメッセージを受信した場合に、そのSYN/ACKメッセージからコネクション識別子を読み出しそのコネクション識別子の表すコネクションを確立する場合について説明した。しかしながら、上記コネクションを介してクライアント装置20へデータを送信する際の通信態様の詳細を表す付加データが上記SYN/ACKメッセージのオプション領域(図2参照)に書き込まれていた場合には、上記下りのコネクションを確立した後に、その付加データの表す通信態様でそのクライアント装置へデータを送信するようにしても勿論良い。上記付加データの一例としては、ウインドウ拡大オプションやタイムスタンプオプションなど各種オプションの利用の可否や、選択確認応答(SACK)やECNなどの利用の可否を指示するデータが挙げられる。このような態様によれば、本発明に係るコネクション確立方法により確立したコネクションを介して、その通信相手のクライアント装置の性能に応じたきめ細やかな通信態様で通信を行うことが可能になるといった効果を奏する。
(C−3:変形例3)
上述した実施形態では、クライアント装置から送信されたSYN/ACKメッセージを受信した場合には無条件にそのクライアント装置20との間に下りのコネクションを確立する場合について説明した。しかしながら、SYNメッセージを送信してきたクライアント装置とSYN/ACKメッセージを送信してきたクライアント装置とが同一であるか否かの認証を行い、両者が同一であると認証された場合にそのクライアント装置との間に下りのコネクションを確立するとしても勿論良い。
このようなことは、以下のようにして実現される。すなわち、上述した実施形態に係るサーバ装置に、受信したメッセージの内容を所定のアルゴリズムにしたがって圧縮しハッシュデータを生成するハッシュデータ生成手段を設け、上りのコネクションの確立を要求する旨のSYNメッセージ205を送信する際に、クライアント装置から送信されてきたSYNメッセージ200について上記ハッシュデータ生成手段により生成したハッシュデータを書き込んで送信させる。そして、クライアント装置から送信されてきたSYN/ACKメッセージに上記ハッシュデータが書き込まれている場合に、上記下りのコネクションを識別するコネクション識別子をそのSYN/ACKメッセージから読み出すようにすれば良い。
(C−4:変形例4)
上述した実施形態では、下りのコネクションの確立を要求する旨のSYNメッセージがクライアント装置から送信されてきた場合には、上りのコネクションの確立を要求する旨のSYNメッセージを無条件にそのクライアント装置へ返信する場合について説明した。しかしながら、上記クライアント装置が特定の通信ポート(例えば、ウェルノウンポートと呼ばれる通信ポート)を用いてSYNメッセージを送信してきた場合には、その旨を表す所定の付加データを所定の領域に書き込んだSYNメッセージ205を送信するようにしても良い。その理由は以下の通りである。
TCPにしたがって通信を行うクライアント装置は、エフェメラルポートと呼ばれる通信ポートを用いてSYNメッセージを送信することが一般的である。ここで、エフェメラルポートとは、特定の用途が定められておらず、クライアント装置側でその都度その用途を自由に定めることができる通信ポートである。一方、ウェルノウンポートとは、その用途が予め定められている通信ポートである。例えば、ポート番号が80である通信ポートは、HTTPにしたがった通信で利用すべきことが予め定められている。
上述したように、クライアント装置においては、エフェメラルポートを用いてSYNメッセージを送信することが一般的であるが、他の装置(例えば、他のサーバ装置)に成りすましてSYNメッセージを送信するクライアント装置について、そのサーバ装置で利用されているウェルノウンポートを用いてSYNメッセージを送信することが一般的である。つまり、ウェルノウンポートを用いてSYNメッセージを送信してきたクライアント装置については、他のサーバ装置に成りすましている虞がある。
例えば、クライアント装置20が、本実施形態に係るサーバ装置30Bに割り当てられている通信アドレス(以下、AdrB)を送信元アドレスとして書き込み、その送信元ポート番号として80を書き込んだSYNメッセージを、本実施形態に係るサーバ装置30Aへ送信した場合を想定する。上記SYNメッセージを受信したサーバ装置30Aは、そのSYNメッセージの送信元がサーバ装置30BであることをそのSYNメッセージの内容から検出し、上りのコネクションの確立を要求する旨のSYNメッセージをサーバ装置30Bへ送信してしまう。一方、サーバ装置30Bはそのサーバ装置30Aから初めてSYNメッセージを受信するのであるから、そのサーバ装置30AへSYNメッセージを返信する。以降、サーバ装置30Aと30Bとの間でSYNメッセージの送受信が際限なく行われてしまうといった不具合が生じてしまう虞がある。
これに対して、一般のクライアント装置では利用しない特定の通信ポート(例えば、ウェルノウンポート)を用いてSYNメッセージが送信されてきた場合など、そのクライアント装置が他の装置に成りすましていることが推定される場合には、その旨を示す付加データを所定の領域に書き込んだSYNメッセージ205を返信することによって、上述の不具合を回避することが可能になる。以下、クライアント装置20が、本発明に係るサーバ装置に成りすましている場合と、従来のサーバ装置に成りすましている場合とに分けて説明する。なお、以下では、上記付加データを書き込む領域として、コントロールフラグ(図2参照)のURGフラグを用い、上記付加データとして“1”または“0”の何れかの値を有する1ビットデータを用いる場合について説明するが、図2に示すオプション領域に上記付加データを書き込んで送信するとしても勿論良い。
図8は、クライアント装置20が本変形例に係るサーバ装置30Bに成りすまして、同じく本変形例に係るサーバ装置30AへSYNメッセージを送信した場合の通信シーケンスを示す図である。サーバ装置30Aは、上記SYNメッセージを受信すると、そのSYNメッセージの送信に用いられた通信ポートが特定の通信ポート(例えば、ウェルノウンポート)であるか否かをそのSYNメッセージの内容(例えば、そのSYNメッセージに内包されているコネクション識別子)に基づいて判定する。そして、サーバ装置30Aは、その判定結果が肯定的である場合には、その旨を表すためにコントロールフラグ(図2参照)のURGフラグに“1”をセットしたSYNメッセージ(以下、SYN/URGメッセージ)を返信する。
ここで、クライアント装置20は、サーバ装置30Bに成りすましているため、図8に示すように、サーバ装置30Aは、上記SYN/URGメッセージをサーバ装置30Bへ送信することになる。一方、サーバ装置30Bは、SYNメッセージなどの送受信を行っていない状態(例えば、TCPにおいてLISTEN状態と定義されている状態)で、上記SYN/URGメッセージを受信する。このような状態で、上記SYN/URGメッセージを受信した場合には、そのSYN/URGメッセージをサーバ装置30Bに破棄させるようにすれば上述したような不具合は発生しない。
次いで、クライアント装置20が従来のサーバ装置40に成りすましてサーバ装置30へSYNメッセージを送信してきた場合の通信シーケンスについて図9を参照しつつ説明する。まず、上記SYNメッセージを受信した場合に、サーバ装置30がSYN/URGメッセージをサーバ装置40へ宛てて返信することは、図8の場合と同様である。
図9のサーバ装置40は、TCPにしたがって通信する従来のサーバ装置であるから、上記SYN/URGメッセージを受信した場合には、その送信元へ宛ててSYN/ACKメッセージを送信する。ここで注目すべき点は、図9に示すように、サーバ装置40から送信されたSYN/ACKメッセージに書き込まれているシーケンス番号(Nb)と、クライアント装置20から送信されたSYNメッセージに書き込まれていたシーケンス番号(N0)と、は必ずしも連続にならない点である。このように、SYN/ACKメッセージに書き込まれているシーケンス番号と、そのSYN/ACKメッセージに先立ってその送信元から受信したSYNメッセージに書き込まれているシーケンス番号とが連続にならない場合には、不正なメッセージであるとしてRSTメッセージをサーバ装置30に返信させて、コネクション確立動作を中止させるようにすれば、上述の如き不具合の発生を回避することができる。なお、本変形例4では、相手装置から送信されたSYNメッセージが特定の通信ポートを用いて送信されていた場合に、その旨を示す付加データを書き込んだSYNメッセージをサーバ装置30Aに返信させる場合について説明した。しかしながら、相手装置から送信されたSYNメッセージを受信した場合には、そのSYNメッセージが特定の通信ポートを用いて送信されたか否かを問わずに、常に上記付加データを書き込んだSYNメッセージをその相手装置へ返信させるようにしても勿論良い。その理由は、他の装置に成りすましている相手装置が常に上記特定の通信ポートを用いてSYNメッセージを送信するとは限らないからである。
(C−5:変形例5)
上述した実施形態では、本発明に係るサーバ装置に特有な機能を制御部100に実現させるためのソフトウェアを記憶部120に予め格納しておく場合について説明した。しかしながら、例えば、CD−ROM(Compact Disk Read Only Memory)やDVD(Digital Versatile Disk)などのコンピュータ装置が読み取り可能な記録媒体に、上記ソフトウェアを記録しておき、このような記録媒体を用いて一般的なコンピュータ装置に上記ソフトウェアをインストールするとしても良いことは勿論である。このようにすると、既存の通信システムに含まれているサーバ装置を、本発明に係るサーバ装置として機能させることが可能になるといった効果を奏する。
本発明の1実施形態に係るサーバ装置30を有する通信システムの一例を示す図である。 TCPにしたがって送受信されるメッセージのフォーマットを示す図である。 同サーバ装置30のハードウェア構成の一例を示す図である。 同サーバ装置30の制御部100が制御ソフトウェアにしたがって行う制御動作の流れを示すフローチャートである。 同サーバ装置30とクライアント装置20とがコネクションの確立を行う際の通信シーケンスの一例を示す図である。 サーバ装置30から送信したACK220が消失した場合の通信シーケンスの一例を示す図である。 クライアント装置20から送信したSYNメッセージ205が消失した場合の通信シーケンスの一例を示す図である。 変形例4に関連し、クライアント装置20がサーバ装置30Bに成りすましてサーバ装置30AへSYNメッセージを送信した場合の通信シーケンスの一例を示す図である。 同変形例4に関連し、クライアント装置20がサーバ装置40に成りすましてサーバ装置30AへSYNメッセージを送信した場合の通信シーケンスの一例を示す図である。 従来の3ウェイハンドシェークを説明するための図である。 従来のSYNCookieを説明するための図である。
符号の説明
10…通信網、20…クライアント装置、30,30A,30B,40,50…サーバ装置、100…制御部、110…通信IF部、120…記憶部、120a…揮発性記憶部、120b…不揮発性記憶部、130…バス。

Claims (9)

  1. 相手装置から送信されたメッセージを受信する受信手段と、
    前記相手装置へのデータの送信に用いる下りのコネクションを識別する識別子を含み該下りのコネクションの確立を要求する旨の第1のメッセージが前記受信手段により受信された場合に、前記相手装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨の第2のメッセージを前記相手装置へ送信する送信手段と、
    前記識別子を含み前記下りのコネクションの確立を要求するとともに前記第2のメッセージを受信したことを表す第3のメッセージが前記受信手段により受信された場合に、該第3のメッセージから前記識別子を読み出す読み出し手段と、
    前記読み出し手段により読み出された前記識別子に基づいて、前記相手装置との間に前記下りのコネクションを確立するコネクション確立手段と
    を有するサーバ装置。
  2. 前記読み出し手段は、
    前記識別子の他に、前記下りのコネクションを介して前記相手装置へデータを送信する際の通信態様を指示する付加データが前記第3のメッセージに含まれている場合には、前記識別子に加えて該付加データを読み出し、
    前記コネクション確立手段は、
    前記読み出し手段により読み出された前記識別子と前記付加データとに基づいて前記下りのコネクションを確立する
    ことを特徴とする請求項1に記載のサーバ装置。
  3. 前記第1のメッセージの送信元と前記第3のメッセージの送信元とが同一であるか否かを、前記第1のメッセージおよび前記第3のメッセージの内容に基づいて判定する判定手段を備え、
    前記読み出し手段は、前記判定手段の判定結果が肯定的である場合にのみ、前記第3のメッセージから前記識別子を読み出す
    ことを特徴とする請求項1に記載のサーバ装置。
  4. 前記第1のメッセージおよび第3のメッセージには、各々の送信元がデータを送信する際に利用するシーケンス番号の初期値を表すシーケンス番号データが書き込まれており、
    前記判定手段は、
    前記第1のメッセージに書き込まれている前記シーケンス番号データと前記第3のメッセージに書き込まれているシーケンス番号データとが同一のシーケンス番号を表している場合に、該第3のメッセージの送信元と前記第1のメッセージの送信元とが同一であると判定する
    ことを特徴とする請求項3に記載のサーバ装置。
  5. 前記受信手段は、相手装置から送信されてきたメッセージの所定の領域に付加データが書き込まれていた場合には、該メッセージを破棄し、
    前記送信手段は、
    前記第2のメッセージを送信する際に、その前記所定の領域へ前記付加データを書き込んで送信する
    ことを特徴とする請求項1に記載のサーバ装置。
  6. 前記受信手段により受信された第1のメッセージが、特定の通信ポートを介して相手装置から送信されたか否かを該第1のメッセージの内容に基づいて判定する判定手段を備え、
    前記送信手段は、
    前記受信手段により受信された第1のメッセージが前記特定の通信ポートを介して送信されたと前記判定手段により判定された場合に、前記付加データを前記所定の領域へ書き込んだ第2のメッセージを送信する
    ことを特徴とする請求項5に記載のサーバ装置。
  7. 通信手段と、
    制御手段と、
    を備え、
    前記制御手段は、
    相手装置へのデータの送信に用いる下りのコネクションを識別する識別子を含み該下りのコネクションの確立を要求する旨の第1のメッセージが前記通信手段により受信された場合に、該相手装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨の第2のメッセージを前記通信手段により該相手装置へ送信する第1の処理と、
    前記識別子を含み前記下りのコネクションの確立を要求するとともに前記第2のメッセージを受信したことを表す第3のメッセージが前記通信手段によって受信された場合に、該第3のメッセージから前記識別子を読み出す第2の処理と、
    前記第2の処理にて読み出した前記識別子に基づいて前記下りのコネクションを確立する第3の処理と、
    を行う
    ことを特徴とするサーバ装置。
  8. 相手装置との間にコネクションを確立し該相手装置へデータを送信するサーバ装置の制御方法において、
    前記相手装置へのデータの送信に用いる下りのコネクションを識別する識別子を含み該下りのコネクションの確立を要求する旨の第1のメッセージが前記相手装置から送信されてきた場合に、前記相手装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨の第2のメッセージを前記相手装置へ送信する第1のステップと、
    前記識別子を含み前記下りのコネクションの確立を要求するとともに前記第2のメッセージを受信したことを表す第3のメッセージが前記相手装置から送信されてきた場合に、該第3のメッセージから前記識別子を読み出す第2のステップと、
    前記第2のステップにて読み出した前記識別子に基づいて、前記下りのコネクションを確立する第3のステップと、
    を前記サーバ装置に順次行わせることを特徴とする制御方法。
  9. クライアント装置が、送信されたデータの受信に用いる下りのコネクションの確立を要求する旨の第1のメッセージをサーバ装置へ送信する第1のステップと、
    前記第1のメッセージを受信した前記サーバ装置が、前記クライアント装置から送信されたデータの受信に用いる上りのコネクションの確立を要求する旨のメッセージを前記クライアント装置へ送信する第2のステップと、
    前記第2のメッセージを受信した前記クライアント装置が、該第2のメッセージを受信したことを表すとともに前記下りのコネクションの確立を要求する旨の第3のメッセージを前記サーバ装置へ送信する第3のステップと、
    前記第3のメッセージを受信した前記サーバ装置が、該第3のメッセージの内容に基づいて前記下りのコネクションを確立する第4のステップと
    を順次行うことを特徴とするコネクション確立方法。
JP2004221859A 2004-07-29 2004-07-29 サーバ装置、その制御方法およびコネクション確立方法 Expired - Fee Related JP4313266B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2004221859A JP4313266B2 (ja) 2004-07-29 2004-07-29 サーバ装置、その制御方法およびコネクション確立方法
EP05015878A EP1622334B1 (en) 2004-07-29 2005-07-21 Server device, method for controlling a server device, and method for establishing a connection using the server device
DE602005001426T DE602005001426T2 (de) 2004-07-29 2005-07-21 Servervorrichtung, Verfahren zum Steuern einer Servervorrichtung und Verfahren zur Herstellung einer Kommunikationsverbindung unter Verwendung einer Servervorrichtung
CNB2005100884287A CN100403716C (zh) 2004-07-29 2005-07-28 服务器设备及其控制方法和使用该服务器建立连接的方法
US11/192,608 US7990866B2 (en) 2004-07-29 2005-07-29 Server device, method for controlling a server device, and method for establishing a connection using the server device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004221859A JP4313266B2 (ja) 2004-07-29 2004-07-29 サーバ装置、その制御方法およびコネクション確立方法

Publications (2)

Publication Number Publication Date
JP2006042156A JP2006042156A (ja) 2006-02-09
JP4313266B2 true JP4313266B2 (ja) 2009-08-12

Family

ID=35033705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004221859A Expired - Fee Related JP4313266B2 (ja) 2004-07-29 2004-07-29 サーバ装置、その制御方法およびコネクション確立方法

Country Status (5)

Country Link
US (1) US7990866B2 (ja)
EP (1) EP1622334B1 (ja)
JP (1) JP4313266B2 (ja)
CN (1) CN100403716C (ja)
DE (1) DE602005001426T2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070130324A1 (en) * 2005-12-05 2007-06-07 Jieming Wang Method for detecting non-responsive applications in a TCP-based network
US7675854B2 (en) * 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US8584199B1 (en) 2006-10-17 2013-11-12 A10 Networks, Inc. System and method to apply a packet routing policy to an application session
US8312507B2 (en) 2006-10-17 2012-11-13 A10 Networks, Inc. System and method to apply network traffic policy to an application session
JP5116319B2 (ja) * 2007-03-06 2013-01-09 キヤノン株式会社 メッセージ中継装置及び方法
GB0704836D0 (en) * 2007-03-13 2007-04-18 Blue Whale Systems Ltd Messaging methoa and apparatus
US7774490B2 (en) 2007-09-20 2010-08-10 Microsoft Corporation Crisscross cancellation protocol
US8180902B1 (en) 2009-03-05 2012-05-15 Riverbed Technology, Inc. Establishing network connections between transparent network devices
US8181060B1 (en) 2009-03-05 2012-05-15 Riverbad Technology, Inc. Preventing data corruption with transparent network connections
US7984160B2 (en) * 2009-03-05 2011-07-19 Riverbed Technology, Inc. Establishing a split-terminated communication connection through a stateful firewall, with network transparency
CN101505218B (zh) * 2009-03-18 2012-04-18 杭州华三通信技术有限公司 攻击报文的检测方法和装置
US9960967B2 (en) * 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US9083708B2 (en) * 2010-05-17 2015-07-14 Microsoft Technology Licensing, Llc Asymmetric end host redundancy elimination for networks
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9386088B2 (en) 2011-11-29 2016-07-05 A10 Networks, Inc. Accelerating service processing using fast path TCP
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US8782221B2 (en) 2012-07-05 2014-07-15 A10 Networks, Inc. Method to allocate buffer for TCP proxy session based on dynamic network conditions
CN103634264A (zh) * 2012-08-20 2014-03-12 江苏中科慧创信息安全技术有限公司 一种基于行为分析的主动诱捕方法
CN103685171A (zh) * 2012-09-10 2014-03-26 江苏中科慧创信息安全技术有限公司 保护账号系统的攻击控制方法
CN103685410B (zh) * 2012-09-18 2016-08-31 华耀(中国)科技有限公司 一种透传时间戳的方法
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US9106561B2 (en) 2012-12-06 2015-08-11 A10 Networks, Inc. Configuration of a virtual service network
WO2014052099A2 (en) 2012-09-25 2014-04-03 A10 Networks, Inc. Load distribution in data networks
US10002141B2 (en) 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US9338225B2 (en) 2012-12-06 2016-05-10 A10 Networks, Inc. Forwarding policies on a virtual service network
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
WO2014144837A1 (en) 2013-03-15 2014-09-18 A10 Networks, Inc. Processing data packets using a policy based network path
US10038693B2 (en) 2013-05-03 2018-07-31 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
US10230770B2 (en) 2013-12-02 2019-03-12 A10 Networks, Inc. Network proxy layer for policy-based application proxies
US10020979B1 (en) 2014-03-25 2018-07-10 A10 Networks, Inc. Allocating resources in multi-core computing environments
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
US9806943B2 (en) 2014-04-24 2017-10-31 A10 Networks, Inc. Enabling planned upgrade/downgrade of network devices without impacting network sessions
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
EP3059922A1 (en) 2015-02-20 2016-08-24 Thomson Licensing Devices and methods for performing tcp handshakes
CN105049489A (zh) * 2015-06-25 2015-11-11 上海斐讯数据通信技术有限公司 一种在uboot上实现三次握手的方法
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10318288B2 (en) 2016-01-13 2019-06-11 A10 Networks, Inc. System and method to process a chain of network applications
US10361997B2 (en) 2016-12-29 2019-07-23 Riverbed Technology, Inc. Auto discovery between proxies in an IPv6 network
US10389835B2 (en) 2017-01-10 2019-08-20 A10 Networks, Inc. Application aware systems and methods to process user loadable network applications
CN109587163B (zh) * 2018-12-27 2022-08-16 网宿科技股份有限公司 一种dr模式下的防护方法和装置
WO2024116666A1 (ja) * 2022-12-02 2024-06-06 パナソニックIpマネジメント株式会社 検知システム、検知方法、および、プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574849A (en) * 1992-12-17 1996-11-12 Tandem Computers Incorporated Synchronized data transmission between elements of a processing system
US5802106A (en) * 1996-12-06 1998-09-01 Packeteer, Inc. Method for rapid data rate detection in a packet communication environment without data rate supervision
US6457054B1 (en) * 1997-05-15 2002-09-24 Intel Corporation System for reducing user-visibility latency in network transactions
CA2281431A1 (en) * 1998-10-28 2000-04-28 Lucent Technologies Inc. Mobile-tcp and method of establishing and maintaining a mobile-tcp connection
FI107421B (fi) * 1999-06-28 2001-07-31 Stonesoft Oy Yhteyksien valintamenetelmä
US6789119B1 (en) * 1999-11-24 2004-09-07 Webex Communication, Inc. Emulating a persistent connection using http
TW518864B (en) * 2000-05-12 2003-01-21 Ibm Methods and system for defeating TCP SYN flooding attacks
US7562147B1 (en) * 2000-10-02 2009-07-14 Microsoft Corporation Bi-directional HTTP-based reliable messaging protocol and system utilizing same
JP2002290459A (ja) * 2001-03-27 2002-10-04 Nec Corp パケット転送装置および方法
US7114182B2 (en) * 2002-05-31 2006-09-26 Alcatel Canada Inc. Statistical methods for detecting TCP SYN flood attacks
US7254133B2 (en) * 2002-07-15 2007-08-07 Intel Corporation Prevention of denial of service attacks
US20040202329A1 (en) * 2003-04-11 2004-10-14 Samsung Electronics Co., Ltd. Method and system for providing broadcast service using encryption in a mobile communication system
US7026954B2 (en) * 2003-06-10 2006-04-11 Bellsouth Intellectual Property Corporation Automated parking director systems and related methods
USRE43385E1 (en) * 2003-09-30 2012-05-15 Research In Motion Limited Communication method
CN1630248A (zh) * 2003-12-19 2005-06-22 北京航空航天大学 基于连接请求验证的SYN flooding攻击防御方法

Also Published As

Publication number Publication date
CN100403716C (zh) 2008-07-16
DE602005001426T2 (de) 2008-02-28
DE602005001426D1 (de) 2007-08-02
US7990866B2 (en) 2011-08-02
US20060023721A1 (en) 2006-02-02
EP1622334B1 (en) 2007-06-20
EP1622334A1 (en) 2006-02-01
JP2006042156A (ja) 2006-02-09
CN1728671A (zh) 2006-02-01

Similar Documents

Publication Publication Date Title
JP4313266B2 (ja) サーバ装置、その制御方法およびコネクション確立方法
EP1635530B1 (en) Apparatus and method for mitigating DoS attacks in a service discovery system
US7391725B2 (en) System and method for defeating SYN attacks
Camarillo et al. Evaluation of transport protocols for the session initiation protocol
Ford et al. TCP extensions for multipath operation with multiple addresses
US7640338B2 (en) System and method for mitigation of malicious network node activity
KR101458231B1 (ko) 보안 통신을 지원하는 방법 및 보안 터널링을 지원하는 서버
JP4271451B2 (ja) インターネット鍵交換データパケットをフラグメント化および再組み立てするための方法および装置
US10530644B2 (en) Techniques for establishing a communication connection between two network entities via different network flows
WO2014037760A1 (zh) 增加数据流传输的方法和系统
JP2010520687A (ja) 物理伝送媒体が中断した場合のtcpデータ伝送プロセスを改善する方法
Gont TCP's reaction to soft errors
JP2006203537A (ja) ネットワーク伝送装置およびネットワーク伝送方法
US7388836B2 (en) System and method for communicating data in a network environment
JP3648211B2 (ja) パケット中継プログラム、パケット中継装置および記録媒体
KR101104599B1 (ko) 네트워크 상에서 tcp syn 플러딩 공격을 차단하는 장치 및 방법
Meixner et al. Design and Evaluation of a Kernel-Level SCTP Implementation
Handley et al. Internet engineering task force (IETF) A. Ford request for comments: 6824 cisco category: Experimental c. Raiciu
Gont et al. Network Working Group M. Bagnulo Internet-Draft UC3M Intended status: Informational C. Paasch Expires: January 15, 2014 UCLouvain
Fang y-of Gradůate Studies
Ott et al. The Binary Floor Control Protocol (BFCP) draft-ietf-bfcpbis-rfc4582bis-06
Choudhari et al. SCTP-Sec: A secure Transmission Control Protocol
Fairhurst DCCP Simultaneous-Open Technique to Facilitate NAT/Middlebox Traversal

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090424

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: 20090512

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090514

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4313266

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130522

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140522

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees