Skip to content

第6章 TCP/IP — 確実に届ける仕組み

第2章のロードマップで名前だけ登場していた TCP/IP を、この章で扱います。OSI参照モデルでは 第4層(トランスポート層) が主役です。

出発点は、次の疑問です。第2章で「データは小分け(パケット)にして送る」と学びました。小分けのパケットは、途中で失われるかもしれないし、順番が入れ替わって届くかもしれません。それなのに、送ったファイルは1文字も壊れずに届きます。

なぜ壊れないのか。 その答えがTCPです。

この章では、TCP(Transmission Control Protocol)と UDP(User Datagram Protocol)の仕組みをヘッダの構造図で押さえたうえで、カプセル化の全体像(フレーム・IPパケット・TCPセグメントの重なり)を完成させます。ここが整理できると、第1〜5章の内容が1本につながります。

この章でできるようになること

Section titled “この章でできるようになること”
  • 「TCP/IP」が1つの技術ではなく「プロトコル群の総称」だと説明できる
  • IPの設計(ベストエフォート型)を説明できる
  • TCPが確実さを作る3つの仕組み(コネクション確立・シーケンス番号・確認応答と再送)を説明できる
  • TCPヘッダとUDPヘッダの違いを、構造図で示せる
  • ポート番号の2つの役割(宛先ポートと送信元ポート)が分かる
  • フレーム・IPパケット・TCPセグメントの重なり(カプセル化の実体)を図で示せる
  • netstat で自分のPCの通信中の接続を確認できる
  • Wiresharkで3ウェイハンドシェイクとTCPヘッダのフィールドを確認できる

まず名前の整理からです。TCP/IPは「TCPとIPという2つの技術」だけを指す言葉ではありません。IPを中心に構成された、多数のプロトコルの総称(TCP/IPプロトコル群)です。

これまでに登場したARP・ICMP・DNS・DHCPも、これから登場するHTTPも、すべてこのプロトコル群の一員です。「TCP/IPネットワーク」と言えば、事実上「現在のネットワークほぼすべて」を意味します。

この構成には、特徴的な形があります。砂時計型 です。

TCP/IPの砂時計。上の広い段は第7層のいろいろなサービス、その下は第4層の届け方でTCPとUDPの2種類だけ、真ん中のいちばん細い段は第3層のIPですべての荷物がここを通る。下の広い段は第1〜2層の運び方でEthernetやWi-Fiなどいろいろある

図6-1 TCP/IPの砂時計構造 — 中央では必ずIPを通る

  • 上(サービス)は何百種類あってもよい
  • 下(伝送方式)は有線でも無線でもよい
  • ただし中央は IPただ1つ

中央を1つに絞ったことで、新しいサービスも新しい伝送方式も、互いに影響せず独立に発展できました。インターネットが拡大し続けられた設計上の理由の1つです。

6-2 IPはベストエフォート型 — 全力で運ぶが、保証はしない

Section titled “6-2 IPはベストエフォート型 — 全力で運ぶが、保証はしない”

プロトコル群の中心にいるIPの設計を確認します。IPの仕事は、第4・5章で見てきた「宛先IPアドレスを頼りに、ルーターを経由して運ぶ」ことです。

ただし、IPには明確な割り切りがあります。

「全力で運ぶ。ただし、届く保証はしない」

この設計を ベストエフォート型 と呼びます。途中の回線が混雑していればパケットは破棄されることがあり、届いたかどうかをIP自身は確認しません。順番が入れ替わることもあります。割り切ったからこそ、IPはシンプルで高速です。

IPパケットの構造(送信元IP・宛先IP・TTL・プロトコル)は、第4章の 図4-3 で学んだとおりです。このうち「プロトコル」フィールドに入る中身の代表が、この章のTCPとUDPです。

6-3 TCP — 確実さを作る3つの仕組み

Section titled “6-3 TCP — 確実さを作る3つの仕組み”

IPが保証しないなら、確実さは誰が作るのか。それが第4層の TCP です。TCPは3つの仕組みで、「失われる・入れ替わる・壊れる」をすべてカバーします。

仕組み①: 通信の前にコネクションを確立する

Section titled “仕組み①: 通信の前にコネクションを確立する”

TCPは、データを送り始める前に、相手と3回のやり取りをして「通信の合意」を作ります。

