ネットワークの仕組みをザックリ理解する

教育資料の下書き続き、もう同じこと喋りたくないマン、小堤です。

フロントエンドの開発に至るまで、バックエンドであるPHPなどのサーバーサイドスクリプトの習得を先に行って行くことが多いのですが、最初に引っかかるのが、普段からインターネットを利用しているのにも関わらず、なんでデータが取得できるのか、何が起きているのか、全くわからないという問題です。ウェブ系エンジニアであれば、当然知っているでしょう、ということも、下手をするとPC不慣れな人からすると、とりあえずワイファイ繋げばネット見れる (マジかよ・・・って何度思ったことか) くらいの感覚なわけです。

初学者に合わせる場合、このレベルからちゃんと確認を行う、また10年以上やってる人でも、かなりネットワークの知識が曖昧なエンジニアを多数見かけます。まぁ成り立ってるならそれでいいんですけど、ネットワーク一つとっても沼なので、ここではWEBプログラミングを行うための最低限のネットワーク、通信知識を固めたいと思います。

結果、ネットワークの本見てくれって感じなんですが、全体の構成がイメージできて読むと、全くのゼロ知識でネットワークの入門書みるのは、結構理解できるスピードも違ってきます。なんでもそうだけど、わからないことを理解するときに、細かいことよりも全体的な構成や、流れを知ってから取り組むと全然違います。すごい当たり前のこといってて恥ずかしい///

パソコンには、出入り口になるネットワークインターフェースがある

はい、当たり前〜当たり前〜。説明し始めたときにすごい最後まで遠いな・・・っていつも思う出だしです。インターネットには、何かしらの出入り口がパソコンにあって、そこでデータ通信を行っています。有線LANケーブルでつなぐ方法、wi-fi で無線LANというやつですね、これでつなぐ方法、物理的な方法はこれ以外でもつながるし今後新しい接続方法もでてくるんでしょうね。衛星通信もできるようになってきたみたいですし。

自宅や事務所、接続先にはルーターがいる

自宅で光ネットワークを契約したらルーターが設置されると思います。wi-fi の機能がついてればwi-fi ルーターって言われたりしますね。なんとなく「ルーター、ルーター」って、「ルーターってなに?」って思いながら言ってる人も、実は結構見かけます。ルートは、経路です。この経路っていうのは、ネットワークにつながる経路、そして、ルーターはその経路選択の仕事をしてくれるわけです。ルーティングといいます。ルーティングしてくれる機器なので、ルーター。Visit するからVisitor みたいなもんかな?知らんけど。このルーターから、インターネットの世界につながるわけです。その先のルーターがたくさんあったり、ルーターがつなぎに行く契約しているプロバイダー、正確には、Interner Service Provider、ISPと略されますが、プロバイダーにつながってからでていくことや、サーバーがたくさんつながっていることとか、は、とりあえず置いときます。

お前の送信データは、家や接続しているwi-fiルーターを通って世界に飛んでいってんだよ!(世界まで飛んでないことほとんどだけど)って思ってれば、とりあえず良しとしましょう。

IPアドレス

IP(Internet Protocol) Address の略で、IPアドレス、または単純にIPっていったりしますね。経路は有線LANケーブルをイメージすると、糸電話の様につながっているので、wi-fiは見えないだけで同じだと思ってください。ルーターにつながっている、つながっているけども、ルーターにつながっている機器は、1つとは限りません。自宅でスマートフォンや、タブレット、PC、テレビなど今やいろんなものが接続できるようになりましたね。この機器一つ一つに、学籍番号のように番号が必要で、この番号を使って通信を行います。その番号がIPアドレスです。

つまり、正常にネットワークにつながっているということは、IPアドレスが付与されています。正確には物理的に接続されていてもIPアドレスが設定されていない状態もありえますが、今は無視。

DHCPサーバー

番号、つまりIPアドレスは、本来手動で設定するものでした。今の御時世、wi-fi接続!LANケーブルかちゃ!ってしたらネットに繋がりますよね。これは、DHCPサーバーという機能のおかげです。大体ルーターに内蔵されています。先述の通り、ネットワークにつながってもIPアドレスが付与されていないと、友達みんなと遊んでるのにボッチみたいな状態になります。誰も話してくれません・・、そもそもいることすら認識されてない・・・いじめや・・・切ない。

物理的にはつながってるんですね、だから電気信号が届かないわけじゃないわけです。そこで行うのが、ブロードキャスト通信と言われるものになります。接続する側の機器は、ネットワークに物理的に参加(接続)すると、ブロードキャスト通信で、DHCPサーバーいたら俺にIPをくれ!と叫ぶわけです。

さっきのボッチでいくと「なかまにいーれーてー」って自分で言えってことをちゃんとやってるわけですね。DHCPサーバーは、つまりルーターに接続されているものがどれだけあるのかを常に監視しています。なので、新しく参加した機器が、IPアドレスの付与を要求してきたら、空いているIPアドレスを自動的に付与するわけです。

ローカルIPアドレス

