Web、インフラエンジニアは知らなきゃヤバイ！ネットワーク基礎(TCPIP)

# Webエンジニアでもインフラエンジニアでもネットワークの知識は必須
インフラエンジニアはもちろんですが、WebエンジニアもTCPIPだけは理解しておくと
いいみたいです。Webサービスのシステム通信を理解しておくと強いみたいです。

説明は至らないとこもあると思いますがご了承ください。💦

# ネットワークとは
***複数のコンピューター同士が連携するために接続された状態***です。
最近は有線ネットワークよりかは無線ネットワークが増えてきました。
最近だと回線交換方式ではなく***パケット交換方式(データを小さく分けて、同時に通信ができる)***が主流になってきました。

他にも下の記事を参考にしてください。

https://www.infraexpert.com/study/networking1.html

https://qiita.com/Hashimoto-Noriaki/items/9ab06d391c3aeca3db22


# Unicast、Multicast、Broadcast
通信相手の数によって変わってきます。
|通信|説明|
|--|--|
|Unicast|1対1で行われるデータ通信|
|Multicast|1対複数で行われるデータ通信|
|Broadcast|1対不特定多数で行われるデータ通信|

https://www.infraexpert.com/study/networking8.html

# プロトコル
***Protocol***とは***通信規約、通信手順***のことです。
標準化された内容のことでたくさん種類があります。複数組みあわせて動作します。

# 通信モデル
通信の流れ(動作、処理)のことで流れは複数に分けます。つまり複数のプロトコルの組み合わせです。

### OSI(Open Systems Interconnection)の参照モデル
7階層で構成されています。この階層が組み合わさり動作しています。

|層(Layer)|名前|説明|
|--------|---------|----------|
|Layer7(L7)|アプリケーション層|Webブラウザやメールソフトが通信を必要とする時に動作するプログラム|
|Layer6(L6)|プレゼンテーション層|表現の形を決める層。対向と取り決めたプロトコルに1度変換し、アプリケーション層が理解できる表現にします。イメージとして日本語とフランス語で会話をする時に、一度英語に変換して会話をするみたいなものです。|
|Layer5(L5)|セッション層|相手のアプリケーションとの間でデータのやりとり(アプリケーション間でのデータ制御)|
|Layer4(L4)|トランスポート層|送信するデータの品質管理(機器間でのデータ制御)|
|Layer3(L3)|ネットワーク層|最終的な目的地までの通信経路を決定|
|Layer2(L2)|データリンク層|直接接続された機器までの通信をし、受信したデータが壊れていないかをチェック|
|Layer1(L1)|物理層|データをビット列(0と1の並び)に変換して、対向に伝える|

https://www.itmanage.co.jp/column/osi-reference-model/

PDUとカプセル化も知っておくといいいのでこの記事を読んでみてください。

https://atmarkit.itmedia.co.jp/ait/articles/0802/26/news135.html

# TCP/IP
***TCPとIPは個々のプロトコルの名称***です。個々のプロトコルを意味する時と関連するプロトコルを含めた相性を意味することがあります。OSI参照モデルと同じでカプセル化、非カプセル化、データに名称があります。

⚫︎TCP(Transmission Control Protocol)
⚫︎IP(Internet Protocol)


|層|説明|OSIで例えると|代表的なプロトコル|データの名称|
|--------|---------|--------|----------|---------|
|***アプリケーション層***|アプリケーションが必要とする時に動作するプログラム|アプリケーション層、トランスポート層、セッション層|***HTTP***、FTP、SMPT|***メッセージ***|
|***トランスポート層***|送信するデータの品質管理|トランスポート層|***TCP(品質重視の通信)***、***UDP(処理の軽さを重視)***|***セグメント***、***データグラム***|
|***インターネット層***|エンドツーエンドの通信を定義し、通信相手の特定、通信経路を決定|ネットワーク層|***IP***|***パケット***|
|***リンク層***|直接接続された機器間の通信を定義|データリンク層、物理層|***Ethernet***|***フレーム***|

## 通信モデル
通信モデルはOSI参照モデルとTCP/IPモデル共に***通信の流れを複数の処理に分割***して考えます。
***送信側では上位から下位に***、***受信側では下位から上位にデータが渡されて処理***されます。
機器によっては全てのレイヤーを必要としないです。


# Ethernet
***リンク層に該当するプロトコル***です。


