ネットワーク

# ネットワークの方式
## LAN(Local Area Network)
狭い範囲（オフィスなど）のネットワーク
→ 有線LAN・無線LANで区別

### 有線LAN
有線でコンピュータ同士を接続
→ （OSI基本参照モデル）　物理層・データリンク層に属する

メジャーな有線LAN：**イーサネット**（Ethernet）→ **IEEE802.3** で規格化
→ イーサネットのアクセス制御方式：**CSMA/CD(Carrier Sense　Collision Detection)**
![CSMA:CD.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/2769e7aa-e2d4-3902-3131-ac3a664a1183.jpeg)
＊　ネットワークの通信：データが衝突（**コリジョン**）
→ 時間をおいて再送信する（接続する端末 増 → 通信速度 遅）

### 無線LAN
有線 ❌、電波で通信をするLAN　→ **802.11** で規格化
→ 電波が届く範囲にコンピュータ配置できる
→ 盗聴・情報漏洩の危険性（セキュリティ対策）
- **Wi-Fi**：　無線LAN装置間：相互接続性が保証されるブランド
　→**Wi-Fiダイレクト**：　2台の端末同士を接続させるモード
- **ESSID**：　無線ネットワークを識別する文字列

＊　**CSMA/CA**(Collision Avoidance)：　無線LANで使う、アクセス制御方式　→ 衝突回避

## WAN(Wide Area Network)
遠く離れたLAN同士を接続するネットワーク

＊　**VPN**：　公衆回線を専用線のように使う、仮想ネットワーク
　→ セキュリティの確保


## モバイル通信サービス
通信事業者の電波　→ スマートフォンでインターネットに接続するサービス
→ **SIMカード**：端末に入れて通信できるようになる
→ 通信速度：　3G　→ **LTE（4G）**　→ 5G
→ **テザリング**：　スマホをアクセスポイントにして、PCなどからインターネットを使う機能
![モバイル通信サービス.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/0d9eb0a5-c293-af98-85d5-3918d4b1c8b6.jpeg)
- **MVNO(Mobile Virtual Network Operater)**：　通信事業者の通信網を借りて、自社ブランドで通信サービスを提供する
- **キャリアアグリゲーション**　：　複数の周波数帯を束ねる　→ 無線通信の高速化・安定化を図る
- **５G**　：　第５世代通信システム：「超高速」「超低遅延」「多数同時接続」
- IoTネットワーク　：　**LPWA(Low Power Wide Area)**：低速・広範囲をカバーできるネットワーク
- **輻輳（ふくそう）**：通信急増　→　つながりにくくなる現象
　



# 通信プロトコル
【手紙】
・約束事：　切手を貼る / 宛名を書く / ポストに入れる
・その後の流れ（階層）：　回収係　→ 仕分け係　→ 配送係
→ ネットワークにも「約束事」「階層」ある

**プロトコル**　：　コンピュータ同時がやり取りするための約束事
→ 世界共通のルールに従わないと、ネットワークで通信できない！！
→ 約束事を7階層に分けた

## OSI基本参照モデル（アプセトネデブ）
第1層〜第7層まで組み合わせる　→ コンピュータ同士がコミュニケーションできる
|階層|名称|内容|
|:--:|:--:|:--|
|第７層|アプリケーション層|どんなサービスを提供するか|
|第６層|プレゼンテーション層|どんなデータ形式にするか|
|第５層|セッション層|通信の開始から終了までどう管理するか|
|第４層|**トランスポート層**|通信の信頼性を確保するためのルール|
|第３層|**ネットワーク層**|異なるネットワーク同士で通信するためのルール|
|第２層|**データリンク層**|同じネットワーク内で通信するためのルール(社内/家庭内)|
|第１層|**物理層**|物理的にどうつなぐか（0,1 -> 電気信号に変換するルール/ ケーブルの形状に関するルール）|

## TCP/IP
**デファクトスタンダード**(事実上の標準)になっているプロトコル
→ OSIの各層と対応
![TCP:IP.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/a4b061ac-1399-120d-3fbe-8cf43ed68db7.jpeg)

