근거리 네트워크 통신 - OSI 2계층
OSI 2계층에서 하는 일
2계층은 같은 네트워크 상에서 송신 장비와 수신 장비에 대한 데이터를 전달하는 역할을 한다. 추가적으로 오류 제어, 흐름 제어를 수행한다.
2계층은 같은 네트워크만 가능하기 때문에 다른 네트워크 대역 통신을 위해서는 3계층이 필요하다.
2계층에서 사용하는 주소 - MAC 주소
MAC 주소란?
MAC 주소(물리 주소)는 16진수로 구성되어 있으며 12자리로 이루어진다.
00:1A:2B:3C:4D:5E
└─────┘ └─────┘
OUI 고유번호
앞 6자리(OUI): 제조 회사 식별 ID 뒤 6자리: 제조사에서 부여한 고유 식별 번호
MAC 주소의 특징
MAC 주소는 네트워크 카드(NIC)에 물리적으로 할당된 고유한 주소이다. 전 세계에서 유일한 값을 가진다.
예시:
삼성 노트북: 00:1A:2B:3C:4D:5E
애플 아이폰: AC:87:A3:12:34:56
제조사마다 고유한 OUI를 할당받아 사용한다.
브로드캐스트 주소
모든 장비에게 데이터를 전송할 때 사용하는 특수한 MAC 주소이다.
FF:FF:FF:FF:FF:FF
같은 네트워크 상의 모든 장비가 이 주소로 온 프레임을 받아서 처리한다.

