스위치는 스위치 테이블을 어떻게 학습합니까?


22

스위치 테이블이 비어 있다고 가정하십시오. 컴퓨터 A가 컴퓨터 B로 향하는 프레임을 보내면 스위치는 mac 주소가 B 인 사람에게 묻는 메시지를 브로드 캐스트합니다. C가 갑자기 A에게 프레임을 보내면 어떻게됩니까? 스위치가 컴퓨터 C를 컴퓨터 B라고 잘못 생각하지 않도록하는 메커니즘은 무엇입니까? 컴퓨터 A가 원하는 대상의 mac 주소를 기억하고 C가 A를 찾으려고 시도 할 때 자체 Mac 주소도 포함하고 스위치가 컴퓨터 A가 원하는 대상과 동일하지 않은 것을 볼 수 있습니까?

기본적으로 스위치 A가 호스트 A가 보낸 요청에 대해 알 수없는 mac 주소를 범람 할 때 대상이 호스트 A에 응답하는지 또는 다른 호스트가 A로 전송되고 있는지 어떻게 알 수 있습니까?


어떤 대답이 도움이 되었습니까? 그렇다면 질문에 대한 답변이 계속 표시되지 않도록 답변을 수락해야합니다. 또는 자신의 답변을 제공하고 수락 할 수 있습니다.
Ron Maupin

답변:


34

계층 2 스위치 (브리지)에는 MAC 주소와 포트 번호가 포함 된 MAC 주소 테이블이 있습니다. 스위치는 패킷을 전달하기 위해이 간단한 알고리즘을 따릅니다.

  1. 프레임이 수신되면 스위치는 SOURCE MAC 주소를 MAC 주소 테이블과 비교합니다. SOURCE를 알 수없는 경우 스위치는 패킷을받은 포트 번호와 함께 테이블에 추가합니다. 이러한 방식으로 스위치는 모든 전송 장치의 MAC 주소와 포트를 학습합니다.

  2. 그런 다음 스위치는 DESTINATION MAC 주소를 테이블과 비교합니다. 항목이 있으면 스위치는 프레임을 관련 포트 밖으로 전달합니다. 항목이 없으면 스위치는 프레임이 수신 된 포트 (플러딩)를 제외한 모든 포트를 패킷으로 보냅니다.

스위치는 해당 장치에서 프레임을 수신 할 때까지 대상 MAC을 인식하지 못합니다.


더 잘 설명해 주신 @Ron에게 감사드립니다. 이제 홍수가났다는 것을 알고 있습니다. 이 파일은 en.wikipedia.org/wiki/Unicast_flood
Damon에서

이것은 내가 물었던 질문에 대답하지 못했습니다.
Celeritas

5
@Celeritas 귀하의 질문에 대한 귀하의 가정이 잘못되었습니다. 스위치는 mac 주소를 가진 사람을 "요청"하지 않습니다. 대상 MAC을 모르는 경우 모든 포트에서 프레임이 넘치게됩니다. 프레임을 수신 할 때만 소스 MAC을 학습합니다. 따라서 귀하의 질문에 따르면 스위치는 소스 MAC 주소가 다르기 때문에 B와 C의 차이점을 알 수 있습니다.
Ron Trunk

4
@Celeritas-스위치는 어떤 호스트가 호스트 A에 무언가를 보내는 이유를 알거나 신경 쓰지 않습니다. 호스트가 호스트 A에 응답하거나 다른 호스트가 다른 것을 호스트 A에 보내는 경우 왜 중요합니까? 스위치는 대상 MAC이 호스트 A에 대한 것 (및 MAC 주소 테이블에없는 경우 소스 MAC의 것) 만 처리합니다. 수신 된 프레임이 원래 프레임을 전송 한 호스트의 응답인지 여부는 호스트 A 만 처리합니다.
Ron Maupin

Ron이 말한 것처럼이 개념은 ARP와는 별개입니다.
Jordan Head

4

귀하의 질문은 스위치가 두 호스트 간의 통신 / 대화에 관여하거나 알고 있다고 가정합니다 (이것은 A와 B 사이 또는 A와 C 사이의 대화입니까?). 스위치는 두 호스트 간의 통신 / 대화에 관여하지 않습니다. 어떤 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이 아닌 프레임을 무시합니다.
Ron Maupin

1
Ron의 설명에 대한 약간의 설명은 ... 단지 용어 정정입니다. 스위치는 특히 MAC 주소가 어디에 있는지 모르기 때문에 모든 포트 (수신 포트 제외)로 패킷을 보낼 때 일반적으로 "flooding"이라고합니다.
Jeff McAdams

@Ron 수정 해 주셔서 감사합니다. 이것이 레이어 3 스위치를위한 것임을 잊었습니다. 또한 범람이라는 용어를 잊어 버렸다는 점을 인정하고 싶었으므로 계층 3 스위치에 대한 회신을 작성했습니다. 그리고 Jeff는 말해 주셔서 감사합니다.
Damon

@ Jeff McAdams, 당신은 맞습니다, 그것은 홍수입니다, 감사합니다. 일찍 일어 났을 때 첫 커피 잔 앞에 있었고 네트워크 감각이 아닌 언어 적 의미로 방송을 의미했습니다.
Ron Maupin

@Damon, 내가 알지 못한 것은 모든 프레임에 소스 및 대상 MAC 주소가 포함되어 있다는 것입니다.
Celeritas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.