### アプリケーション層のプロトコル
|プロトコル|説明|
|:--:|:--|
|**HTTP**(Hypertext Transfer Protocol)|HTMLコンテンツのやりとり|
|FTP(File Transfer Protocol)|ファイル転送|
|TELNET|遠隔地コンピュータにリモートログインして操作|
|SNMP(Simple Network Management Protocol)|ネットワーク上の構成機器、障害時の情報収集|
|**NTP**(Network Time Protocol)|複数コンピュータの時刻を同期|
|**SMTP**(Simple Mail Transfer Protocol)|メールの送信|
|**POP3**(Post Office Protocol Version3)|メールサーバー上のメールボックス←メール受信|
|IMAP4(Internet Message Access Protocol Version4)|メールサーバー上のメールボックス←必要なものだけ受信|

＊　SMTP ↔︎ POP
SMTP　: 　**葉書を最寄りのポストに投函　→ 相手の郵便ポストへ配送**
POP3　：　**相手が郵便ポストから葉書を取り出す**

### トランスポート層のプロトコル
通信の信頼性を確保する方法
→ パケット（通信データを細かくしたもの）をどう運ぶのか
|プロトコル|説明|重視|利用先|
|:--:|:--|:--|:--|
|TCP|通信相手と接続できたか確認 → パケット送信|信頼性|HTTP,FTP,TELNET,SMTP,POP3|
|**UDP**|通信相手と接続確認せず、パケット送信|リアルタイム性|DNS,DHCP,NTP|



### インターネット層のプロトコル
ネットワーク同士でどう通信するかのルール
→　複数のネットワークをつないで、その上をパケットが流れる仕組み

|プロトコル|説明|
|:--:|:--|
|**IP**(Internet Protocol)|IPアドレス→複数ネットワーク→パケットを相手に届ける|
|ICMP(Internet Control Message Protocol)|相手との通信状況：メッセージで返す|
|**ARP**(Adress Resolution Protocol)|IPアドレス　→　MACアドレス取得|

※ RARP（Reverse ARP）：MACアドレス　→　IPアドレス 取得
※ ノード
　・ネットワーク分野：ネットワークに接続する機器、ネットワークとネットワークを接続する機器
　・TCP/IPネットワーク：IPアドレスをもつ装置
　
### ネットワークインタフェース層のプロトコル
|プロトコル|説明|
|:--:|:--|
|PPP(Point-to-Point Protocol)|2地点間を接続して通信|
|PPPoE(PPP over Ethernet)|LAN(Ethernet)上でPPPをする|









# ネットワーク接続機器
## パケット
TCP/IPプロトコルを使うネットワーク　→ 通信データを**パケット**に分けて通信
![パケット.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/43ab727b-2c53-9493-c718-21bbc2b866c0.jpeg)
＊　ネットワーク上に流れるデータ全て：パケット（広義の意味）

## データ伝送単位
OSI基本参照モデル　＝　階層ごとに「データ」の呼び方が違う
- トランスポート層：**セグメント**
- ネットワーク層：**パケット**
- データリンク層：**フレーム**
![データ伝送単位.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/a7ae29ff-b150-bb78-ef0f-2aea6027f701.jpeg)
＊　送信時：データが下位層へ行く　→ ヘッダ情報追加
＊　受信時：データが上位層へいく　→ ヘッダ情報削除
＊　各ヘッダ：相手にデータを届けるため、情報を追加

|ヘッダ名|追加情報|
|:--:|:--|
|**TCPヘッダ**|送信元・宛先：ポート番号|
|**IPヘッダ**|送信元・宛先：IPアドレス|
|**MACヘッダ**|送信元・宛先：MACアドレス|



## ネットワーク接続機器(ゲルブリ)
「LAN内」・「LAN同士」・「WANとLAN」接続　する時に使う 装置![ネットワーク_接続機器.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/4fc4f117-6f31-c961-30a7-292d6d8cf759.jpeg)

