ネットワーク1問1答

ネットワークの分野に関する基礎的な問題を1問1答形式で書いていくので、自分の力試しなどに利用して下さい。（もし間違っている知識などがあれば教えて下さい）
言い切りの形だったり、です、ます調になっていたりと殴り書きの文章なのでご承知ください、、、
それでは20問始めます！

# 問題 (折りたたみを開いたら回答があります）

<details>
 <summary>1.google.comとブラウザで検索した後の一連の流れを説明して下さい</summary>
 
1.DNSルックアップ
ブラウザでgoogle.comと検索したらOSやローカルのキャッシュを確認し、もし無ければ、DNSを使用してドメイン名をIPアドレスに変換する。

2.TCP接続の確立
IPアドレスが判明したら、ブラウザはサーバーと通信するためにTCP接続を確立する。その際には3wayハンドシェイクという手順でそれぞれSYNやACKなどを送る。

>3ウェイハンドシェイクについて
>SYN：クライアント（ブラウザ）はサーバーに「SYN」パケットを送信し、接続要求を行う。
>SYN-ACK：サーバーがクライアントに「SYN-ACK」パケットで応答し、接続要求を承認する。
>ACK：クライアントは「ACK」パケットを送り、通信が可能な状態になる。

3.SSL/TLSハンドシェイク
`https://` で始まるサイトの場合、データの暗号化のためTLS（Transport Layer Security）ハンドシェイクが行われる。（TLSはSSLの次世代規格。SSLと呼ばれているものも実際はTLSなことが多い）TLSハンドシェイクでは、クライアントとサーバーが安全な接続を確立され、暗号化通信が行われる。

>TLSハンドシェイク
>1.TLS接続要求：
>クライアント（ブラウザ）からサーバー側に対して接続を要求する
>2.公開鍵付きサーバーの証明書
>サーバーから送られてきた証明書を検証し、クライアントの秘密鍵を生成する
>3.公開鍵暗号方式でサーバーにクライアントの秘密鍵を送信
>2でサーバーから送られてきた公開鍵を使用してクライアントの秘密鍵を送信する。今後はこの秘密鍵がサーバーとクライアントの共通鍵となる。
>4.復号化
>送られてきたクライアントの秘密鍵はサーバーの公開鍵で暗号化されているので、それをサーバーの秘密鍵で復号化して、クライアントの秘密鍵を共通鍵として暗号化通信を行う。

4.HTTPリクエストの送信
接続が確立されるとブラウザはHTTPリクエストをサーバーに送信する。このリクエストには、クライアントのブラウザ情報や、リクエストするファイルのパス、クッキーなどが含まれる。たとえば、`GET / HTTP/1.1` は google.com のホームページを要求するリクエストである。

5.サーバー側でのリクエストの処理
サーバーはリクエストを受け取り、要求されたリソース（HTML、CSS、JavaScriptファイルなど）を準備します。この際に、データベースへのアクセスや動的なデータ生成が行われる場合もあります。

6.HTTPレスポンスの送信
リクエストに応じて、サーバーはHTTPレスポンスを返します。レスポンスには、ステータスコード（例えば200 OKなど）や、要求されたリソースの内容が含まれます。HTMLファイルの場合、その内容が含まれ、ブラウザはこれを受信して処理します。

7.ブラウザでのレンダリング
ブラウザは受信したHTMLを解析し、CSSやJavaScriptファイルのリンクが含まれていれば、それらを順にリクエストして取得します。すべてのリソースが読み込まれると、ブラウザはページをレンダリングし、画面に表示します。

- HTMLはDOM（Document Object Model）として構築され、CSSが適用されてスタイルが決まります。
 - JavaScriptは必要に応じてDOMを操作し、インタラクティブな要素や動的なコンテンツを表示します。

>(8.持続的接続とリソースのプリフェッチ)
>多くのサイトでは、次に必要とされるリソースを事前に読み込むプリフェッチ機能を使用したり、持続的接続（HTTP Keep-Alive）により、同一接続で複数のリクエストをやり取りすることがあります。これにより、ユーザーがスムーズにサイトを利用できるようになります。


</details>

