San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
DevSecOps

伝送制御プロトコル(TCP)

Introduction

インターネットプロトコルの主要な規格の一つはTCP(Transmission Control Protocol)です。以下、伝送制御プロトコルの定義についてご説明します。

伝送制御プロトコル(TCP)

Transmission Control Protocol (TCP) の定義

インターネット規格群の主要なプロトコルの一つはTCP(Transmission Control Protocol)です。TCPは信頼性の高い通信を仲介し、アプリ層とネットワーク層の間に位置します。接続型プロトコルとして、ネットワーク上でのメッセージ送受信をより効率的に実現します。

TCPの動作

クライアントとサーバーは、TCP各層を経由した3ウェイハンドシェイクに参加し、標準的なTCP接続を確立します。以下にその手順を示します:

  • クライアントは、自身の送信元ポートからサーバーの宛先ポートへSYNパケットを送信し、接続要求を行います。
  • サーバーは、SYN/ACKパケットを送信して接続要求の受信を確認します。
  • クライアントはSYN/ACKパケットを受け取り、自身のACKパケットで応答します。

TCPは、送信するデータをセグメントに分割し、各セグメントをデータグラムに詰めて、接続確立後に宛先へ送信します。

How does TCP work
How does TCP work

TCPの重要性

TCPは、インターネット上でのデータ送信の基準と手順を定めるため非常に重要です。現代のウェブの基盤として、場所、機器、プラットフォームにかかわらず信頼性の高いデータ送信を実現します。

また、TCPは柔軟かつ拡張可能で、新しいプロトコルを追加しても影響を受けにくい設計となっています。さらに、オープンなプロトコルであるため、特定の個人や企業に所有されていません。

TCPヘッダの例

TCPでは、すべてのデータパケットに10個の必須フィールドからなる20バイト(またはオクテット)のヘッダが付加されます。各ヘッダには、接続情報と現在送信中のデータに関する情報が含まれます。

以下に、TCPヘッダの10フィールドを示します:

  1. 送信元ポートは、送信する機器のポートです。
  2. 受信側のポートは、宛先ポートと呼ばれます。
  3. シーケンス番号 - TCP接続確立時、機器はランダムな初期シーケンス番号を選定し、その後送信バイト数に応じて増加させます。
  4. 確認応答番号 - 受信機器は、ゼロから開始する確認応答番号を管理し、受信バイト数に合わせて増加させます。
  5. TCPデータオフセットにより、32ビット単位で表されるヘッダのサイズが決定され、一単語は4バイトに相当します。
  6. 予約領域 - このフィールドの値は必ずしも使用されるわけではありません。
  7. TCPは、リセット開始時など特定の状況下でデータフローを管理するために9つの制御フラグを使用します。
  8. TCPチェックサムの一部 - 各パケットヘッダには送信側で生成されたチェックサムが含まれており、受信側がヘッダやペイロードのエラーを検出する際に用いられます。
  9. この値はシーケンス番号からのオフセットを示し、URGフラグがセットされている場合、最後のデータバイトを指します。
  10. TCPオプションは、最大セグメントサイズの設定、特定の確認応答、そして高帯域ネットワークの効率的利用のためのウィンドウスケーリングを可能にする任意フィールドで構成されます。

プロトコルの長所と短所

長所

  • 信頼性の高いプロトコルです。
  • エラー検出と回復の仕組みが備わっています。
  • データの流れを制御します。
  • 送信順に正しいアドレスへデータが届くことを保証します。
  • オープンプロトコルであり、特定の組織や個人に属しません。
  • ネットワーク上の各PCにIPアドレス、各サイトにドメイン名が割り当てられ、各デバイスの位置が識別可能となります。

短所

  • TCPは広域ネットワーク向けに設計されているため、リソースの限られた小規模ネットワークではオーバーヘッドが問題となる場合があります。
  • 複数の層が存在するため、ネットワークの処理速度が低下することがあります。
  • TCPは汎用製品ではなく、TCP/IP以外のプロトコルスタックには対応していません。例えば、Bluetooth接続では動作しません。
  • 導入されてから長い年月が経過しており、変更はほとんど加えられていません。

TCPは何に使われるか