一般的に、このローカルIPアドレスと言われる、自宅や事務所ないのIPアドレスは、192.168.xxx.xxx という形を取ります。192の部分は、0〜255までが入り、ソレが4つ、ドットつなぎで表現されます。この形式のIPアドレスをIPv4っていうんですが、もっと桁数を表現できるIPv6ってのもあります。両方のアドレス持ってたりするんですけど、いまはIPv4形式だけで覚えればいいです。

IPアドレスの番号は、0.0.0.0 〜 255.255.255.255 まで入るはずですが、192.168.の部分は固定です。ローカルIPの場合は、そうしましょうってルールだと思っててくれぃ。んで、機器の番号は、右の xxx.xxx で表現されます。0〜255、0〜255まで入るわけで、表現できる幅は、65536種類になるんですが、頭と欠は使えないことだけ留意してください。192.168.0.0、192.168.1.255 とかですね。大概のルーターは、192.168.1.1 、または192.168.0.1 として設定されてます。バッファローは、192.168.11.1 だったりした記憶がありますが、ブラウザで192.168.0.1 とか、192.168.1.1 ってアクセスすると、ルーターのWEB設定画面が出てくると思います。WEBインタフェースないルーターなんて、昨今あまりないのでは?自作すれば別ですけど。

そして、右側の3つ目の数値は、概ね0とか1とか、2とかグルーピングされます。同じ線でルーターにつながっていても、192.168.0.x グループと、192.168.1.x グループは、通信直接できないんですね。当たり前なんですが、ほんとにこれでハマる人もいるみたいで、覚えておきましょう。これが経路選択、ルーターが、192.168.0.xグループが、192.168.1.x にいくときは、こっちの線通って行ってね!とかしてくれるわけです。家庭用ルーターの場合は、ほぼないでしょうけど、業務用だと普通にあったりします。

要するに、同じグループでしか通信できねー!って思ってていいです。そして、機器の番号が振られる範囲を示すもう一つの数値が、サブネットマスクと呼ばれます。192.168.1.x の赤字の部分は、グループ番号(ネットワーク)残りが、機器を示す番号というように、どこでグループと、番号区切るんだい?っていうの示す番号です。ローカルネットワークでは、通常 255.255.255.0 となります。正確には、これ2進数で示して10進数になおして・・・みたいな話になってくるんですが、とりあえず、ローカルIPは、192.168.1.1または192.168.0.1、サブネットマスクは、255.255.255.0 なんだなくらいでいいです。最初は。

グローバルIPアドレス

ローカルに対して、グローバルIPアドレスというのがあります。家に一個プロバイダーから付与されています。インターネットの通信を行う場合、あなたのスマホも、PCもタブレットも、家の外から見れば、このグローバルIPアドレスからのアクセスということになるんですね。もちろん、それ以外のブラウザならブラウザの情報なども送信されています。

このグローバルIPだけでも、ある程度地域を絞ることができます。ネットつないでるだけで、地図検索やレストラン探したり、物件探したりするときに、大体、東京なら東京周り出たりしますよね。wi-fiとこのグローバルIPなどうまく使ってある程度判断しているようです。また、国に関しても判別可能です。

なので、匿名だから安心だから好き勝手やる人とか、よくネットでは見かけるようになりましたが、どんだけリテラシー低いんだよ・・・と思ってしまいます。情報化社会として、もう、ここのレベルは中学生教えるべきです。グローバルIPから、ISPを通して個人を特定することはかんたんにできないので、ISPに開示請求みたいな話になるだけであって、なんのログも残ってない、絶対バレない!とか言ってるのを、まじで居酒屋とかでもごくまれに聞くんですが、また、マジか・・・って笑 プロキシかましまくっても追っかけられる時代なのに。

ということで、ネットワークから一歩出たら、基本的にすべて足跡ついてんだぜ!って思っておいてください。あと、ネットとは関係ないけど、まずバレるっていうのと、バレないから好きってできるみたいなのが、情報リテラシーの低さだと思うんですよね、ちょっと知ればそこまでアホな 発想にはならないとも思うんだけどな。免許制でもいいんじゃないかと思うレベルです、個人的にはね、悪いことはするもんじゃない、知らんけど。

まとめ

普段利用しているインターネット接続までの、本当に最低限の登場人物と構成を説明しました。IPアドレスの形式も、より複雑でルールも細かく決まっています(当たり前か) 。こういう仕組みで、番号ついて家の代表番号として、お外に出ていっているんだね!っていうことがイメージできればと思います。

これを踏まえて、WEBプログラミングをするときに欠かせない、通信ポートや、WEBサーバーとHTTP通信の理解に向かいます。昨今では、dockerや、仮想ネットワークの利用も当たり前になってきました。若いエンジニアのほうがちゃんと勉強してる感さえあるんですよ。dockerがつながらないとか、ポートが・・・とか、WEBエンジニアが知っているべき領域がより広がって、技術スタックも複雑になってきているとは思いますが、その分便利にもなっているわけで、古株のエンジニアも改めて基礎を何度も見直すのは大事かな?と思います。どこの分野も進化してますからね、すごい速さで笑

では、また。

最新の更新を
プッシュ通知で購読しよう