ARPプロトコル

# ARPプロトコルの仕組み

ネットワークは、私たちの生活に欠かせない存在であり、デバイスがデータをやり取りするための複雑な仕組みを持っています。この記事では、ARP（Address Resolution Protocol）の役割について詳しく解説します。

## 1. ネットワークの基本

ネットワーク通信には、主に**IPアドレス**と**MACアドレス**という2つの識別子が使われます。

- **IPアドレス**は、ネットワーク上でデバイスを特定するための「論理的な住所」です。デバイスがインターネットやネットワーク内で通信するために必要です。
  
- **MACアドレス**は、ネットワークインターフェースカード（NIC）に割り当てられた48ビットの一意の識別番号です。ネットワーク内でデバイスを「物理的」に識別し、データリンク層での通信に使用されます。

MACアドレスは、ネットワークインターフェースカード（NIC）というデバイスの一部に組み込まれている固有の物理的な識別番号で、デバイスがどのネットワークに接続されても変わりません。一方、IPアドレスはネットワーク上での位置を示す論理的な住所で、ネットワークの構成や接続方法が変わると変更されることがあります。つまり、MACアドレスはデバイス自体を一意に特定し、IPアドレスはデバイスの現在のネットワーク上の位置を特定します。ipアドレスを決めるときにmacアドレスが必要
## 2. OSI参照モデル

**OSI参照モデル**は、ネットワーク通信を7つの層に分けて、異なるシステム同士の通信を標準化するための構造？です。

1. 物理層: ケーブルや電気信号などの物理的な通信手段を提供。
2. **データリンク層**: データをフレームにして同一ネットワーク内での転送を管理（MACアドレスを使用）。
3. **ネットワーク層**: IPアドレスを使って、複数のネットワーク間でデータを転送。
4. トランスポート層: データの信頼性を確保し、エラーを検出・修正。
5. セッション層: 通信のセッションを開始、維持、終了。
6. プレゼンテーション層: データの形式を標準化し、暗号化や圧縮を行う。
7. アプリケーション層: ユーザーと直接やり取りするアプリケーションを提供。

**ARP**は、ネットワーク層（第3層）とデータリンク層（第2層）の間で動作し、IPアドレスからMACアドレスを取得する役割を果たします。

## 3. ARP（Address Resolution Protocol）の仕組みどうやって取得してるの

**ARP**は、IPアドレスから対応するMACアドレスを取得するためのプロトコルであり、同じネットワーク内でデバイス同士が通信する際に必須です。

### ARPの動作手順

1. **ARPリクエストパケット送信**: デバイスAがデバイスBにデータを送る際、BのIPアドレスは知っているがMACアドレスは不明な場合、Aは「このIPアドレスのMACアドレスは何ですか？」というARPリクエストをブロードキャスト（ネットワーク全体）で送信します。

2. **ARPリプライ受信**: ネットワーク内のすべてのデバイスがこのリクエストを受信し、指定されたIPアドレスを持つデバイス（デバイスB）が自身のMACアドレスを知らせるARPリプライをAにユニキャストで返します。

3. **キャッシュの更新**: デバイスAはこのMACアドレスをARPキャッシュに保存し、将来の通信で再利用します。

### ARPキャッシュとセキュリティの考慮

ARPは動的にMACアドレスを解決するため、その結果をARPキャッシュという一時的なメモリ領域に保存します。しかし、ARPにはセキュリティ上のリスクもあり、例えば「ARPスプーフィング」と呼ばれる攻撃では、偽のARPリプライを送信してネットワーク通信を妨害することが可能です。これに対処するため、ARP監視機能を持つスイッチやセキュアなARP（S-ARP）の使用が推奨されます。

## 4. イーサネットフレームの理解
### イーサネットフレームってなに？

イーサネットフレームは、ネットワーク内でデータを送ったり受け取ったりするときに使われるデータの「パッケージ」だよ。このパッケージには、データを正しい宛先に届けるためのいろんな情報が詰まってる。簡単に言うと、データを送るときの「封筒」みたいなものだね。

