レイヤ3・レイヤ2のプロトコルの動き
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
shizu8878
投稿数: 9
![半人前 半人前](https://ping-t.com/uploads/rank3dbf8e94a6f72.gif)
標記の件、何が何だかわからなくなったのでご質問させてください。
インターネット層でIP・ARP・ICMPというプロトコルがありますが、それぞれどのように作用しあって
動いていくのか、理解ができません。
1)下記のフローで誤りがありましたらご教示、または補足をお願いしたいです。
2)また、MACアドレスの取得はARPだけではだめなのでしょうか?
ホストに登録されるMACアドレスと、スイッチ?に登録されるMACアドレステーブルとの機能についての
明確な違いも理解できず…ご教示のほどお願いいたします。
-------------------------------------------------------------
■現時点で、自分が考えているイメージ
まずレイヤ3にて、
1.トランスポート層から流れてきたセグメントまたは、データグラムをカプセル化
2.カプセル化されたPDUに、IPヘッダが付加される。
3.IPアドレスを取得した後?ARPパケットが作成されて、
同一のNW上にARPがブロードキャスト送信される。
該当の相手先からユニキャスト送信により、MACアドレスが取得、
送信元ホストのキャッシュメモリに登録される。
4.次に、IPヘッダにICMPメッセージが付加されたIPパケットが生成される。
5.4で生成されたIPパケットをレイヤ2に送る。
この後、レイヤ3からレイヤ2へカプセル化するのは、
イーサネットフレームに宛先MACアドレスと送信元MACアドレスを付加するためでしょうか?
しかしながら、レイヤ2でもMACアドレステーブルで、MACアドレスを調べる機能があったような記憶があり
レイヤ3でのARPの存在がよくわかりません。
-------------------------------------------------------------
【追加質問】
レイヤ3からレイヤ2に渡される(レイヤ3でのPDU)は、最終的にIPヘッダ+ICMPメッセージでよろしいでしょうか??
レイヤ3で生成された(?)ARPパケットは、どこに行ってしまうのでしょうか。
IPヘッダ+ICMPメッセージの【パケット】にはARPで調べたMACアドレス情報は載っていないのに
どうやってレイヤ2がそれを知ることができるのでしょうか。。。
インターネット層でIP・ARP・ICMPというプロトコルがありますが、それぞれどのように作用しあって
動いていくのか、理解ができません。
1)下記のフローで誤りがありましたらご教示、または補足をお願いしたいです。
2)また、MACアドレスの取得はARPだけではだめなのでしょうか?
ホストに登録されるMACアドレスと、スイッチ?に登録されるMACアドレステーブルとの機能についての
明確な違いも理解できず…ご教示のほどお願いいたします。
-------------------------------------------------------------
■現時点で、自分が考えているイメージ
まずレイヤ3にて、
1.トランスポート層から流れてきたセグメントまたは、データグラムをカプセル化
2.カプセル化されたPDUに、IPヘッダが付加される。
3.IPアドレスを取得した後?ARPパケットが作成されて、
同一のNW上にARPがブロードキャスト送信される。
該当の相手先からユニキャスト送信により、MACアドレスが取得、
送信元ホストのキャッシュメモリに登録される。
4.次に、IPヘッダにICMPメッセージが付加されたIPパケットが生成される。
5.4で生成されたIPパケットをレイヤ2に送る。
この後、レイヤ3からレイヤ2へカプセル化するのは、
イーサネットフレームに宛先MACアドレスと送信元MACアドレスを付加するためでしょうか?
しかしながら、レイヤ2でもMACアドレステーブルで、MACアドレスを調べる機能があったような記憶があり
レイヤ3でのARPの存在がよくわかりません。
-------------------------------------------------------------
【追加質問】
レイヤ3からレイヤ2に渡される(レイヤ3でのPDU)は、最終的にIPヘッダ+ICMPメッセージでよろしいでしょうか??
レイヤ3で生成された(?)ARPパケットは、どこに行ってしまうのでしょうか。
IPヘッダ+ICMPメッセージの【パケット】にはARPで調べたMACアドレス情報は載っていないのに
どうやってレイヤ2がそれを知ることができるのでしょうか。。。
porco
投稿数: 4
![新米 新米](https://ping-t.com/uploads/rank3e632f95e81ca.gif)
>1)下記のフローで誤りがありましたらご教示、または補足をお願いしたいです。
以下にフローを確認して、疑問を感じた点を列挙しました。
その下にまとめを記述いたしました。
>1.トランスポート層から流れてきたセグメントまたは、データグラムをカプセル化
>2.カプセル化されたPDUに、IPヘッダが付加される。
2にてIPヘッダを付加すると書かれていますが、1の「カプセル化」では何を行っているのでしょうか。
>3.IPアドレスを取得した後?ARPパケットが作成されて、
どこからIPアドレスを取得するのでしょうか。
また、この段階でIPアドレスを取得するのであれば、
2で付加したIPヘッダの宛先IPアドレスには何が入るのでしょうか。
>4.次に、IPヘッダにICMPメッセージが付加されたIPパケットが生成される。
そもそもどのような通信を行っているか明記されていないので何とも言えませんが、
ここでどのようなICMPメッセージを付加していますか?
>この後、レイヤ3からレイヤ2へカプセル化するのは、
>イーサネットフレームに宛先MACアドレスと送信元MACアドレスを付加するためでしょうか?
その通りです。
厳密に言えばデータリンク層でのカプセル化は宛先/送信元MACアドレスだけでなく、
プリアンブルやFCSも付加しています。
>しかしながら、レイヤ2でもMACアドレステーブルで、MACアドレスを調べる機能があったような記憶があり
>レイヤ3でのARPの存在がよくわかりません。
ARPがどのレイヤのプロトコルであるか、人によって意見が分かれると思います。
ブロードキャストで送出されるので、イーサネット上で走るプロトコルですが、
情報としてIPアドレスを持っているせいか、ARPパケットと呼ばれます。
ですので、おっしゃられている「レイヤ2でMACアドレスを調べる機能」とは恐らくARPのことだと思います。
新試験範囲がどの程度なのかわかっていないので不足があるかもしれませんが、
CCNAレベルの理解としては、以下で良いと思います。
1.レイヤ4からセグメントもしくはデータグラムがレイヤ3に渡される
2.レイヤ3でIPヘッダを付加する
3.レイヤ3からパケットがレイヤ2に渡される
ここで宛先IPアドレスを確認し、自分と同じサブネットか別サブネットかを判断します。
以下、同サブネットの場合です。
4-1.MACアドレステーブルを確認し、
宛先IPアドレスが見つかった場合は対応するMACアドレスを宛先としてカプセル化する
宛先IPアドレスが見つからなかった場合はARPにて宛先ホストのMACアドレスを取得し、
MACアドレステーブルに宛先ホストのIPアドレスとMACアドレスの対応付けを追加してカプセル化をする
以下、別サブネットの場合です。
4-2.デフォルトゲートウェイを確認しルータのIPアドレスを取得、MACアドレステーブルを確認し、
ルータのIPアドレスが見つかった場合はルータのMACアドレスを宛先としてカプセル化する
ルータのIPアドレスが見つからなかった場合はARPにてルータのMACアドレスを取得し、
MACアドレステーブルにルータのIPアドレスとMACアドレスの対応付けを追加してカプセル化する
5.レイヤ2からレイヤ1にフレームが渡され電気信号に変換、宛先MACアドレスに向けて通信が行われる
------------------------------
>2)また、MACアドレスの取得はARPだけではだめなのでしょうか?
>ホストに登録されるMACアドレスと、スイッチ?に登録されるMACアドレステーブルとの機能についての
>明確な違いも理解できず…ご教示のほどお願いいたします。
MACアドレスの取得は基本的にARPで行います。
ホストのMACアドレステーブルの使い方は上記の通りです。
スイッチのMACアドレステーブルは、スイッチがフォワーディングする際の送出IFを決定するのに使います。
例えばホストAとホストBがスイッチを介して接続されており、疎通が取れている状態にあるとします。
その状態でAがBにpingを打つと、Aからは送信元MACアドレスA、宛先MACアドレスBのフレームが送出されます。
スイッチは宛先MACアドレスBをMACアドレステーブルから探しだし、
Bが接続されているIFにAからのフレームをフォワーディングします。
この時、各ノードのMACアドレステーブルにMACアドレスがなかった場合はどうなるか。
AはBのMACアドレスを知らないので、ARP要求をブロードキャストします。
送信元MACアドレスA、宛先MACアドレスFF:FF:FF:FF:FF:FFを受け取ったスイッチは、
受信ポート以外のポートからフレームを送出します。
この時にスイッチは「MACアドレスAのホストはIF1に接続されている」という情報をMACアドレステーブルに登録します。
スイッチからARPのブロードキャストを受け取ったBは、自分のことだと判断するとARP応答をユニキャストで返します。
それと同時に、自分のMACアドレステーブルに「MACアドレスA=ホストA=IPアドレスA」をという情報を登録します。
送信元MACアドレスB、宛先MACアドレスAのフレームを受け取ったスイッチは、IF1にのみフレームを送出します。
この時にスイッチは「MACアドレスBのホストはIF2に接続されている」という情報をMACアドレステーブルに登録します。
ARP応答を受け取ったAは、BのMACアドレスを自分のMACアドレステーブルに登録します。
------------------------------
>レイヤ3からレイヤ2に渡される(レイヤ3でのPDU)は、最終的にIPヘッダ+ICMPメッセージでよろしいでしょうか??
IPヘッダとICMPメッセージだけでは、肝心のデータがないですね。
「IPヘッダと+セグメント」です。
ICMPが何度か出てきていますが、IPv6のネイバープロセスと混ざっていませんか?
以下にフローを確認して、疑問を感じた点を列挙しました。
その下にまとめを記述いたしました。
>1.トランスポート層から流れてきたセグメントまたは、データグラムをカプセル化
>2.カプセル化されたPDUに、IPヘッダが付加される。
2にてIPヘッダを付加すると書かれていますが、1の「カプセル化」では何を行っているのでしょうか。
>3.IPアドレスを取得した後?ARPパケットが作成されて、
どこからIPアドレスを取得するのでしょうか。
また、この段階でIPアドレスを取得するのであれば、
2で付加したIPヘッダの宛先IPアドレスには何が入るのでしょうか。
>4.次に、IPヘッダにICMPメッセージが付加されたIPパケットが生成される。
そもそもどのような通信を行っているか明記されていないので何とも言えませんが、
ここでどのようなICMPメッセージを付加していますか?
>この後、レイヤ3からレイヤ2へカプセル化するのは、
>イーサネットフレームに宛先MACアドレスと送信元MACアドレスを付加するためでしょうか?
その通りです。
厳密に言えばデータリンク層でのカプセル化は宛先/送信元MACアドレスだけでなく、
プリアンブルやFCSも付加しています。
>しかしながら、レイヤ2でもMACアドレステーブルで、MACアドレスを調べる機能があったような記憶があり
>レイヤ3でのARPの存在がよくわかりません。
ARPがどのレイヤのプロトコルであるか、人によって意見が分かれると思います。
ブロードキャストで送出されるので、イーサネット上で走るプロトコルですが、
情報としてIPアドレスを持っているせいか、ARPパケットと呼ばれます。
ですので、おっしゃられている「レイヤ2でMACアドレスを調べる機能」とは恐らくARPのことだと思います。
新試験範囲がどの程度なのかわかっていないので不足があるかもしれませんが、
CCNAレベルの理解としては、以下で良いと思います。
1.レイヤ4からセグメントもしくはデータグラムがレイヤ3に渡される
2.レイヤ3でIPヘッダを付加する
3.レイヤ3からパケットがレイヤ2に渡される
ここで宛先IPアドレスを確認し、自分と同じサブネットか別サブネットかを判断します。
以下、同サブネットの場合です。
4-1.MACアドレステーブルを確認し、
宛先IPアドレスが見つかった場合は対応するMACアドレスを宛先としてカプセル化する
宛先IPアドレスが見つからなかった場合はARPにて宛先ホストのMACアドレスを取得し、
MACアドレステーブルに宛先ホストのIPアドレスとMACアドレスの対応付けを追加してカプセル化をする
以下、別サブネットの場合です。
4-2.デフォルトゲートウェイを確認しルータのIPアドレスを取得、MACアドレステーブルを確認し、
ルータのIPアドレスが見つかった場合はルータのMACアドレスを宛先としてカプセル化する
ルータのIPアドレスが見つからなかった場合はARPにてルータのMACアドレスを取得し、
MACアドレステーブルにルータのIPアドレスとMACアドレスの対応付けを追加してカプセル化する
5.レイヤ2からレイヤ1にフレームが渡され電気信号に変換、宛先MACアドレスに向けて通信が行われる
------------------------------
>2)また、MACアドレスの取得はARPだけではだめなのでしょうか?
>ホストに登録されるMACアドレスと、スイッチ?に登録されるMACアドレステーブルとの機能についての
>明確な違いも理解できず…ご教示のほどお願いいたします。
MACアドレスの取得は基本的にARPで行います。
ホストのMACアドレステーブルの使い方は上記の通りです。
スイッチのMACアドレステーブルは、スイッチがフォワーディングする際の送出IFを決定するのに使います。
例えばホストAとホストBがスイッチを介して接続されており、疎通が取れている状態にあるとします。
その状態でAがBにpingを打つと、Aからは送信元MACアドレスA、宛先MACアドレスBのフレームが送出されます。
スイッチは宛先MACアドレスBをMACアドレステーブルから探しだし、
Bが接続されているIFにAからのフレームをフォワーディングします。
この時、各ノードのMACアドレステーブルにMACアドレスがなかった場合はどうなるか。
AはBのMACアドレスを知らないので、ARP要求をブロードキャストします。
送信元MACアドレスA、宛先MACアドレスFF:FF:FF:FF:FF:FFを受け取ったスイッチは、
受信ポート以外のポートからフレームを送出します。
この時にスイッチは「MACアドレスAのホストはIF1に接続されている」という情報をMACアドレステーブルに登録します。
スイッチからARPのブロードキャストを受け取ったBは、自分のことだと判断するとARP応答をユニキャストで返します。
それと同時に、自分のMACアドレステーブルに「MACアドレスA=ホストA=IPアドレスA」をという情報を登録します。
送信元MACアドレスB、宛先MACアドレスAのフレームを受け取ったスイッチは、IF1にのみフレームを送出します。
この時にスイッチは「MACアドレスBのホストはIF2に接続されている」という情報をMACアドレステーブルに登録します。
ARP応答を受け取ったAは、BのMACアドレスを自分のMACアドレステーブルに登録します。
------------------------------
>レイヤ3からレイヤ2に渡される(レイヤ3でのPDU)は、最終的にIPヘッダ+ICMPメッセージでよろしいでしょうか??
IPヘッダとICMPメッセージだけでは、肝心のデータがないですね。
「IPヘッダと+セグメント」です。
ICMPが何度か出てきていますが、IPv6のネイバープロセスと混ざっていませんか?
arashi1977
居住地: 広島
投稿数: 1715
![長老 長老](https://ping-t.com/uploads/rank3dbf8eb1a72e7.gif)
引用:あるホストからどこかのIPアドレス向けにpingを打ったという前提ではないですかね?なんとなく
>レイヤ3からレイヤ2に渡される(レイヤ3でのPDU)は、最終的にIPヘッダ+ICMPメッセージでよろしいでしょうか??
IPヘッダとICMPメッセージだけでは、肝心のデータがないですね。
「IPヘッダと+セグメント」です。
ICMPが何度か出てきていますが、IPv6のネイバープロセスと混ざっていませんか?
![](https://ping-t.com/uploads/smil4ab2ff62b5d03.gif)
dolphin_net
投稿数: 4
![新米 新米](https://ping-t.com/uploads/rank3e632f95e81ca.gif)
文字だけだと分かりずらい部分もあるかと思います。
下記のサイトを参照頂ければ、よりわかりやすいです。
Flashを用いたサイトで非常にわかりやすいです。
[3分間ネットワーキング]
http://www5e.biglobe.ne.jp/~aji/3min/index.html
博士と助手、会話形式のやりとりがとても楽しいので、ぜひ一読してみてください。
下記のサイトを参照頂ければ、よりわかりやすいです。
Flashを用いたサイトで非常にわかりやすいです。
[3分間ネットワーキング]
http://www5e.biglobe.ne.jp/~aji/3min/index.html
博士と助手、会話形式のやりとりがとても楽しいので、ぜひ一読してみてください。