この3往復を 3ウェイハンドシェイク と呼びます。SYN・ACKは、TCPヘッダの フラグ(後述の図6-2)でやり取りされる合図です。

仕組み②: データに通し番号を付ける

Section titled “仕組み②: データに通し番号を付ける”

TCPは送るデータに シーケンス番号(通し番号)を付けます。受け取った側は、番号を見て 正しい順番に並べ直せます し、「この番号だけ届いていない」と 抜けにも気づけます

受け取った側は「ここまで受け取った」という 確認応答(ACK) をこまめに返します。送った側は、確認応答が返らないデータを 自動で再送します

この3つの仕組みを支えているのが、TCPヘッダのフィールドです。

TCPヘッダの構造図。送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、フラグ(SYN・ACK・FIN)が並び、その後ろにデータ部が続く。ポート番号はどのアプリに渡すか、シーケンス番号と確認応答番号は順序の管理と受領確認、フラグは開始・終了の合図に使われる

図6-2 TCPヘッダの構造(主なフィールド)

フィールド支えている仕組み
送信元ポート番号・宛先ポート番号どのアプリケーションに渡すか(6-5)
シーケンス番号仕組み②(順序の管理・抜けの検出)
確認応答番号仕組み③(受領確認と再送)
フラグ(SYN・ACK・FIN)仕組み①(開始・終了の合図)

ファイルが1文字も壊れずに届くのは、このヘッダを使った地道な管理の積み重ねによるものです。

6-4 UDP — あえて確認しない設計

Section titled “6-4 UDP — あえて確認しない設計”

第4層のもう1つのプロトコル UDP は、TCPの3つの仕組みを すべて持ちません。コネクション確立なし、シーケンス番号なし、受領確認なし。宛先のポートに向けて送るだけです。

その違いは、ヘッダの構造にそのまま表れています。

UDPヘッダの構造図。送信元ポート番号、宛先ポート番号、長さ、チェックサムの4フィールド(合計8バイト)だけで、その後ろにデータ部が続く。TCPヘッダにあったシーケンス番号・確認応答番号・フラグはない

図6-3 UDPヘッダの構造 — フィールドは4つだけ

手抜きではなく、意図した設計です。

TCPUDP
コネクション確立する(3ウェイハンドシェイク)しない
順序・抜けの管理する(シーケンス番号+再送)しない
ヘッダの大きさ20バイト以上8バイト
向いている用途Webページ、ファイル転送、メール音声通話、動画配信、DNSの問い合わせ

音声通話を考えると、UDPの合理性が分かります。0.1秒前の音の欠けを再送してもらっても、会話はすでに先へ進んでいます。「多少欠けても、今すぐ届く」ことに価値がある 通信では、UDPが適します。優劣ではなく、用途による使い分けです。

6-5 ポート番号 — 宛先ポートと送信元ポート

Section titled “6-5 ポート番号 — 宛先ポートと送信元ポート”

図6-2・図6-3の先頭に、ポート番号のフィールドが2つ並んでいました。ポート番号 は、届いたデータを 機器(IPアドレス)の中の正しいアプリケーション に渡すための番号です。建物の中の窓口番号に相当します(この対比は導入だけに使います)。

宛先ポート — 主要サービスの番号は決まっている

Section titled “宛先ポート — 主要サービスの番号は決まっている”

よく使うサービスの番号は、世界共通で決まっています(ウェルノウンポート)。

ポート番号サービス
80Web(HTTP・暗号化なし)
443Web(HTTPS・暗号化あり)。現在のWebはほぼこちら
53DNS
25などメールの送受信(用途ごとに番号あり)

送信元ポート — 自分の側の番号は自動で確保される

Section titled “送信元ポート — 自分の側の番号は自動で確保される”

見落とされがちですが、通信には自分の側のポート番号もあります。ブラウザーがWebサーバーと通信するとき、PCは自分用のポート(たとえば52831のような大きい番号)を自動で確保し、「宛先ポート443へ。応答は私のポート52831へ」という形で通信します。

つまり1つの通信は、「宛先IPアドレス+宛先ポート」と「送信元IPアドレス+送信元ポート」の4点の組 で特定されます。ブラウザーのタブを10枚開いても通信が混ざらないのは、タブごとに送信元ポートが異なるからです。