<details><summary>2.インターネットはどのように動いている？(ハードウェア、ソフトウェアについてそれぞれ説明せよ)</summary>

- ハードウェア：ルーター、ハブ、スイッチ、ケーブルなどが含まれ、これらのデバイスが各ユーザーのデータの転送や中継などを担当している。
- ソフトウェア：TCP/IPという通信規則に基づいて動作する。この仕組みにより、異なるOS間でも通信ができる。IPアドレスを用いて、どこにデータを送信するかを決定し、TCPを用いてパケットの順番を整理して確実に送信する。
</details>

<details><summary>3.コンピューター同士は、どのようにメッセージをやりとりしている？</summary>

- 送信準備：メッセージを送信するコンピューターでデータをビット列に変換し、それをパケットに分割する
- アドレス指定：各パケットに送信元と送信先のIPアドレスを与える
- 送信：パケットがルーターやスイッチなどを介してアドレス先に送信される
- 受信と再構築：受信側のコンピューターに到達すると、元のメッセージに再構築され、ユーザーがデータを確認できる状態に変換される
</details>

<details><summary>4.パケットとは何か。そのメリットは？</summary>

ネットワーク上で送受信される小さなデータの単位。データを小さなパケットに分割することで異なる経路から同時に送信することができ、効率的で信頼性が高いデータ送信が可能になる。メリットとしては、パケットに分割することで一つの回線を占有せずに、さまざまな回線からデータを送信できたり、一つの回線で様々なパケットを送信できることなどがある。
IP層(ネットワーク層)のフラグメンテーションにおいて、MTU（Maximum Transmission Unit、最大転送単位）に合わせて大きなIPパケットを小さなフラグメント(断片)に分割している。異なるネットワークセグメント間でMTUが異なる場合、MTUより大きなパケットはそのままでは送信できないため。

</details>

<details><summary>5.IPアドレスとMACアドレスの違いを述べてください</summary>

IPアドレスはネットワーク上のデバイスを識別するためのアドレスであり、データが正しい宛先へ届くようにするために使用される。一方MACアドレスは~~各デバイス~~ → NIC（ネットワークインターフェースカード）に固有の識別子であり、ネットワークの物理層におけるデータの転送の際に使用される。デバイスが複数のNICを持つ場合、それぞれのNICごとに異なるMACアドレスを持つ。
また、IPアドレスはネットワーク内で変更可能だが、 MACアドレスはハードウェアに埋め込まれており、変更できない
</details>

<details><summary>6.DNSサーバーの役割とは？</summary>

ドメイン名をIPアドレスに変換すること。`www.example.com`のようなドメイン名を、`192.168.1.1`のようなIPアドレスに変換する名前解決サービスを提供しており、これにより、正しいIPアドレスにアクセスすることができる。階層構造を持ち、DNSルートサーバー(どのTLDサーバーに行くかを振り分ける)やTLD(Top Level Domain: 今回だと`com`の部分に当たる)サーバーなどが協調して動作している。また、DNSキャッシュなどで高速化も実現している。

</details>

<details><summary>7.ルーターとスイッチの主な違いは？</summary>

- ルーター：
  - 役割: 異なるネットワーク間のデータ転送を行う。例えば、家庭内ネットワークとインターネットの間のデータ転送を管理する
  - 機能: IPアドレスを使用してデータパケットを転送する。ルーティングテーブルを使用して最適な経路を決定する

- スイッチ:
  - 役割：同じネットワーク内のデバイスでのデータ転送を行う。例えば、同じオフィス内のコンピューター間での通信を管理する
  - 機能：MACアドレスを使用してデータフレームを転送する。スイッチングテーブルなどを利用して通信を効率化する

スイッチングテーブル：MACアドレスとスイッチのポート番号の対応表。これにより、他のデバイスなどを経由することなく直接相手のMACアドレスに送信することができる。スイッチのポート番号とはOSI参照モデルの第2層(データリンク層)での概念

データフレーム：OSI参照モデルのデータリンク層における単位の呼び方。それぞれの層において呼称が違う。