### リピータ
OSI基本参照モデル（物理層）で中継
【端末間】
- LAN ケーブル　→ 長くなるほど電圧が弱くなる...
    - → データ信号：大きくする　→ 伝送距離のばす
![物理層_リピータ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/92b76a79-e738-e3d5-4e4f-85c48c05fc9e.jpeg)
※ ハブ：分岐して、他の繋がってる機器すべてに信号を送る（常に ブロードキャスト）
![ハブ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/9c0345eb-8121-d483-a43a-8e1cd84fd54c.jpeg)

 
### ブリッジ
OSI基本参照モデル（データリンク層）で中継
【同一 LAN内】
→ フレームの宛先MACアドレス（MACヘッダ）解析　→　適切な場所に中継
![スイッチングハブ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/74db5143-d8ea-dbd6-7546-7ea47797d39e.jpeg)

＊　**MACアドレス**：NICに割り振られた世界で一意の物理アドレス
＊　**NIC（Network Interface Card）**：コンピュータをネットワークに接続するためのカード
→ 役割：データを電気信号に変換　→ ケーブルに流す、受け取る
→ イーサネット：MACアドレス　→ 機器を識別

#### スイッチングハブ
バフよりも賢い。CPU/メモリが入ったコンピュータ
![スイッチングハブ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/48ca7b3b-861a-5abc-3234-cc94ec0f6230.jpeg)
※ PC「A」＝　PC「C」にデータを送りたいが、「スイッチングハブ」＝どのノードがPC「C」か分からない
1.  全員に同データを送る　＝　**ブロードキャスト**（たまに）
1.  スイッチングハブに「ポート・MACアドレス」登録される
1.  登録されたら、ブロードキャストすることはない。

※　**L2スイッチ**：スイッチングハブ機能　＋　**VLAN**（Virtual LAN）機能　のハブ

### ルータ
OSI基本参照モデル（ネットワーク層）で中継
【異なるLAN同士】　【LAN ↔︎ WAN】
→ パケットの宛先IPアドレスを解析　→ 最適な経路へパケット転送（**ルーティング**）
![ルーター.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/d909f2f3-8191-e202-f132-7a65c2ebfc2a.jpeg)

＊　ブリッジ：MACアドレスが確認できる範囲でのみ有効
→ ネットワーク宛のパケットを中継できない
＊　**L3スイッチ**：ルーターと同じ機能を持つ

### ゲートウェイ
OSI基本参照モデル（トランスポート層以上）で中継
→ LAN同士でプロトコル変換をする
例）　携帯電話の電子メール　　⇆　　【　ゲートウェイ　】　　⇆　　インターネットの電子メール
→ ゲートウェイがプロトコル変換して、やりとりが可能になる

![ゲートウェイ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/7329f9fb-1337-74c1-b313-5de0b989a04b.jpeg)
＊　**デフォルトゲートウェイ**：異なるネットワークを接続する出入り口になる装置
→ 例）　社内LAN → インターネット：接続する装置







# IPアドレス
TCP/IPネットワーク上のコンピュータを識別する番号
→　コンピュータの住所 
→　２進数32ビットで表現
![IPアドレス.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/1e82d14f-16c7-6e99-07a7-9d7abd876eba.jpeg)

## ドメイン名
人間がもっとわかりやすいように、IPアドレスを文字列に置き換える
例）　192.218.88.180　＝　「独立行政法人 情報処理推進機構」のIPアドレス
→ ドメイン名：「www.ipa.go.jp」
（ドメイン名の構成）
![ドメイン名.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/9353513c-9b17-223c-8082-5c2d829018a5.jpeg)

（ドメイン名の狭義・広義の意味）
![ドメイン名_広義_狭義.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/0ec483d7-e193-1a99-36a9-973085eb334f.jpeg)
＊　狭義の意味
・**ドメイン名**：　ネットワークを識別する文字列
・**ホスト名**：　コンピュータを識別する文字列
→ 「ホスト名」＋「ドメイン名」＝　**FQDN**（Fully Qualified Domain Name / 完全修飾ドメイン名）と言う

＊　広義の意味
・ドメイン名・ホスト名　＝FQDNとして使う