この「アドレス+ポートの組」が、第7章のNAPT(1つのグローバルアドレスを複数の機器で共有する仕組み)を成立させています。

6-6 カプセル化の実体 — ヘッダの重なりが完成する

Section titled “6-6 カプセル化の実体 — ヘッダの重なりが完成する”

ここまでで、3つのヘッダの構造図がそろいました。

  • イーサネットヘッダ(図3-2)— 第2層。同じLANの中の転送
  • IPヘッダ(図4-3)— 第3層。ネットワークをまたぐ配達
  • TCPヘッダ(図6-2)— 第4層。確実に届ける制御

第2章の図2-2で「役割ごとのヘッダを重ねる」と学んだカプセル化の、実際の形はこうなります。

カプセル化の実体図。実際に送られるデータは先頭からイーサネットヘッダ、IPヘッダ、TCPヘッダ、データの順に並ぶ。TCPヘッダから後ろがTCPセグメント(第4層)、IPヘッダから後ろがIPパケット(第3層)、全体がフレーム(第2層)。Wiresharkの詳細ペインのEthernet II、Internet Protocol、Transmission Control Protocolの行がそれぞれのヘッダに対応する

図6-4 カプセル化の実体 — ヘッダの並びと、Wireshark詳細ペインの行の対応

この図から、2つのことが読み取れます。

  1. まとまりには層ごとの名前がある: TCPヘッダから後ろが TCPセグメント(第4層)、IPヘッダから後ろが IPパケット(第3層)、全体が フレーム(第2層)。内側のまとまりを、外側のヘッダが順に包んでいます
  2. Wiresharkの詳細ペインの行の並びは、この重なりそのもの: 第3章から見てきた「Ethernet II」「Internet Protocol」の行に、この章で「Transmission Control Protocol」の行が加わり、全部の行が読めるようになりました

第2章では抽象的な「包み」だった図が、フィールドまで指させる実体になりました。これが、この研修の知識の骨組みです。

6-7 実機確認① — netstatで「通信中の接続」を見る

Section titled “6-7 実機確認① — netstatで「通信中の接続」を見る”

ここからは実物で確認します。まず、6-5の「4点の組」を自分のPCで確認します。

ブラウザーでWebページをいくつか開いた状態で、コマンド プロンプトで次を実行します。

netstat -n
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 192.168.1.10:52831 203.0.113.80:443 ESTABLISHED
TCP 192.168.1.10:52840 198.51.100.23:443 ESTABLISHED

読み方は次のとおりです(表示される値は例です)。

  • ローカル アドレス = 自分のIPアドレス:送信元ポート(自動で確保された大きい番号)
  • 外部アドレス = 相手のIPアドレス:宛先ポート(443が並ぶ=ほぼWebのHTTPS)
  • ESTABLISHED = 3ウェイハンドシェイクが完了し、コネクションが確立している状態

いまPCが「誰と・どのポートの組で」通信しているかの一覧です。外部アドレス側に443が並ぶことを確認できれば、現在のインターネットがTCPとHTTPSの上で動いていることを、自分の画面で確かめたことになります。

6-8 実機確認② — Wiresharkで3ウェイハンドシェイクとヘッダを見る

Section titled “6-8 実機確認② — Wiresharkで3ウェイハンドシェイクとヘッダを見る”

この章の仕上げは、3ウェイハンドシェイクの実物TCPヘッダのフィールド の確認です。見るべき場所は、図6-2と図6-4で学んであります。

  1. Wiresharkで表示フィルターに tcp と入力し、キャプチャを開始する
  2. ブラウザーで、普段開かないWebサイトを1つ開く(宛先は講師の指定に従ってください)
  3. 停止して、リストの上のほうを確認する

Info欄に、次の3行の並びが見つかるはずです。

Info欄の表示(例)意味
1[SYN]① 通信を開始したい
2[SYN, ACK]② 了解、準備できている
3[ACK]③ では開始する

このすぐ後ろに続くパケットが「本番のデータ」です。コネクション確立→データ、という6-3の流れが、そのままの順序で記録されています。

観察2: TCPヘッダのフィールドを指す

Section titled “観察2: TCPヘッダのフィールドを指す”

