こんにちは、先月新卒で入社したバックエンドエンジニアの三井です。
技術研修の中でWeb周りの技術を勉強する機会があり、その中でも「階層化されたネットワークの仕組み」についてさらに詳しく調べてみましたのでこの記事で簡単にまとめていきたいと思います。
Webアプリにおける通信の流れ
Webアプリケーションはその名の通りインターネットを経由して動かすことのできるアプリケーションです。
特に「動的なWebサイト」(見る人によって表示される内容が違うサイト) のことを指します。
多くの方はブラウザ(ChromeやSafari等)からURLにアクセスして閲覧すると思いますが、大まかな仕組みとして
我々の使用する「デバイス(クライアント)」とデータやサービスシステムを管理する「サーバー」でHTTPという通信ルール(プロトコル)でやりとりをしています。
話をまとめると
「WebアプリはHTTPというルールで データのやり取りをして、
ユーザの欲しい情報を表示している」
ということになります。
TCP/IPとは
HTTPがWebアプリの通信規則ということが分かったところでこのルールの大元になっているTCP/IPというルールについてまとめていきたいと思います。
ネットワーク同士をつなげるにはみんなが同じ通信方法にすれば良いという考えで統一されたルールで、1974年に提案されARPANETに採用されたものです。
これがのちのインターネットとして確立しました。このルールのおかげでPC、スマホ等のデバイスに関わらずインターネットに接続できます。
TCP/IPがここまで大きく標準化した理由にもなる特徴的な考え方に「階層化」というものがあります。これはプロトコルを以下の4つの層に分けて、それぞれに通信方式が決まっています。
- アプリケーション層
- トランスポート層
- インターネット層
- ネットワークインタフェース層
この順番で上に行くほど上層(サービスに近い)、下にいくほど下層(インフラに近い)と呼ばれます。 HTTP通信はアプリケーション層での通信方式の一つです。
階層モデルのメリット
階層化をしてプロトコルを管理するメリットとして以下の二つが挙げられます。
* 開発が楽になる(機器に合わせたり、OSに合わせる必要がない!)
* 機能が一目でわかる(これはインフラレベルなのかアプリレベルなのか)
例えばアプリケーション層とトランスポート層に分けられる
メール、ファイルの送受信、Webの通信等のサービスの開発において、
その層以下のインターネット層やネットワークインタフェース層の通信を
意識する必要がないということです。
インターネット層以下のルールでOSや通信機器がインターネットに接続しているため、
その層以上で何かものを作る(サービスを作る)際はwebブラウザやデバイスごとに
通信方法を意識する必要はない、ということです!
まとめ
- 現在のインターネットはTCP/IPという通信方式である
- 大まかにサービスとインフラで通信方式を層にして分けている
- 階層化のメリットは開発する層より下層のことは考慮せず開発できる
参考文献
「Webを支える技術」
最後に
最後までお読みいただきありがとうございました。
Wizではエンジニアとして一緒に働く仲間を絶賛募集しております。
ご興味のある方、是非ご覧下さい..!!