1.物理層：ビット
2.データリンク層：フレーム
3.ネットワーク層：パケット
4.トランスポート層：セグメント(TCP)、データグラム(UDP)
5.セッション層：データ
6.プレゼンテーション層：データ
7.アプリケーション層:データ
</details>

<details><summary>8.HTTPSプロトコルがHTTPと異なる点は何？また、なぜHTTPSが重要なの？</summary>

HTTP(HyperText Transfer Protocol)はweb上でデータをやり取りする際の通信プロトコルだが、暗号化されていない。しかしHTTPSはSSL/TLS暗号化を用いてデータを保護してやり取りする。これにより、通信が盗聴や改ざんされる恐れが少なくなり安全性が向上する。特にパスワード入力などでは必須である。
</details>

<details><summary>9.IPv4アドレスとIPv6アドレスの違いは何？なぜIPv6が必要になったの？</summary>

IPv4: 32ビットアドレス（約43億個）
```
255.255.1.1
```
IPv6: 128ビットアドレス（約340澗個）
```
1232:0ab8:0000:0001:02AB:0001:0000:0001
```
- 表記方法が異なる（IPv4: 10進数、IPv6: 16進数）

なぜ必要になったのか

- インターネットの普及によりアドレスが枯渇してきたため
- IPv6ではヘッダー構造が簡素化されており、ルーターがデータを処理する際の負荷が軽減される。これにより、通信速度の向上とネットワークの効率化が図ることもできる
</details>

<details><summary>10.LANとWANの違いは何ですか？それぞれの特徴を説明してください。
</summary>

LAN(Local Area Network)は、家庭やオフィスなどの限られたエリア内でのネットワークで、接続が速く遅延が少ないのが特徴である。
WAN(Wide Area Network)は、都市や国など広範囲にまたがるネットワークで、インターネットはWANの一例である。LANよりも規模が大きく、遅延なども発生するがより多くのデバイスに接続することが可能

</details>

<details><summary>11.TCPとUDPの違いは何ですか？それぞれどのような用途に適していますか？</summary>

TCP（Transmission Control Protocol）
- 接続型プロトコル
  - 通信を行う前にコネクションの確率（3wayハンドシェイク）が必要
- 信頼性
  - データの送受信において誤り検出や再送制御が可能
  - パケットの損失や重複、順序の乱れなどを検知して、正しい順序でデータを送信する
- 軽量性
  - UDPよりは遅いが、ネットワークの混雑状況に応じてデータの送信量を変更可能
- 用途
  - 信頼性がある通信に用いられる
    - ウェブブラウジング（HTTP/HTTPS）
    - ファイル転送 (FTP)
    - リモートアクセス (SSH)

UDP（User Datagram Protocol）
- 接続レスプロトコル
  - コネクションの確率を行わずにデータを送信する
- 信頼性
  - パケットの損失や順序の乱れなどは検知、修正不可
  - データの到達保証が無いため、アプリケーション側で必要に応じて処理する
- 軽量性
  - ヘッダーがシンプルでオーバーヘッドが少ないので、高速な通信が可能
- 用途
  - 音声・映像のストリーミング
  - オンラインゲーム
  - DHCP（Dynamic Host Configuration Protocol: IPアドレスを自動で割り当てるシステム）によるIPアドレスの割り当て

オーバーヘッドが少ない：欲しいデータ以外の余分なデータが少ないこと。TCPなどではシーケンス番号やACK番号などが付与されているため、その分通信効率に影響を与える

まとめ
- TCPはデータの信頼性や正確性が求められる時に使用
- UDPはリアルタイム性や通信の高速性が求められう時に使用

</details>

<details><summary>12.サブネットマスクの役割は何ですか？なぜネットワーク管理に重要なのですか？
</summary>

サブネットマスクとはIPアドレスのどこがネットワーク部でどこがホスト部なのかを示すための情報。サブネットマスクの書式はIPアドレスと同様であり、`255.255.255.0`などと表す。これは10進数だが、2進数に直すと、それぞれ1のところまでがネットワーク部で0のところがホスト部である。(`11111111.11111111.11111111.00000000`のようになる)
メリット：
- ブロードキャスト（同じネットワーク内の相手の全てにデータを送ること）が減る。（ブロードキャストドメイン同じネットワーク内の相手）が減る。）
- ネットワーク内のトラフィックが分散し、全体のパフォーマンス向上
- 各サブネットごとにセキュリティポリシーを変更して制御が可能なので、安全性が増す
- 大きなネットワークをサブネットに分割することで余計なIPアドレスの浪費を防ぐ

