ネットワークのあれこれ

コンピュータの成り立ちとか、基礎とか理解できればこれから先どんなことをやるにしても理解が早いのではないかと思い勉強を始めました。
[キタミ式イラストIT塾 基本情報技術者](https://www.amazon.co.jp/%E3%82%AD%E3%82%BF%E3%83%9F%E5%BC%8F%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88IT%E5%A1%BE-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E4%BB%A4%E5%92%8C03%E5%B9%B4-%E3%81%8D%E3%81%9F%E3%81%BF%E3%82%8A%E3%82%85%E3%81%86%E3%81%98/dp/4297117819)で勉強させていただいております。

まとめます！

## LANとWAN

#### LAN(Local Area Network)
事業所や家の中など比較的狭い範囲でのネットワークをLANと言います。
Wi-Fiなどの無線LANやLANケーブルのLANはこのことを指しているんですね。

#### WAN(Wide Area Network)
LAN同士を接続するネットワークのことを言います。
つまりインターネットと普段呼んでいるのはこのことを指しているんですね。

ここまではよく聞いたことがある内容ですが、面白かったのはこのLANやWANができる前のコンピュータではどうしていたのかという話。

例えばデータの受け渡しはフロッピーディスクに入れて手渡しをしていたり、印刷するためにフロッピーディスクにデータを入れてプリンタまで持っていったりしていたとのこと。
すごい手間ですね笑
こういう歴史、面白いです。


## プロトコルとパケット

#### パケット
現在のネットワークで基本的に用いられている通信技術。
データをパケットという単位に小分けしてそれを回線に流す。

何故パケットに分けるのかというと、例えば川があってそこを荷物を乗せた船が通るとします。
川が通信路、荷物を乗せた船がパケット。
で、荷物を乗せた船を流したい人はたくさんいるとする。
もしパケットに分けないで大きなデータを流そうとすることは大きな荷物を巨大貨物船に乗せて流すことと同じになり、その貨物船が通り終わるまで誰も別の船を流すことができなくなってしまいます。
それにもし巨大貨物船が途中で沈没してしまうと（実際だとエラーが起きたりなど）また最初から巨大貨物船に荷物を乗せて船を出さないといけないですが、パケットに分けて船に乗せて流しておけば1隻沈没しても沈没したところだけまた流せばいいので無駄がありません。
このような理由でパケットに分けて通信をしています。

#### プロトコル
よく聞くけどよく分からないプロトコル。
簡単にいうと`ネットワークを通じてコンピュータ同士がやり取りするための約束事や手順`です。
私が知っているプロトコルというと`TCP/IP`くらいでしょうか。
プロトコルがないとデータを判別できなかったりうまく送れなかったりします。
郵便と一緒で、住所を記載しないと届かないし、郵便番号などの決まりがあるし、それがあることできちんと手紙が届く。

以下のOSI基本参照モデルにあるような約束事があるおかげでコンピュータ同士がコミュニケーションを取れるようになっています。

| 階層  | 名前            | 役割                            |
|:----:|:----------------|:-------------------------------|
| 第1層 | 物理層           | 物理的にどう繋ぐか(LANケーブルとか) |
| 第2層 | データリンク層      | 同一ネットワーク内でどう通信するか     |
| 第3層 | ネットワーク層      | ネットワークとネットワークをどう中継するか |
| 第4層 | トランスポート層    | 通信の信頼性はどう確保するか         |
| 第5層 | セッション層       | 通信の開始から終了までをどう管理するか  |
| 第6層 | プレゼンテーション層 | データはどんな形式にするか           |
| 第7層 | アプリケーション層   | 具体的にどんなサービスを提供するのか  |

これも郵便と一緒で自分の地域のポストに出して、それを郵便局の方が回収して、振り分けて、送り先の郵便局まで送る、送る間にいくつかの拠点を経由するかもしれないし、その手順がこの層なのかなという認識でおります。

#### TCP/IP

よく聞くTCP/IPはプロトコルの一種ですが、みなさんが使うようになったのでほぼ標準の規格として存在しているようです。

- IP(Internet Protocol)

上記の表でいうと第3層にあたるネットワーク層に属します。
経路を制御しネットワークからネットワークへパケットを運んで相手に送り届けます。
送り届けるため、どこに送るかを識別しないといけません。そのためにIPアドレスが必要なんですね。

- TCP(Transmission Control Protocol)

上記の表でいうと第4層にあたるトランスポート層に属します。
正しくデータが送られたことを保証する仕組みで、パケットの順序や送信エラー時の再送などを制御して送受信するデータの信頼性を保証します。
`相手との接続を確認してからデータを送るので信頼できる`のです。データの欠損とかがない。

逆に相手との通信を確立しないで一方的にデータを送る通信プロトコルを`UDP(User Datagram Protocol)`と言います。
ポイポイ送りまくるので信頼性には欠けるけど高速なので、リアルタイムさが必要なライブ配信とかに用いられることが多いです。
確かにライブ配信では多少の映像の乱れよりは速い方がいいですからね。なるほど。


## 代表的なプロトコル

TCP/IP以外のよく聞くプロトコルは他にもありますね。

| プロトコル名 | 概要                                                                           | ポート番号     |
|:---------:|:------------------------------------------------------------------------------|:------------:|
| HTTP      | Webページの転送に利用するプロトコル。HTMLの文書を受信する時などに使う。                       | 80           |
| FTP       | ファイル転送に利用するプロトコル。ネット上のサーバーにアップロードしたりダウンロードしたりする時などに使う。 | 転送20 制御21 |
| Telnet    | 他のコンピュータにログインして遠隔操作をする時に利用するプロトコル。                            | 23           |
| SMTP      | メールの配送部分を担当するプロトコル。メール送信時やメールサーバ間での送受信に使う。              | 25           |
| POP       | メールの受信部分を担当するプロトコル。メールサーバ上にある受信したメールを取り出す際に使う。         | 110          |
| NTP       | コンピュータの時刻合わせを行うプロトコル。                                                | 123          |


ポート番号というのはマンションの部屋番号みたいなものです。
パケットがIPアドレス宛に送られてきても、ポート番号がないときちんと目的のサーバプログラムに届きません。
マンションの住所を記載しても部屋番号がないと荷物を届けられないのと一緒ですね。

前職のドコモショップで働いていた時に、よく「スマホに会社のメールを受信できるようにしたい」というお客様がいらっしゃってメールの設定をしていたのですが、
よく分からないままポート番号を設定してたなぁ。
SMTPとかPOPとか指定しなきゃいけなかったけど、必要な理由が分かって納得です。

以上です。