インターネット通信のしくみ ① 通信の概観

インターネット通信のしくみ ① 通信の概観

インターネット通信についておおまかに見ていきます。
内容としては

  1. このページのリクエストを送信
  2. サーバからこのページの html を返してもらう

という内容を何回かに分けて書いていきます。
次回以降は Python コードもでてきます。
最終的にはソケットを利用した通信にも触れていきます。

インターネット通信の概観

今回は A さんの PC からこのページを Google Chrome を利用して閲覧する流れを見ていきます。

このサイトは ロリポップ のサーバーをレンタルしています。
そのためロリポップが持っている PC の中にこのサイトやページがあります。
このサイトがあるサーバーは福岡にあります。
A さんは Chorme を利用して福岡の PC にアクセスすることでこのページを閲覧できます。

東京にいようがアメリカにいようがアフリカにいようが、
このページを見るには福岡の PC にアクセスする必要があります。
今現在のあなたも、PC や Chromeではないかもしれませんが同じことをしています。
iphone や PS5、Safari や Edge からでもこれから書いていく仕組みは同じです。

補足 : 正確には福岡のオフィスで管理されている PC

このサイトがある PC はロリポップの福岡の事業所( GMO の北九州オフィス )で管理されています。
管理されている事務所の情報は登録されているので誰でも見れますが、
そこから別の場所に PC が置いてある可能性もあります。
福岡に PC があると確定しているわけではありません。

ただ、ここでは事業所のある
福岡県北九州市小倉北区京町 3-1-1 セントシティ
にサーバーの PC がある、という事にして進めていきます。

LAN と WAN

A さんの家庭は奥さんの iphone や PS5、無線 Wifi などがあるとします。
これらはひとつのルーターから繋がっており、
このルーターから伸びるひとかたまりのネットワークを
LAN( Local Area Network )と呼びます。

LAN ケーブルの LAN です。

また、ネットワークの文脈では
PC や iphone など、サーバーにアクセスする端末をクライアントと呼びます。

サーバーも LAN

「サーバールーム」で画像検索するとサーバーが置かれている部屋の画像がでてきます。
一般的にサーバールームの PC は 1台ではなく複数台あります。
これらの PC も A さんの家庭と同じようにルーターを基準にした LAN を構築しています。

ここでは PC-01 という PC の中にこのページが保存されていると仮定します。

ネットワークの文脈では何かを提供する側の端末をホストと呼びます。

WAN とプロバイダ

つまり、インターネット通信はクライアント側の LAN とホスト側の LAN を繋げて通信します。
一般的には。

そしてこの LAN と LAN の間には
WAN( World Area Network )と呼ばれるネットワークの中核があり、
WAN と LAN を結ぶ役割をしているのが ISP( Internet Service Provider )
通称 プロバイダ です。

これが身近なインターネットの通信を最も俯瞰した図です。
一般的な家庭と一般的なサーバーにおいてはこの形で通信しています。

リクエストとレスポンス

ルーターってなんやねん?とか、
プロバイダって具体的になんやねん?とか、
外で Wifi 繋がるやんけ
っていう話はここではしません。

ここではブラウザがサーバーとどういった流れで通信しているか、に焦点を当てていきます。

プロバイダはここでは説明しないので省略しました。
省略しただけで実際には存在します。

ロリポップは Apache というサーバーソフトウェアを使用しています。
サーバーとはサーバールームにある PC のことを指しますが、
「サーブ」と呼ばれる仕組みを制御するソフトウェアも指します。

実際にはこのサーブを行うソフトウェアがサーバーの本体です。
サーブを行うからサーバーです。
今後ここではサーバーとはサーブを行うソフトウェア(Apache)を指します。

これからクライアント(A さんの PC)の Google Chrome と
ホスト(ロリポップの PC)の Apache との通信の流れを追っていきます。

補足

最近のサーバーソフトウェアは Apache よりも Nginx が主流になりました。

私もこのサーバーのほかに VPS を借りていますが、それには Nginx を使用しています。
だけどこのサイトが契約しているサーバーは Apache。
そのため Apache で進めていきます。
Apache で進めていきますが私に Apache の知識はありません。

リクエスト : サーバーへの送信

このページはサーバー側にファイルとして保存されています。
Chrome はサーバーの PC の中にあるファイルを読むことでこのページを表示できます。

補足

実際にはこのページは WordPress で動的に生成しています。
ここでは説明のため、便宜上このページがひとつの html ファイルとして存在するとして進めていきます。

A さんが Chrome でこのページのリンクをクリックしたとき、
Chrome は「このファイルの内容を見せてほしい」というメッセージをサーバーへ送ります。
この動作をリクエストと呼びます。

URL の
https://hekatimebox.main.jp/wordpress/2024/02/network-1/
はこのページのファイルの場所を指しています。

レスポンス : サーバーからの返信

リクエストを受けたサーバーは対象のファイルにアクセスし、そのファイルを読み取ります。


そして読み取った内容をクライアントに返送します。
この返送の動作をレスポンスと呼びます。

レスポンスを受け取った Google Chrome は内容を
ブラウザに表示することでこのページを表示します。

まとめ

今回のポイントは下記です。

  • インターネット通信は LAN と LAN を WAN で繋いで通信している
  • クライアントからサーバーへの依頼をリクエスト
  • サーバーからクライアントへの返信をレスポンスと呼ぶ

ホストとクライアントの PC の仕組みに違いはありません。

ネットに繋がっている PC にサーバーソフトウェアをインストールして設定すれば
世界中のクライアントからリクエストを受け入れられるようになります。

ただしサーバー化して大量のリクエストや処理負荷の高いリクエストがあった場合、
それを捌いていくには相応の性能が PC に求められます。

想定するリクエストの数に応じて PC の性能や
レンタルするサーバーのプランを選ぶ必要があります。

LEAVE A REPLY

*
*
* (公開されません)