第6章 TCP/IP — 確実に届ける仕組み
この章の目的
Section titled “この章の目的”第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ヘッダのフィールドを確認できる
6-1 TCP/IPはプロトコル群の総称
Section titled “6-1 TCP/IPはプロトコル群の総称”まず名前の整理からです。TCP/IPは「TCPとIPという2つの技術」だけを指す言葉ではありません。IPを中心に構成された、多数のプロトコルの総称(TCP/IPプロトコル群)です。
これまでに登場したARP・ICMP・DNS・DHCPも、これから登場するHTTPも、すべてこのプロトコル群の一員です。「TCP/IPネットワーク」と言えば、事実上「現在のネットワークほぼすべて」を意味します。
この構成には、特徴的な形があります。砂時計型 です。
図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は送るデータに シーケンス番号(通し番号)を付けます。受け取った側は、番号を見て 正しい順番に並べ直せます し、「この番号だけ届いていない」と 抜けにも気づけます。
仕組み③: 受領確認と再送
Section titled “仕組み③: 受領確認と再送”受け取った側は「ここまで受け取った」という 確認応答(ACK) をこまめに返します。送った側は、確認応答が返らないデータを 自動で再送します。
この3つの仕組みを支えているのが、TCPヘッダのフィールドです。
図6-2 TCPヘッダの構造(主なフィールド)
| フィールド | 支えている仕組み |
|---|---|
| 送信元ポート番号・宛先ポート番号 | どのアプリケーションに渡すか(6-5) |
| シーケンス番号 | 仕組み②(順序の管理・抜けの検出) |
| 確認応答番号 | 仕組み③(受領確認と再送) |
| フラグ(SYN・ACK・FIN) | 仕組み①(開始・終了の合図) |
ファイルが1文字も壊れずに届くのは、このヘッダを使った地道な管理の積み重ねによるものです。
6-4 UDP — あえて確認しない設計
Section titled “6-4 UDP — あえて確認しない設計”第4層のもう1つのプロトコル UDP は、TCPの3つの仕組みを すべて持ちません。コネクション確立なし、シーケンス番号なし、受領確認なし。宛先のポートに向けて送るだけです。
その違いは、ヘッダの構造にそのまま表れています。
図6-3 UDPヘッダの構造 — フィールドは4つだけ
手抜きではなく、意図した設計です。
| TCP | UDP | |
|---|---|---|
| コネクション確立 | する(3ウェイハンドシェイク) | しない |
| 順序・抜けの管理 | する(シーケンス番号+再送) | しない |
| ヘッダの大きさ | 20バイト以上 | 8バイト |
| 向いている用途 | Webページ、ファイル転送、メール | 音声通話、動画配信、DNSの問い合わせ |
音声通話を考えると、UDPの合理性が分かります。0.1秒前の音の欠けを再送してもらっても、会話はすでに先へ進んでいます。「多少欠けても、今すぐ届く」ことに価値がある 通信では、UDPが適します。優劣ではなく、用途による使い分けです。
6-5 ポート番号 — 宛先ポートと送信元ポート
Section titled “6-5 ポート番号 — 宛先ポートと送信元ポート”図6-2・図6-3の先頭に、ポート番号のフィールドが2つ並んでいました。ポート番号 は、届いたデータを 機器(IPアドレス)の中の正しいアプリケーション に渡すための番号です。建物の中の窓口番号に相当します(この対比は導入だけに使います)。
宛先ポート — 主要サービスの番号は決まっている
Section titled “宛先ポート — 主要サービスの番号は決まっている”よく使うサービスの番号は、世界共通で決まっています(ウェルノウンポート)。
| ポート番号 | サービス |
|---|---|
| 80 | Web(HTTP・暗号化なし) |
| 443 | Web(HTTPS・暗号化あり)。現在のWebはほぼこちら |
| 53 | DNS |
| 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で「役割ごとのヘッダを重ねる」と学んだカプセル化の、実際の形はこうなります。
図6-4 カプセル化の実体 — ヘッダの並びと、Wireshark詳細ペインの行の対応
この図から、2つのことが読み取れます。
- まとまりには層ごとの名前がある: TCPヘッダから後ろが TCPセグメント(第4層)、IPヘッダから後ろが IPパケット(第3層)、全体が フレーム(第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で学んであります。
- Wiresharkで表示フィルターに
tcpと入力し、キャプチャを開始する - ブラウザーで、普段開かないWebサイトを1つ開く(宛先は講師の指定に従ってください)
- 停止して、リストの上のほうを確認する
観察1: 3回のやり取り
Section titled “観察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アドレスで絞る方法)を使ってください。
実務で大切なポイント
Section titled “実務で大切なポイント”- 「ポートが開いていない」の意味が分かる — 現場でよく使われるこの表現は、「そのポートで待ち受けているアプリケーションがいない(またはファイアウォールが遮断している)」という意味です。IPアドレスが正しくても、ポートが違えば通信は成立しません。
- ファイアウォールの許可はポート単位 — 「443は通すが、他は通さない」のような設定が基本です。第7章の「守る・分ける」で目的を学び、実務ではこのポート番号の感覚を使います。
- pingが通っても、サービスが動くとは限らない — pingで確かめられるのは第3層(IP)までです。第4層のポートの問題は
netstatや接続テストで確かめる、という道具の使い分けにつながります(第8章)。
もう一歩深く
Section titled “もう一歩深く”初めての方は読み飛ばして構いません。興味のある方向けの補足です。
まとめて送って、まとめて確認(ウィンドウ)
Section titled “まとめて送って、まとめて確認(ウィンドウ)”「1個送るたびに確認応答を待つ」と遅いため、実際のTCPは 確認応答を待たずに複数まとめて送り、まとめて確認 します。一度に送ってよい量(ウィンドウサイズ。図6-2で省略したフィールドの1つ)は、相手の受信能力や回線の混雑に応じて自動調整されます。回線が速いのに転送速度が伸びないとき、この調整が関係していることがあります。
終了にも手順がある
Section titled “終了にも手順がある”開始の3ウェイハンドシェイクと同様に、TCPは終了時も「終了したい(FIN)」「了解(ACK)」のやり取りでコネクションを解消します。netstat で TIME_WAIT という状態を見かけたら、それは「終了手順が済んで、終了処理の待ち時間中」という意味です。
TCPでもUDPでもない新しい方式 — QUIC
Section titled “TCPでもUDPでもない新しい方式 — QUIC”近年のWebでは、UDPの上に「TCP相当の確実さ+より速い立ち上がり」を実装した QUIC という方式(HTTP/3で使用)が増えています。Wiresharkで udp の443番宛てが大量に見えたら、それがQUICです。第4層の設計は現在も進化しています(第10章で再登場します)。
呼び方の正式な整理
Section titled “呼び方の正式な整理”図6-4に登場した層ごとのまとまりの名前 — フレーム(第2層)・IPパケット(第3層)・TCPセグメント(第4層)に加えて、第7層で作られたデータを メッセージ と呼びます。日常会話では「パケット」が総称として使われることが多く、この研修でも総称として使ってきました。正式な呼び分けがある、と知っていれば十分です。
よくある誤解
Section titled “よくある誤解”| 誤解 | 実際 |
|---|---|
| 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ウェイハンドシェイクとヘッダの実物を確認した
問題を解いてから、「解答と解説」で答え合わせをしてください。
問題1(知識)
Section titled “問題1(知識)”「TCP/IP」という言葉の意味として、より適切なのはどちらですか。理由も一言添えてください。
- TCPとIPという2つの技術のこと
- IPを中心とした、プロトコル群全体の総称のこと
問題2(知識)
Section titled “問題2(知識)”TCPが「確実さ」を作るための3つの仕組みを挙げてください。
問題3(状況判断)
Section titled “問題3(状況判断)”社内で新しく「オンライン会議システム」を導入することになりました。音声や映像のデータの通信に向いているのはTCPとUDPのどちらですか。理由も説明してください。
問題4(実操作)
Section titled “問題4(実操作)”ブラウザーでWebページをいくつか開いた状態で netstat -n を実行し、次を確認してください。
- 「外部アドレス」のポート番号に 443 が多いこと
- 「ローカル アドレス」側の自分のポートが、443のような決まった番号ではなく、大きな番号になっていること
問題5(状況判断)
Section titled “問題5(状況判断)”同僚の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層まで」が、切り分けの重要な前提になります