### どのように通信するか
***Ethernetフレームにアドレスを入れて通信***します。
・***送信元アドレス***、***Sourceアドレス***は***自分***
・***宛先アドレス***、***送信先アドレス***、***Destinationアドレス***は***相手***

***宛先が自分なら受信して上位レイヤー***、***違えば破棄***

#### Macアドレス
 Ethernetでは48ビットのMacアドレスを使います。
16進数で書き、24ビットずつ意味があり、前半はメーカー識別子(OUI)、後半はメーカーで付与します。

ex) 00-00-5E-00-53-00

***FF-FF-FF-FF-FF-FF***はBroadcastアドレスです。

#### EthenetフレームとプリアンブルとIFG
以下の記事で確認してください。

https://www.infraexpert.com/study/ethernet4.html

https://server-network-note.net/2022/03/ethernet-freme-format/


#### Ethernet規格
まずはインターフェースとポートについてです。

https://tooljp.com/windows/chigai/html/IT/Interface-NIC-Port-chigai.html

こちらが規格の記事です。

https://www.winserver.ne.jp/column/about_ethernet/


# VLAN(Virtual LAN)
```Virtual(仮想)```とは今使っている機器やモノを別の機器などで機能するものです。
***VLANとは仮想的なL2スイッチ***です。***異なるL2スイッチの中で実現するのがVLAN***です。
ブロードキャストドメインを分割できます。

VLANIDは0~4095の番号だが実際に使えるのは4094個となっているみたいです。



### VLAN種類
⚫︎```Static(静的)VLAN```は***管理者などによって手動で設定***されています。

⚫︎```Dynamic(動的)VLAN```は***ホストが持つ情報に応じて自動で設定***されます。

https://wa3.i-3-i.info/diff171vlan.html

#### ポートVLANとタグVLAN

以下の記事から確認お願いします。

https://xtech.nikkei.com/atcl/nxt/column/18/00131/020600002/


#### IEEE 802.1Qとは
***802.1ってところが決めたタグVLANの規格***みたいです。

https://wa3.i-3-i.info/word12844.html



# IP(InternetProtocol)について
インターネット層(ネットワーク層)に該当します。

***IP Version4(IPv4)とIP Version6(IPv6)の2つ***があります。
***IPと書くときはIPv4のこと***です。

# ARP
(AddressResolutionProtocol)の略で、IP アドレスに紐づくMACアドレスを調べます(解決)。
Request(要求)はBroadcastでReply(応答)はUnicastです。
ARPエントリをARPテーブルで管理し、ARPエントリは一定時間で消去されます。

⚫︎補足
```輻輳```とはネットワーク機器で処理できないような通信量が発生することで混雑することを言います。




# TCP/UDP
トランスポート層に該当します。

•TCP(Transmission Control Protocol)
•UDP(User Datagram Protocol)

複数のアプリケーションからのパケットを適切に管理し、ポート番号を利用します。

***TCPは通信データの品質を維持する機能***があり、
コネクション管理、順序制御、再送制御、流量制御、輻輳制御をおこない、
ァイル転送のような大きく連続したデータの送信に向いています。
***UDPはTCPのような品質管理はしません***。必要なら上位のアプリケーション側でおこないます



# 特に大事なところはTCPIP
特に大事なところは***TCPIP***です。

# 有益書籍
***マスタリングTCPIP入門***がいいみたいです。

https://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0TCP-IP%E2%80%95%E5%85%A5%E9%96%80%E7%B7%A8%E2%80%95-%E7%AC%AC6%E7%89%88-%E4%BA%95%E4%B8%8A-%E7%9B%B4%E4%B9%9F/dp/4274224473


こちらの方も動画で取り上げていました。

https://www.youtube.com/watch?v=L3pEmLuHx-0

# マスタリングTCPIPの解説

https://ysk-pro.hatenablog.com/entry/tcp










# 参考資料
こちらのUdemyは基本的なとこを効率良く学ぶことにおすすめです。

https://www.udemy.com/course/network_fundamentals_starting_from_zero/?utm_source=aff-campaign&LSNPUBID=kPk%2Fb7Y*62E&utm_medium=udemyads&ranMID=47984&ranSiteID=kPk_b7Y.62E-iAF3H5.HSwihYLvQ36RN2g


https://ysk-pro.hatenablog.com/entry/tcp