アプリが動くしくみ
Lesson 1 では「どこで動くか」でアプリを分類しました。今回は、アプリがネットワークを通じて どうやってデータをやりとりし、画面を表示しているのかを学びます。 入り口は、通信のしくみを整理した「OSI参照モデル」です。
1. クライアントとサーバー
アプリの通信は、ほとんどが「お願いする側」と「応える側」の関係でできています。
クライアント(お願いする側)
ユーザーが操作する端末やアプリ。ブラウザ、スマホアプリ、IoT機器など。「このページを見せて」「このデータを保存して」とリクエスト(要求)を送ります。
サーバー(応える側)
リクエストを受け取って処理し、結果をレスポンス(応答)として返すコンピュータ。データの保存や計算を集中して担当します。
この形をクライアントサーバシステムと呼びます。 レストランにたとえると、クライアントは「注文するお客さん」、サーバーは「注文を受けて料理を出す厨房」です。
2. 通信のルール「プロトコル」
世界中のメーカー・OS・アプリが問題なく通信できるのは、共通のルール(プロトコル)が決められているからです。 手紙で言えば「宛名の書き方」「切手の貼り方」「郵便番号の形式」が決まっているようなものです。
ただし、通信には「電気信号をどう流すか」から「Webページをどう要求するか」まで、たくさんの段階があります。 それを役割ごとに7つの階層に整理したのが、次の OSI参照モデルです。
3. OSI参照モデル(7階層)
OSI参照モデルは、国際標準化機構(ISO)が定めた「通信の役割分担表」です。 通信の機能を7つの層に分け、各層は自分の担当だけに集中し、上下の層とだけやりとりするという考え方です。 こうすることで、例えば「ケーブルを有線から Wi-Fi に変えても、Webブラウザは何も変えなくてよい」という仕組みが実現できています。
| 層 | 名称 | 役割(ざっくり) | 代表的なプロトコル・キーワード | 動作する機器 | TCP/IP モデル |
|---|---|---|---|---|---|
| 7 | アプリケーション層 | アプリごとの具体的なやりとりを決める(Webページの取得、メール送信など) | HTTP、HTTPS、SMTP、POP3、IMAP、FTP、DNS、DHCP | ゲートウェイ | アプリケーション層 |
| 6 | プレゼンテーション層 | データの表現形式をそろえる(文字コード、圧縮、暗号化など) | 文字コード(UTF-8 など)、JPEG、MPEG | ||
| 5 | セッション層 | 通信の開始から終了までの「会話」を管理する | セッションの確立・維持・終了 | ||
| 4 | トランスポート層 | データを確実に(または速く)届ける。どのアプリ宛てかをポート番号で区別する | TCP(確実)、UDP(高速)、ポート番号(HTTP:80、HTTPS:443) | ゲートウェイ | トランスポート層 |
| 3 | ネットワーク層 | IPアドレスを使って、離れたネットワークの宛先まで経路を選んで届ける(ルーティング) | IP、ICMP(ping)、IPアドレス | ルータ、L3スイッチ | インターネット層 |
| 2 | データリンク層 | 同じネットワーク内の隣の機器へ届ける。MACアドレスで相手を識別する | イーサネット、Wi-Fi(無線LAN)、MACアドレス | ブリッジ、L2スイッチ | ネットワーク インタフェース層 |
| 1 | 物理層 | 0と1を電気信号・光・電波に変えて実際に流す | LANケーブル、光ファイバ、コネクタ形状 | リピータ、ハブ |
実際のインターネットは「TCP/IP」の4階層
OSI参照モデルは「考え方の物差し」で、実際のインターネットでは表の右端にある TCP/IP モデル(4階層)が使われています。 それでも OSI の7階層は、エンジニア同士の会話で「それは L3(第3層)の問題だね」のように共通言語として今も使われます。
4. データは「封筒」に包まれて届く
送る側では、データが上の層から下の層へ渡されるたびに、その層の情報(ヘッダ)が付け足されます。 封筒にさらに封筒をかぶせていくイメージで、これをカプセル化と呼びます。受け取る側では逆に、下の層から順に封筒を開けていきます。
例:実際の電文の中身
パソコン(192.168.1.10)から Webサーバー(203.0.113.10)へ、
「トップページをください」と送るときの電文を、封筒を1枚ずつ開けるように外側から見てみましょう。
- 宛先MACアドレス
00:1a:2b:3c:4d:5e(隣のルータ)- 送信元MACアドレス
a4:83:e7:12:34:56(自分のパソコン)- タイプ
0x0800(中身は IPv4 のパケット)
- 送信元IPアドレス
192.168.1.10(自分のパソコン)- 宛先IPアドレス
203.0.113.10(Webサーバー)- TTL(生存時間)
64(ルータを1台通るごとに1減り、0になると破棄)- プロトコル
6(中身は TCP)
- 送信元ポート番号
52341(ブラウザ側で一時的に使う番号)- 宛先ポート番号
80(HTTP = Webサーバーのプログラム宛て)- シーケンス番号
1001(データの順番。届かなければ再送する)
このリクエストを受け取ったサーバーは、同じように封筒に包んで次のようなレスポンスを返します。
たとえ話:会社に注文の手紙を送る
宅配便で会社に注文の手紙を送る場面に置き換えてみます。 実は上の電文と、まったく同じ入れ子の形になっています。
- 次の配達先
- ○○集配センター(隣の中継地点)
- 出発地
- 近所の営業所
- お届け先
- 大阪府大阪市○○ 1-2-3 株式会社サンプル商事
- 差出人
- 東京都千代田区△△ 4-5-6 山田 太郎
- 宛先の部署
- 営業部 御中(会社の中のどの窓口宛てか)
- 通し番号
- 全3通のうち1通目(足りなければ再送をお願いする)
| 層 | 電文の項目 | 手紙・宅配便でいうと | ポイント |
|---|---|---|---|
| 7 アプリケーション | HTTPリクエスト | 手紙の本文 | 本当に伝えたい中身 |
| 4 トランスポート | ポート番号 | 部署名(営業部 御中) | 会社(コンピュータ)の中のどの窓口(プログラム)宛てか |
| 3 ネットワーク | IPアドレス | 封筒の住所・会社名 | 最終的なお届け先。最後まで変わらない |
| 2 データリンク | MACアドレス | 配送伝票の「次の配達先」 | 中継地点ごとに貼り替えられる |
| 1 物理 | 電気・光・電波の信号 | トラック・道路 | 実際に荷物を運ぶ手段 |
受け取った会社では、まず配送伝票をはがし(データリンク層)、住所を確認して(ネットワーク層)、 「営業部宛てだ」と社内の担当へ回し(トランスポート層)、最後に営業部の人が手紙を読んで返事を書きます(アプリケーション層)。 外側から順に1枚ずつ開けていくのが、受け取る側の動きです。
5. URLを入力してから画面が出るまで
ここまでの知識を使って、ブラウザに https://example.com と入力してからページが表示されるまでを追ってみましょう。
-
DNS で「住所」を調べるL7 アプリケーション
コンピュータは
example.comのような名前ではなく、IPアドレス(例:203.0.113.10)で相手を探します。 そこでまず DNSサーバーに「example.com の IPアドレスは?」と問い合わせます。これを名前解決と呼びます。電話帳で番号を調べるイメージです。 -
TCP で接続を確立するL4 トランスポート
調べた IPアドレスのサーバーに対し、HTTPS のポート番号 443 宛てに「つないでいいですか?」「どうぞ」「では始めます」の3回のやりとりで接続します(3ウェイハンドシェイク)。
-
TLS で通信を暗号化する
HTTPS の「S」は Secure。TLS という仕組みで、サーバーが本物かを証明書で確認し、通信内容を暗号化します。 ブラウザの鍵マークはこの確認ができた印です。
-
HTTP リクエストを送るL7 アプリケーション
「トップページ(
/)をください」というリクエストを送ります。データは前の章のとおり封筒に包まれ、ルータを何台も経由してサーバーへ届きます。 -
サーバーが処理する
サーバーはリクエストを受け取り、必要に応じてプログラムを動かしたり、データベースから情報を取り出したりして、返す内容を作ります(詳しくは次の章)。
-
HTTP レスポンスが返ってくるL7 アプリケーション
HTML・CSS・JavaScript・画像などがレスポンスとして返されます。成功ならステータスコード 200、 ページが見つからなければおなじみの 404、サーバー側のエラーなら 500 が返ります。
-
ブラウザが画面を描く
ブラウザが HTML で構造を、CSS で見た目を組み立て、JavaScript で動きを付けて画面に表示します。ここが Lesson 1 で学んだフロントエンドの担当範囲です。
6. サーバーの中身(3層構造)
Webアプリのサーバー側は、役割ごとに分けて作るのが一般的です。代表的な形が、次の3層クライアントサーバシステムです。
スマホアプリ
画面ファイルを返す
プレゼンテーション層
(バックエンドのプログラム)
ファンクション層
なぜ分けるの?
役割ごとに分けると、アクセスが増えたときに足りない部分だけ増強でき、修正の影響範囲も小さくできます。
データベースと SQL
データは表形式で管理するリレーショナルデータベース(RDB)に保存するのが一般的です。データの取り出しや更新は SQL という言語で指示します。
SELECT 氏名 FROM 社員 WHERE 部署 = '開発'
7. クラウド(IaaS / PaaS / SaaS)
以前は自社でサーバー機を購入して設置するオンプレミスが主流でしたが、今は AWS・Azure・Google Cloud などの クラウドを借りて使うのが一般的です。どこまでをクラウド事業者に任せるかで、3つに分けられます。
| 種類 | 事業者が用意するもの | 利用者が用意・管理するもの | 例 |
|---|---|---|---|
| IaaS | サーバー・ネットワークなどの基盤(インフラ) | OS・ミドルウェア・アプリ | Amazon EC2 などの仮想サーバー |
| PaaS | 基盤 + OS・ミドルウェア(実行環境) | アプリ | アプリの実行環境・データベースサービス |
| SaaS | アプリまですべて | なし(使うだけ) | Gmail、Microsoft 365、Salesforce |
覚え方:I(Infrastructure=基盤)→ P(Platform=実行環境)→ S(Software=アプリ)の順に、任せる範囲が広がります。
8. モバイル・組み込みの場合
基本的なしくみは Web と同じです。違うのは「何をやりとりするか」です。
モバイルアプリ
画面はアプリ自身が持っているので、サーバーとはデータだけをやりとりします。窓口となるのが API で、データは JSON という形式が主流です。
{"name": "山田", "point": 120}
どの種類のアプリでも、OSI参照モデルの下の層(TCP/IP)は共通です。 だからこそ、スマホも家電もパソコンも同じインターネットにつながることができます。
コラム:基本情報技術者試験とは
IPA(情報処理推進機構)が実施する国家試験で、「ITエンジニアの登竜門」とも呼ばれます。 ITを使う仕事に必要な基本的な知識・技能を、幅広く体系的に問う試験です。
- 出題範囲が広い:ネットワーク、データベース、セキュリティ、アルゴリズム、プロジェクト管理、経営・法務まで。
- 2つの科目:知識を問う科目Aと、アルゴリズムや情報セキュリティの考え方を問う科目B。
- 通年で受験できる:全国のテストセンターでパソコンを使って受験する方式(CBT)です。
なぜ大切なの?
- 知識が「点」から「線」になる:現場で断片的に覚えた知識が、体系的につながります。今回の OSI参照モデルのように、「なぜそうなっているのか」が分かるようになります。
- 共通言語が身につく:お客様や他社のエンジニアと話すとき、同じ用語・同じ物差しで会話できます。
- 信頼につながる:国家資格として、お客様やプロジェクトに対して基礎力を客観的に示せます。
- 次のステップの土台になる:応用情報技術者試験や、ネットワーク・データベース・セキュリティなどの高度試験へ進むための基礎になります。
確認クイズ
選択肢をクリックしてください。
Q1. ルータが動作する OSI参照モデルの層はどれ?
Q2. MACアドレスを使って、同じネットワーク内の機器にデータを届ける層はどれ?
Q3. HTTP が属する層はどれ?
Q4. 「example.com」のようなドメイン名から IPアドレスを調べる仕組みはどれ?
Q5. 確実性よりリアルタイム性が重要な音声通話でよく使われる、トランスポート層のプロトコルはどれ?
Q6. Gmail のように、アプリケーションまで含めてクラウド事業者が提供するサービス形態はどれ?
まとめ
- アプリの通信は、リクエストを送るクライアントと、応えるサーバーの関係でできている。
- 通信はプロトコルという共通ルールで行われ、その役割分担を7階層に整理したものがOSI参照モデル。
- データは層ごとにヘッダが付けられ(カプセル化)、IPアドレス・ポート番号・MACアドレスを頼りに届けられる。
- Webページの表示は、DNS → TCP接続 → TLS → HTTPリクエスト → サーバー処理 → レスポンス → 描画の順に進む。
- サーバー側は Web / AP / DB の3層に分けて作るのが一般的で、今はクラウド(IaaS / PaaS / SaaS)上に作ることが多い。