ネットワーク界隈でご飯を食べてそろそろ10年の私が、ここさえおさえておけばネットワークって大体理解できるよねって感じたポイントを解説します。
注意:
説明のために技術的な正確性は大分犠牲になっています。
ふーん、ほんとかよって思ったら出てくる単語をぐぐって頂くといいかと思います。
#目次
1.ネットワークは色々なプロトコルが連携して動作することで形成される
2.ETHERNET
3.IP
4.ETHERNETとIPの組み合わせ
##1.ネットワークは色々なプロトコルが連携して動作することで形成される
よくOSI参照モデルがどうのという言葉で説明されていますが、今日のネットワークは色々なプロトコルが連携して動作することで形成されています。
プログラミング界隈の人に伝わりやすい単語でいうと、「疎結合」とか「マイクロサービス」みたいなイメージです。
例えば、WEBサービスを作るときにはWEBサーバ(apacheなど)とDBサーバ(Mysqlなど)は少なくとも分かれていると思いますが、これらを単一のコードで作りたいと思う人なんて誰もいませんよね?
ネットワークも同じで、機能ごとにプログラムを分けることで見通しを良くしており、色々なプログラムを組み合わせて通信という目的を実現しています。
機能毎に分けられたプログラムをプロトコル(決まり事)と呼んでいます。
ネットワーク回りのプロトコルには有名どころでTCP・IPなどほとんどシェアの100%を獲得しているようなものから、IPX,appletalkなどもう今は使われなくなったものまで様々です。
その中で超重要なプロトコルを二つだけ選び、解説します。
それが、ETHERNETとIPです。
##・ETHERNET
現代の機器は9割以上がETHERNETを使って通信しています。ほぼ100%といってもいいかもしれません。
このプロトコルの考え方は単純で、とりあえず全方向に通信をぶん投げるというものになります。
中継器に知らないアドレス宛の通信が来たら全方向1にぶん投げます。次の中継器でも同様にします。
そうしていくと、いつかは目的の相手に届くよね、というのが基本的な考えになります。2
この単純な方式は絶大なメリットがあって、相手先のアドレスを知らなくても通信が成立します。
いちいちPCに相手のアドレスはこれで。。。などと設定しなくても済むのです。
ただ、デメリットもあります。
全方向に通信を投げると、無駄な通信も発生します。
例えば、PC1からみたらPC2~PC10宛ての通信はいらない訳ですが、とりあえず全方向に通信をぶん投げるものですから、こういった通信も必然的に届くことになります。
10台規模ならいいですが、数万台規模になるともう無理です。
ETHERNETだけでやっていこうとすると、関係ない通信であなたのPCのLANケーブルは埋め尽くされるでしょう。
##・IP
規模が大きくなるとETHERNETだけでは無理が出ることがわかりました。
そこで出てくるのがIPです。
IPの考え方はETHERNETとは逆です。
知らないアドレス宛の通信が来たら、すべて捨ててしまいます。
全方向に投げるような通信も嫌うので、自分のところに来ても通しません。
知っているアドレス宛の通信だけ、適切な経路からのみ通ってよしとする頭の固い門番です。
また、古くなった通信も捨ててしまいます。断捨離うまそうですね。
このような性質からIPの世界には必要でフレッシュな通信のみが流通し、不要な通信はでないようになっています。
この性質は裏返せば、IPだけで通信するには目的のアドレスがどこから通っていくべきなのか、一つ一つ設定する必要が出てきます。
数台のPCで数通りの宛先ならやってもいいかもしれませんが、数万の宛先となると考えることすらしたくありません。
##・ETHERNETとIPを組み合わせる
ETHERNETがあるおかげで、ルータに通信を届けるのに相手のMACアドレスが何でどこのポートから。。。などと細かいことを気にする必要がなくなります。
IPがあるおかげでルータどうしは不要な通信で埋め尽くされることはなくなり、目的地まで適切なルートで通信を届けることができます。
実際はETHERNETとIPを連携させるARPというプロトコルや、知っているIPアドレスの情報を交換するRIP,OSPF、EIGRP,BGPなどといったプロトコルがあったり、まだまだ色々なプロトコルがあるおかげで通信が成り立つのですが、今回はこの辺にしておきます。
#結論
考えた昔の人って頭いい!