マスタリング TCP / IP 要約 volume 1

## はじめに
基礎の中でも最も無知であるネットワーク周りの知識を固めるべく、ネットワークの名著である

[マスタリングTCP/IP](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwjvw8Cz8ZTpAhXYfd4KHck-BBUQFjABegQIAxAB&url=https%3A%2F%2Fwww.amazon.co.jp%2F%25E3%2583%259E%25E3%2582%25B9%25E3%2582%25BF%25E3%2583%25AA%25E3%2583%25B3%25E3%2582%25B0TCP-IP%25E2%2580%2595%25E5%2585%25A5%25E9%2596%2580%25E7%25B7%25A8%25E2%2580%2595-%25E7%25AC%25AC6%25E7%2589%2588-%25E4%25BA%2595%25E4%25B8%258A-%25E7%259B%25B4%25E4%25B9%259F%2Fdp%2F4274224473&usg=AOvVaw1b4sqCsBVFK6QZX5zlVYIs)

を読むことにしました。
本記事はそのアウトプットとして、この書籍を読んで自分なりに解釈したことを要約してまとめたものです。
![41fQf8MI9AL._SX352_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/f1c993f8-b1f4-4548-cd4e-896ff8d8fd9e.jpeg)

## 概要
今回は第一章「ネットワーク基礎知識」の前半です。
第一章では、TCP/IPを学ぶ前に、前提知識として持っておく必要のある「ネットワーク」の基礎的な知識を学びます。

 - コンピュータの歴史とそれに伴ったネットワークの関わり
 - プロトコルとは何か

の2点についてやっていきます。

## コンンピュータネットワーク登場の背景

「２０世紀最大の発明はコンピュータであった」と言われるほど、現状世の中ではコンピュータがなくてはならない存在です。
そんなコンピュータは今まで様々な変化を遂げて、今ではいろんな形で活躍しています。
コンピュータの歴史と、それに伴う「ネットワーク」というものの登場のお話をします。

### スタンドアロン
最初ネットワークが生まれる前、コンピュータは単体で使われていて、データもその端末に依存していました。
その状態をスタンドアロンと言います。

![standalone.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/6d2ca59c-f553-0bf6-e9e2-2fd7166dbae2.png)

### コンピュータネットワーク
スタンドアロンではできることが限られ効率も悪いということで、複数のコンピュータを互いに接続して使うコンピュータネットワークが登場しました。
これにより、複数のコンピュータ間のデータの共有が実現できました。
限られた狭い地域同士の接続を”LAN(Local Area Network)” 、物理的に離れた広範囲での接続を”WAN(Wide Area Network)”と呼びます。

![network.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/37b503aa-ae79-408a-5683-938c9a8dbe8b.png)

### インターネット
コンンピュータネットワークは、管理者が指定した特定のコンピュータとの接続しかできませんでしたが、
インターネットは、接続されているどのコンピュータともデータのやり取りが可能となりました。

![internet.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/0c1e375e-e152-eba9-3765-76e39b4932f3.png)

## コンピュータとネットッワーク発展の7つの段階
コンピュータの発達に伴うネットワークの関わりを7段階にして紹介します。
これを知ることで、TCP/IPの重要性の理解が深まると思います。

### バッチ処理
1950年代。
多くの人がコンピュータを扱うためには、バッチ処理が重要でした。
プログラムやデータをカードやテープに保存しておき、それをカードリーダなどに読み込ませてコンピュータが動く仕組みです。
当時コンピュータは価値が高く、ある特定の場所にしかありませんでした。よって、人々はカードやテープを持って読み込ませに行くしかありませんでした。（実行時間もかなり長い。。。）

![batch.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/e14bee65-7adf-517f-c2fc-44603d51c8d2.png)

### タイムシェアリングシステム（TSS）
1960年代。
TSSは、１つのコンピュータに複数の端末（当時はタイプライター）を接続して、複数の人がコンピュータを扱うことができるようにしたシステムです。
コンピュータと端末との接続はネットワークが利用されていました。

![tss.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/4b26146c-63ef-843a-b91d-2c3bc405ebe2.png)

### コンピュータ間通信
1970年代。
コンピュータとコンピュータの間での通信を行う技術が登場しました。
それまでは、コンピュータのデータを別のコンピュータで扱おうとした時、フロッピーディスクなどの外部記憶媒体にデータを移してそれを物理的に別コンピュータの場所まで運んで共有していました。
この技術の登場により、1つのコンピュータで一括処理するのではなく、同じデータを共有した複数のコンピュータで分散して処理をするという運用が可能になっていったのです。

