ネットワークってなんなのよ？ その1

ネットワークについて理解が浅かったので、本を5冊ほど読んでちょっとまとめてみました。


## ネットワークってなに？

![computer_server_based.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282504/948efa31-c9f4-2103-6acd-991a387d0691.png)


ネットワークというのは無数のパケットが光の速度で行き交うひとつの世界です。

1960年代、コンピュータは大型のものしかありませんでした。今のようなデスクトップPCもありませんし、もちろんノートPCもスマホもありません。

大型コンピュータはとても貴重なので1台のコンピュータに電話回線のようにつなぎっぱなしにして、タイムシェアリングで回線交換する方法でみんなで使っていました。

しかし、つなぎっぱなしは安定しているのですが、誰かが使っているときは他の人が使えません。時間の無駄がとても多かったのです。

そこで1960年代後半から1960年代にARPANET(Advanced Research Projects Agency NETwork)がパケット交換方式という方法を世界で初めて採用しました。

パケット交換方式は、パケットというAmazonの段ボール荷物のようなデータを、回線のベルトコンベアーに次々と流すように送ります。この方法だと回線を占有しないので待ち時間もいらなくなりました。

宅配荷物のようにいくつかの分岐点を経たとしても、ヘッダー情報という宛名を見てパケットを送り届けられます。また、途中で壊れたり紛失したりしても、その小さなパケットだけを再送すればいいのでとても効率的でもありました。

それイイネ、ということでどんどん広がっていきました。

今ではボイラー制御システムのようなところでもこのネットワークの仕組みが使われています。

現代はネットワークの世界なのです。


## プロトコルってなんなのさ？

![yubikiri_kids.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282504/d7087a09-0518-f5c5-aab0-f95b7f867410.png)


ネットワークを学んでいると必ず出てくるのが「プロトコル」です。

プロトコルとは一体なんでしょうか？

プロトコルはパケットを処理するときの「約束事」です。

ブラウザのアドレスバーにURLを入力するときに`https`という文字を入れることがあります。これは「HTTPSというプロトコルで決められた約束事にもとづいて、パケットを処理しますよー」という宣言なのです。

約束事を決めておくことで、独自規格ばかりでお互いに通信ができなかったコンピュータ同士が、相互に通信できるようになりました。

実際にどんなことがプロトコルによって決まっているかというと、ビックカメラで売っているようなLANケーブルの素材や、コネクタの形状など、目に見えるものから目に見えない電波の周波数に至るまで、驚くことにすべてプロトコルによって定義されています。

パケットについても、どこからどこまでにどんな情報があって、どんな順序でやり取りするのかを表すヘッダーがプロトコルによって定義されています。これはちょうど送信元や宛先が書いてある荷札のようなものです。

ちなみにプロトコルは、ネットワーク全体の信頼性を確立するための仕組みも提供しています。

昼時に社内でスマホを使っていると遅くなることがあります。ネットワーク上にパケットが溢れてしまってどうしようもなくなると困るので、そういった場合に帯域を制限するということも実はプロトコルによって決められています。

また通信しているのが正しい相手かどうかの認証や、通信を途中で誰かに読み取られないように暗号化する仕組みも提供しています。

ネットワークのほとんどすべてがプロトコルによって定められているといっても過言ではありません。


## じゃあプロトコルはどうやって決めてるの？

![gakkatsu_homeroom (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282504/de8dc699-e421-7639-64f0-b46ef91f47fb.png)


プロトコルは標準化と呼ばれる方法で定められています。

たとえばTCP/IPというプロトコルの標準化は、IETF(Internet Engineering Task Force)という団体のメーリングリストで行われます。このメーリングリストは誰にでもオープンなものとなっています。

このメーリングリストでRFC(Request For Comments)というドキュメントが作られます。

標準化作業はいくつかの段階に分かれています。

まずは仕様を煮詰めるインターネットドラフト(I-D: Internet-Draft)です。ここで実装やシミュレーション、運用実験とともにメーリングリストで議論されます。ちなみに有効期間は6ヶ月です。

この期間内に、変更を反映するか、無意味なI-Dは自動的に消去されます。

このインターネットドラフトが認められるとRFCとなり、提案標準(Proposed Standard)となります。

この提案標準から次に進むには、IETFの主要メンバーから構成されるIESG(IETF Engineering Steering Group)からの承認が必要です。

ちなみにTCP/IPは常に実装を念頭におきながら仕様が決められます。そのため、提案標準が多くの機器で実装され広く運用され、IESGに承認されてやっとドラフト標準という次の段階に進めます。

これは実際の運用で問題があればドラフト標準になる前に修正されるということです。

さらに多くの機器で実装利用され、「実用性が十分にあって問題がない」と多くの人に考えられ、IESGによって承認が得られると、最後に標準(Standard)となります。

こうして見ると、IETFという団体が、標準を決めてしまってから普及させる団体とは根本的に考え方が違うことがわかるでしょう。

TCP/IPというプロトコルでは、標準になったときにはすでに十分に普及しているということなのです。時代に先行するためにはドラフトを実装したり、すぐに切り替えられるようにするサポート体制が必要なのです。




## OSI参照モデルってなんなのさ？

![computer_jisaku_bunkai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282504/2d252271-5dd7-e949-4dd6-c5053508ad26.png)


「あぷせとねでぶ」

そういうふうに覚えた人もいるかもしれません。

ネットワークの話をするときに必ずといっていいほど出てくるのが、先ほどのTCP/IPと「OSI参照モデル」です。

OSI参照モデルは、ネットワークという複雑な仕組みを、「通信プロトコルに必要な機能は何か」という問いを中心にモデル化したものです。

構造としては、下位層から特定のサービスを受けて上位層に特定のサービスを提供するなど、各階層が連携して動作する7階層になっています。

この7層はあくまでもモデルです。各層のおおまかな役割が決められているだけのガイドラインとなっています。

では、実際のネットワークで主にこのOSI参照モデルが使われているかというと、そうではありません。

このOSI参照モデルは国際標準化機構(ISO: International Organization for Standardization）が1984年に策定したのですが、実は通信機能を細かく分類し過ぎて使い勝手が悪くなってしまうものでした。

ネットワークの学習上は区別がわかりやすいので、このOSI参照モデルがよく参考図として使われます。

また、それよりも前の1970年代にDARPA（Defense Advanced Research Projects Agency）が開発したTCP/IP参照モデルという階層構造もあります。

TCP/IP参照モデルは、リンク層（ネットワークインターフェイス層）、インターネット層、トランスポート層、アプリケーション層の4つの階層でできています。これはOSI参照モデルよりも歴史が古く、かつ実用性を重視した階層構造となっています。

ネットワークの階層構造の理解には、今見ているのがどのモデルなのかをはっきりさせておくことが重要です。



## このあとは？

次の記事では、TCP/IPやOSI参照モデルのようなモデルの中身を見ていきたいと思います。


## 読んだ本

『ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識』
『マスタリングTCP/IP　入門編（第6版）』
『図解入門TCP/IP　仕組み・動作が見てわかる』
『パケットキャプチャの教科書』
『Linuxで動かしながら学ぶTCP/IP入門』