【初心者目線】Webアプリケーションの開発 第4回
【初心者目線】Webアプリケーションの開発 第4回について書きます。
1. 情報がコンピュータに届く仕組み
第3回はHTTPによる通信のやりとりを説明してきましたが、ここからはもう少し踏み込んでHTTP通信によって情報がどのようにコンピュータに届けられるのか、ということを中心に解説していきたいと思います。
1-1. IPアドレス
上記URLの網掛け部分がホスト名であり、人間が見てもわかりやすいように表現されています。
しかし実際はインターネット上に接続されたコンピュータは「IPアドレス」というもので識別されています。
インターネットでWebページを閲覧したりメールの送受信を行うには、データの送信元や送信先を識別する必要があります。
この識別に使われる番号がIPアドレスであり、インターネット上の住所と言えます。
IPアドレスはまた「IPv4」というプロトコル(通信規約)を採用しており、「192.168.0.1」のようにピリオド区切りの4組の数字で構成されています。
各区切りの数字は0~255の256通りあり、約43億通り(256×256×256×256)のIPアドレスを管理することが可能です。
約43億通りと聞くと多く感じますが、スマートフォンなどが爆発的に普及しインターネット需要が拡大した現在では、使用可能なIPアドレスが足りなくなってきました。
そこで新たに取り決めたプロトコルが「IPv6」であり、ピリオド区切りの4桁の英数字8組で構成されています。
IPv6では43億の4乗通り(43億×43億×43億×43億)のIPアドレスを管理することが可能です。
1-2. TCP/IP
その役割を担うのが「TCP/IP」というプロトコルで、現実社会の郵便配達の仕組みと似ています。
例えば現実社会で任意の人に年賀状を送りたいときは、都道府県などの住所と宛名をハガキに記入しポストに投函すると思います。
そして郵便局がハガキに記入された住所に住んでいる宛名のもとにハガキを配送します。
このときポストから宛先への配送業務は全て郵便局が行うため、投函した年賀状がどのようにして宛先に届けられるのかを私たちが考える必要はありません。
これと同じようにインターネット上でもIPアドレスで宛先を指定するだけでTCP/IPが情報を届けてくれるので、どのように情報が届けられるかを考える必要はありません。
1-3. パケット
TCP/IPはWebブラウザなどから受け取ったリクエストを宛先に届ける役目を担っていますが、その際に「パケット」と呼ばれる小さな単位に分割して情報を送信しています。(下図参照)
そして、パケットの受け取り側で分割されたものを組み立ててWebサーバなどに渡しています。
なぜデータを分割して送信するのか?という疑問が生まれてきますが、理由の一つとしてネットワーク回線速度の差異が挙げられます。
インターネット上には様々なネットワーク機器があり、一度に大量の情報を高速で送受信できるものもあれば、少しの情報を低速でしか送受信できないものも存在します。
特に低速でしか送信できない環境で大量のデータを送るとき、万が一送信に失敗するとまた最初からデータを送る必要があり、非常に時間がかかってしまいます。
このときパケットのようにデータを小さな単位に分割して送信すると、送信に失敗したとしても失敗したパケットのみを再送信すれば良いので効率の良い通信が可能になります。
2. IPアドレスの割り当て
インターネット上の住所と呼ばれるIPアドレスですが、世界中で同じIPアドレスが同時に複数存在するという状況は当然許されないため、勝手に決めてよいということではありません。
そこで「ICANN」という団体が世界のIPアドレスの管理を行うことになり、この団体に申請をすることでIPアドレスを割り当ててもらえます。
しかし普段私たちがインターネットに接続する際、IPアドレスの申請を行うことはないと思います。
これはプロバイダがある程度のまとまったIPアドレスを確保しており、プロバイダの契約者(利用者)がインターネット接続をするたびに確保しているIPアドレスの中から一つを割り当てているからです。
※利用者に割り当てられるIPアドレスは毎回同じとは限りません。
※JPNIC:ICANNより委託され日本国内のIPアドレスを管理している団体。
2-1. グローバルIPアドレス
世界中どこからでもデータ送受信の際に送り間違えのないよう、割り振られるIPアドレスのことを
「グローバルIPアドレス」と呼びます。
これは世界に同じものはなく唯一のIPアドレスになります。
インターネットの利用にはこのグローバルIPアドレスが使用されますが、現在では家庭やオフィス等に様々なネットワーク機器が存在し、インターネットを使用しなくても各機器にIPアドレスが必要とされています。
2-2. プライベートIPアドレス
グローバルIPアドレスはネットワークに接続されたホストを識別するためのものであり、重複しないよう管理されていますが、プライベートIPアドレスは決められた範囲のIPアドレスを自由に設定できるため、重複が発生してしまいます。
しかし、とあるプライベートネットワーク上で使用されているIPアドレスが別のプライベートネットワーク上で重複して使用されていたとしても、お互いがネットワーク接続されていないため問題ありません。
プライベートIPアドレスのわかりやすい例として会社の内線番号で説明します。
上記の図に示した通り、〇×株式会社の山田さんと〇△株式会社の加藤さんはそれぞれ社内で「内線10番」が割り振られてます。
〇×株式会社で内線10番に電話をかけると当然山田さんが電話に出ます。
その逆の〇△株式会社も同じで自社内の加藤さんが電話に出ます。
このように二つの会社間がネットワーク接続されてないため内線番号が重複しても問題なく意図した人物と通話ができるのです。
3. 動的IPアドレスと固定IPアドレス
プロバイダより割り振られるIPアドレスについてもう少し掘り下げると、「動的IPアドレス」と「固定IPアドレスに」分類できます。
通常は動的IPアドレスが割り振られ、固定IPアドレスはオプションとして用意されていることが多いです。
3-1. 動的(可変)IPアドレス
普段PCやスマートフォンを使用する際に割り振られているのがこのタイプとなり、ネットを切断したり接続状態で一定期間放置した場合に変更されます。
動的IPアドレスの場合プロバイダから自動的に番号が振られるため、ユーザー側は特別な接続設定をせずに利用できます。
3-2. 固定(不変)IPアドレス
企業内の機密情報が保管されているシステムなど、特定の人物や機器からのみ通信を受け付ける場合に許可した人物であることを判別するため固定IPアドレスが用いられます。
最近ではリモートワークの普及により社外から社内にアクセスする場合や、外出時にペットの様子を見守るネットワークカメラなど、固定IPアドレスが必要とされることも増えています。
動的IPアドレスと異なり、ユーザーが手動で接続設定をする必要があります。
4. 第4回 まとめ
今回はTCP/IPとIPアドレスの仕組みや種類ついて説明しました。
TCP/IPプロトコルの説明ではパケットという技術を用いて通信を工夫していると解説しましたが、実際にはもっと多くの技術が用いられています。
通常アプリケーションを開発する際はそこまで詳しく知る必要がないため、興味のある方は調べてみてはいかがでしょうか。
今回説明できなかったDNSに関連する内容は次回掲載予定です。