TCP のバックアップ(No.5)


TCP とは

名称

  • Transmission Control Protocol

概要

TCPの仕組み

TCPコネクション

  • 通信の開始時に通信路を確立し、終了時に通信路を解放する
  • 3つのフェーズで行われる
    1. コネクション確立フェーズ
    2. 通信フェーズ
    3. コネクション切断フェーズ

コネクション確立フェーズ

  • 3wayハンドシェイク
    • 1. →(SYN)
    • 2. ←(ACK + SYN)
    • 3. →(ACK)
  • ※SYN:コネクション確立要求
  • ※ACK:肯定応答

コネクション切断フェーズ

  • 1. →(FIN + ACK)
  • 2. ←(ACK)
  • 3. ←(FIN + ACK)
  • 4. →(ACK)

TCP のデータ構造

  • TCPヘッダとペイロードで構成される
    • TCPヘッダ(20バイト~)
    • ペイロード(アプリケーション層のデータ)

TCPヘッダ

  • 1〜32bit
    • 送信元ポート番号(16)
    • あて先ポート番号(16)
  • 33〜64bit
    • シーケンス番号(32)
  • 65〜96bit
    • 確認応答番号(ACK番号)(32)
  • 97〜128bit
    • データオフセット(4) ※TCPヘッダ長:単位は4Byte(32bit)
    • 予約(6) ※未使用
    • コントロールフラグ(6)
    • ウィンドウサイズ(16)
  • 129〜160bit
    • チェックサム(16)
    • 緊急ポインタ(16)
  • 161〜192bit
    • オプション(n)
    • パディング(32-n)

シーケンス番号

  • 送信データの連番

確認応答番号(ACK番号)

  • 受信データの連番

コントロールフラグ

  • コードビット
  • コントロールビット
ビット位置コードビット意味
1URGurgent緊急
2ACKacknowledgement応答。SYNパケットの場合"0"、SYNパケット以外の場合"1"
3PSHpushプッシュ
4RSTresetリセット。TCP接続を強制終了する場合"1"
5SYNsynchronize同期。SYNパケットの場合"1"、SYNパケット以外の場合"0"
6FINfinish終了。TCP接続を終了する場合"1"

SYNクッキー

  • TCP通信の正当性を確認するために、SYN + ACKパケットのシーケンス番号に埋め込むデータのこと
  • TCPヘッダをハッシュ化した値などが使われる

TCPの脆弱性

  • 発信元IPアドレスの偽装が難しい
  • 発信元IPアドレスが偽装されていても、コネクションの確立が必要ない攻撃に対しては弱い
  • 接続要求(SYN)に対する応答(SYN/ACK)を攻撃に悪用される

関連用語