### イーサネットフレームの構成


- **宛先MACアドレス（6バイト）**  
  このデータが「誰に届くべきか」を示す情報だよ。たとえば、パソコンAがプリンタBにデータを送りたい場合、プリンタBのMACアドレスがここに書かれてる。

- **送信元MACアドレス（6バイト）**  
  このデータを「誰が送ったか」を示す情報。つまり、送信元のデバイス（パソコンA）のMACアドレスがここに記載されてるんだ。

- **タイプフィールド（2バイト）**  
  上位層のプロトコル（どんな種類のデータか）を識別するための情報。例えば、インターネットで使われるIPv4やIPv6がどちらかを示すために使われる。

- **データペイロード（46〜1500バイト）**  
  実際に送るデータそのものが入っている部分だ。メールの内容やウェブページの情報なんかがここに入る。この部分のサイズは46〜1500バイトの範囲で変わるんだよ。

- **FCS（Frame Check Sequence）（4バイト）**  
  データの誤りをチェックするための情報。データが送信中に壊れたり間違って届いたりしないように、受け取った側が「このデータは正しく届いたかな？」と確認するために使うんだ。



イーサネットフレームは、ネットワーク内でデータを送り届けるための「封筒」で、その中には送り先と送り主の住所、どんなデータなのか、実際のデータ、そしてそのデータが無事に届いたかどうか確認するための情報が入っている


このフレーム構造により、データはネットワーク内で効率的かつ正確に転送され、エラーが発生した場合には再送要求が行われます。



# ネットワークの問題集

### 問題1
**ARP（Address Resolution Protocol）によるアドレス解決の仕組みを教えてください。**

**答え:**
ARPは、ネットワーク内でIPアドレスから対応するMACアドレスを取得するプロトコルです。デバイスが他のデバイスにデータを送信する際、IPアドレスしかわからないときに、ARPリクエストをネットワーク全体にブロードキャストします。リクエストを受けたデバイスの中で、指定されたIPアドレスを持つデバイスが自身のMACアドレスを返答（ARPリプライ）し、これによりIPアドレスとMACアドレスの対応が解決されます。

### 問題2
**ネットワークインターフェース（NIC）、イーサネットフレームとは何か教えてください。**

**答え:**
NIC（ネットワークインターフェースカード）は、コンピュータやデバイスがネットワークに接続するためのハードウェアです。イーサネットフレームは、ネットワーク内でデータを送信する際の基本的なデータ単位で、送信元と宛先のMACアドレス、データの内容、エラーチェックの情報などが含まれています。

### 問題3
**OSI参照モデルの各層の役割を説明してください。**

**答え:**
OSI参照モデルは7つの層で構成され、各層は次のような役割を持っています。
1. **物理層**: 信号の伝送を担当します。
2. **データリンク層**: フレームの転送とエラーチェックを行います。
3. **ネットワーク層**: パケットのルーティングを担当します。
4. **トランスポート層**: データの信頼性を確保します（例：TCP）。
5. **セッション層**: セッションの確立、管理、終了を行います。
6. **プレゼンテーション層**: データの形式変換や暗号化を担当します。
7. **アプリケーション層**: ユーザーが直接利用するアプリケーションを提供します。

### 問題4
**MACアドレスとIPアドレスの違いを説明してください。**

**答え:**
MACアドレスは、ネットワークインターフェースカードに割り当てられた物理的なアドレスで、デバイス自体に固有です。一方、IPアドレスはネットワーク内でデバイスを論理的に識別するためのアドレスで、ネットワークの構成や接続に応じて変わることがあります。


## 自己紹介

こんにちは！ののかです。42Tokyoの生徒として、日々新しい技術に挑戦しながら学んでいます。[詳しくはこちらのnoteへ](https://note.com/nonokapiano/n/n515181f61a81)