- 0
- 184 words
스위치가 MAC 주소를 학습하는 원리와 MAC 주소 테이블이 만들어지는 과정, 프레임 전달 방식까지 쉽게 정리합니다.
네트워크를 공부하다 보면 스위치가 연결된 여러 컴퓨터를 어떻게 구분하는지 궁금해질 때가 있습니다.
예를 들어 사무실에 컴퓨터가 여러 대 연결되어 있다고 생각해 보겠습니다.
PC 1 ──┐
PC 2 ──┤
PC 3 ──┼── 스위치
PC 4 ──┤
PC 5 ──┘
스위치는 이 컴퓨터들을 그냥 무작정 구분하는 것이 아닙니다.
각 장치가 가지고 있는 MAC 주소를 이용해서 어떤 장치가 어느 포트에 연결되어 있는지 알아냅니다.
그런데 여기서 한 가지 궁금한 점이 생깁니다.
스위치는 컴퓨터의 MAC 주소를 누가 알려주지 않아도 어떻게 알아낼까요?
답은 MAC 주소 학습(MAC Learning)입니다.
스위치는 MAC 주소를 학습한다
스위치는 네트워크를 통해 프레임이 들어올 때 프레임의 정보를 확인합니다.
Ethernet 프레임에는 출발지 MAC 주소와 목적지 MAC 주소가 포함되어 있습니다.
예를 들어 PC A가 스위치로 데이터를 보낸다고 해보겠습니다.
PC A
MAC: AA-AA-AA
↓
스위치
스위치는 들어온 프레임에서 출발지 MAC 주소를 확인합니다.
그리고 해당 프레임이 들어온 포트와 MAC 주소를 연결해서 기록합니다.
MAC 주소 포트
AA-AA-AA 1번
이것이 스위치의 MAC 주소 학습 과정입니다.
MAC 주소 테이블이란?
스위치가 MAC 주소와 포트의 관계를 기록해 놓은 표를 MAC 주소 테이블(MAC Address Table)이라고 합니다.
예를 들어 다음과 같은 형태입니다.
| MAC 주소 | 연결된 포트 |
|---|---|
| AA-AA-AA-AA-AA-AA | 1번 |
| BB-BB-BB-BB-BB-BB | 2번 |
| CC-CC-CC-CC-CC-CC | 3번 |
| DD-DD-DD-DD-DD-DD | 4번 |
이 표를 보면 스위치는 어떤 MAC 주소를 가진 장치가 어느 포트에 연결되어 있는지 알 수 있습니다.
그래서 필요한 포트로만 프레임을 전달할 수 있습니다.
처음부터 모든 MAC 주소를 알고 있는 것은 아니다
여기서 중요한 부분이 하나 있습니다.
스위치가 전원을 켜자마자 네트워크에 연결된 모든 장치의 MAC 주소를 알고 있는 것은 아닙니다.
처음에는 MAC 주소 테이블이 비어 있을 수 있습니다.
MAC Address Table
비어 있음
그런데 장치들이 데이터를 주고받기 시작하면 스위치가 프레임을 확인하면서 하나씩 MAC 주소를 학습합니다.
프레임 수신
↓
출발지 MAC 확인
↓
들어온 포트 확인
↓
MAC 주소 테이블에 기록
따라서 별도의 관리자가 컴퓨터의 MAC 주소를 하나씩 입력하지 않아도 자동으로 테이블이 만들어집니다.
출발지 MAC 주소를 확인하는 이유
스위치가 MAC 주소를 학습할 때는 목적지 MAC 주소가 아니라 출발지 MAC 주소를 먼저 확인한다는 점이 중요합니다.
예를 들어:
PC A ─────→ 스위치 ─────→ PC B
PC A가 데이터를 보내면 스위치는 프레임의 출발지 MAC 주소를 확인합니다.
Source MAC
AA-AA-AA-AA-AA-AA
Destination MAC
BB-BB-BB-BB-BB-BB
여기서 스위치는:
AA-AA-AA-AA-AA-AA
→ 이 MAC 주소는 이 포트에서 들어왔구나.
라고 학습합니다.
즉, 프레임이 들어온 방향을 이용해 출발지 장치의 위치를 알아내는 것입니다.
그렇다면 목적지 MAC 주소는 어디에 사용할까?
목적지 MAC 주소는 프레임을 어디로 보내야 할지 결정하는 데 사용합니다.
예를 들어 MAC 주소 테이블에 다음과 같은 정보가 있다고 해보겠습니다.
AA-AA-AA → 1번 포트
BB-BB-BB → 2번 포트
CC-CC-CC → 3번 포트
1번 포트에서 들어온 프레임의 목적지가:
BB-BB-BB
라면 스위치는 MAC 주소 테이블을 확인합니다.
BB-BB-BB
↓
2번 포트
그리고 해당 프레임을 2번 포트로 전달합니다.
이런 방식으로 불필요하게 모든 포트로 데이터를 보내는 것을 줄일 수 있습니다.
MAC 주소를 모르면 어떻게 할까?
여기서 또 재미있는 부분이 있습니다.
스위치가 목적지 MAC 주소를 아직 학습하지 못한 경우입니다.
예를 들어:
목적지 MAC
ZZ-ZZ-ZZ
라는 주소가 들어왔는데 MAC 주소 테이블에 없다면 스위치는 어느 포트로 보내야 할지 알 수 없습니다.
이때 스위치는 일반적으로 해당 프레임이 들어온 포트를 제외한 다른 포트로 프레임을 전달합니다.
이것을 Unknown Unicast Flooding이라고 합니다.
┌── PC B
│
PC A ─ 스위치 ─ PC C
│
└── PC D
목적지 위치를 모르는 상황에서는 여러 포트로 프레임을 전달하면서 해당 장치를 찾게 됩니다.
그리고 통신이 진행되면서 목적지 장치의 MAC 주소를 학습하면 이후에는 특정 포트로만 전달할 수 있습니다.
통신을 한 번 하면 테이블이 만들어진다
예를 들어 PC A와 PC B가 처음 통신한다고 해보겠습니다.
처음에는:
MAC 주소 테이블
비어 있음
PC A가 프레임을 보내면:
PC A → 스위치
스위치는 PC A의 출발지 MAC 주소를 확인합니다.
AA-AA-AA → 1번 포트
그리고 목적지 MAC이 아직 없다면 다른 포트로 프레임을 전달할 수 있습니다.
PC B가 응답하면 이번에는:
BB-BB-BB → 2번 포트
라는 정보도 학습하게 됩니다.
결국:
AA-AA-AA → 1번 포트
BB-BB-BB → 2번 포트
라는 정보가 만들어집니다.
이제부터는 두 장치가 통신할 때 훨씬 효율적으로 프레임을 전달할 수 있습니다.
MAC 주소 테이블은 계속 유지될까?
여기서도 한 가지 알아둘 점이 있습니다.
스위치가 학습한 MAC 주소를 영원히 가지고 있는 것은 아닙니다.
일정 시간 동안 해당 MAC 주소에서 새로운 프레임이 들어오지 않으면 스위치는 해당 항목을 테이블에서 제거할 수 있습니다.
이것을 Aging이라고 합니다.
예를 들어:
AA-AA-AA → 1번 포트
라는 정보가 있었다고 해보겠습니다.
그런데 해당 장치에서 오랫동안 통신이 발생하지 않는다면 일정 시간이 지난 후 테이블에서 삭제될 수 있습니다.
다시 해당 장치가 데이터를 보내면 스위치는 MAC 주소를 다시 학습합니다.
즉:
통신 발생
↓
MAC 학습
↓
일정 시간 동안 통신 없음
↓
MAC 정보 Aging
↓
테이블에서 제거
↓
다시 통신
↓
MAC 재학습
과 같은 과정이 반복될 수 있습니다.
MAC 주소가 다른 포트에서 발견되면?
스위치는 단순히 MAC 주소만 기억하는 것이 아니라 어느 포트에서 해당 MAC 주소가 보였는지도 함께 기억합니다.
예를 들어:
AA-AA-AA → 1번 포트
라고 학습되어 있다고 해보겠습니다.
그런데 나중에 같은 MAC 주소가 3번 포트에서 들어온다면 스위치는 해당 정보를 새로운 위치로 갱신할 수 있습니다.
기존
AA-AA-AA → 1번 포트
변경
AA-AA-AA → 3번 포트
이런 상황은 장치가 다른 포트로 이동했거나 네트워크 구성이 변경되었을 때 발생할 수 있습니다.
스위치는 IP 주소를 기억하는 걸까?
여기서 MAC 주소와 IP 주소를 헷갈리지 않는 것이 중요합니다.
일반적인 Layer 2 스위치는 기본적으로 MAC 주소를 기준으로 Ethernet 프레임을 전달합니다.
MAC 주소
→ 스위치가 프레임 전달에 사용
반면 IP 주소를 기준으로 서로 다른 네트워크 사이의 경로를 결정하는 것은 일반적으로 라우터의 역할입니다.
스위치
→ MAC 주소 기반
라우터
→ IP 주소 기반
물론 실제 네트워크 장비에는 Layer 3 기능이 포함된 경우도 있기 때문에 장비의 종류와 기능에 따라 조금씩 달라질 수 있습니다.
MAC 주소 테이블을 직접 확인할 수도 있다
관리형 스위치에서는 현재 학습된 MAC 주소 테이블을 확인할 수 있습니다.
장비 제조사와 운영체제에 따라 명령어는 다르지만 일반적으로 다음과 비슷한 정보를 확인할 수 있습니다.
MAC Address Port
AA-AA-AA-AA-AA-AA 1
BB-BB-BB-BB-BB-BB 2
CC-CC-CC-CC-CC-CC 5
이 정보를 활용하면 특정 장치가 어느 스위치 포트에 연결되어 있는지 찾는 데 도움이 됩니다.
회사 네트워크에서 특정 PC나 장비의 연결 위치를 찾아야 할 때도 이런 MAC 주소 테이블이 유용하게 사용될 수 있습니다.
스위치가 모든 포트로 보내는 것과는 다르다
스위치를 처음 배우면 “스위치도 결국 데이터를 여러 곳으로 보내는 것 아닌가?”라는 생각이 들 수 있습니다.
하지만 MAC 주소를 학습한 이후에는 목적지를 알고 있기 때문에 필요한 포트로만 프레임을 전달합니다.
목적지 MAC을 알고 있음
PC A
↓
스위치
↓
PC B
PC C, PC D에는 전달하지 않음
이런 방식이 허브와 스위치의 중요한 차이 중 하나입니다.
스위치가 MAC 주소를 기억하는 과정
전체 과정을 순서대로 정리하면 생각보다 간단합니다.
① 프레임이 스위치로 들어옴
↓
② 출발지 MAC 주소 확인
↓
③ 들어온 포트와 MAC 주소를 연결
↓
④ MAC 주소 테이블에 기록
↓
⑤ 목적지 MAC 주소 확인
↓
⑥ 테이블에서 목적지 포트 검색
↓
⑦ 해당 포트로 프레임 전달
목적지 MAC 주소를 모르면 다른 포트로 전달하면서 목적지를 찾고, 통신 과정에서 MAC 주소를 학습하면 다음부터는 보다 정확한 포트로 전달하게 됩니다.
정리
스위치가 MAC 주소를 기억하는 원리는 MAC 주소 학습(MAC Learning)이라고 할 수 있습니다.
스위치는 네트워크 프레임이 들어오면 프레임에 포함된 출발지 MAC 주소와 프레임이 들어온 포트를 확인합니다.
그리고 이 정보를 MAC 주소 테이블에 저장합니다.
예를 들어:
AA-AA-AA-AA-AA-AA
↓
1번 포트
이런 식으로 MAC 주소와 포트의 관계를 기억하는 것입니다.
이후 다른 프레임이 들어왔을 때 목적지 MAC 주소를 확인하고 MAC 주소 테이블에서 해당 주소를 찾습니다.
목적지 MAC
↓
MAC 주소 테이블 검색
↓
연결된 포트 확인
↓
해당 포트로 프레임 전달
결국 스위치가 MAC 주소를 기억하는 이유는 네트워크 데이터를 필요한 장치에게 효율적으로 전달하기 위해서입니다.
처음에는 아무것도 모르는 상태에서 프레임을 받아들이지만, 통신이 반복될수록 MAC 주소와 포트의 관계를 학습하면서 네트워크 구조를 조금씩 파악하게 됩니다.
네트워크를 공부할 때는 이 과정을 단순히 외우기보다는 “출발지 MAC을 보고 위치를 배우고, 목적지 MAC을 보고 어디로 보낼지 결정한다”고 이해하면 가장 편합니다.