[SYN] のパケットをクリックし、詳細ペインの Transmission Control Protocol の行を開いてください(図6-4の③の行です)。

  • Source Port / Destination Port — 図6-2のポート番号。宛先が443(または80)、送信元が大きい番号になっている
  • Sequence Number — 図6-2のシーケンス番号
  • Flags — 開くと Syn: Set が確認できる。「SYNフラグが立っている」の実物

あわせて、同じパケットの Ethernet II(図3-2)・Internet Protocol(図4-3)の行も開いてみてください。図6-4の重なりが、1つのパケットの中に全部そろっています。

tcp フィルターは表示件数が多くなります。見つけにくい場合は、講師の指示するフィルター(相手のIPアドレスで絞る方法)を使ってください。

  • 「ポートが開いていない」の意味が分かる — 現場でよく使われるこの表現は、「そのポートで待ち受けているアプリケーションがいない(またはファイアウォールが遮断している)」という意味です。IPアドレスが正しくても、ポートが違えば通信は成立しません。
  • ファイアウォールの許可はポート単位 — 「443は通すが、他は通さない」のような設定が基本です。第7章の「守る・分ける」で目的を学び、実務ではこのポート番号の感覚を使います。
  • pingが通っても、サービスが動くとは限らない — pingで確かめられるのは第3層(IP)までです。第4層のポートの問題は netstat や接続テストで確かめる、という道具の使い分けにつながります(第8章)。

初めての方は読み飛ばして構いません。興味のある方向けの補足です。

まとめて送って、まとめて確認(ウィンドウ)

Section titled “まとめて送って、まとめて確認(ウィンドウ)”

「1個送るたびに確認応答を待つ」と遅いため、実際のTCPは 確認応答を待たずに複数まとめて送り、まとめて確認 します。一度に送ってよい量(ウィンドウサイズ。図6-2で省略したフィールドの1つ)は、相手の受信能力や回線の混雑に応じて自動調整されます。回線が速いのに転送速度が伸びないとき、この調整が関係していることがあります。

開始の3ウェイハンドシェイクと同様に、TCPは終了時も「終了したい(FIN)」「了解(ACK)」のやり取りでコネクションを解消します。netstatTIME_WAIT という状態を見かけたら、それは「終了手順が済んで、終了処理の待ち時間中」という意味です。

TCPでもUDPでもない新しい方式 — QUIC

Section titled “TCPでもUDPでもない新しい方式 — QUIC”

近年のWebでは、UDPの上に「TCP相当の確実さ+より速い立ち上がり」を実装した QUIC という方式(HTTP/3で使用)が増えています。Wiresharkで udp の443番宛てが大量に見えたら、それがQUICです。第4層の設計は現在も進化しています(第10章で再登場します)。

図6-4に登場した層ごとのまとまりの名前 — フレーム(第2層)・IPパケット(第3層)・TCPセグメント(第4層)に加えて、第7層で作られたデータを メッセージ と呼びます。日常会話では「パケット」が総称として使われることが多く、この研修でも総称として使ってきました。正式な呼び分けがある、と知っていれば十分です。

誤解実際
TCP/IPとは、TCPとIPの2つのことIPを中心とした プロトコル群の総称 です。ARP・ICMP・DNS・HTTPもすべて一員です。
IPが「確実に届くこと」を保証しているIPはベストエフォート型で保証しません。確実さは TCPが第4層で作って います。
UDPは信頼できないので、あまり使われていないDNS・音声通話・動画配信など主要な場面で使われています。最新のWeb(QUIC)の土台でもあります。
ポート番号は相手側にだけある自分側にも送信元ポートがあります。通信は「宛先IP+宛先ポート」と「送信元IP+送信元ポート」の4点の組で特定されます。
「ポートを開ける」とは物理的な操作のこと「そのポート宛ての通信をファイアウォールが通すようにする」という設定の話です。
  • TCP/IP はIPを中心としたプロトコル群の総称。構成は 砂時計型(中央はIPただ1つ)
  • IPベストエフォート型(全力で運ぶが、保証はしない)
  • TCP は3つの仕組みで確実さを作る: コネクション確立(3ウェイハンドシェイク)・シーケンス番号・確認応答と再送。すべてTCPヘッダ(図6-2)のフィールドが支えている
  • UDP はヘッダ8バイトの軽量設計。音声・動画・DNSで活躍
  • ポート番号には 宛先ポート(80・443・53など)と 送信元ポート(自動確保)があり、通信は4点の組で特定される
  • カプセル化の実体は フレーム[IPパケット[TCPセグメント[データ]]] の重なり(図6-4)。Wiresharkの詳細ペインの行の並びそのもの
  • netstat -n で通信中の接続を、Wiresharkで3ウェイハンドシェイクとヘッダの実物を確認した