이더넷 프로토콜
이더넷 프로토콜의 구조
이더넷 프로토콜은 2계층에서 가장 널리 사용되는 프로토콜이다.
[Preamble][SFD][목적지 MAC][출발지 MAC][이더넷 타입][데이터][FCS]
각 필드 설명
Preamble (7바이트)
- 프레임의 시작을 알림
- 동기화 용도
- 10101010 패턴 반복
SFD (Start Frame Delimiter, 1바이트)
- 프레임의 실제 시작을 알림
- 10101011 패턴
목적지 주소 (6바이트)
- 받는 장비의 MAC 주소
- 유니캐스트, 멀티캐스트, 브로드캐스트 가능
출발지 주소 (6바이트)
- 보내는 장비의 MAC 주소
- 항상 유니캐스트 주소
이더넷 타입 (2바이트)
- 상위 계층 프로토콜 식별
- 0x0800: IPv4
- 0x0806: ARP
- 0x86DD: IPv6
데이터 (46~1500바이트)
- 실제 전송할 데이터
- 최소 46바이트, 최대 1500바이트
- 1500바이트를 MTU(Maximum Transmission Unit)라고 함
FCS (Frame Check Sequence, 4바이트)
- 오류 검출을 위한 체크섬
- CRC(Cyclic Redundancy Check) 사용
- 수신 측에서 재계산하여 오류 확인
이더넷 프레임 예시
목적지 MAC: FF:FF:FF:FF:FF:FF (브로드캐스트)
출발지 MAC: 00:1A:2B:3C:4D:5E
이더넷 타입: 0x0806 (ARP)
데이터: ARP 요청 데이터
FCS: 체크섬 값
MAC 주소 동작 원리
유니캐스트 (Unicast)
특정 한 장비에게만 데이터를 전송하는 방식이다.
PC A (AA:AA:AA:AA:AA:AA)
↓
Switch
↓
PC B (BB:BB:BB:BB:BB:BB)
목적지 MAC 주소를 특정 장비의 주소로 설정한다.
브로드캐스트 (Broadcast)
네트워크의 모든 장비에게 데이터를 전송하는 방식이다.
PC A → FF:FF:FF:FF:FF:FF
↓
Switch
↓ ↓ ↓
PC B, PC C, PC D 모두 수신
ARP 요청이 대표적인 브로드캐스트 통신이다.
멀티캐스트 (Multicast)
특정 그룹에 속한 장비들에게만 데이터를 전송하는 방식이다.
멀티캐스트 MAC: 01:00:5E:XX:XX:XX
IPTV, 화상 회의 등에서 사용된다.
스위치의 역할과 동작
스위치란?
스위치는 2계층에서 동작하는 네트워크 장비이다. MAC 주소를 보고 프레임을 전달할 포트를 결정한다.
MAC 주소 테이블
스위치는 MAC 주소 테이블(CAM Table)을 유지한다.
포트 MAC 주소 학습 시간
1 AA:AA:AA:AA:AA:AA 2023-01-15 10:00
2 BB:BB:BB:BB:BB:BB 2023-01-15 10:05
3 CC:CC:CC:CC:CC:CC 2023-01-15 10:10
스위치 동작 과정
1. 학습 (Learning)
프레임이 들어오면 출발지 MAC 주소를 학습한다.
포트 1에서 프레임 수신
출발지 MAC: AA:AA:AA:AA:AA:AA
→ MAC 테이블에 저장: 포트 1 = AA:AA:AA:AA:AA:AA
2. 전달 (Forwarding)
목적지 MAC 주소를 확인하고 해당 포트로만 전달한다.
목적지 MAC: BB:BB:BB:BB:BB:BB
MAC 테이블 조회: 포트 2
→ 포트 2로만 전달 (다른 포트는 전달 안 함)
3. 플러딩 (Flooding)
목적지 MAC 주소가 테이블에 없으면 모든 포트로 전달한다.
목적지 MAC: DD:DD:DD:DD:DD:DD
MAC 테이블 조회: 없음
→ 수신 포트를 제외한 모든 포트로 전달
4. 필터링 (Filtering)
출발지와 목적지가 같은 포트에 있으면 전달하지 않는다.
포트 1에서 수신
출발지: AA (포트 1)
목적지: BB (포트 1)
→ 다른 포트로 전달 안 함
5. 에이징 (Aging)
일정 시간(보통 300초) 동안 사용되지 않은 MAC 주소는 테이블에서 삭제한다.
스위치 통신 예시
[초기 상태]
MAC 테이블: 비어 있음
PC A(포트 1, MAC: AA) → PC B(포트 2, MAC: BB)
1. PC A가 프레임 전송
출발지: AA, 목적지: BB
2. 스위치 학습
포트 1 = AA
3. 스위치 플러딩 (BB를 모름)
포트 2, 3, 4로 전달
4. PC B가 응답
출발지: BB, 목적지: AA
5. 스위치 학습
포트 2 = BB
6. 스위치 전달 (AA를 알고 있음)
포트 1로만 전달
[결과 상태]
MAC 테이블:
포트 1 = AA
포트 2 = BB
허브 vs 스위치
허브 (Hub)
1계층 장비로, 모든 포트로 데이터를 전달한다.
PC A → 허브 → 모든 PC로 전달
단점:
- 불필요한 트래픽 발생
- 충돌(Collision) 발생 가능
- 보안에 취약 (모든 장비가 데이터 수신)
스위치 (Switch)
2계층 장비로, 목적지 MAC 주소를 보고 해당 포트로만 전달한다.
PC A → 스위치 → PC B에게만 전달
장점:
- 불필요한 트래픽 감소
- 충돌 영역 분리
- 보안 향상
- 전이중(Full-Duplex) 통신 가능
현재는 거의 모든 네트워크에서 허브 대신 스위치를 사용한다.
2계층에서의 ARP
ARP의 역할
ARP는 3계층 프로토콜이지만, 2계층과 밀접하게 연관되어 있다. IP 주소를 MAC 주소로 변환한다.
ARP 통신 과정
PC A: 192.168.1.10 (MAC: AA:AA:AA:AA:AA:AA)
PC B: 192.168.1.20 (MAC: BB:BB:BB:BB:BB:BB)
PC A가 PC B와 통신하고 싶음
1단계: ARP Request (브로드캐스트)
[이더넷 헤더]
목적지 MAC: FF:FF:FF:FF:FF:FF (브로드캐스트)
출발지 MAC: AA:AA:AA:AA:AA:AA
이더넷 타입: 0x0806 (ARP)
[ARP 데이터]
질문: "192.168.1.20의 MAC 주소가 뭐야?"
2단계: 스위치 처리
스위치: 브로드캐스트이므로 모든 포트로 전달
3단계: ARP Reply (유니캐스트)
PC B만 응답:
[이더넷 헤더]
목적지 MAC: AA:AA:AA:AA:AA:AA
출발지 MAC: BB:BB:BB:BB:BB:BB
이더넷 타입: 0x0806 (ARP)
[ARP 데이터]
답변: "내 MAC은 BB:BB:BB:BB:BB:BB야"
4단계: 스위치 처리
스위치: MAC 테이블 확인
목적지 AA는 포트 1
→ 포트 1로만 전달
5단계: 실제 데이터 통신
이제 PC A는 PC B의 MAC 주소를 알게 됨
[이더넷 헤더]
목적지 MAC: BB:BB:BB:BB:BB:BB
출발지 MAC: AA:AA:AA:AA:AA:AA
이더넷 타입: 0x0800 (IPv4)
[IP 헤더 + 데이터]
...
실제 통신 예시
시나리오
같은 네트워크의 PC A가 PC B에게 파일을 전송하는 상황이다.
PC A: 192.168.1.10 (MAC: AA:AA:AA:AA:AA:AA)
PC B: 192.168.1.20 (MAC: BB:BB:BB:BB:BB:BB)
연결: 스위치
전체 과정
1. PC A가 PC B의 MAC 주소를 확인
ARP 테이블 확인
192.168.1.20 → ?
없으므로 ARP Request 전송
2. ARP Request (2계층 브로드캐스트)
[이더넷 프레임]
Preamble: 7바이트
SFD: 1바이트
목적지 MAC: FF:FF:FF:FF:FF:FF
출발지 MAC: AA:AA:AA:AA:AA:AA
타입: 0x0806
데이터: "192.168.1.20의 MAC 주소는?"
FCS: 체크섬
3. 스위치 동작
학습: 포트 1 = AA:AA:AA:AA:AA:AA
플러딩: 포트 2, 3, 4로 전송 (브로드캐스트)
4. PC B가 ARP Reply
[이더넷 프레임]
목적지 MAC: AA:AA:AA:AA:AA:AA
출발지 MAC: BB:BB:BB:BB:BB:BB
타입: 0x0806
데이터: "내 MAC은 BB:BB:BB:BB:BB:BB"
FCS: 체크섬
5. 스위치 동작
학습: 포트 2 = BB:BB:BB:BB:BB:BB
전달: 포트 1로만 전송 (유니캐스트)
6. 실제 파일 전송
[이더넷 프레임]
목적지 MAC: BB:BB:BB:BB:BB:BB
출발지 MAC: AA:AA:AA:AA:AA:AA
타입: 0x0800 (IPv4)
데이터: [IP 헤더 + TCP 헤더 + 파일 데이터]
FCS: 체크섬
7. 스위치 동작
MAC 테이블 확인: BB는 포트 2
전달: 포트 2로만 전송
이렇게 2계층에서는 MAC 주소를 기반으로 같은 네트워크 내에서 효율적으로 데이터를 전달한다.
2계층 장비들
1. 스위치 (Switch)
가장 대표적인 2계층 장비이다.
종류:
- 언매니지드 스위치: 설정 불가, 꽂으면 바로 작동
- 매니지드 스위치: VLAN, QoS, 포트 미러링 등 설정 가능
- L3 스위치: 3계층 기능(라우팅)도 지원
주요 기능:
- MAC 주소 학습
- 프레임 전달
- 루프 방지 (STP)
- VLAN 지원
2. 브리지 (Bridge)
두 개의 네트워크 세그먼트를 연결하는 장비이다. 현재는 스위치로 대체되어 거의 사용하지 않는다.
세그먼트 A ← 브리지 → 세그먼트 B
3. 무선 AP (Access Point)
유선 네트워크와 무선 네트워크를 연결한다.
유선 스위치 ← AP → 무선 장비들
무선 환경에서도 MAC 주소를 사용해 프레임을 전달한다.
VLAN (Virtual LAN)
VLAN이란?
하나의 물리적 스위치를 여러 개의 논리적 스위치로 나누는 기술이다.
[스위치]
포트 1-8: VLAN 10 (영업팀)
포트 9-16: VLAN 20 (개발팀)
포트 17-24: VLAN 30 (관리팀)
VLAN의 장점
1. 보안: 다른 VLAN끼리는 통신 불가
영업팀(VLAN 10) ⊗ 개발팀(VLAN 20)
2. 브로드캐스트 도메인 분리: 불필요한 트래픽 차단
VLAN 10의 브로드캐스트는 VLAN 10 내부에만
3. 유연한 네트워크 구성: 물리적 위치와 무관하게 그룹화
1층 일부 + 2층 일부 = VLAN 10
VLAN 태깅
프레임에 VLAN ID를 추가하는 기술이다. IEEE 802.1Q 표준을 사용한다.
[일반 이더넷 프레임]
목적지 MAC | 출발지 MAC | 타입 | 데이터 | FCS
[VLAN 태그가 추가된 프레임]
목적지 MAC | 출발지 MAC | [VLAN 태그] | 타입 | 데이터 | FCS
└─ 4바이트
VLAN 태그 구조:
TPID (2바이트): 0x8100 (VLAN임을 표시)
TCI (2바이트): VLAN ID (12비트) + 우선순위 (3비트) + CFI (1비트)
충돌과 충돌 도메인
충돌 (Collision)
두 장비가 동시에 데이터를 전송하면 충돌이 발생한다.
PC A ────┐
├──→ 충돌! ✗
PC B ────┘
CSMA/CD
이더넷은 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)로 충돌을 처리한다.
1. 전송 전에 매체 확인 (누가 쓰고 있나?)
2. 비어 있으면 전송
3. 충돌 감지 시 즉시 중단
4. 랜덤 시간 대기 후 재시도
충돌 도메인
충돌이 발생할 수 있는 영역이다.
허브 사용 시:
PC A ─┐
PC B ─┼─ 허브
PC C ─┘
└─ 하나의 충돌 도메인 (모두 충돌 가능)
스위치 사용 시:
PC A ─┬─ 스위치 ─┬─ PC D
PC B ─┘ └─ PC E
└─ 각 포트가 독립된 충돌 도메인
스위치는 각 포트를 별도의 충돌 도메인으로 분리한다. 그래서 현대 네트워크에서는 충돌이 거의 발생하지 않는다.
전이중 vs 반이중
반이중 (Half-Duplex)
한 번에 한 방향으로만 통신할 수 있다.
A → B (송신)
A ← B (수신)
동시 불가!
허브 환경에서 사용한다.
전이중 (Full-Duplex)
양방향 동시 통신이 가능하다.
A ⇄ B (송수신 동시)
스위치 환경에서 사용하며, 충돌이 발생하지 않는다. 현대 이더넷의 표준이다.
실무에서의 2계층 문제 해결
MAC 주소 확인
# Windows
ipconfig /all
# Linux/Mac
ifconfig
ip addr
```
출력:
```
Physical Address: AA:AA:AA:AA:AA:AA
ARP 테이블 확인
# Windows
arp -a
# Linux/Mac
arp -n
```
### 스위치 MAC 테이블 확인
```
Switch> show mac address-table
네트워크 연결 문제 진단
1단계: 물리적 연결 확인
- 케이블 연결 상태
- LED 상태 확인
2단계: 2계층 확인
# 같은 네트워크의 다른 장비에 ping
ping 192.168.1.1
성공하면 2계층은 정상이다.
3단계: MAC 주소 충돌 확인
# ARP 테이블에서 중복 확인
arp -a
```
---
## 루프 문제와 STP
### 루프 문제
스위치끼리 원형으로 연결되면 브로드캐스트 스톰이 발생한다.
```
Switch A ──┐
│ │
└─ Switch B
```
브로드캐스트가 무한 순환하면서 네트워크 마비를 일으킨다.
### STP (Spanning Tree Protocol)
루프를 방지하는 프로토콜이다.
```
Switch A ──┐
│ │ (차단)
└─ Switch B
자동으로 하나의 경로를 차단해서 논리적 트리 구조를 만든다.
동작 원리:
- Root Bridge 선출 (가장 낮은 Bridge ID)
- 각 스위치에서 Root까지 최적 경로 계산
- 불필요한 포트는 Blocking 상태로 전환
- 링크 장애 시 자동으로 경로 재구성
마치며
2계층은 같은 네트워크 내에서 MAC 주소를 기반으로 데이터를 전달하는 역할을 한다. 이더넷 프로토콜을 사용하며, 스위치가 MAC 주소 테이블을 관리하면서 효율적으로 프레임을 전달한다.
허브 시대에는 충돌과 브로드캐스트로 인한 성능 저하가 심했지만, 스위치의 등장으로 충돌 도메인이 분리되고 유니캐스트 전달이 가능해졌다. 현대 네트워크는 대부분 전이중 스위칭 환경에서 동작한다.
VLAN으로 논리적 네트워크 분리가 가능하고, STP로 루프를 방지한다. 2계층의 동작 원리를 이해하면 네트워크 문제를 더 빠르게 진단하고 해결할 수 있다.
다음 글에서는 3계층에서 서로 다른 네트워크를 어떻게 연결하는지 알아보자.
'TechKnowledge > 네트워크' 카테고리의 다른 글
| OSI 3계층의 기능과 역할(IP 통신) (1) | 2025.05.14 |
|---|