![computer-net.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/844f8997-a31e-d7cc-837a-d9902b2cb8d3.png)

### コンピュータネットワークの登場
1980年代。
いろいろな種類のコンピュータを相互に接続することができるコンピュータネットワークが誕生した。

![internet.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/a691c95c-9531-4172-66ed-53f16b7aaa70.png)

### インターネットの普及
1990年代。
世界的なコンピュータネットワークのインターネットが誕生しました。
それまでは、自社製品を相互に接続させて独自のネットワークで通信を行なっていたメーカーが、こぞってインターネットに対応していきました。

### インターネット技術中心の時代へ
2000年代。
インターネットには多くの機器が接続するものとなってきています。
コンピュータだけではなく、携帯電話・ゲーム機・家電製品など、様々なものがインターネットに接続され始めています。

### 「単につなぐ」時代から、「安全につなぐ」時代へ
2010年代。
インターネットにつなぐことで、ウイルス感染したり、情報の漏洩が起きたり、詐欺にあったりなど様々な被害が及んでしまう現状があります。
インターネット普及期ではとにかくより広く使われることが重視されていきましたが、これからはより安全度が高いことが重要視されてきています。

## プロトコルとは
インターネットは、様々な通信技術が組み合わさってできた仕組みです。
そのような仕組みを実現することができるのがTCP/IPなのです。
TCP/IPとは、通信プロトコルの総称です。そもそもプロトコルとは何かということの説明をします。

### ネットワークアーキテクチャ
様々なプロトコルを体系的にまとめたものです。
例）TCP/IP, IPX/SPX, Apple Talk etc…

![network-ark.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/49efa62e-bcf1-aca0-6217-307001b401fd.png)

### プロトコルの例
インターネットでよく使われているのは、IP, TCP, HTTPです。これらが組み合わさった体系をTCP/IPと呼びます。
例) TCP/IP【IP, TCP, HTTP, UDP, TELNET …】, IPX/SPX【IPX, SPX, NPC …】, Apple Talk【DDP, RTMP, AEP …】

### プロトコルは通信に必要
プロトコルとは、コンピュータ同士で通信をする際の「約束ごと」です。
同じプロトコルであれば、メーカーやCPU、OSが違っても通信することが可能です。
逆に、プロトコルが違うと通信できないのです。通信を行うコンピュータは、そのプロトコルを理解して処理できなければなりません。
→プロトコルを会話でいう「言語仕様」と考えると簡単

![protocol.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/0c5bb1cc-eba6-b6bf-327c-5b91b880db80.png)

### 「約束ごと」の重要性
コンピュータは、明確な「約束ごと」がばければ正しく動作、通信を行うことができません。
例えば、処理が失敗してしまった時にどのように動けばいいのかなど、きめ細かく決めてあげなければならないのです。
それがプロトコルです。

### パケット通信でのプロトコル
パケット通信とは、大きなデータを細かく分割してデータを送信する通信です。
パケット通信では、送信元と宛先のアドレスと分割前のデータのどの部分なのかを示す番号を、
ヘッダという部分に書き込んで送信します。
受信側は、そのヘッダを読み込んで処理します。
ここで、送る側も受け取る側も決まった「約束ごと」に従ってヘッダへの書き込みや読み込みを行う必要があります。

### プロトコルの歴史
元々は、様々なメーカーが独自ネットワークアーキテクチャを発表し、それぞれ別のプロトコルの通信で動く製品を作っていました。
当然互換性がないので、メーカーが違えばネットワーク通信ができなかったのです。
それはそれは不便で、会社で使うコンピュータは全て同じメーカーのものにしなくてはならなかったり、
メーカーが潰れたりサポートが終了してしまったら全部違うメーカーに入れ替えなくてはならなかったのです。

![his-protocol.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183984/74991d08-67f2-e9d4-97f5-ab884f55d3fd.png)

### プロトコルの標準化
そのために、プロトコルの標準化をする動きが世界的にありました。
ISO（国際標準化機構）がかつてOSIというプロトコルを設計する時の指針として提唱したOSI参照モデルというものが、ネットワークプロトコルを考える際によく引き合いにだされます。
しかし、TCP/IPはISOが標準化したのではなくIETF（Internet Engineering Task Force）が標準化しました。
今では、このTCP/IPがインターネットではデファクトスタンダードになっていて、このTCP/IPに準処していれば別マシンの別OSでもインターネットを通じて通信できるのです。

ISOが世界的に標準化しようと頑張っている最中、IETFがさっさとTCP/IPを発表してしまい、TCP/IPを使うユーザーが多くなってISOが発表するころには世界的に普及してしまったというわけです。