はじめに
ネットワークを一言でいうと、コンピューター同士が会話をしてデータをやり取りする仕組みのことです。
普段なにげなく使っている検索やSNSも、裏側ではネットワークを通して複数のコンピューターが連携しながら仕事をしています。
たとえばGoogleで「近くのラーメン屋」と検索すると、すぐに候補が表示されますよね。これはあなたの端末がどこかのコンピューターに対して「おすすめのラーメン屋を教えて」とお願いし、その結果が返ってきている、ということです。
ネットワークのモデル:サーバー・クライアント方式とP2P
ネットワークのモデルは、ざっくり サーバー・クライアント方式 と P2P の2つがあると考えるとわかりやすいです。
サーバー・クライアント方式は、役割がはっきり分かれています。
お願い(リクエスト)を送る側がクライアントで、お願いを受け取って答え(レスポンス)を返す側がサーバーです。
さきほどの「近くのラーメン屋」を例にすると、検索するあなたのブラウザやスマホがクライアントになります。クライアントが「近くのラーメン屋を教えてください」というリクエストを送ると、サーバー側がそれを受け取ります。サーバーは受け取った内容をDBなどと照合し、必要なら追加の処理も行い、最終的にクライアントが欲しかった答えをレスポンスとして返します。これがサーバー・クライアント方式の基本の流れです。
一方P2Pは、サーバーとクライアントのように役割が固定されるのではなく、すべてのコンピューターが対等な立場で相互に連携しあうイメージに近いです。ビットコインなどもこの仕組みを採用しています。今回はP2Pの詳細は割愛します。
会話のルール:プロトコルとは何か
ネットワークは「コンピューター同士の会話」だと言いましたが、会話を成立させるには共通ルールが必要です。
この共通ルールがプロトコルという概念です。
プロトコルの代表例として、Webでよく出てくるのが HTTP です。HTTPは Hypertext Transfer Protocol の略で、日本語にすると「ハイパーテキスト転送プロトコル」になります。ブラウザでWebページを見られるのは、このHTTPというルールに沿ってやり取りしているからです。
プロトコルはミルフィーユ:プロトコルスタック
HTTPは単独で完結しているわけではなく、実は他のいくつかの層(レイヤー)に支えられています。
たとえば、HTTPの下にはTCP/UDP、IP、Ethernet/Wi-Fi のように、複数の層が積み重なった構造になっています。
この「積み重なっているセット」のことをプロトコルスタックと呼びます。
イメージとしては、上にあるほど「人間が使うアプリに近いルール」で、下にいくほど「実際にデータを届けるための仕組み」に近いルールになります。
データはどう運ばれるのか:パケット交換方式
プロトコルに沿って会話が行われるとして、次に気になるのは「データそのものはどうやって運ばれるのか」です。
そこで出てくるのがパケット交換方式です。
ネットワークでは、送りたいデータをそのまま巨大な塊で送るのではなく、小分けにして送ります。この小分けにした単位がパケットです。
それぞれのパケットには「どこに届けるか」という送り先の情報(住所のようなもの)が付けられて、ネットワーク上を運ばれていきます。
TCPとUDP:速さか、確実さか
TCP/UDPは、データの届け方(運び方)の性格が違います。
TCPは、必ず相手に届くことを重視し、さらに順番も守るのが特徴です。そのぶん確認などが増えるので、相対的にスピードは遅くなります。
メールなど「欠けたら困る情報」に使われます。TCPは Transmission Control Protocol の略で、直訳すると「送信制御プロトコル」です。
UDPは、届かないことがあっても気にしない代わりに、とにかく速いのが特徴です。多少欠けても体験が成立しやすい場面、たとえばライブ配信やゲームなどで利用されます。UDPは User Datagram Protocol の略で、直訳すると「ユーザーデータグラムプロトコル」です。
IPアドレス:ネット上の住所
ネットワーク上でデータを届けるためには「送り先」が必要です。
その送り先を表すのがIPアドレスで、ネット上の住所のようなものです。
例として、次のような形で表されます。
192.168.134.3
このIPアドレスを頼りに、データは相手に届けられます。
DNS:ドメイン名とIPアドレスを紐づける仕組み
とはいえ、人間がIPアドレスを覚えて毎回入力するのは大変です。
そこで登場するのが DNS(Domain Name System) です。
DNSは、たとえば google.com のようなドメイン名と、実際のIPアドレスを紐づけて管理しています。
イメージとしては、ドメイン名を名前、IPアドレスを電話番号としたときの「電話帳」のようなものです。
私たちが google.com と入力できるのは、DNSが裏側で対応するIPアドレスを調べてくれているからです。
おわりに
ネットワークは、コンピューター同士の会話の仕組みであり、その会話にはプロトコルという共通ルールがあります。HTTPはその代表例で、さらに下の層のTCP/UDP、IP、Ethernet/Wi-Fiなどが積み重なってプロトコルスタックを作っています。データはパケットとして小分けにされ、IPアドレスという住所に向かって運ばれ、DNSがドメイン名とIPアドレスを結びつけています。
このあたりを押さえておくだけでも、Web開発やインフラ学習の理解が一気にラクになると感じます。
最後までご覧いただきありがとうございました。