3ウェイ・ハンドシェイク


3ウェイ・ハンドシェイク (スリーウェイハンドシェイク, three-way handshaking) とは、TCP などにおいて使用されている、接続(コネクション)を確立するための手順。
概要
次の 3 ステップによって構成される。
- 通信の要求者が相手に対して SYN パケットを送信する。送信するシーケンス番号(順序番号)はランダムな値。
- SYN パケットを受けとった通信相手は、その要求者の接続を許可する SYN ACK パケットを送信する。同時に通信相手は接続を準備するために、その要求者との 接続用の情報を記憶する領域を割り当てる。要求者へ回答する際の確認応答番号(ACK番号)は、受信したシーケンス番号(順序番号)に1を加えた値になる。通信相手側が送信するシーケンス番号(順序番号)はランダムな値。
- SYN ACK パケットを受けとった要求者は、接続開始をあらわす ACK パケットを送信し、通信相手との通信を開始する。通信相手に送信する確認応答番号(ACK番号)は受信したシーケンス番号(順序番号)に1を加えた値になる。
TCP が 3 ウェイ・ハンドシェイクを行うので TCP を使用する通信においては 3 ウェイ・ハンドシェイクを行う必要はない。 しかし、UDP においては 3 ウェイ・ハンドシェイクがおこなわれないため、UDP を使用する上位のプロトコルである SIP などにおいても 3 ウェイ・ハンドシェイクが行われる。 SIP において上記の SYN、SYN ACK、ACK に対応するメッセージが INVITE、200 OK、ACK である。 SYNはSynchronizeの略であり、ACKはAcknowledgeの略である。
関連項目
- TCP (Transmission Control Protocol)
- SIP (Session Initiation Protocol)
- SYN flood - SYNパケットを利用したDoS攻撃
- ハンドシェイク
- ラウンドトリップタイム
- 肯定応答 (ACK)
- ウィンドウサイズ - スライディングウィンドウ - フロー制御
TCPコネクション
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/08/10 16:30 UTC 版)
「セッションハイジャック」の記事における「TCPコネクション」の解説
TCPはIP通信に対してコネクション機能を設けたものであり、最低限のセッション機能を設けたものともいえる。 TCPにおいてセッションIDに相当する管理項目は、IPアドレスとシーケンス番号である。送信元IPアドレスの詐称とTCPシーケンス番号予測攻撃を組み合わせることで、確立済みのTCPセッションに不正データを挿入することやセッションの強制切断を行うことが可能であり、セッションの乗っ取りが可能となる。 TCPシーケンス番号予測攻撃について、1985年にBob Morrisが攻撃手法をレポートしたこと、1995年にこの脆弱性を使った広範囲の攻撃が発生したこと(CA-1995-01)、2001年に不充分な実装に伴う問題が指摘されたこと(CA-2001-09)など、過去より何度か問題となっていたが、対策が行なわれている2008年現在では沈静化している。
※この「TCPコネクション」の解説は、「セッションハイジャック」の解説の一部です。
「TCPコネクション」を含む「セッションハイジャック」の記事については、「セッションハイジャック」の概要を参照ください。
- TCPコネクションのページへのリンク