端末(スマホ・PC)— 通信の出発点

概要 — まず全体をつかむ

初級では端末を「通信の出発点・到着点」と捉えました。中級では、その内側——アプリからNICまでの通り道(ネットワークスタック)、自分を示す2つのアドレス、そして起動時の住所の受け取りと名前解決——を一段深く見ます。

詳細 — 1段階ずつ追う

これは何をする係?

端末の役割は初級どおり、お願い(リクエスト)を作って送り出し、返ってきたデータを受け取ることです。中級で押さえたいのは、アプリは直接ネットに触れないという点です。

アプリが送るデータは、端末の中を層になって流れていきます。これをネットワークスタックと呼びます。

  • アプリ — 「このページをください」というデータを用意する
  • ソケット — アプリがOSへデータを渡すための入口(出入口の窓口)
  • OSのTCP/IP — データをパケットに仕立て、宛先や順序の管理を担う
  • NIC — パケットを電気や電波の信号に変える通信部品
  • 回線 — 有線・無線でネットワークへ出ていく道

つまりアプリは、必ずOSとNICを通ってからでないと外に出られません。ネットの細かい面倒(宛先付け・再送・信号化)は下の層が引き受けるので、アプリは中身づくりに集中できます。

アニメーション『端末から回線まで』を開く
端末(スマホ・PC)=通信の出発点1台の端末の中上:ソフト(人に近い)下:物理・回線(信号に近い)アプリ画面・操作(ブラウザ等)OS共通の窓口・橋渡しNIC(ネットワーク制御ユニット)データ ⇄ 信号 に変換データデータ信号回線(有線/無線)電気・光・電波の信号として流れる外の回線・ネットワークへアプリは直接ネットに触れず、必ず OS と NIC を通る
この部分をもっと深く(上級

中級の「アプリは直接ネットに触れない」を、上級では接続を見分ける単位まで下ろします。端末が始点/終点として成り立つのは、1台の中で複数の通信を混ぜずにさばく仕組みがあるからです。

  1. アプリはOSにソケット※1 を作ってもらい、その口を通してのみ送受信する
  2. 送信時、OSは宛先IPと宛先ポートに加え、送信元ポートを1つ選んで結びつける
  3. OSは1本の接続を、送信元IP・送信元ポート・宛先IP・宛先ポート4つ組※2 として管理する
  4. 返ってきたパケットは、この4つ組の一致で「どのソケット宛か」が一意に決まる。だからタブを何枚開いても、同じサーバの443宛でも、返事が混ざらない

ポート番号が「どのアプリ宛か」を示すのは中級どおりですが、上級の要点は宛先ポートだけでは足りないこと。同じ相手・同じ宛先ポートへ複数つなぐ場面では、送信元ポートの違いが接続を分けています。

登場人物メモ(※の説明):

  • ※1 ソケット — アプリとOSのネットワークスタックをつなぐ抽象的な口。ファイルのように読み書きの対象として扱える
  • ※2 4つ組 — 送信元IP・送信元ポート・宛先IP・宛先ポートの組。TCP接続を一意に識別する鍵。ここにプロトコル種別を足して「5つ組」と呼ぶこともある

⚠️ イレギュラー(仕分けの綻び):

  • 待ち受け側と接続側でポートの意味が違う — サーバはよく知られたポート(443など)で待ち受けて固定、クライアントは接続のたびに一時ポートを借りる。同じ「ポート」でも役割が逆
  • 同じポートを複数プロセスで待ち受ける — 通常は1つのポートは1プロセスだが、負荷分散のため明示的に共有する設定(ポート再利用)も存在する
やさしく言うと(初級

あなたが「このサイトを見たい」と操作すると、端末がお願い(リクエスト)を作り、通信を始めます。逆に、返ってきたデータを受け取って画面に見せるのも端末です。つまり通信の出発点であり到着点

スマホとノートPC
端末 — 通信の出発点

ネット上でやり取りするために、端末には住所=IPアドレスが割り当てられます。

どう通信を始める?

初級の流れを、スタックに沿ってなぞり直します。宛先はIPアドレスとポート番号の組で決まる点が中級の要点です。

  1. あなたが操作する(リンクを押す、送信する)
  2. アプリがデータを用意し、ソケットを通してOSに渡す
  3. OSのTCP/IPが、宛先IP+ポートを付けてパケットに仕立てる
  4. NICがパケットを信号に変える
  5. 有線/無線でネットワークへ送り出す

ここでポート番号は「どのアプリ宛てか」を示す番号です。IPアドレスが「どの機器か」を決め、ポートが「その機器のどのアプリか」を決める——だからブラウザとメールが同時に通信していても、返事が混ざりません。

やさしく言うと(初級
  1. あなたが操作する(リンクを押す、送信する)
  2. 端末が、宛先つきのお願いを組み立てる
  3. 端末の中の NIC(次の記事)が、それを信号に変える
  4. 有線/無線でネットワークへ送り出す
アニメーション『端末から回線まで』を開く
端末(スマホ・PC)=通信の出発点1台の端末の中上:ソフト(人に近い)下:物理・回線(信号に近い)アプリ画面・操作(ブラウザ等)OS共通の窓口・橋渡しNIC(ネットワーク制御ユニット)データ ⇄ 信号 に変換データデータ信号回線(有線/無線)電気・光・電波の信号として流れる外の回線・ネットワークへアプリは直接ネットに触れず、必ず OS と NIC を通る

自分を示す2つの住所

端末は、通信のためにアドレスを持ちます。中級では2種類を区別します。

  • IPアドレス — ネット上の住所。ネットワークの中で「どの機器か」を示す(初級で登場した住所)
  • MACアドレス — NICに焼き付いた、NIC固有の番号。すぐ隣の相手へ渡すときに使う

ざっくり言えば、IPは遠くまで届けるための住所MACはすぐ隣の一区間で使う名札です。パケットは宛先IPを保ったまま旅をしますが、一区間ごとの受け渡しではMACアドレスが使われます。

なお同じスマホでも、家ではWi-Fi、外ではモバイル回線と入口(NICと回線)を切り替えます。ネットワークから見れば端末は末端——だから「端末」です。

この部分をもっと深く(上級

中級では住所としてIPとMACを区別しました。上級では、端末がその住所を実際にどう受け取り、何種類抱えているかを見ます。始点/終点であるには、まず自分の住所が要ります。

  1. 端末は起動・接続直後、まだ自分のIPを持たない。そこでDHCP※1 で「住所をください」と同一リンク内に問い合わせる
  2. DHCPサーバ(多くは家庭用ルーター)が、IPアドレス・サブネット・デフォルトゲートウェイ・DNSサーバの場所をまとめて貸し出す(リース※2、期限付き)
  3. いまどきの端末はIPv4とIPv6を同時に持つ(デュアルスタック)。IPv6はDHCPv6やルーター広告(RA)で受け取ることが多い
  4. どちらの系統でも、外に出られる住所とは別に、同一リンク内だけで使うリンクローカルアドレス※3 を必ず1つ持つ

つまり端末は「1台に1つのIP」ではなく、用途の違う住所を複数抱えています。宛先が両対応なら、IPv6とIPv4を並行して試して先につながったほうを使う(Happy Eyeballs)挙動も普通です。

登場人物メモ(※の説明):

  • ※1 DHCP — 起動時にIP等の設定一式を自動で貸し出す仕組み。手動設定(静的IP)を選ぶこともできる
  • ※2 リース — DHCPで借りた住所には期限があり、使い続けるには更新(リニュー)が要る。期限切れやネットワーク移動で住所は変わりうる
  • ※3 リンクローカルアドレス — 同一リンク内だけで有効な住所(IPv6ならfe80::、IPv4なら169.254.x.x)。ルーターを越えられず、外の宛先には届かない

⚠️ イレギュラー(住所取得のつまずき):

  • DHCPに応答がない — 住所が取れず、端末が苦し紛れにリンクローカル(169.254.x.x)を自己割り当てする。ネットは見えないのに「IPはある」状態になり、原因が見えにくい
  • IPv6は通るがIPv4だけ不調(またはその逆) — デュアルスタックゆえ、片系統だけの不調で「一部サイトだけ遅い/開かない」が起きうる
やさしく言うと(初級

この体系のWeb編では、端末(ブラウザ)を「フロント(前面)」と呼びました。ネットワークから見れば、端末は通信の端っこ(末端)。だから「端末」です。

同じスマホでも、家ではWi-Fi、外ではモバイル回線、と通信の入口を切り替えて使います。

⚠️ うまくいかないとき

初級の不調に加え、中級では起動時の受け取りでつまずく例を押さえます。端末は起動時、まずDHCPで自分のIPアドレス・ゲートウェイ・DNSサーバの場所をまとめて受け取り、通信時はDNSで名前をIPアドレスに変換します。

  • 機内モード/Wi-Fiオフ — そもそも通信の入口が閉じている
  • DHCPで住所が取れない — IPアドレスが割り当たらず、外へ出られない
  • DNSが引けない — 名前をIPに変換できず「サーバが見つからない」となる(IP直打ちなら届くことも)
  • ポートが塞がれている — 特定アプリの通信だけ通らない
  • 端末側の不調 — 再起動でスタックが初期化され直ることも
この部分をもっと深く(上級

最後に、始点/終点という立場ゆえに端末が突き当たる構造的な限界を整理します。中級の不調(DHCP・DNS・機内モード)に加え、上級では数の限界移動の限界を押さえます。

  • ポート枯渇 — クライアントの送信元に使える一時ポートは範囲が有限(おおむね49152〜65535あたり、OSで異なる)。同じ宛先へ短時間に大量の接続を張ると使い切り、閉じた直後のTIME_WAITで当分再利用もできず、新規接続が張れなくなる。接続の使い回し(keep-alive)や接続数の抑制で緩和する
  • NAT越えの難しさ — 両端がNATの内側にいると、互いを直接名指しで呼べない。P2Pや通話では、まず外部のSTUN※1 サーバに自分の見え方(グローバルIPとポート)を教えてもらい、双方が同時に外へ穴を開けて出会う。それでも越えられない構成では中継サーバ(TURN)を挟む
  • モバイルでのIP変化 — Wi-Fiから4G/5Gへ切り替わると、端末のIPやNATの外向きアドレスは変わる。従来のTCP接続は本来切れるが、アプリ側の再接続・バッファやQUICのコネクション移行で、上位が継続性を作り込んで途切れを隠している
  • 住所の使い回しによる誤認 — DHCPのリース満了やNAT共有で、同じIPが時間差で別の端末を指す。IPを「個人の固定ID」と思い込むと、アクセス制限やログの突合を誤る

登場人物メモ(※の説明):

  • ※1 STUN — NAT内の端末が、自分の外向きの見え方(グローバルIPとポート)を外部サーバに教えてもらう仕組み。NAT越えの下準備に使う

まとめ——端末は通信の始点/終点であるがゆえに、内側ではソケットとポート(4つ組)で通信を混ぜずにさばき、外側ではもらい物の住所(DHCP)借り物の顔(NAT共有)で世界に立っています。速さも到達性も、この「端っこであること」の上に成り立ち、そしてポートの数住所の移ろいという限界も、すべて同じ端点の立場から生まれています。ここまで見えれば、中継・アドレス体系・NATの各ユニットは、この端点を支える外側の仕組みとして読み直せるはずです。

やさしく言うと(初級
  • 機内モード/Wi-Fiオフ — そもそも通信の入口が閉じている
  • 住所が取れていない — IPアドレスが割り当たっていない(後述のルーター/DHCP)
  • 端末側の不調 — 再起動で直ることも

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. 端末が起動して通信を始めるとき、DHCPとDNSが担う役割の組み合わせとして正しいのは?

2. アプリが送るデータが、実際にネットワークへ出ていくまでの順番として正しいのは?

3. ブラウザとメールが同時に通信していても返事が混ざらないのはなぜか。IPアドレスとポート番号の役割として正しいのは?

4. IPアドレスとMACアドレスの使い分けとして正しいのは?

5. ネットワークスタックにおいて、アプリが外へデータを送り出すときの経路として正しいのは?

6. DNSが引けないときに起きやすい症状として正しいのは?

7. アプリがOSへデータを渡すための「入口(窓口)」を、カタカナで何と呼ぶ?

8. NICに焼き付いた、NIC固有の番号を「◯◯◯アドレス」という。◯◯◯を英字3文字で答えてください。