インターネットの概要(そもそもインターネットって何?)
こんにちは.
今ラズパイをサーバ化して外部からアクセスできるようにしようと思っているのですが,そもそもインターネットて何?どんな仕組みで動いてるの?という疑問を解決しておきたいと思い,ちょっと基礎を学んでみたので備忘録がてら書いてみたいと思います.
かなり前にインターネットについて勉強しますと言っていたやつですね.
そもそもインターネットとは何かという話ですが,通信規格の一つで,特にTCPとIPという規格によって行われている通信のことを指しています.
と言っても全然わからないと思いますので,図で説明します[1](下図).
階層 | プロトコル |
アプリケーション層 | HTTP,SFTP,SSH |
トランスポート層 | TCP |
ネットワーク層 | IP |
データリンク層 | Ethernet |
物理層 | 同軸ケーブル |
これでも全然わからないと思うのですが,インターネットはとても複雑なデータを1と0という非常に単純な情報を使って通信しています.
しかもそれだけではなく途中でその信号が途切れてしまった時にそれを感知してデータを再送してもらったりと,実は裏側でかなり複雑なことをやっているのです.
しかし,WEBサービスやアプリケーションを作成する開発者が毎回このような仕組みをゼロから作るのは非常に大変なので,それらをパッケージ化して複雑なところを隠して非常に簡単に取り扱えるようにしてくれています.
それが上図の右列に出てくる仕組みなのです.この仕組みのことをプロトコルと呼びます.IPはインターネットプロトコルの略ですし,TCPはトランスミッションコントロールプロトコルの略です.
これらのプロトコルは他のプロトコルを使用することで複雑な動作を単純化することができます.他のプロトコルに使われるプロトコルを下の階層と表現したのが上図の左列に示した階層です.
物理的な通信の仕組みは同軸ケーブルが用いられており,それを使用してEthernetという仕組みが使われています.それの上に乗っているIPはEthernetが具体的にどんな処理を行っているかについて考える必要はありません.また,その上に載っているTCPもIPが裏側でどのような動作をしているか考える必要はありません.その上のHTTPなども同様です.そしてこれは,HTTPやSFTPやSSHといったプロトコルを使用する私たちが,それらが裏側でどのようなことをしているか知る必要が無いことと同じです.
つまり,上図で上の階層にあるプロトコルは、その下のプロトコルを使用して通信を行いますが,その際に自分より下のプロトコルが裏側でどのような動作をしているかを知る必要は無くて,それを使うと何ができるかだけ知っていれば良いのです.
しかし私たちは今単にHTTPで通信をおこなおうというのではなく,HTTPを使用したサービス(サーバを立ててGPIOを制御するサービス)を作ろうとしています.このため,HTTPで何ができるかを知るだけでは不十分で,それぞれのプロトコルがどのような仕組みで動いているかを知る必要があるのです.理想を言えばTCPとIPくらいまではざっくりと知っておきたいので,次回はそのあたりを掘り下げて行ければと考えています.
参考文献