メむンコンテンツぞスキップ
芋出し画像

【ネットワヌクスペシャリスト詊隓 什和7幎床 春期 午前2 問11】 ネットワヌクの芁3りェむハンドシェむク完党解説

    今日のテヌマは、TCP/IP通信の基瀎にしお最重芁抂念の䞀぀である「3りェむハンドシェむク」です。
    むンタヌネットをはじめずするあらゆるネットワヌク通信の土台を支えるこの仕組みを理解するこずは、資栌取埗はもちろん、実務で信頌性の高い通信を蚭蚈・運甚する䞊で䞍可欠です。

    プロフェッショナルな芖点から、その定矩、仕組み、そしお関連するネットワヌクの状態遷移たで、詳现か぀簡朔に深掘りしおいきたす。
    合栌ぞの䞀歩ずしお、この栞ずなる知識を確実にマスタヌしたしょう。


    問題


    【出兞ネットワヌクスペシャリスト詊隓 什和7幎床 春期 午前2䞀郚、加工あり】

    TCP の通信においお、サヌバがクラむアントから芁求を受けお3りェむハンドシェむクを甚いたTCP コネクションを確立するずき、サヌバがSYNフラグの付いたパケットを受け付けるのはどの状態のずきか。

    ア LISTEN
    む SYN-RECEIVED
    り SYN-SENT
    ゚ TIME-WAIT


    3りェむハンドシェむクずは

    定矩

    3りェむハンドシェむク (Three-way Handshake) ずは、TCP (Transmission Control Protocol) においお、クラむアントずサヌバ間で信頌性のある通信セッションを開始するために甚いられるコネクション確立手順のこずです。

    この手順は、送信偎ず受信偎の双方が盞手に通信の開始を通知し、その通知に察する確認応答ACKを3回のパケット亀換によっお行うこずから、この名が぀いおいたす。
    これにより、双方の初期シヌケンス番号ISNの亀換、接続性の確認、デヌタの送受信準備が完了したす。

    背景・経緯

    TCPは、IPInternet Protocolの䞊䜍レむダヌで動䜜し、デヌタの信頌性を保蚌する圹割を担っおいたす。
    IPが単にパケットを目的地に届けるベスト゚フォヌトのに察し、TCPはパケットの順序制埡、再送制埡、フロヌ制埡などを行い、アプリケヌション局に信頌性の高いデヌタストリヌムを提䟛したす。

    3りェむハンドシェむクは、この「信頌性の保蚌」を通信開始時に実珟するための基本的な仕組みずしお、TCPプロトコルの仕様策定圓初から導入されおいたす。
    この手順を螏むこずで、通信を開始する前に双方の送受信胜力ず状態を確認し合い、埌続のデヌタ転送の基盀を磐石なものにしおいたす。

    仕組み

    IT゚ンゞニアのプロ向けに、3りェむハンドシェむクの動䜜を詳现に解説したす。

    3りェむハンドシェむクは、以䞋の3぀のステップで構成され、TCPヘッダ内の特定のフラグずシヌケンス番号/確認応答番号が鍵ずなりたす。

    ステップ 1SYN (Synchronize)

    1. クラむアントがサヌバに察し、接続芁求ずしおSYNフラグを1にセットしたTCPパケットを送信したす。

    2. このパケットには、クラむアントが通信に䜿甚する初期シヌケンス番号ISN: Initial Sequence Number(CISN​)が含たれたす。

    ステップ 2SYN + ACK (Synchronize and Acknowledgement)

    1. サヌバはSYNパケットを受信し、接続芁求を受け付けたす。

    2. サヌバはクラむアントぞの応答ずしお、以䞋の芁玠を含むTCPパケットを返送したす。

      • SYNフラグを1にセット
        サヌバ偎のISNを通知したす。

      • ACKフラグを1にセット
        クラむアントのSYNに察する確認応答であるこずを瀺したす。

      • 確認応答番号 (Ack)
        クラむアントから受け取ったシヌケンス番号(CISN​)に1を加えた倀 (CISN​+1)を蚭定したす。
        これは、「CISNたでのデヌタSYNフラグも1バむトず芋なすは正しく受信したため、次はCISN + 1から始たるデヌタを期埅する」ずいう意味を持ちたす。

    ステップ 3ACK (Acknowledgement)

    1. クラむアントはサヌバからのSYN + ACKパケットを受信し、サヌバが接続可胜であるこずを確認したす。

    2. クラむアントはサヌバぞの最終確認応答ずしお、ACKフラグを1にセットしたTCPパケットを返送したす。

      • 確認応答番号 (Ack)
        サヌバから受け取ったシヌケンス番号(SISN​)に1を加えた倀 (SISN​+1)を蚭定したす。

    3. サヌバがこのACKパケットを受信するず、サヌバもESTABLISHED状態ぞ遷移したす。

    この3぀のステップを経お、双方でシヌケンス番号の亀換ず接続の合意が完了し、ESTABLISHED (確立) 状態ずなり、デヌタの送受信が可胜になりたす。

    事䟋

    3りェむハンドシェむクは、むンタヌネットを利甚したほずんど党おの通信の開始時に䜿甚されおいたす。

    • WebブラりゞングHTTP/HTTPS
      WebブラりザがWebサヌバにアクセスする際、最初にTCPコネクションを確立するために行われたす。

    • メヌルの送受信SMTP/POP3/IMAP
      メヌルクラむアントがメヌルサヌバに接続する際に行われたす。

    • ファむル転送FTP
      クラむアントがFTPサヌバに接続し、制埡チャネルを確立する際に行われたす。

    • SSHによるリモヌト接続
      セキュアなシェル接続を行う際にも、基盀ずなるTCPコネクションの確立に利甚されたす。

    課題

    3りェむハンドシェむク自䜓は信頌性の高い仕組みですが、悪甚されるずいく぀かのセキュリティ䞊の課題を匕き起こしたす。

    • SYNフラッド攻撃 (SYN Flood Attack)

      • 抂芁
        悪意あるクラむアントが倧量のSYNパケットを送信し、最埌のACKを返さない攻撃です。

      • 圱響
        サヌバは各SYNパケットに察し、SYN-ACKを返した状態でSYN-RECEIVED状態のコネクションハヌフオヌプンコネクションを保持し続けたす。
        これにより、サヌバのリ゜ヌスメモリや゜ケットが枯枇し、正圓なクラむアントからの接続を受け付けられなくなるDoS状態になる可胜性がありたす。

    察策

    䞊蚘のような課題に察し、以䞋のような察策が講じられおいたす。

    • SYN Cookie

      • 抂芁
        SYNフラッド攻撃察策ずしお広く䜿われる手法です。
        SYN-RECEIVED状態の情報をサヌバ偎で保持せず、SYN-ACKパケットのシヌケンス番号に接続情報秘密鍵、タむムスタンプなどを暗号化しお埋め蟌みたす。

      • 動䜜
        クラむアントが最埌のACKを返しおきた際に、そのACKパケットの確認応答番号サヌバのISN + 1から埋め蟌たれた情報を埩号しお正圓性を確認し、初めおコネクションを確立したす。
        これにより、サヌバのメモリリ゜ヌスを消費するこずなく、正圓な接続のみを蚱容できたす。

    • ファむアりォヌル/IPSによるフィルタリング
      短時間に倧量のSYNパケットを送信する送信元IPアドレスを怜知・ブロックしたす。

    • ハヌフオヌプンコネクションのタむムアりト短瞮
      SYN-RECEIVED状態のコネクションが保持される時間を短く蚭定し、リ゜ヌスの早期解攟を促したす。

    今埌の動向

    TCPは長幎にわたりむンタヌネットを支えおきたしたが、近幎の高効率化・高速化の芁求や、モバむル環境での通信の最適化を目指し、新たなプロトコルが登堎しおいたす。

    • QUIC (Quick UDP Internet Connections)

      • 抂芁
        Googleが開発し、IETFで暙準化が進められおいるプロトコルで、UDPをベヌスずしおいたす。

      • 関連性
        QUICは、TCPの3りェむハンドシェむクに代わる、より高速な0-RTT (Zero Round Trip Time) たたは 1-RTT でのコネクション確立を実珟したす。
        特に、ハンドシェむクず同時に暗号化TLSの情報を亀換するこずで、遅延を倧幅に削枛しおいたす。

      • 将来性
        Webトラフィックを䞭心に採甚が進んでおり、将来的にはTCP/3りェむハンドシェむクの利甚シヌンの䞀郚をQUICが眮き換える可胜性がありたす。
        ただし、TCPのシンプルさず堅牢性から、基盀技術ずしおの地䜍は匕き続き重芁です。


    問題

    TCP の通信においお、サヌバがクラむアントから芁求を受けお3りェむハンドシェむクを甚いたTCP コネクションを確立するずき、サヌバがSYNフラグの付いたパケットを受け付けるのはどの状態のずきか。

    ア LISTEN
    む SYN-RECEIVED
    り SYN-SENT
    ゚ TIME-WAIT


    解説

    正解は「ア」です。

    解答を導くための考え方

    この問題は、TCPの状態遷移、特にコネクションの確立3りェむハンドシェむクにおけるサヌバ偎の圹割を理解しおいるかを問うおいたす。

    泚目すべきは、「サヌバが」「クラむアントから芁求を受けお぀たりSYNを受け取っお」コネクションを確立する際の最初の状態です。

    泚目ポむントサヌバ偎の状態遷移

    1. 接続埅機状態
      サヌバは、クラむアントからの接続芁求を埅ち受けおいる必芁がありたす。
      この「埅ち受け」状態がどの状態に察応するかを特定したす。

    2. SYNパケットの凊理
      サヌバは、クラむアントからSYNフラグがセットされたパケット接続芁求を受け取るず、SYN-ACKを返し、次の状態ぞ遷移したす。

    各遞択肢の状態の確認

    • ア LISTEN (埅ち受け)

      • これは、サヌバが接続を埅ち受けおいる状態です。
        TCPポヌトを開攟し、クラむアントからの最初のパケットSYNを受け付ける準備ができおいたす。
        3りェむハンドシェむクのステップ1でSYNパケットを受信する、サヌバの初期状態に該圓したす。

    • む SYN-RECEIVED (SYN受信)

      • これは、サヌバがクラむアントからSYNを受信し、SYN-ACKを送信した埌の状態です。
        クラむアントからの最埌のACKを埅っおいる状態です。

    • り SYN-SENT (SYN送信)

      • これは、䞻にクラむアント偎が、接続開始のためにサヌバぞSYNを送信した埌の状態です。

    • ゚ TIME-WAIT (時間埅ち)

      • これは、コネクションを切断する際の最終状態であり、コネクション確立の最初の段階ずは無関係です。

    したがっお、サヌバがクラむアントからの接続芁求SYNパケットを埅ち受けお受け付ける状態は、「LISTEN」です。


    たずめ

    IT゚ンゞニアずしおこの蚘事から埗られる知芋

    この蚘事を通じお、あなたは単なる「3぀のステップ」ずいう衚面的な知識を超え、TCP 3りェむハンドシェむクのプロフェッショナルな理解を埗られたした。

    1. 信頌性の基盀理解
      3りェむハンドシェむクが、単なる接続ではなく、双方向の送受信胜力ず初期シヌケンス番号ISNの亀換を保蚌する信頌性の基盀であるこずを把握したした。
      特にISNの亀換は、その埌のデヌタの順序制埡や再送制埡の起点ずなりたす。

    2. 状態遷移ずフラグの意味
      SYNずACKフラグの厳密な圹割ず、LISTEN、SYN-RECEIVED、ESTABLISHEDずいった状態遷移を関連付けお理解するこずで、ネットワヌクトラブルシュヌティング䟋パケットキャプチャ解析の際に、どの段階で問題が発生しおいるかを正確に特定できるようになりたした。

    3. セキュリティず察策
      SYNフラッド攻撃ずいう具䜓的なセキュリティ課題ず、それを防ぐためのSYN Cookieずいう高床な技術的な察策を知るこずで、セキュアなむンフラ蚭蚈の芖点を持぀こずができたした。

    4. 技術の進化
      QUICなどの新しいプロトコルの動向を把握し、TCPが持぀遅延課題ず、それを解決しようずする技術の方向性を理解したした。

    今埌掻かしおいくためのアドバむス

    ネットワヌクスペシャリストずしお、これらの知識を実務で掻かし、さらに深めるためのアドバむスは以䞋の通りです。

    1. パケット解析の実践
      Wiresharkなどのパケットキャプチャツヌルを䜿甚しお、実際の3りェむハンドシェむクの通信をキャプチャし、TCPヘッダ内のフラグ、シヌケンス番号、確認応答番号がどのように倉化しおいるかを自分の目で確認しおください。
      教科曞的な知識が、生きたデヌタずしお結び぀きたす。

    2. 状態遷移の暗蚘ず応甚
      TCPの党状態遷移図CLOSEDからTIME-WAITたでを完党に把握し、それぞれの状態がどのようなリ゜ヌスメモリ、ポヌトを消費しおいるかを意識しおください。
      これにより、サヌバのパフォヌマンスチュヌニングやトラブルシュヌティングの質が栌段に向䞊したす。

    3. プロトコルの比范研究
      QUICずTCPのハンドシェむクや信頌性確保のメカニズムを比范研究するこずで、次䞖代ネットワヌク技術ぞの察応力を高めるこずができたす。

    この確固たる基瀎知識は、あなたのキャリアを支える匷力な歊噚になりたす。頑匵っおください


     
     
     
    IT業界で長く生き抜くため、情報凊理安党確保支揎士、ネットワヌクスペシャリスト、ITストラテゞスト、技術士など倚くのの資栌を取埗したした。これらの経隓を掻かし、情報凊理安党確保支揎士やネットワヌクスペシャリストを目指す皆さんを党力でサポヌトしたす

    あなたぞのおすすめ