TCPは、サーバーとクライアント間でデータを安全に送信するための通信プロトコルです。データ量にかかわらずネットワーク上でデータの整合性を保証するため、すべてのデータ受信を要求する高レベルプロトコルで利用されます。

TCP/IP architecture
TCP/IP architecture

TCP/IPスタック

TCP/IPスタックは、ネットワーク上でのデータ処理やパッケージ化の仕組みを示すモデルです。クライアントからサーバーへ、またその逆にデータがどのように扱われるか、各層のプロトコルが役割を果たします。

TCPは、UDPなど他のプロトコルとともにトランスポート層で動作します。UDPはエラー検出能力が限定的なため、この層ではエラーのないデータ送信が重視されます。

TCP/IPスタックは、OSIモデルと同様、データ転送の標準を示す理論上のモデルです。各層はその機能に応じてデータを再パッケージ化します。

データはアプリ層から始まり、スタックを下ってサーバーへ送信されます。各層でさまざまな種類のパケットに分割され、以下の流れで転送されます:

アプリ層からトランスポート層へ、そこでTCPセグメントにまとめられ、インターネット層でデータグラムとなり、ネットワークインタフェース層でビットとバイトに分割されます。そして、サーバーの応答によりデータはスタックを上がって返送されます。

TCPの脆弱性

  • SYNフラッド

3ウェイハンドシェイクの初期段階で、標的機器が処理可能な速度を超えて各ポートへTCP接続要求(SYNパケット)を送信するとSYNフラッド攻撃が発生します。サーバーは、攻撃者の偽のSYN要求に対応するため正規のTCP要求に遅れが生じ、ハンドシェイクが完了しません。

その結果、標的機器の利用可能なTCPポートが使い果たされます。SYNパケットは、標的のネットワーク帯域を占有する標準的なペイロードとして用いられることが多いです。

  • STOMP DDoS攻撃

これは、アプリとメッセージブローカー間でTCPベースの通信を可能にするメッセージ型プロトコルです。STOMP DDoS攻撃の犯人はボットネットを利用して膨大な数のTCPハンドシェイクをアプリと開始し、その後、STOMP TCP要求に偽装した不要なデータでネットワークを溢れさせます。サーバーがSTOMP要求の解析に対応できる場合、サーバー資源に過負荷がかかる恐れもあります。

  • TCPフラグメンテーション(Teardrop)

3ウェイハンドシェイク完了後の通信中に、ティアドロップ攻撃と呼ばれるIPフラグメンテーション攻撃がTCP/IPの再構築機能を狙います。攻撃者は不正なフラグメントオフセットのデータパケットを送信することで、受信側が分割データを正しく組み立てられなくし、パケットが急速にサーバーに負荷をかける結果となります。

TCP vs UDP

TCPは、パケット到着後の再送信や再順序化によるエラー検出処理がTCPストリームの混雑を引き起こすことがあります。低遅延とジッター軽減のため、パケットの順序入れ替えや再送信を行わないUDPのようなトランスポートプロトコルが、VoIP、動画ストリーミング、ゲームなど時間に敏感なアプリで一般的に使用されます。

また、UDPは双方が不安定な接続状態を管理できたかを確認する手段がなく、データグラム(コネクションレス)プロトコルと呼ばれます。TCPのように誤ったパケットを修正するのではなく、UDPはそれらを破棄し、基本的なエラー検出をアプリ側に委ねます。

さらに、UDPのデータグラムヘッダはTCPセグメントヘッダに比べ情報量が少ないため、トランスポート層での処理が大幅に簡略化され、遅延が最小限に抑えられます。

TCP vs UDP

TCP/IP と OSIモデルの違い

具体性の度合いが、TCP/IPモデルとOSIモデルの主な違いです。

OSIモデルは、特定の実装にとらわれない、より厳密なデータ交換の理論的描写と捉えることができ、ネットワークシステム全般の設計図となっています。一方、TCP/IPスタックは実用的で、一般的なデータ転送プロトコルを包含しています。

また、TCP/IPスタックは具体的でプロトコルに基づいていますが、OSIモデルは理論的で利便性を重視しています。さらに、TCP/IPは4層、OSIモデルは7層という点も異なります。

TCPIP and the OSI Model
TCP/IP and the OSI Model

FAQ

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック