Layer 2 스위치는 MAC주소를 기반으로 데이터를 전달합니다. 이를 위해서 스위치는 MAC주소 테이블(MAC Address Table)을 사용합니다. 스위치에 연결된 장치에서 프레임을 보내면, 출발지 프레임의 MAC주소를 기반으로 테이블을 자동으로 작성합니다.
그럼 어떻게 동작하는걸까요?
MAC Address Table (MAC주소 테이블)
스위치 SW1에 전원이 들어가서 켜지면, 처음에는 MAC주소 테이블이 비워져 있습니다.
“show mac-address”라는 명령어를 통해 MAC주소 테이블에 저장된 내용을 확인할 수 있습니다.
![](https://egstory2-8b4b6c8e09167390fdc1-endpoint.azureedge.net/wp-content/uploads/2021/03/image-38.png)
그림에서와 같이 Host A가 Host B로 프레임을 전송합니다.
SW1은 VLAN 10의 구성원으로 매핑한 1번 포트에서 MAC주소 = 90:….:00를 출발지 정보와 함께 프레임을 수신합니다. 그리고 아래와 같이 MAC주소 테이블 첫번째 항목에 이 내용을 추가합니다.
SW1# show mac-address
MAC age-time : 300 seconds
Number of MAC addresses : 1
MAC Address VLAN Type Port
------------------------------------------------------
90:20:c2:bc:ee:00 10 dynamic 1/1/1
보시는 것과 같이 MAC주소 테이블에 MAC주소와, VLAN, 포트 정보를 매핑하여 저장합니다.
하지만 테이블에 다른 항목은 없기 때문에, 스위치는 프레임의 목적지 00:…:37로 전달할 위치를 아직 알 수가 없습니다. 따라서 이 프레임을 VLAN 10의 모든 구성원 포트로 플러딩 합니다. 모든 VLAN 10이 매핑된 호스트는 이 프레임을 수신하고 목적지 MAC주소를 확인합니다.
이 때, 자신의 MAC주소가 아니면 프레임을 버리고(discard), 자신의 MAC주소인 경우 응답하게 됩니다.
즉, Host B는 출발지 MAC = 00:….:37, 목적지 MAC = 90:…:00으로 Host A에게 응답합니다.
이제 스위치는 MAC주소 테이블에 00:0b:86:b4:eb:37이라는 MAC주소를 두 번째 항목에 추가합니다.
SW1# show mac-address
MAC age-time : 300 seconds
Number of MAC addresses : 2
MAC Address VLAN Type Port
------------------------------------------------------
90:20:c2:bc:ee:00 10 dynamic 1/1/1
00:0b:86:b4:eb:37 10 dynamic 1/1/2
비슷한 프로세스가 11번 포트의 Host C에서도 발생합니다.
![](https://egstory2-8b4b6c8e09167390fdc1-endpoint.azureedge.net/wp-content/uploads/2021/03/image-40-1024x114.png)
이렇게 스위치는 출발지 MAC주소를 기반으로 MAC테이블을 자동으로 빌드하고 목적지 MAC주소 기반으로 프레임을 전달합니다.
기본적으로 테이블 항목은 300초(5분)동안 유지됩니다.
Address Resolution Protocol (ARP)
자, 그럼 우리가 방금 만난 사람들과 회의실에 있다고 생각해보겠습니다.
아직 우리는 모든 사람의 이름을 모릅니다. 그런데 갑자기 누군가가 들어와서 “홍길동에 전달할 중요 메시지”라고 쪽지를 건네줍니다. 회의실에 있는 사람들 중에 누가 홍길동인지 알 수 없기 때문에 물어볼 수 밖에 없습니다.
실례합니다. 혹시 홍길동씨가 누구입니까?
모든 사람들이 제가 말하는 내용을 다 듣고 있지만, 홍길동만이 “접니다!”라고 대답할 것입니다. 그 때, 저는 홍길동씨가 앉아 있는 의자와 홍길동이라는 이름을 매핑하게 됩니다. 이것은 Layer 3의 IP주소를 Layer 2의 MAC 주소와 연결하는 ARP(Address Resolution Protocol)와 매우 유사합니다.
다음 그림에서 Host A는 IP주소 10.1.20.200의 호스트와 통신해야 합니다. 이를 위해서는 자기 자신인 출발지 MAC주소(90:..:00)와 아직 알지 못하는 Host B의 MAC 주소로 이더넷 프레임을 구축해야 합니다.
![](https://egstory2-8b4b6c8e09167390fdc1-endpoint.azureedge.net/wp-content/uploads/2021/03/image-42-1024x433.png)
MAC주소를 알기 위해서 Host A는 ARP요청(목적지 MAC주소 FF:FF:FF:FF:FF:FF)을 브로드캐스트합니다.
– IP헤더에서 목적지 IP주소는 255.255.255.255
우리는 이미 스위치가 동일한 VLAN의 모든 포트에 브로드캐스트를 전달한다는 것을 알고 있습니다.
따라서 VLAN의 모든 호스트는 이 프레임을 수신하고 Host B를 제외하고 모두 무시하게 됩니다.
여기서 Host B는 Host A의 MAC주소로 유니캐스트 통신으로 응답하게 됩니다.
“나는 10.1.20.200이고, MAC주소는 00:…:37 입니다.”
Host B
Host A는 이 응답을 수신하고 ARP 캐시라고도 하는 ARP 테이블에 항목을 작성합니다.
이 ARP테이블에 10.1.20.200의 IP주소와 00:0b:86:b4:eb:37의 MAC주소를 매핑합니다. 따라서 다음에 Host A와 Host B가 통신할 때는 ARP를 사용할 필요가 없습니다.
또한 Host B가 Host A로부터 ARP 요청을 받았을 때 Host A의 IP주소와 MAC주소를 알게 됩니다. 따라서 Host B는 ARP 테이블에 해당 내용을 저장합니다.
이러한 ARP 테이블에 저장된 내용은 Windows의 경우, 명령 프롬프트(Command Prompt)에서 “arp -a” 명령어를 통해 확인할 수 있습니다.