## DNS（Domain Name System）
ドメイン名　↔︎　IPアドレス　＝リンクするシステム
→ 担当者：DNSサーバー
![DNSサーバー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/c227d44a-2a29-cfed-1362-e16d070eec88.jpeg)
＊　**名前解決**　：　ドメイン名　→ IPアドレス取得 / IPアドレス名　→ ドメイン名取得

## グローバルIPアドレス / プライベートIPアドレス
IPアドレス：2種類
### グローバルIPアドレス
インターネットで使うIPアドレス　→ 世界で一意
### プライベートIPアドレス
LAN内で使えるIPアドレス → LAN内で一意

## DHCP
自動的にIPアドレスを割り当てるプロトコル
→ 担当者：DHCPサーバー
![DHCP.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/5a8a5be6-8327-0a8a-4167-bfffed5c2399.jpeg)

## ポート番号
TCP/IP基盤のネットワークではサービスが多数利用できる
→ サービスを支える：TCP/IPの上位層（セッション層以上）で規定されたプロトコルたち
→　どんなプロトコルがどんなサービスを提供しているのか

**ポート番号**：　IPアドレスのみ→コンピュータ識別可能↔︎コンピュータ内のどのサービス宛てか不明
→ **サービス（アプリケーション）を識別する番号**（0〜65,535）
（イメージ図）
![ポート番号.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/78ea272a-6978-c473-1422-a9649ca29e37.jpeg)
＊　**ウェルノウンポート**：　主なプロトコルには、あらかじめポート番号が予約されてる（0~,1023）

＊　ポート番号のイメージ（葉書）
住所　→　相手の家特定（IPアドレス）
宛名　→ 家族の誰か特定（ポート番号）
|プロトコル|ポート番号|
|:--:|:--:|
|FTP転送|20|
|FTP制御|21|
|HTTP|80|
|SMTP|25|
|POP3|110|
|DNS|53|

## NAT/NAPT
アドレス変換技術 → ルーターの機能

### NAT（Network Adress Translation）
一つのグローバルIPアドレスと一つのプライベートIPアドレスを相互に変換


### NAPT（Network Adress Port Translation）　＝　IPマスカレード
一つのグローバルIPアドレスと複数のプライベートIPアドレスを相互に変換
![NAPT.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/c0a1168f-990d-07a1-a154-9537c69db32b.jpeg)






# IPアドレスのクラス
IPアドレス　＝　「**ネットワーク部**」　＋　「**ホスト部**」
![ネットワーク部_ホスト部.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/5f43932f-5fcb-dc89-d851-6effebf8f070.jpeg)
＊　32ビットのIPアドレス　→ ネットワーク部・ホスト部で何ビットずつの構成にするかでクラス分け

|クラス|ネットワーク部|ホスト部|接続可能なホスト台数|規模|
|:--:|:--:|:--:|:--:|:--:|
|A|8ビット|24ビット|2²⁴ー2 = 16,777,214台|大規模|
|B|16ビット|16ビット|2¹⁶ー2 = 65,534台|中規模|
|C|24ビット|8ビット|2⁸ー2 = 254台|小規模|

＊　ホスト台数「−２」
→ すでに予約されたアドレスのため利用できない
![IPアドレス_クラス分け.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/836bc7d9-cc68-53cd-9892-80be49fc3255.jpeg)
　→ ホスト部　「全て０」　＝　ホストが属する**ネットワークアドレス**
　→ ホスト部「全て１」　＝　**ブロードキャストアドレス**
＊　**ネットワーク部の表し方**
192. 168. 0. 0 **/23**
→ /23　＝　上位23ビットがネットワーク部
→ 下位９ビットがホスト部

## ブロードキャスト
同じネットワーク内全てのホストに対して、一斉にデータを送信すること![ブロードキャスト.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/6c332b4f-fc6c-2ab4-ccd7-c237cb634965.jpeg)

## サブネッティング
ホスト部を分割　→ 複数の小さいネットワーク（**サブネット**）を作ること
![サブネッティング.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746950/2ecf46a9-4086-455c-cfd9-9c6c464883eb.jpeg)