</details>

<details><summary>13.Wi-Fi接続とイーサネット接続の違いと、それぞれのメリット・デメリットについて説明してください。</summary>

Wi-Fi接続：
- メリット：
  - 無線接続なのでケーブルが不要であり、また、接続場所などに制約がない
  - 複数のデバイスを簡単にネットワークに接続することができる
- デメリット：
  - 環境や距離、障害物の影響で通信速度が低下することがある
  - 無線受信は傍受されやすく、セキュリティ設定が必要
  - 他の電子機器やネットワークによって接続が不安定になることがある

イーサネット接続：
- メリット：
  - 有線接続なので安定して高速なデータの通信が可能
  - 遅延が少なく、オンラインゲームやビデオゲームに最適
  - 外部からの不正アクセスなどのセキュリティリスクが低い
- デメリット：
  - デバイスごとにケーブルの接続が必要
  - デバイスの移動がケーブルの距離や配線などに制約される
  - 複数デバイスの場合、ハブやスイッチが必要になる
</details>

<details><summary>14.VLANの主な利点について説明してください。</summary>

VLANは「Virtual Local Area Network」の略で物理的なネットワークインフラ上で仮想的にネットワークを分割し、論理的なグループを作成する技術。LANと同様にブロードキャストドメインなどを分割して減らすことができるので、ネットワークの通信効率が向上する。また、仮想的にネットワークを分割することができるので、例えば、社内などで複数フロアに跨っている部署などを一つのネットワークとして分離して運用することができる。これにより、物理的な配置に関係なくセグメント化することができる。
また、分割されたネットワーク同士は接続されていないので、データが転送される範囲を制限することができ、セキュリティリスクも下がる
</details>

<details><summary>15.プロキシサーバーの役割とその使用例を説明してください。</summary>

役割
- 中継役
  - プロキシサーバーはクライアントとインターネットの中間に位置しており、クライアントのリクエストを代理で送信し、レスポンスを受け取ってクライアントに返却する
- キャッシュ
  - 頻繁にアクセスされるウェブページやリソースをキャッシュし、次回のリクエスト時に迅速に提供します。これにより、帯域幅の節約とレスポンス時間の短縮が可能になる。
- セキュリティ
  - クライアントのIPアドレスを隠蔽し、匿名性を提供する。また、フィルタリング機能を使用して、不正アクセスや有害なコンテンツをブロックする

使用例
- 企業のネットワーク管理
  - 社内ネットワークからインターネットへのアクセスを制限し、業務に不要なサイトへのアクセスを制限する
- キャッシュによるパフォーマンス向上
  - 大規模なwebサイトや、コンテンツ配信ネットワーク(CDN)などでユーザーに近い位置にキャッシュサーバーを配置して、アクセス速度を向上させる
</details>

<details><summary>16.OSI参照モデルの7層それぞれの役割と、代表的なプロトコルや機器を1つずつ挙げてください。（ない場合もあります）</summary>

1.物理層（Physical Layer）
役割:
- -データのビットを物理的な信号に変換し、伝送媒体を通じて送信します。
- ケーブル、コネクタ、電気信号、光信号などの物理的な伝送手段を扱います。

代表的なプロトコル/機器:
- プロトコル: なし（物理層はプロトコルではなく、物理的な伝送手段を扱います）
- 機器: ハブ、リピーター

2.データリンク層（Data Link Layer）
役割:
- 隣接するネットワークデバイス間のデータ転送を管理します。
- フレームの作成、エラーチェック、フロー制御を行います。

代表的なプロトコル/機器:
- プロトコル: Ethernet（イーサネット）
- 機器: スイッチ、ブリッジ

3.ネットワーク層（Network Layer）
役割:
- データパケットを送信元から目的地までルーティングします。
- 論理アドレッシング（IPアドレス）を使用してネットワーク間の通信を管理します。

