## What — 通信は「頼む側」と「返す側」の役割分担 通信は、**リクエスト(依頼)を出す側=クライアント、応えてレスポンスを返す側=サーバー**という役割分担でできている。この依頼→応答の往復が、ネットの基本動作。 - クライアント … 「見たい!」と頼む側(ブラウザやアプリ) - サーバー … 「どうぞ、見てください!」と返す側 情報は「もともとそこにあるのを自分が見に行く」のではない。**自分が頼んだ瞬間に、サーバーがすごいスピードで見せてくれている**。 > [!info] > 例えるなら**サーバー=店員さん(serve=「仕える」)、クライアント=お客さん**。カフェで「コーヒーください」と頼むお客さんと、出してくれる店員さんの関係を、そのままインターネットに持ち込めばいい。 ## サーバーは機械の種類ではなく役割 **「依頼に応えて情報を返す役」を担っていれば、どんなコンピュータでもサーバーになれる**。今使っている MacBook だってなれる。「サーバー」という特別な機械がどこかにあるわけではない。 - 普段アクセスしているのは、たいてい世界のどこかにあるドデカいコンピュータ - Google Drive や iCloud のようなクラウドの正体も同じ。自分の端末ではなく、そのコンピュータに「保存して」「出して」と頼んでいるだけ ## 相手の居場所は「住所の仕組み」で見つける 頼む相手を一意に指すのが **ドメイン → DNS → IPアドレス** という住所の仕組み。 | 部品 | 役割 | | --- | --- | | ドメイン(`api.example.com`) | 人間が覚えやすい名前 | | IPアドレス(`142.251.42.78`) | コンピュータが使う数字の住所 | | DNS | ドメインを IP アドレスに変換する電話帳 | ドメインと IP アドレスは 1:1 で対応している。この変換がリクエストのどの段階で起きるかは [[HTTPリクエストの流れ|HTTPリクエストの流れ]] に書いた。 > [!success] > サーバーとクライアントは**機械の種類ではなく役割の名前**。「見たい!」と頼むお客さんがクライアント、応えて返す店員さんがサーバー。その店員さんの居場所を一意に指すのがドメイン→DNS→IPアドレス。 ## 関連 - [[HTTPリクエストの流れ|HTTPリクエストの流れ]] — 頼んでから返ってくるまでの全行程 - [[API]] — この役割分担にプログラム向けの「窓口」を開けたもの。API まわりの地図 - 元ネタ: https://www.youtube.com/watch?v=rEMutn29HwM