Introduction
インターネットプロトコルの主要な規格の一つはTCP(Transmission Control Protocol)です。以下、伝送制御プロトコルの定義についてご説明します。
インターネット規格群の主要なプロトコルの一つはTCP(Transmission Control Protocol)です。TCPは信頼性の高い通信を仲介し、アプリ層とネットワーク層の間に位置します。接続型プロトコルとして、ネットワーク上でのメッセージ送受信をより効率的に実現します。
クライアントとサーバーは、TCP各層を経由した3ウェイハンドシェイクに参加し、標準的なTCP接続を確立します。以下にその手順を示します:
TCPは、送信するデータをセグメントに分割し、各セグメントをデータグラムに詰めて、接続確立後に宛先へ送信します。
TCPは、インターネット上でのデータ送信の基準と手順を定めるため非常に重要です。現代のウェブの基盤として、場所、機器、プラットフォームにかかわらず信頼性の高いデータ送信を実現します。
また、TCPは柔軟かつ拡張可能で、新しいプロトコルを追加しても影響を受けにくい設計となっています。さらに、オープンなプロトコルであるため、特定の個人や企業に所有されていません。
TCPでは、すべてのデータパケットに10個の必須フィールドからなる20バイト(またはオクテット)のヘッダが付加されます。各ヘッダには、接続情報と現在送信中のデータに関する情報が含まれます。
以下に、TCPヘッダの10フィールドを示します:
長所
短所
TCPは、サーバーとクライアント間でデータを安全に送信するための通信プロトコルです。データ量にかかわらずネットワーク上でデータの整合性を保証するため、すべてのデータ受信を要求する高レベルプロトコルで利用されます。
TCP/IPスタックは、ネットワーク上でのデータ処理やパッケージ化の仕組みを示すモデルです。クライアントからサーバーへ、またその逆にデータがどのように扱われるか、各層のプロトコルが役割を果たします。
TCPは、UDPなど他のプロトコルとともにトランスポート層で動作します。UDPはエラー検出能力が限定的なため、この層ではエラーのないデータ送信が重視されます。
TCP/IPスタックは、OSIモデルと同様、データ転送の標準を示す理論上のモデルです。各層はその機能に応じてデータを再パッケージ化します。
データはアプリ層から始まり、スタックを下ってサーバーへ送信されます。各層でさまざまな種類のパケットに分割され、以下の流れで転送されます:
アプリ層からトランスポート層へ、そこでTCPセグメントにまとめられ、インターネット層でデータグラムとなり、ネットワークインタフェース層でビットとバイトに分割されます。そして、サーバーの応答によりデータはスタックを上がって返送されます。
3ウェイハンドシェイクの初期段階で、標的機器が処理可能な速度を超えて各ポートへTCP接続要求(SYNパケット)を送信するとSYNフラッド攻撃が発生します。サーバーは、攻撃者の偽のSYN要求に対応するため正規のTCP要求に遅れが生じ、ハンドシェイクが完了しません。
その結果、標的機器の利用可能なTCPポートが使い果たされます。SYNパケットは、標的のネットワーク帯域を占有する標準的なペイロードとして用いられることが多いです。
これは、アプリとメッセージブローカー間でTCPベースの通信を可能にするメッセージ型プロトコルです。STOMP DDoS攻撃の犯人はボットネットを利用して膨大な数のTCPハンドシェイクをアプリと開始し、その後、STOMP TCP要求に偽装した不要なデータでネットワークを溢れさせます。サーバーがSTOMP要求の解析に対応できる場合、サーバー資源に過負荷がかかる恐れもあります。
3ウェイハンドシェイク完了後の通信中に、ティアドロップ攻撃と呼ばれるIPフラグメンテーション攻撃がTCP/IPの再構築機能を狙います。攻撃者は不正なフラグメントオフセットのデータパケットを送信することで、受信側が分割データを正しく組み立てられなくし、パケットが急速にサーバーに負荷をかける結果となります。
TCPは、パケット到着後の再送信や再順序化によるエラー検出処理がTCPストリームの混雑を引き起こすことがあります。低遅延とジッター軽減のため、パケットの順序入れ替えや再送信を行わないUDPのようなトランスポートプロトコルが、VoIP、動画ストリーミング、ゲームなど時間に敏感なアプリで一般的に使用されます。
また、UDPは双方が不安定な接続状態を管理できたかを確認する手段がなく、データグラム(コネクションレス)プロトコルと呼ばれます。TCPのように誤ったパケットを修正するのではなく、UDPはそれらを破棄し、基本的なエラー検出をアプリ側に委ねます。
さらに、UDPのデータグラムヘッダはTCPセグメントヘッダに比べ情報量が少ないため、トランスポート層での処理が大幅に簡略化され、遅延が最小限に抑えられます。
具体性の度合いが、TCP/IPモデルとOSIモデルの主な違いです。
OSIモデルは、特定の実装にとらわれない、より厳密なデータ交換の理論的描写と捉えることができ、ネットワークシステム全般の設計図となっています。一方、TCP/IPスタックは実用的で、一般的なデータ転送プロトコルを包含しています。
また、TCP/IPスタックは具体的でプロトコルに基づいていますが、OSIモデルは理論的で利便性を重視しています。さらに、TCP/IPは4層、OSIモデルは7層という点も異なります。
最新情報を購読