SYNパケットは、一般にTCPヘッダーのSYNフラグを立てたセグメントを指します。SYNは接続開始時のシーケンス番号の同期などに使い、通常の接続確立ではSYN → SYN/ACK → ACKと進みます。
3ウェイハンドシェイクの基本形
| 段階 | 方向 | 意味 |
|---|---|---|
| 1:SYN | クライアント → サーバー | 接続を開始し、初期シーケンス番号xを知らせる |
| 2:SYN/ACK | サーバー → クライアント | 相手のSYNを確認し、自分の初期シーケンス番号yを知らせる |
| 3:ACK | クライアント → サーバー | サーバー側のSYNを確認する |
単純なデータなしの基本形では、2の確認応答番号はx+1、3はy+1になります。SYNはシーケンス番号を一つ消費するためです。実際の接続には再送や同時オープンなどのケースもあります。
SYNとACKは別のフラグ
SYNは同期、ACKは確認応答番号が有効であることを示します。SYN/ACKもSYNフラグが立ったセグメントなので、「SYNはクライアントからの最初の一通だけ」と限定すると不正確です。ACKは接続確立後のデータ転送でも使います。
SYNを見ただけでは分からないこと
SYNの送信だけでは相手のポートが開いていると確定できません。SYN/ACK、RST、無応答など、返答と経路・制御条件を合わせて読み取ります。また、TCP接続が成立しても、アプリケーションや認証が成功するとは限りません。
SYNフラッドとの関係
未完了の接続に必要な状態や処理資源を大量に消費させ、サービスの可用性を損なう攻撃です。送信元の偽装を伴う例もありますが、常に偽装が必須というわけではありません。実装に応じたSYN cookies、待ち状態の管理、流量制御や上流の対策などを組み合わせます。
正規のSYNはTCP接続に必要なので、SYNを一律に遮断すれば通常の通信も成立しません。試験では攻撃に使われる機能と、本来の役割を分けて覚えます。
確認問題:SYN/ACKにはSYNフラグも立っている?
はい。SYNとACKの両方が立っています。SYNは初期番号の同期、ACKは相手側のSYNへの確認に関係します。
次の学習:TCP/IP全体とつなげる
SYNを理解したら、note教材で3ウェイハンドシェイクからシーケンス番号・再送・ウィンドウ制御へ進みましょう。接続開始とデータ転送中の制御をつなげて確認できます。
TCP/IPのnote教材でTCP・UDP・ポート番号を復習する

コメント