## サブネットマスク
IPアドレスを「ネットワーク部」「ホスト部」に分けるためのビット列
→ サブネッティングするためには、柔軟に設定できる必要あり
→ ネットワーク部：1/ホスト部：0 で設定

例）　IPアドレス「192.168.1.19」、サブネットマスク「255.255.255.240」
IPアドレス 192 = 110...　→ **クラスC**
クラスC ＝　ネットワーク部24ビット、ホスト部8ビット　→ サブネットマスク「255.255.255.0」のはず

||10進数|2進数|
|:--:|:--:|:--:|
|サブネットマスク|255.255.255.0|11111111｜11111111｜11111111｜00000000|
||255.255.255.240|11111111｜11111111｜11111111｜**1111**0000|

1. ホスト部から４ビット間借り
1. サブネット部：４ビット　/　ホスト部：４ビット
1. サブネット部：2⁴＝16サブネット　/　ホスト部＝2⁴ー２＝14台
→ 一つのネットワーク＝16サブネット、各サブネット＝14台　管理できる！

## ネットワークアドレス（サブネットワークアドレス）の求め方（AND演算）
ホストのIPアドレス　AND サブネットマスク
||10進数|2進数|
|:--|:--:|:--:|
|IPアドレス|192.168.1.19|11000000｜10101000｜00000001｜**00010011**|
|サブネットマスク|255.255.255.240|11111111｜11111111｜11111111｜**11110000**|
|AND演算|||
|ネットワークアドレス|192.168.1.**16**|11000000｜10101000｜00000001｜**00010000**|

### CIDR（Classless Inter-Domain Routing）
クラス（A/B/C）を取り払う　
→　１ビット単位でネットワーク部・ホスト部を設定

## IPv6
今：IPv4(32ビット) → 新規で割り当てられるIPアドレスがない
将来：**IPv6(128ビット)**
→ IPv4とIPv6の通信＝IPv4パケットの中にIPv6アドレスを入れ込む（**トンネリング**）

## IPsec
TCP/IPネットワークで暗号通信をするためのプロトコル
→ ネットワーク層で動作
→ IPパケットを暗号化
→ IPv6＝標準で組み込まれてる











# ネットワーク管理
**SDN**（Software Defined Networking）：ソフトウェアでネットワーク機器を制御。設定を動的に変更する技術
→ **OpenFlow**　：①ネットワーク機器内「経路制御機能」「データ転送機能」を論理的に分離
　　　　　　　：②ソフトウェア（コントローラー）で「データ転送機能」を制御するアーキテクチャ

## インターネットの応用
### URL
Web上で取得したいWebページの情報元を示す

例）　情報処理技術者試験の過去問サイト
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_mondai.html

プロトコル　：　https://
ホスト名　　：　www
ドメイン名　：　jitec.ipa.go.jp
パス名　　　：　/1_04hanni_sukiru/
ファイル名　：　_index_mondai.html

### CGI
1. （Webブラウザ）要求
1. （Webサーバー）外部プログラムの呼び出し
1. （Webブラウザ）結果をHTTPを介してWebブラウザに返す

＊　Webページを動的に表示させたい場合に使う

### MIME
電子メールの機能を拡張したもの（音声・画像も送信できちゃう）
**S/MIME**：MIME ＋　暗号化

### メールヘッダ
SMTPで送信　→ メール　＋αの情報(メールヘッダ)
（情報の種類）
|メールヘッダ|内容|
|:--|:--|
|From|メールの送信者|
|To|メールの送信先|
|Cc|一つのメール→複数に送る：宛先|
|Bcc|一つのメール→複数に送る：宛先(ここの部分＝受信者に送信✖️)|
|Return-Path|メールサーバーが付加するメール送信者|
|X-Mailer|メール作成時、使ったソフト|
|Receiver|メールがたどった経路のサーバー|

＊　**SMTP-AUTH**　：　メール送信者を送信サーバーが認証する
### 回線の計算
通信速度の単位：　**bps**(bit per second)：1秒ごとに送られるビット数