Layer 2 はMACアドレス で通信する
A
B
C
L2SW
【PC-C】
MAC addr : CC-CC-CC-CC-CC-CC
【PC-A】
MAC addr : AA-AA-AA-AA-AA-AA
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
MACアドレスとは…
ネットワークに接続する機器を一意に識別するための情報。48ビットの数値で表現される。
NIC(Network Interface Card)に書き込まれているため、物理アドレス、ハードウェアアドレスともいう。
僕もMACアドレス持ってるけど、
ここではその話は割愛します…
Port 1 Port 3
Port 2
3
4.
Layer 2 はMACアドレス で通信する
A
B
C
L2SW
【PC-C】
MAC addr : CC-CC-CC-CC-CC-CC
【PC-A】
MAC addr : AA-AA-AA-AA-AA-AA
Layer 2 で通信するときは…
通信相手へ届けたいデータに Layer 2 ヘッダ を付けて送信します。
Layer 2 ヘッダには、宛先MACアドレスと、送信元MACアドレスの情報が含まれています。
(Layer 2 では、ヘッダとデータを含む電気信号の塊を「フレーム」と呼びます。)
Aさん と通信したい!
データL2ヘッダPort 1 Port 3
Port 2
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
【Layer 2 ヘッダ】
送信元MAC addr : CC-CC-CC-CC-CC-CC
宛先MAC addr : AA-AA-AA-AA-AA-AA
4
5.
Layer 2 はMACアドレス で通信する
A
B
C
L2SW
【PC-C】
MAC addr : CC-CC-CC-CC-CC-CC
【PC-A】
MAC addr : AA-AA-AA-AA-AA-AA
Layer 2 スイッチは、フレームの MACアドレス を見て①と➁の処理をします
①フレームを受信したポートと送信元MACアドレスを関連付けて、MACアドレステーブルを作成します。
MACアドレステーブルは、特定のMACアドレスの機器が、どのポートの先にいるかを示す情報になります。
(➁は次のページで!)
Port 1 Port 3
Port 2
【MAC addr テーブル】
CC-CC-CC-CC-CC-CC : Port 3
BB-BB-BB-BB-BB-BB : Port 2
Cさん からのフレームを Port 3 で受信したぞ。
Cさん は Port 3 の先にいるんだね。
MACアドレステーブルに書いとこう。
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
データL2ヘッダ
【Layer 2 ヘッダ】
送信元MAC addr : CC-CC-CC-CC-CC-CC
宛先MAC addr : AA-AA-AA-AA-AA-AA
5
6.
【Layer 2 ヘッダ】
送信元MACaddr : CC-CC-CC-CC-CC-CC
宛先MAC addr : AA-AA-AA-AA-AA-AA
Layer 2 は MACアドレス で通信する
A
B
C
L2SW
【PC-C】
MAC addr : CC-CC-CC-CC-CC-CC
【PC-A】
MAC addr : AA-AA-AA-AA-AA-AA
Layer 2 スイッチは、フレームの MACアドレス を見て①と➁の処理をします(つづき)
➁宛先MACアドレスを見て、MACアドレステーブルを参照し、転送するポートを決定します。
MACアドレステーブルに載ってない宛先だったら、受信したポート以外の全てのポートに転送します。
Port 1 Port 3
Port 2
【MAC addr テーブル】
CC-CC-CC-CC-CC-CC : Port 3
BB-BB-BB-BB-BB-BB : Port 2
Aさん は MACアドレステーブル に
載ってないから、受信した Port 3 以外の
全部のポートに転送しよう。
データL2ヘッダ データL2ヘッダ
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
僕宛じゃない…
Cさん!
6
7.
【Layer 2 ヘッダ】
送信元MACaddr : AA-AA-AA-AA-AA-AA
宛先MAC addr : CC-CC-CC-CC-CC-CC
Layer 2 は MACアドレス で通信する
A
B
C
L2SW
【PC-C】
MAC addr : CC-CC-CC-CC-CC-CC
【PC-A】
MAC addr : AA-AA-AA-AA-AA-AA
Layer 2 スイッチは、フレームの MACアドレス を見て①と➁の処理をします(つづき)
以下も、①と➁の処理です。
➁の処理のとき、今度は 宛先MACアドレス が MACアドレステーブルに載っているので、
特定のポートにだけフレームを転送しています。
Port 1 Port 3
Port 2
【MAC addr テーブル】
AA-AA-AA-AA-AA-AA : Port 1
CC-CC-CC-CC-CC-CC : Port 3
BB-BB-BB-BB-BB-BB : Port 2
Cさん 宛のフレームだから、
Port 3 に転送すればいいね。
(➁)
データ L2ヘッダ
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
Cさん に
返事するよ!
データ L2ヘッダ
Aさん は Port 1 にいるんだね。
MACアドレステーブルに書いとこう。
(①) Aさん と
通信できた~!
7
Layer 3 はIPアドレス で通信する
A
B
C
L2SW
【PC-C】
IP addr :10.0.0.3/24
【PC-A】
IP addr :10.0.0.1/24
【PC-B】
IP addr :10.0.0.2/24
IPアドレスとは…
TCP/IPのネットワークで使用される機器を識別するための情報。32ビットで表現される。
僕は Layer 2 スイッチ なので
IPアドレスのことはよく分かりません…
Port 1 Port 3
Port 2
9
10.
Layer 3 はIPアドレス で通信する
A
B
C
L2SW
【PC-C】
IP addr :10.0.0.3/24
【PC-A】
IP addr :10.0.0.1/24
Layer 3 で通信するときは…
通信相手へ届けたいデータに Layer 3 ヘッダ を付けて送信します。
Layer 3 ヘッダには、宛先IPアドレスと、送信元IPアドレスの情報が含まれています。
(Layer 3 では、ヘッダとデータを含む電気信号の塊を「パケット」と呼びます。)
Aさん と通信したい!
データL3ヘッダPort 1 Port 3
Port 2
【PC-B】
IP addr :10.0.0.2/24
【Layer 3 ヘッダ】
送信元IP addr : 10.0.0.3
宛先IP addr : 10.0.0.1
…
10
11.
Layer 3 はIPアドレス で通信する
A
B
C
L2SW
【PC-C】
IP addr :10.0.0.3/24
【PC-A】
IP addr :10.0.0.1/24
Layer 2 スイッチは、IPアドレスのことはよくわかりません
でも、PCはお互いにIPアドレスが分かっているので、PC同士は通信できました。
めでたしめでたし!
Port 1 Port 3
Port 2
データL3ヘッダ
【PC-B】
IP addr :10.0.0.2/24
Cさん!
データL3ヘッダ
…
【Layer 3 ヘッダ】
送信元IP addr : 10.0.0.3
宛先IP addr : 10.0.0.1
11
ARPで解決
A
B
C
L2SW
【PC-C】
MAC addr :CC-CC-CC-CC-CC-CC
IP addr :10.0.0.3/24
【PC-A】
MAC addr : AA-AA-AA-AA-AA-AA
IP addr :10.0.0.1/24
通信するときは…
通信相手の IPアドレス だけでなく、MACアドレス も知っている必要があります。
Layer 3 の処理をする機器は、IPアドレス と MACアドレス を関連付ける ARPテーブル を持っています。
(ARP…Address Resolution Protocol:アドレス解決プロトコル)
Port 1 Port 3
Port 2
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
IP addr :10.0.0.2/24
【ARPテーブル】
10.0.0.2 : BB-BB-BB-BB-BB-BB
【ARPテーブル】
10.0.0.3 : CC-CC-CC-CC-CC-CC
【ARPテーブル】
15
16.
ARPで解決
A
B
C
L2SW
【PC-A】
MAC addr :AA-AA-AA-AA-AA-AA
IP addr :10.0.0.1/24
通信相手の MACアドレス を知らないときは…
①特定の IPアドレス に対応する MACアドレス を問合せる ARP要求 をブロードキャストします。
(Layer 2 ヘッダの宛先MACアドレスは、ブロードキャストアドレスの FF-FF-FF-FF-FF-FF です。)
Port 1 Port 3
Port 2
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
IP addr :10.0.0.2/24
【ARPテーブル】
10.0.0.2 : BB-BB-BB-BB-BB-BB
【ARPテーブル】
Aさん のことは
IPアドレス しか知らないから、
MACアドレス を教えて!
ブロードキャストは
全ポート転送~
(受信ポート以外)
Cさん が僕の MACアドレス を
知りたがってる!
【PC-C】
MAC addr : CC-CC-CC-CC-CC-CC
IP addr :10.0.0.3/24
僕じゃない…
ARP要求L2ヘッダARP要求L2ヘッダ ARP要求L2ヘッダ
【ARP要求】
送信元 IP addr : 10.0.0.3
送信元MAC addr : CC-CC-CC-CC-CC-CC
宛先 IP addr : 10.0.0.1
宛先MAC addr : FF-FF-FF-FF-FF-FF
16
17.
ARPで解決
A
B
C
L2SW
【PC-A】
MAC addr :AA-AA-AA-AA-AA-AA
IP addr :10.0.0.1/24
通信相手の MACアドレス を知らないときは…(つづき)
➁該当の IPアドレス を持つ機器は、自分の MACアドレス を回答する ARP応答 を返信します。
ARP要求 と ARP応答 をやりとりした機器は、お互いの情報を自分の ARPテーブル に載せます。
これ以降は、4ページ目のような通信ができるようになります。
Port 1 Port 3
Port 2
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
IP addr :10.0.0.2/24
【ARPテーブル】
10.0.0.2 : BB-BB-BB-BB-BB-BB
10.0.0.1 : AA-AA-AA-AA-AA-AA
【ARPテーブル】
10.0.0.3 : CC-CC-CC-CC-CC-CC
宛先MACアドレス
見て転送~
僕の MACアドレス を答えるよ!
Cさんの IPアドレス と MACアドレス も
覚えておくね!※
Aさん がMACアドレス
教えてくれた!
【PC-C】
MAC addr : CC-CC-CC-CC-CC-CC
IP addr :10.0.0.3/24
※前頁の①ARP要求の中には、問合せ元の IPアドレス と MACアドレス の情報も含まれているため、
ARP要求を受信した機器も、相手の IPアドレス と MACアドレス の情報を入手できています。
ARP応答 L2ヘッダ ARP応答 L2ヘッダ
【ARP応答】
送信元 IP addr : 10.0.0.1
送信元MAC addr : AA-AA-AA-AA-AA-AA
宛先 IP addr : 10.0.0.3
宛先MAC addr : CC-CC-CC-CC-CC-CC
17
18.
ARPで解決
A
B
C
L2SW
【PC-C】
MAC addr :CC-CC-CC-CC-CC-CC
IP addr :10.0.0.3/24
【PC-A】
MAC addr : AA-AA-AA-AA-AA-AA
IP addr :10.0.0.1/24
じゃあ、Layer 3 ヘッダはどこへ…?
結局 MACアドレス で通信するんだったら、
宛先IPアドレス と 送信元IPアドレス が入ってる Layer 3 ヘッダ は
どこへ行ってしまうんでしょうか…?
Port 1 Port 3
Port 2
【PC-B】
MAC addr : BB-BB-BB-BB-BB-BB
IP addr :10.0.0.2/24
データL3ヘッダ
【Layer 3 ヘッダ】
送信元IP addr : 10.0.0.3
宛先IP addr : 10.0.0.1
IPアドレスって
なんなの…?
僕にはよく分かりません…
18