スイッチはスイッチテーブルをどのように学習しますか?


22

スイッチテーブルが空であるとします。コンピューターAがコンピューターB宛てのフレームを送信する場合、スイッチはブロードキャストを行い、だれがBのMACアドレスを持っているかを尋ねます。Cが突然Aにフレームを送信した場合はどうなりますか。スイッチがコンピューターCをコンピューターBと誤って判断しないようにするメカニズムは何ですか?コンピューターAが希望する宛先のMACアドレスを覚えており、CがAに到達しようとすると、自身のMACアドレスも含まれており、スイッチはコンピューターAが望んだのと同じ宛先ではないことがわかりますか?

基本的に、ホストAから送信されたリクエストのスイッチが不明なMACアドレスでフラッディングする場合、宛先がホストAに応答していること、または他のホストがたまたまAに送信していることをどのように知るのでしょうか?


何か答えがありましたか?もしそうなら、質問が永遠にポップアップし続けないように答えを受け入れて、答えを探してください。または、独自の回答を提供して受け入れることもできます。
ロンモーピン

回答:


34

レイヤー2スイッチ(ブリッジ)には、MACアドレスとポート番号を含むMACアドレステーブルがあります。スイッチは、パケットを転送するためにこの単純なアルゴリズムに従います。

  1. フレームを受信すると、スイッチはSOURCE MACアドレスをMACアドレステーブルと比較します。SOURCEが不明の場合、スイッチはパケットを受信したポート番号とともにテーブルに追加します。このようにして、スイッチはすべての送信デバイスのMACアドレスとポートを学習します。

  2. 次に、スイッチはDESTINATION MACアドレスをテーブルと比較します。エントリがある場合、スイッチはフレームを関連ポートに転送します。エントリがない場合、スイッチはフレームが受信されたポート(フラッディング)を除くすべてのポートからパケットを送信します。

スイッチは、デバイスからフレームを受信するまで宛先MACを学習しないことに注意してください。


@Ronに説明をありがとう。今、私は洪水が知っています。また、en.wikipedia.org / wiki / Unicast_flood
デイモン

これは私が尋ねた質問に答えませんでした。
セレリタス

5
@Celeritasあなたの質問におけるあなたの仮定は間違っています。スイッチは、MACアドレスを持っている人を「尋ねません」。宛先MACがわからない場合、すべてのポートにフレームをフラッディングします。フレームを受信したときにのみソースMACを学習します。したがって、質問では、スイッチはソースMACアドレスが異なるため、BとCの違いを知ることができます。
ロントランク

4
@Celeritas-スイッチは、ホストがホストAに何かを送信している理由を知らず、気にもしません。ホストがホストAに応答しているのか、別のホストがホストAに何か送信しているのがなぜ重要なのでしょうか?スイッチは、宛先MACがホストA用であること(およびMACアドレステーブルにない場合の送信元MACのこと)のみを考慮します。ホストAのみが、受信したフレームが最初にフレームを送信したホストからの応答であるかどうかを気にします。
ロンモーピン

ロンが言ったように、この概念はARPとは別のものです。
ジョーダンヘッド

4

質問は、スイッチが2つのホスト間の通信/会話に関係している、または認識していることを前提としています(これはAとBの間の会話ですか、それともAとCの間の会話ですか?)。スイッチは、2つのホスト間の通信/会話には関与しません。どのMACアドレスがどのポートに関連付けられているかを単に認識(または学習)し、特定のMACアドレス宛てのトラフィックを関連ポートに転送(またはスイッチ)します(どのポートがMACアドレスに関連付けられているかを学習すると)。送信元は、B、C、または他のスイッチポートに接続されている他のホストです。

スイッチはレイヤー2で動作します。セッション管理は上位レイヤーの責任です。


-2

スイッチテーブルとは呼ばれません。そのMACテーブル。ここで、MACテーブルが空であると考えてください。AがBにパケットを送信しようとしたとき; パケットにはAおよびBのMACアドレスが含まれています。スイッチはMACテーブルのAのMACアドレスを更新します。これで、Bが接続されているポートがわからないため、すべてのポートでARPパケットをブロードキャストし、すべてのホストが応答するのを待ちます。

これで、CがAにパケットを送信しようとすると、そのパケットからCのMACアドレスが抽出され、MACテーブルに保存されます。のMACアドレスはMACテーブルに既に存在するため、どのポートAが接続されているかがわかります。要確認データパケットには、送信元と宛先の両方のMACアドレスが含まれています。したがって、BとCのMACアドレスは異なります。そのため、スイッチは混乱しません。次に、スイッチがパケットをCからAに転送します(両方が同じVLANに存在することを考えます)。

AからBにパケットを送信するには、Bがスイッチから送信されたARPパケットに応答するまで待機します。Bから応答を受信すると、MACテーブルのBのMACアドレスを更新します。最後に、パケットはBに転送されます。

したがって、データパケット(tcp / udp)には送信元と宛先の両方のMACアドレスが含まれているため、スイッチは混乱しません。また、スイッチは、エンドホストのMACアドレスが切り替えを認識していないインターフェイスにパケットを転送しません。エンドホストがスイッチから送信されたARPブロードキャストに応答するまで待機する必要があります。


1
これは完全に正確ではありません。スイッチは、レイヤ3スイッチでない限り、ARPしません。ARPはレイヤー2とレイヤー3の間で解決することであり、スイッチはレイヤー3を認識しません。実際、スイッチは、未知の宛先MACを持つフレームをすべてのスイッチポートにブロードキャストします。ホストは、自身ではなく宛先MACを持つフレームを無視します。
ロンモーピン

1
そして、Ronの説明のわずかな説明...ほとんどが用語の修正です。特にMACアドレスがどこにあるかわからないためにスイッチがすべてのポート(入力ポートを除く)にパケットを送信すると、一般に「フラッディング」と呼ばれます。
ジェフマクアダムス

@Ron、訂正ありがとうございます。これがレイヤ3スイッチ用であることを書くのを忘れていました。また、フラッディングという用語を忘れたことを認めたくて、レイヤー3スイッチの応答を書きました。そしてジェフは教えてくれてありがとう。
デイモン

@ジェフ・マクアダムス、あなたは正しい、それは洪水です、ありがとう。早起きしてから最初のコーヒーを飲む前で、ネットワークという意味ではなく、言語の意味で放送するつもりでした。
ロンモーピン

@Damon、それはすべてのフレームに送信元および宛先MACアドレスが含まれていることを知りませんでした。
セレリタス14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.