代表的なプロトコル/機器:
- プロトコル: IP（Internet Protocol）
- 機器: ルーター

4.トランスポート層（Transport Layer）
役割:
- エンドツーエンド(E2E)の通信を確立し、データの信頼性と整合性を保証します。
- データの分割と再構築、エラーチェック、フロー制御を行います。

代表的なプロトコル/機器:
- プロトコル: TCP（Transmission Control Protocol）
- 機器: （特定の機器はありませんが、ファイアウォールがトランスポート層のフィルタリングを行うことがあります）

5.セッション層（Session Layer）
役割:
- 通信セッションの確立、管理、終了を行います。
- データ交換の同期とチェックポイントの設定を行います。

代表的なプロトコル/機器:
- プロトコル: NetBIOS
- 機器: （特定の機器はありません）

6.プレゼンテーション層（Presentation Layer）
役割:
- データの形式変換、暗号化、圧縮を行います。
- アプリケーション層とトランスポート層の間でデータの表現形式を調整します。

代表的なプロトコル/機器:
- プロトコル: SSL/TLS（Secure Sockets Layer / Transport Layer Security）
- 機器: （特定の機器はありません）

7.アプリケーション層（Application Layer）
役割:
-ユーザーやアプリケーションがネットワークサービスにアクセスするためのインターフェースを提供します。
- 各種ネットワークアプリケーションのプロトコルを定義します。

代表的なプロトコル/機器:
- プロトコル: HTTP（Hypertext Transfer Protocol）
- 機器: （特定の機器はありませんが、ウェブサーバーがアプリケーション層のサービスを提供します）

</details>

<details><summary>17.ロードバランサーの動作原理と、一般的な負荷分散アルゴリズムを3つ説明してください</summary>

ロードバランサーとは、複数のサーバーに対してクライアントからのリクエストを分散させることでシステム全体のパフォーマンスと信頼性を向上させる役割を果たす
動作原理：
1.リクエストの受信
- クライアントからのリクエストを受信する
2.サーバーの選択
- 負荷分散アルゴリズムに基づいてリクエストを処理するサーバーを選択する
3.リクエストの転送
- 選択されたサーバーにリクエストを送信する
4.レスポンスの転送
- サーバーからのレスポンスをクライアントに返却する

負荷分散アルゴリズム：
1.ラウンドロビン（Round Robin）
- リクエストの順番ごとに各サーバーに振り分ける
メリット：
- 実装が簡単で、均等な負荷分散が可能
デメリット：
- サーバーの性能や現在の負荷は加味していないため、サーバー間での負荷が不均一になることがある

2.最小接続（Least Connections）
- 現在アクティブな接続が最も少ないサーバーにリクエストを振り分ける
メリット：
- サーバーの負荷を均等に保つことができ、効率的なリソース利用が可能です。
デメリット:
- 接続数の監視と管理が必要で、実装が複雑になることがある

3.IPハッシュ（IP Hash）
- クライアントのIPアドレスをハッシュ化し、そのハッシュ値に基づいて各サーバーに振り分ける
メリット：
セッションの一貫性を保つことができ、特定のクライアントが常に同じサーバーに接続されるため、セッション管理が容易です。
デメリット：
- 特定のサーバーに負荷が集中する可能性があり、負荷分散が不均等になることがあります。

</details>

<details><summary>18.NATとPATの違いを説明し、それぞれのメリット・デメリットを挙げてください</summary>

NAT（Network Address Translation）
概要：
- NATは、内部ネットワークのプライベートIPアドレスをパブリックIPアドレスに変換する技術です。
基本的なNATでは、1つの内部IPアドレスを1つの外部IPアドレスに変換します。これを「静的NAT」または「1対1 NAT」と呼びます。
- 主に、内部ネットワークのプライベートIPアドレスを外部ネットワークに公開する際に使用されます。

メリット：
- IPアドレスの節約: 複数の内部デバイスが1つのパブリックIPアドレスを共有できるため、IPアドレスの節約が可能です。
- セキュリティの向上: 内部ネットワークのプライベートIPアドレスが外部に公開されないため、セキュリティが向上します。
デメリット：
- 1対1のマッピングのため、パブリックIPアドレスの数が必要です。

