【入門編】 TCPのシーケンス番号と確認応答番号による信頼性制御 – ネットワーク基礎とWebセキュリティ実践ガイド

なぜネットワークは「届いた」と確信できるのか?TCPの信頼性を郵便に例えて解き明かす

こんにちは!ネットワークの世界へようこそ。

日々、私たちが何気なくWebサイトを閲覧したり、ファイルをアップロードしたりできるのは、このデジタルな情報の海を「ルール通り」にパケットが駆け巡っているからです。

でも、ふと不思議に思いませんか? 巨大なデータは細切れの「パケット」になってネット上を飛び交うのに、なぜバラバラにならず、欠けることもなく、正しい順序で手元に届くのでしょうか。

今日は、ネットワークの縁の下の力持ち、TCP(Transmission Control Protocol)が持つ「信頼性制御」の秘密を、郵便システムに例えて紐解いていきましょう。

—

1. 郵便配達員は「何番目の手紙」かを知っている

皆さんが、友人に「10枚の連載小説」を送ると想像してください。ただし、この郵便局は少しおっちょこちょいで、手紙がバラバラに届くこともあるし、途中で紛失することだってあります。

そこで、あなたは各封筒にこう書きます。

  • 「1枚目(シーケンス番号:1)」
  • 「2枚目(シーケンス番号:2)」
  • …

これが、TCPのシーケンス番号です。パケットの「通し番号」ですね。これがあるおかげで、受信側は「あれ、1枚目と3枚目が届いたけど、2枚目が抜けてるぞ!」と即座に気づくことができます。

2. 「ACK」は「届いたよ!」というサイン

次に、相手(受信側)の反応です。相手は手紙を受け取るたびに、返事を送り返します。これがACK(確認応答番号)です。

ここが少し面白いポイントなのですが、TCPのACKは「何番が届いた」ではなく、「次は『何番』が欲しい!」という形式で送られます。

  • あなたが「1枚目」を送る。
  • 相手は「1枚目受け取ったよ!次は2枚目をちょうだい!(ACK=2)」と返す。
  • もし相手が「ACK=2」を返し忘れたら、あなたは「まだ2枚目が届いていないんだな」と判断して、もう一度送り直す(再送処理)。

このように、お互いが「次に期待する番号」を握り合っているからこそ、インターネットという不安定な通信路でも、データが確実に届く仕組みになっているのです。

—

3. 現場のエンジニアはどうやって確認しているのか?

理論はわかったけれど、実際の現場ではどう見えるのか? それを確認するのが、ネットワークエンジニアの「三種の神器」の一つ、tcpdump です。

試しに、手元の端末から特定のサーバへ通信しているパケットを見てみましょう。

# 特定のサーバ(192.168.1.10)との通信を詳細にキャプチャするコマンド
sudo tcpdump -i eth0 host 192.168.1.10 -nn -S

このコマンドを実行すると、以下のようなログが流れてきます。

# IPアドレス 192.168.1.5 から 192.168.1.10 へ
# seq 1000:2000 (1000バイトのデータを送信)
192.168.1.5.54321 > 192.168.1.10.80: Flags [P.], seq 1000:2000, ack 500, ...

# 返答:192.168.1.10 から 192.168.1.5 へ
# ack 2000 (次の2000番からを要求!)
192.168.1.10.80 > 192.168.1.5.54321: Flags [.], ack 2000, ...

このログの中にある seq 1000:2000 や ack 2000 という数字。まさに先ほど例えた「手紙の番号」そのものですよね。現場でトラブルが起きたとき、この seq が飛んでいたり、同じ ack が何度も返ってきている(再送の嵐)のを見ると、「おっと、どこかで詰まっているな」と即座に原因を切り分けられるようになるんです。

—

4. なぜ「ゼロトラスト」時代でもこの基礎が重要なのか

昨今、ゼロトラストアーキテクチャが叫ばれています。境界防御を突破されても、システム内部でどう守るかという話ですね。

しかし、どんなに高度なセキュリティ製品を導入しても、「パケットが正しく届いているか」「ネットワーク層で通信が異常な挙動をしていないか」を読み解く力は、エンジニアにとっての「聴診器」です。

  • 攻撃者がパケットを細工してセッションを乗っ取ろうとしているとき、seq の不自然な増加に気づけるか?
  • DDoS攻撃で再送パケットが溢れているとき、どのセッションがボトルネックになっているか瞬時に特定できるか?

これらはすべて、今回解説したTCPの基本ルールを体に染み込ませているかどうかにかかっています。

最後に:一歩ずつ、確実に。

ネットワークの世界は広大ですが、その根本にあるのは、何十年も変わらない「相手に届いたか確認し合う」という、とても人間味のある通信ルールです。

今日からWebサイトを開くとき、裏側で「ACK!」「次はこれ!」と、パケットたちが熱い握手を交わしている姿を想像してみてください。そうすれば、少しだけネットワークが身近に感じられるはずです。

もし現場でパケットキャプチャに迷ったら、いつでもこの「郵便配達」の話を思い出してくださいね。それでは、また次回の記事でお会いしましょう!

コメント

タイトルとURLをコピーしました