問題を解いてから、「解答と解説」で答え合わせをしてください。

「TCP/IP」という言葉の意味として、より適切なのはどちらですか。理由も一言添えてください。

  1. TCPとIPという2つの技術のこと
  2. IPを中心とした、プロトコル群全体の総称のこと

TCPが「確実さ」を作るための3つの仕組みを挙げてください。

社内で新しく「オンライン会議システム」を導入することになりました。音声や映像のデータの通信に向いているのはTCPとUDPのどちらですか。理由も説明してください。

ブラウザーでWebページをいくつか開いた状態で netstat -n を実行し、次を確認してください。

  1. 「外部アドレス」のポート番号に 443 が多いこと
  2. 「ローカル アドレス」側の自分のポートが、443のような決まった番号ではなく、大きな番号になっていること

同僚のPCから社内サーバーへ ping は通るのに、そのサーバーのWebページ(社内システム)だけが開けません。第8章で学ぶ切り分けの前置きとして — pingが確かめてくれるのはどの層までで、今回の問題はどの層のどんな原因が考えられますか。

問題1の解答を表示する

解答: 2

TCPとIPは代表として名前に使われているだけで、ARP・ICMP・DNS・DHCP・HTTPなど、この研修で登場したプロトコルはみなTCP/IPプロトコル群の一員です。「ネットワーク入門」が「TCP/IP入門」と呼ばれることがあるのはこのためです。

問題2の解答を表示する

解答: ①通信前のコネクション確立(3ウェイハンドシェイク) ②データへのシーケンス番号 ③確認応答(ACK)と再送

「合意を作り、番号で順序と抜けを管理し、確認応答がなければ再送する」— 3点セットで説明でき、それぞれがTCPヘッダのフィールド(フラグ・シーケンス番号・確認応答番号)に対応することまで言えれば完璧です。

問題3の解答を表示する

解答例: UDP。音声や映像は「多少データが欠けても、遅れずに今すぐ届く」ことのほうが重要なので、確認や再送に時間を使うTCPより、ヘッダが軽く高速なUDPが向いている。

過去の音を再送してもらっても会話は先に進んでいる、という理由が書けていれば正解です。

問題4の解答を表示する

外部アドレス側は 相手のIP:443 の行が並び(現在のWebはほぼHTTPS)、ローカル アドレス側は 自分のIP:52831 のような大きな番号(自動確保された送信元ポート)になっているはずです。

「宛先ポートは決まった番号、送信元ポートは自動確保」— 6-5で学んだ2つの役割が、実物で確認できました。

問題5の解答を表示する

解答例: pingが確かめてくれるのは第3層(IPの配達)まで。今回は配達は正常なので、それより上 — 第4層(ポート)や第7層(Webのサービス自体)の問題が考えられる。たとえば「サーバーのWebのプログラムが停止している」「ポート443(または80)がファイアウォールに遮断されている」など。

「pingが通る=すべて正常、ではない」ことを層の言葉で説明できれば合格です。この切り分けは第8章でさらに練習します。

  • 第2章 通信の仕組みとOSI参照モデル — 図2-2の「ヘッダを重ねる」の実体が、この章の図6-4で完成しました
  • 第3章 LAN・スイッチ・MACアドレス第4章 IPアドレスとサブネットマスク — 図6-4に登場したイーサネットヘッダ(図3-2)とIPヘッダ(図4-3)の構造は、それぞれの章で学びました
  • 第5章 ルーターとネットワーク間通信 — IPの「配達」の仕組みです。この章はその上の「確実さ」でした
  • 第7章 ネットワークサービスとインターネット — DNSがUDPの53番を使う理由、NAPTがポートで区別する仕組みなど、この章の知識がすぐ再登場します
  • 第8章 コマンドとWiresharkによる確認・障害切り分け — 「pingで見えるのは第3層まで」が、切り分けの重要な前提になります