PAT（Port Address Translation）
概要：
- PATは、NATの一種で、複数の内部デバイスが1つのパブリックIPアドレスを共有する際に、ポート番号を使用して通信を識別します。
- これにより、1つのパブリックIPアドレスで多数の内部デバイスが同時にインターネットにアクセスできます。
メリット：
- さらに効率的なIPアドレスの節約: 1つのパブリックIPアドレスを多数の内部デバイスで共有できるため、IPアドレスの節約がさらに進みます。
- セキュリティの向上: NATと同様に、内部ネットワークのプライベートIPアドレスが外部に公開されないため、セキュリティが向上します。
デメリット：
- ポート番号の制限があり、利用可能なポートが不足する可能性があります。
- NATも同様だが、内部ネットワークのデバイスを特定するのが難しくなるため、トラブルシューティングが複雑になります。

</details>

<details><summary>19.SDN（Software-Defined Networking）の基本概念と、従来のネットワークと比較した利点を説明してください。</summary>

SDNではルーターやスイッチなどにある、ネットワークの制御とデータ転送を分離してソフトウェアで仮想化し一括して制御します。

従来では、各デバイスごとにネットワークの制御を行うコントロールプレーンとデータ転送を行うデータプレーンがあり、何か変更があったときなどは各デバイスごとに変更を行わなければならなかった。
しかし、SDNでは、コントロールプレーンを仮想化し、中央集権的なソフトウェアであるSDNコントローラーに集約する。変更があったときは、コントロールプレーンに対し、SDNコントローラーというネットワーク全体を制御するソフトウェアから一括で変更出来るようになり、また、全体での一元的なポリシーの設定などが容易に行えるようになった。

つまり、従来のネットワークでは、各デバイスにコントロールプレーンとデータプレーンが統合されており、設定変更を行う際には個々のデバイスで作業が必要であったが、SDNの導入により、コントロールプレーンを集中管理し、データプレーンを各デバイスに分離して配置することで、ネットワークの管理効率と柔軟性が大幅に向上した。
</details>

<details><summary>20.VPN（Virtual Private Network）の仕組みと、企業がどのようにVPNを利用しているか説明してください。</summary>

VPNの仕組み
VPNは、公衆インターネットなどの公共のネットワークを経由して、あたかも専用のプライベートネットワーク内で通信しているかのように、安全な通信を実現する技術です。主な仕組みは以下の通りです。

- トンネリング
  - データを安全に送信するために、既存のネットワーク上に仮想的な通信経路（トンネル）を作成する技術です
  - 公衆ネットワーク（インターネット）上にプライベートな通信路を確立し、このトンネルを使用して、データが外部から見えないように通信します。
- カプセル化
  - データパケットを別のプロトコルのパケット内に包み込む技術です。
  - これにより、異なるネットワークプロトコル間でのデータ送信が可能になります。
- 暗号化
  - 通信する双方が正当な相手であることを確認するプロセスです。
  - 不正アクセスやなりすましを防止します。
- 認証
  - データを第三者が解読できない形式に変換する技術です。
  - データの機密性と完全性を保護します。

VPNの使用方法
リモートアクセスVPN
- 在宅勤務や出張先から社員が安全に社内ネットワークへアクセスできます。
- 社内のファイルサーバーや業務システム、メールなどにリモートで接続します。
- セキュリティを確保しつつ、生産性を維持できます。

サイト間VPN（拠点間VPN）
- 本社と支社、データセンターなど、地理的に離れた拠点間を安全に接続します。
- 各拠点を一つのネットワークのように扱え、情報共有やシステム連携が円滑になります。
- 高価な専用線の代わりにインターネット回線を利用することで、コストを削減できます。
</details>


# まとめ
どうでしたか？20問中どのくらいできましたか？とても難しい知識などはそこまでなく、なんとなく聞いたことあるかな、くらいのものなどが多いと思います。ネットワークの基礎的なことについて知ることで、全体像が見えてくるのできちんと覚えていきましょう！