데이터링크 계층
데이터링크 계층¶
개요¶
데이터링크 계층(Data Link Layer)은 OSI 모델의 2계층으로, 인접한 노드 간의 신뢰성 있는 데이터 전송을 담당합니다. 물리 계층의 비트 스트림을 프레임 단위로 구성하고, MAC 주소를 이용한 물리적 주소 지정, 오류 검출, 매체 접근 제어 등의 기능을 수행합니다. 이 레슨에서는 MAC 주소, 프레임 구조, 이더넷, 스위치 동작 원리, ARP 프로토콜 등을 학습합니다.
난이도: ⭐⭐ (초급-중급)
목차¶
- 데이터링크 계층의 역할
- MAC 주소
- 프레임 구조
- 이더넷 (IEEE 802.3)
- 스위치 동작 원리
- ARP (Address Resolution Protocol)
- 충돌 도메인과 브로드캐스트 도메인
- 연습 문제
1. 데이터링크 계층의 역할¶
데이터링크 계층의 정의¶
┌─────────────────────────────────────────────────────────────────┐
│ 데이터링크 계층 (Data Link Layer) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ "인접한 노드 간의 신뢰성 있는 데이터 전송을 담당하는 계층" │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 네트워크 계층 (IP 패킷) │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ 데이터링크 계층 │ │ │
│ │ │ │ │ │
│ │ │ - 프레이밍 │ │ │
│ │ │ - MAC 주소 지정 │ │ │
│ │ │ - 오류 검출 │ │ │
│ │ │ - 매체 접근 제어 │ │ │
│ │ │ │ │ │
│ │ └───────────────┬─────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 물리 계층 (비트 스트림) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 노드 대 노드(Node-to-Node) vs 종단 대 종단(End-to-End): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 호스트A 라우터1 라우터2 호스트B │ │
│ │ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │ │
│ │ │ │◄────►│ │◄────►│ │◄────►│ │ │ │
│ │ └───┘ └───┘ └───┘ └───┘ │ │
│ │ ◄─L2──► ◄─L2──► ◄─L2──► │ │
│ │ 노드 간 노드 간 노드 간 │ │
│ │ │ │
│ │ ◄─────────────── L3 (IP) ───────────────► │ │
│ │ 종단 간 (End-to-End) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
데이터링크 계층의 하위 계층¶
┌─────────────────────────────────────────────────────────────────┐
│ 데이터링크 계층의 두 하위 계층 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 데이터링크 계층은 두 개의 하위 계층으로 구성됩니다: │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ LLC (Logical Link Control) │ │ │
│ │ │ 논리적 링크 제어 │ │ │
│ │ │ │ │ │
│ │ │ - 상위 계층(네트워크)과의 인터페이스 │ │ │
│ │ │ - 흐름 제어, 오류 제어 │ │ │
│ │ │ - 다중화 (여러 네트워크 프로토콜 지원) │ │ │
│ │ │ - IEEE 802.2 │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ MAC (Media Access Control) │ │ │
│ │ │ 매체 접근 제어 │ │ │
│ │ │ │ │ │
│ │ │ - 물리적 주소 지정 (MAC 주소) │ │ │
│ │ │ - 프레이밍 (프레임 경계 정의) │ │ │
│ │ │ - 매체 접근 방식 결정 (CSMA/CD, CSMA/CA) │ │ │
│ │ │ - 오류 검출 (CRC) │ │ │
│ │ │ - IEEE 802.3 (이더넷), 802.11 (Wi-Fi) │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 현재 대부분의 이더넷에서는 LLC를 사용하지 않고 │
│ EtherType 필드로 상위 프로토콜을 식별합니다. │
│ │
└─────────────────────────────────────────────────────────────────┘
주요 기능 상세¶
┌─────────────────────────────────────────────────────────────────┐
│ 데이터링크 계층의 주요 기능 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 프레이밍 (Framing) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 비트 스트림을 의미 있는 프레임 단위로 구성 │ │
│ │ │ │
│ │ 비트 스트림: 101101001011010010110100... │ │
│ │ ↓ │ │
│ │ 프레임: [헤더| 데이터 |트레일러] │ │
│ │ │ │
│ │ 프레임 구분 방법: │ │
│ │ - 길이 기반: 프레임 크기 명시 │ │
│ │ - 플래그 기반: 시작/끝 표시자 (예: HDLC의 01111110) │ │
│ │ - 프리앰블: 이더넷의 시작 패턴 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 2. 물리적 주소 지정 (Physical Addressing) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ MAC 주소를 사용하여 같은 네트워크 내 장치 식별 │ │
│ │ │ │
│ │ 예: 00:1A:2B:3C:4D:5E │ │
│ │ ↑ ↑ │ │
│ │ OUI (벤더) 고유 번호 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 3. 오류 검출 (Error Detection) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 전송 중 발생한 오류 검출 (오류 수정은 제한적) │ │
│ │ │ │
│ │ 방법: │ │
│ │ - CRC (Cyclic Redundancy Check): 가장 일반적 │ │
│ │ - 패리티 비트: 단순하지만 제한적 │ │
│ │ - 체크섬: 합계 기반 │ │
│ │ │ │
│ │ 오류 발견 시: 해당 프레임 폐기 (재전송은 상위 계층) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 4. 매체 접근 제어 (Media Access Control) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 공유 매체에서 언제 전송할지 결정 │ │
│ │ │ │
│ │ 방식: │ │
│ │ - CSMA/CD: 이더넷 (충돌 감지) │ │
│ │ - CSMA/CA: 무선 (충돌 회피) │ │
│ │ - 토큰 패싱: 토큰 링 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 5. 흐름 제어 (Flow Control) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 수신자가 처리할 수 있는 속도로 전송 조절 │ │
│ │ │ │
│ │ - 일부 데이터링크 프로토콜에서만 지원 │ │
│ │ - 이더넷: PAUSE 프레임 (802.3x) │ │
│ │ - 대부분은 TCP/IP의 흐름 제어에 의존 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
2. MAC 주소¶
MAC 주소의 구조¶
┌─────────────────────────────────────────────────────────────────┐
│ MAC 주소 (Media Access Control Address) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정의: 네트워크 인터페이스에 할당된 고유한 물리적 주소 │
│ "하드웨어 주소" 또는 "이더넷 주소"라고도 함 │
│ │
│ 구조 (48비트 = 6바이트): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 00:1A:2B:3C:4D:5E │ │
│ │ ├─────┤ ├─────────┤ │ │
│ │ OUI NIC 고유번호 │ │
│ │ (24비트) (24비트) │ │
│ │ │ │
│ │ OUI (Organizationally Unique Identifier): │ │
│ │ - 제조사 식별 코드 (IEEE에서 할당) │ │
│ │ - 예: 00:1A:2B = 특정 제조사 │ │
│ │ │ │
│ │ NIC 고유 번호: │ │
│ │ - 제조사가 각 장치에 부여 │ │
│ │ - 같은 OUI 내에서 유일해야 함 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 표기 방식: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ - 콜론 구분: 00:1A:2B:3C:4D:5E (Unix/Linux) │ │
│ │ - 대시 구분: 00-1A-2B-3C-4D-5E (Windows) │ │
│ │ - 점 구분: 001A.2B3C.4D5E (Cisco) │ │
│ │ - 연속: 001A2B3C4D5E │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 바이트 구조 상세: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 첫 번째 바이트의 비트 구조: │ │
│ │ ┌─┬─┬─┬─┬─┬─┬─┬─┐ │ │
│ │ │7│6│5│4│3│2│1│0│ │ │
│ │ └─┴─┴─┴─┴─┴─┴─┴─┘ │ │
│ │ │ │ │ │
│ │ │ └── I/G (Individual/Group) │ │
│ │ │ 0: 유니캐스트 (개별 주소) │ │
│ │ │ 1: 멀티캐스트 (그룹 주소) │ │
│ │ │ │ │
│ │ └──── U/L (Universal/Local) │ │
│ │ 0: 전역적 고유 (IEEE 할당) │ │
│ │ 1: 로컬 관리 (사용자 설정) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
특수 MAC 주소¶
┌─────────────────────────────────────────────────────────────────┐
│ 특수 MAC 주소 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 브로드캐스트 주소 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ FF:FF:FF:FF:FF:FF │ │
│ │ │ │
│ │ - 모든 비트가 1 │ │
│ │ - 같은 네트워크의 모든 장치에 전송 │ │
│ │ - ARP 요청에 사용 │ │
│ │ │ │
│ │ 송신자 ─────────► 모든 호스트 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 2. 멀티캐스트 주소 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 첫 번째 바이트의 LSB = 1 (홀수) │ │
│ │ │ │
│ │ IPv4 멀티캐스트: 01:00:5E:xx:xx:xx │ │
│ │ IPv6 멀티캐스트: 33:33:xx:xx:xx:xx │ │
│ │ STP: 01:80:C2:00:00:00 │ │
│ │ │ │
│ │ 송신자 ─────────► 특정 그룹의 호스트만 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 3. 유니캐스트 주소 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 첫 번째 바이트의 LSB = 0 (짝수) │ │
│ │ │ │
│ │ 예: 00:1A:2B:3C:4D:5E │ │
│ │ │ │
│ │ 송신자 ─────────► 특정 한 호스트 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 주요 OUI 예시: │
│ ┌──────────────────┬───────────────────────────────────────┐ │
│ │ OUI │ 제조사 │ │
│ ├──────────────────┼───────────────────────────────────────┤ │
│ │ 00:00:0C │ Cisco │ │
│ │ 00:0C:29 │ VMware │ │
│ │ 00:50:56 │ VMware │ │
│ │ 00:1A:A0 │ Dell │ │
│ │ 00:25:00 │ Apple │ │
│ │ AC:DE:48 │ Intel │ │
│ │ F0:1F:AF │ Hewlett Packard │ │
│ └──────────────────┴───────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
MAC 주소 확인 명령어¶
┌─────────────────────────────────────────────────────────────────┐
│ MAC 주소 확인 명령어 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Windows: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ C:\> ipconfig /all │ │
│ │ │ │
│ │ Ethernet adapter Ethernet0: │ │
│ │ Physical Address. . . . . . . : 00-1A-2B-3C-4D-5E │ │
│ │ IPv4 Address. . . . . . . . . : 192.168.1.100 │ │
│ │ │ │
│ │ C:\> getmac │ │
│ │ Physical Address Transport Name │ │
│ │ =================== ================================= │ │
│ │ 00-1A-2B-3C-4D-5E \Device\Tcpip_{GUID} │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Linux/Mac: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ $ ifconfig │ │
│ │ eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> │ │
│ │ ether 00:1a:2b:3c:4d:5e txqueuelen 1000 │ │
│ │ inet 192.168.1.100 netmask 255.255.255.0 │ │
│ │ │ │
│ │ $ ip link show │ │
│ │ 2: eth0: <BROADCAST,MULTICAST,UP> │ │
│ │ link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff│ │
│ │ │ │
│ │ Mac: │ │
│ │ $ networksetup -listallhardwareports │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
3. 프레임 구조¶
이더넷 프레임 구조¶
┌─────────────────────────────────────────────────────────────────┐
│ 이더넷 프레임 구조 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 이더넷 II (DIX) 프레임 (가장 일반적): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌───────┬───────┬───────┬───────┬───────────┬───────┐ │ │
│ │ │ Pream │ SFD │ Dest │ Src │EtherType│ Data │ │ │
│ │ │ ble │ │ MAC │ MAC │ /Len │ Payload │ │ │
│ │ │ 7B │ 1B │ 6B │ 6B │ 2B │46-1500B │ │ │
│ │ └───────┴───────┴───────┴───────┴───────┴───────────┘ │ │
│ │ │ │
│ │ ┌───────┐ │ │
│ │ │ FCS │ ← Frame Check Sequence (CRC-32) │ │
│ │ │ 4B │ │ │
│ │ └───────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 필드 설명: │
│ ┌───────────────┬──────────────────────────────────────────┐ │
│ │ 필드 │ 설명 │ │
│ ├───────────────┼──────────────────────────────────────────┤ │
│ │ Preamble │ 동기화 패턴 (10101010... 7바이트) │ │
│ │ (7 bytes) │ │ │
│ ├───────────────┼──────────────────────────────────────────┤ │
│ │ SFD │ 프레임 시작 표시 (10101011) │ │
│ │ (1 byte) │ Start Frame Delimiter │ │
│ ├───────────────┼──────────────────────────────────────────┤ │
│ │ Dest MAC │ 목적지 MAC 주소 │ │
│ │ (6 bytes) │ │ │
│ ├───────────────┼──────────────────────────────────────────┤ │
│ │ Src MAC │ 출발지 MAC 주소 │ │
│ │ (6 bytes) │ │ │
│ ├───────────────┼──────────────────────────────────────────┤ │
│ │ EtherType │ 상위 프로토콜 식별 │ │
│ │ (2 bytes) │ 0x0800=IPv4, 0x0806=ARP, 0x86DD=IPv6 │ │
│ ├───────────────┼──────────────────────────────────────────┤ │
│ │ Payload │ 상위 계층 데이터 (IP 패킷 등) │ │
│ │ (46-1500 B) │ 최소 46, 최대 1500 (Jumbo: 9000) │ │
│ ├───────────────┼──────────────────────────────────────────┤ │
│ │ FCS │ 오류 검출용 CRC-32 체크섬 │ │
│ │ (4 bytes) │ │ │
│ └───────────────┴──────────────────────────────────────────┘ │
│ │
│ 프레임 크기: │
│ - 최소: 64 바이트 (헤더 14 + 페이로드 46 + FCS 4) │
│ - 최대: 1518 바이트 (헤더 14 + 페이로드 1500 + FCS 4) │
│ - Jumbo 프레임: 최대 9000 바이트 페이로드 │
│ │
└─────────────────────────────────────────────────────────────────┘
EtherType 값¶
┌─────────────────────────────────────────────────────────────────┐
│ 주요 EtherType 값 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┬────────────────────────────────────────────┐ │
│ │ EtherType │ 프로토콜 │ │
│ ├──────────────┼────────────────────────────────────────────┤ │
│ │ 0x0800 │ IPv4 (Internet Protocol version 4) │ │
│ │ 0x0806 │ ARP (Address Resolution Protocol) │ │
│ │ 0x8035 │ RARP (Reverse ARP) │ │
│ │ 0x8100 │ VLAN (802.1Q) │ │
│ │ 0x86DD │ IPv6 (Internet Protocol version 6) │ │
│ │ 0x8847 │ MPLS (Unicast) │ │
│ │ 0x8848 │ MPLS (Multicast) │ │
│ │ 0x8863 │ PPPoE Discovery │ │
│ │ 0x8864 │ PPPoE Session │ │
│ │ 0x88CC │ LLDP (Link Layer Discovery Protocol) │ │
│ └──────────────┴────────────────────────────────────────────┘ │
│ │
│ * EtherType이 0x0600 미만이면 길이 필드로 해석 (802.3) │
│ * 0x0600 이상이면 EtherType으로 해석 (Ethernet II) │
│ │
└─────────────────────────────────────────────────────────────────┘
CRC-32 오류 검출¶
┌─────────────────────────────────────────────────────────────────┐
│ CRC-32 오류 검출 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ CRC (Cyclic Redundancy Check): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 다항식 나눗셈을 이용한 오류 검출 코드 │ │
│ │ │ │
│ │ 송신: │ │
│ │ ┌────────────────────────────────────┐ │ │
│ │ │ 데이터 (헤더 + 페이로드) │ │ │
│ │ └──────────────────┬─────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌───────────────┐ │ │
│ │ │ CRC-32 계산 │ │ │
│ │ └───────┬───────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌────────────────────────────────────┬──────┐ │ │
│ │ │ 데이터 (헤더 + 페이로드) │ FCS │ │ │
│ │ └────────────────────────────────────┴──────┘ │ │
│ │ │ │
│ │ 수신: │ │
│ │ ┌────────────────────────────────────┬──────┐ │ │
│ │ │ 수신된 데이터 │ FCS │ │ │
│ │ └──────────────────┬─────────────────┴──────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌───────────────┐ │ │
│ │ │ CRC-32 재계산 │ │ │
│ │ └───────┬───────┘ │ │
│ │ │ │ │
│ │ 결과 = 0 │ 결과 ≠ 0 │ │
│ │ ↓ │ ↓ │ │
│ │ 오류 없음 프레임 폐기 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ CRC-32 다항식: x^32 + x^26 + x^23 + ... + 1 │
│ │
│ 검출 가능한 오류: │
│ - 1비트 오류: 100% 검출 │
│ - 2비트 오류: 100% 검출 │
│ - 홀수 개 비트 오류: 100% 검출 │
│ - 버스트 오류 (32비트 이하): 100% 검출 │
│ │
└─────────────────────────────────────────────────────────────────┘
4. 이더넷 (IEEE 802.3)¶
이더넷의 역사와 발전¶
┌─────────────────────────────────────────────────────────────────┐
│ 이더넷의 발전 역사 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 연도 이름 속도 매체 │
│ ─────────────────────────────────────────────────────────────│
│ 1973 Experimental 2.94 Mbps 동축 (Xerox PARC) │
│ 1983 10BASE5 10 Mbps Thick 동축 │
│ 1985 10BASE2 10 Mbps Thin 동축 │
│ 1990 10BASE-T 10 Mbps UTP (Cat3) │
│ 1995 100BASE-TX 100 Mbps UTP (Cat5) │
│ 1998 1000BASE-T 1 Gbps UTP (Cat5e) │
│ 2006 10GBASE-T 10 Gbps UTP (Cat6/6a) │
│ 2016 25GBASE-T 25 Gbps UTP (Cat8) │
│ 2017 40GBASE-T 40 Gbps UTP (Cat8) │
│ │
│ 이더넷 명명 규칙: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 10 BASE - T │ │
│ │ ↓ ↓ ↓ │ │
│ │ 속도 신호방식 매체/인코딩 │ │
│ │ (Mbps) (기저대역) │ │
│ │ │ │
│ │ 속도: 10, 100, 1000, 10G, 25G, 40G, 100G │ │
│ │ 신호: BASE (기저대역), BROAD (광대역-구형) │ │
│ │ 매체: T (Twisted Pair), F/X (Fiber), S (Short wave) │ │
│ │ L (Long wave), C (Copper) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
CSMA/CD (Carrier Sense Multiple Access with Collision Detection)¶
┌─────────────────────────────────────────────────────────────────┐
│ CSMA/CD │
├─────────────────────────────────────────────────────────────────┤
│ │
│ CSMA/CD: 반이중(Half-duplex) 이더넷의 매체 접근 방식 │
│ │
│ 동작 과정: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. Carrier Sense (캐리어 감지) │ │
│ │ ┌──────────┐ │ │
│ │ │ 전송하려는│ │ │
│ │ │ 스테이션 │ │ │
│ │ └─────┬────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────────────────┐ │ │
│ │ │ 매체가 사용 중인가? │ │ │
│ │ └──────────┬───────────────┘ │ │
│ │ │Yes │No │ │
│ │ ▼ ▼ │ │
│ │ 대기 전송 시작 │ │
│ │ │ │
│ │ 2. Multiple Access (다중 접근) │ │
│ │ 여러 스테이션이 동시에 매체 접근 시도 가능 │ │
│ │ │ │
│ │ 3. Collision Detection (충돌 감지) │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ 스테이션 A 스테이션 B │ │ │
│ │ │ │ │ │ │ │
│ │ │ ▼ ▼ │ │ │
│ │ │ ══════════════◄►═══════════════ │ │ │
│ │ │ 충돌 발생! │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 4. 충돌 처리 (Binary Exponential Backoff) │ │
│ │ - 충돌 감지 시 잼 신호 전송 │ │
│ │ - 랜덤 시간 대기 후 재전송 시도 │ │
│ │ - 대기 시간 = 랜덤(0 ~ 2^n - 1) × 슬롯 타임 │ │
│ │ - n = 충돌 횟수 (최대 10) │ │
│ │ - 16번 충돌 후 포기 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ CSMA/CD 흐름도: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ [프레임 준비] → [캐리어 감지] │ │
│ │ │ │ │
│ │ ┌─────────┼─────────┐ │ │
│ │ │ 사용 중 │ 비어있음│ │ │
│ │ ▼ ▼ │ │
│ │ [대기] [전송 시작] │ │
│ │ │ │ │
│ │ ┌─────────┼─────────┐ │ │
│ │ │ 충돌 │ 충돌없음│ │ │
│ │ ▼ ▼ │ │
│ │ [잼 신호] [전송 완료] │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ [백오프] │ │
│ │ │ │ │
│ │ └──────► [캐리어 감지] │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ * 현대 전이중(Full-duplex) 이더넷에서는 CSMA/CD 불필요 │
│ │
└─────────────────────────────────────────────────────────────────┘
이더넷 표준 비교¶
┌─────────────────────────────────────────────────────────────────┐
│ 주요 이더넷 표준 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ UTP 기반: │
│ ┌────────────┬────────┬──────────┬────────┬────────────────┐ │
│ │ 표준 │ 속도 │ 케이블 │ 거리 │ 인코딩 │ │
│ ├────────────┼────────┼──────────┼────────┼────────────────┤ │
│ │ 10BASE-T │ 10Mbps │ Cat3/5 │ 100m │ Manchester │ │
│ │ 100BASE-TX │ 100Mbps│ Cat5 │ 100m │ 4B/5B, MLT-3 │ │
│ │ 1000BASE-T │ 1Gbps │ Cat5e │ 100m │ 4D-PAM5 │ │
│ │ 10GBASE-T │ 10Gbps │ Cat6a │ 100m │ 128-DSQ │ │
│ │ 25GBASE-T │ 25Gbps │ Cat8 │ 30m │ PAM4 │ │
│ └────────────┴────────┴──────────┴────────┴────────────────┘ │
│ │
│ 광섬유 기반: │
│ ┌────────────┬────────┬──────────┬────────┬────────────────┐ │
│ │ 표준 │ 속도 │ 광섬유 │ 거리 │ 파장 │ │
│ ├────────────┼────────┼──────────┼────────┼────────────────┤ │
│ │ 100BASE-FX │ 100Mbps│ MMF │ 2km │ 1310nm │ │
│ │ 1000BASE-SX│ 1Gbps │ MMF │ 550m │ 850nm (Short) │ │
│ │ 1000BASE-LX│ 1Gbps │ SMF │ 10km │ 1310nm (Long) │ │
│ │ 10GBASE-SR │ 10Gbps │ MMF │ 300m │ 850nm │ │
│ │ 10GBASE-LR │ 10Gbps │ SMF │ 10km │ 1310nm │ │
│ │ 40GBASE-SR4│ 40Gbps │ MMF │ 100m │ 850nm (4x10G) │ │
│ │100GBASE-SR4│ 100Gbps│ MMF │ 100m │ 850nm (4x25G) │ │
│ └────────────┴────────┴──────────┴────────┴────────────────┘ │
│ │
│ * MMF = Multi-Mode Fiber, SMF = Single-Mode Fiber │
│ │
└─────────────────────────────────────────────────────────────────┘
5. 스위치 동작 원리¶
스위치의 기능¶
┌─────────────────────────────────────────────────────────────────┐
│ 스위치의 기능 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 스위치: L2(데이터링크) 계층에서 동작하는 네트워크 장비 │
│ MAC 주소를 기반으로 프레임을 전달 │
│ │
│ 허브 vs 스위치: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 허브 (Hub): │ │
│ │ ┌───────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ PC1 ──┬ │ │ │
│ │ │ │ ┌─────┐ │ │ │
│ │ │ PC2 ──┼────│ HUB │──── 모든 포트로 복사 │ │ │
│ │ │ │ └─────┘ │ │ │
│ │ │ PC3 ──┘ │ │ │
│ │ │ │ │ │
│ │ │ - 받은 프레임을 모든 포트로 전송 │ │ │
│ │ │ - 충돌 도메인 = 전체 (하나의 충돌 도메인)│ │ │
│ │ │ │ │ │
│ │ └───────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 스위치 (Switch): │ │
│ │ ┌───────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ PC1 ──┬ │ │ │
│ │ │ │ ┌────────┐ │ │ │
│ │ │ PC2 ──┼────│ SWITCH │──── 목적지만 전송 │ │ │
│ │ │ │ └────────┘ │ │ │
│ │ │ PC3 ──┘ │ │ │ │
│ │ │ ▼ │ │ │
│ │ │ MAC 테이블 참조 │ │ │
│ │ │ │ │ │
│ │ │ - 목적지 MAC을 학습하여 해당 포트로만 전송│ │ │
│ │ │ - 각 포트가 별도의 충돌 도메인 │ │ │
│ │ │ │ │ │
│ │ └───────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
MAC 주소 테이블 (CAM 테이블)¶
┌─────────────────────────────────────────────────────────────────┐
│ MAC 주소 테이블 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ CAM (Content Addressable Memory) 테이블: │
│ MAC 주소와 포트 번호의 매핑 정보 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ MAC 주소 테이블 │ │ │
│ │ ├─────────────────────────┬───────────┬───────────┤ │ │
│ │ │ MAC 주소 │ 포트 │ 타입 │ │ │
│ │ ├─────────────────────────┼───────────┼───────────┤ │ │
│ │ │ 00:1A:2B:3C:4D:5E │ Fa0/1 │ Dynamic │ │ │
│ │ │ 00:1A:2B:3C:4D:5F │ Fa0/2 │ Dynamic │ │ │
│ │ │ 00:1A:2B:3C:4D:60 │ Fa0/3 │ Static │ │ │
│ │ │ 00:1A:2B:3C:4D:61 │ Fa0/4 │ Dynamic │ │ │
│ │ └─────────────────────────┴───────────┴───────────┘ │ │
│ │ │ │
│ │ 타입: │ │
│ │ - Dynamic: 학습으로 자동 추가, 일정 시간 후 만료 │ │
│ │ - Static: 수동 설정, 만료 안 됨 │ │
│ │ - 기본 에이징 타임: 300초 (5분) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ MAC 테이블 확인 (Cisco): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Switch# show mac address-table │ │
│ │ │ │
│ │ Mac Address Table │ │
│ │ ------------------------------------------- │ │
│ │ Vlan Mac Address Type Ports │ │
│ │ ---- ----------- -------- ----- │ │
│ │ 1 001a.2b3c.4d5e DYNAMIC Fa0/1 │ │
│ │ 1 001a.2b3c.4d5f DYNAMIC Fa0/2 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
스위치의 학습과 전달¶
┌─────────────────────────────────────────────────────────────────┐
│ 스위치의 학습과 전달 과정 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 학습 (Learning) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ PC1 (MAC: AA) ──[Fa0/1]─── 스위치 │ │
│ │ │ │
│ │ PC1이 프레임을 전송하면: │ │
│ │ - 출발지 MAC (AA)과 수신 포트 (Fa0/1) 학습 │ │
│ │ - MAC 테이블에 저장: AA → Fa0/1 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 2. 전달 (Forwarding) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 목적지 MAC이 테이블에 있는 경우: │ │
│ │ - 해당 포트로만 프레임 전달 (Unicast) │ │
│ │ │ │
│ │ PC1 (AA) ──[Fa0/1]──┬──[Fa0/2]── PC2 (BB) │ │
│ │ │ │ │
│ │ 스위치 │ │
│ │ BB → Fa0/2 (테이블에 있음) │ │
│ │ │ │ │
│ │ └──[Fa0/3]── PC3 (CC) │ │
│ │ (전달 안 함) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 3. 플러딩 (Flooding) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 목적지 MAC이 테이블에 없는 경우: │ │
│ │ - 수신 포트를 제외한 모든 포트로 전달 │ │
│ │ │ │
│ │ PC1 (AA) ──[Fa0/1]──┬──[Fa0/2]── PC2 (BB) ←전달 │ │
│ │ │ │ │
│ │ 스위치 │ │
│ │ XX → ? (테이블에 없음) │ │
│ │ │ │ │
│ │ └──[Fa0/3]── PC3 (CC) ←전달 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 4. 필터링 (Filtering) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 출발지와 목적지가 같은 포트인 경우: │ │
│ │ - 프레임을 폐기 (전달하지 않음) │ │
│ │ │ │
│ │ PC1 (AA) ──┬──[Fa0/1]── 스위치 │ │
│ │ │ │ │ │
│ │ PC2 (BB) ──┘ │ AA → BB 프레임 │ │
│ │ │ 둘 다 Fa0/1 → 폐기 │ │
│ │ │ │ │
│ │ └── (다른 포트로 전달 안 함) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
스위치의 전달 방식¶
┌─────────────────────────────────────────────────────────────────┐
│ 스위치의 전달 방식 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Store-and-Forward (저장 후 전달) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ [프레임 수신] → [전체 저장] → [CRC 검사] → [전달] │ │
│ │ │ │
│ │ - 전체 프레임을 받은 후 FCS로 오류 검사 │ │
│ │ - 오류 있는 프레임 폐기 │ │
│ │ - 가장 안정적, 약간의 지연 │ │
│ │ - 현대 스위치의 기본 방식 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 2. Cut-Through (즉시 전달) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ [목적지 MAC 확인] → [즉시 전달 시작] │ │
│ │ (처음 6바이트만) │ │
│ │ │ │
│ │ - 목적지 MAC만 확인하고 바로 전달 │ │
│ │ - 가장 낮은 지연 │ │
│ │ - 오류 프레임도 전달될 수 있음 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 3. Fragment-Free (조각 없는 전달) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ [처음 64바이트 수신] → [전달] │ │
│ │ │ │
│ │ - 최소 프레임 크기(64바이트)까지만 확인 │ │
│ │ - 대부분의 충돌로 인한 오류 검출 │ │
│ │ - Cut-Through와 Store-and-Forward의 절충 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 비교: │
│ ┌───────────────────┬──────────┬──────────┬────────────────┐ │
│ │ 방식 │ 지연 │ 오류검출│ 용도 │ │
│ ├───────────────────┼──────────┼──────────┼────────────────┤ │
│ │ Store-and-Forward │ 높음 │ 완전 │ 일반적 │ │
│ │ Cut-Through │ 낮음 │ 없음 │ 저지연 환경 │ │
│ │ Fragment-Free │ 중간 │ 부분 │ 절충 │ │
│ └───────────────────┴──────────┴──────────┴────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
6. ARP (Address Resolution Protocol)¶
ARP의 필요성¶
┌─────────────────────────────────────────────────────────────────┐
│ ARP의 필요성 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 문제: IP 통신을 위해서는 목적지 MAC 주소가 필요함 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 호스트 A 호스트 B │ │
│ │ IP: 192.168.1.10 IP: 192.168.1.20 │ │
│ │ MAC: AA:AA:AA:AA:AA:AA MAC: BB:BB:BB:BB:BB:BB │ │
│ │ │ │
│ │ │ │ │ │
│ │ │ 192.168.1.20으로 패킷 전송 │ │ │
│ │ │ │ │ │
│ │ │ 목적지 MAC = ??? │ │ │
│ │ │ │ │ │
│ │ └─────────── ? ───────────────►│ │ │
│ │ │ │
│ │ IP 주소는 알지만, MAC 주소를 모름! │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 해결: ARP를 사용하여 IP 주소 → MAC 주소 변환 │
│ │
└─────────────────────────────────────────────────────────────────┘
ARP 동작 과정¶
┌─────────────────────────────────────────────────────────────────┐
│ ARP 동작 과정 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. ARP Request (브로드캐스트) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 호스트 A (192.168.1.10) │ │
│ │ │ │ │
│ │ │ "192.168.1.20의 MAC 주소가 뭐야?" │ │
│ │ │ │ │
│ │ ▼ (브로드캐스트: FF:FF:FF:FF:FF:FF) │ │
│ │ ════════════════════════════════════════════ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ 호스트 B 호스트 C 호스트 D │ │
│ │ (1.20) (1.30) (1.40) │ │
│ │ "내 IP!" "내 IP 아님" "내 IP 아님" │ │
│ │ (무시) (무시) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 2. ARP Reply (유니캐스트) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 호스트 B (192.168.1.20, MAC: BB:BB...) │ │
│ │ │ │ │
│ │ │ "내 MAC 주소는 BB:BB:BB:BB:BB:BB야" │ │
│ │ │ │ │
│ │ ▼ (유니캐스트: AA:AA:AA:AA:AA:AA) │ │
│ │ ────────────────────────────────────► │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 호스트 A │ │
│ │ (ARP 캐시 업데이트) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 3. ARP 캐시 저장 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 호스트 A의 ARP 캐시: │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ IP 주소 │ MAC 주소 │ 타입 │ │ │
│ │ ├─────────────────┼───────────────────┼──────────┤ │ │
│ │ │ 192.168.1.20 │ BB:BB:BB:BB:BB:BB│ Dynamic │ │ │
│ │ │ 192.168.1.1 │ CC:CC:CC:CC:CC:CC│ Dynamic │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ - 이후 통신 시 캐시 사용 (ARP 재요청 불필요) │ │
│ │ - 캐시 만료 시간: 보통 2-20분 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
ARP 패킷 구조¶
┌─────────────────────────────────────────────────────────────────┐
│ ARP 패킷 구조 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 0 8 16 24 32 │ │
│ │ ├───────────────┬───────────────┤ │ │
│ │ │ Hardware Type │ Protocol Type │ │ │
│ │ │ (2B) │ (2B) │ │ │
│ │ ├───────────────┼───────────────┤ │ │
│ │ │ HW Addr Len │ Proto Addr Len│ Opcode │ │
│ │ │ (1B) │ (1B) │ (2B) │ │
│ │ ├───────────────┴───────────────┴───────────────┤ │ │
│ │ │ Sender Hardware Address (6B) │ │ │
│ │ ├───────────────────────────────────────────────┤ │ │
│ │ │ Sender Protocol Address (4B) │ │ │
│ │ ├───────────────────────────────────────────────┤ │ │
│ │ │ Target Hardware Address (6B) │ │ │
│ │ ├───────────────────────────────────────────────┤ │ │
│ │ │ Target Protocol Address (4B) │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 필드 설명: │
│ ┌─────────────────────┬────────────────────────────────────┐ │
│ │ Hardware Type │ 1 = 이더넷 │ │
│ │ Protocol Type │ 0x0800 = IPv4 │ │
│ │ HW Addr Len │ 6 (MAC 주소 길이) │ │
│ │ Proto Addr Len │ 4 (IPv4 주소 길이) │ │
│ │ Opcode │ 1 = Request, 2 = Reply │ │
│ │ Sender HW Addr │ 송신자 MAC 주소 │ │
│ │ Sender Proto Addr │ 송신자 IP 주소 │ │
│ │ Target HW Addr │ 목표 MAC 주소 (Request: 00:00...) │ │
│ │ Target Proto Addr │ 목표 IP 주소 │ │
│ └─────────────────────┴────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
ARP 캐시 명령어¶
┌─────────────────────────────────────────────────────────────────┐
│ ARP 캐시 명령어 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ARP 캐시 확인: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Windows: │ │
│ │ C:\> arp -a │ │
│ │ Interface: 192.168.1.100 │ │
│ │ Internet Address Physical Address Type │ │
│ │ 192.168.1.1 aa-bb-cc-dd-ee-ff dynamic │ │
│ │ 192.168.1.20 11-22-33-44-55-66 dynamic │ │
│ │ │ │
│ │ Linux/Mac: │ │
│ │ $ arp -a │ │
│ │ ? (192.168.1.1) at aa:bb:cc:dd:ee:ff on en0 │ │
│ │ ? (192.168.1.20) at 11:22:33:44:55:66 on en0 │ │
│ │ │ │
│ │ Linux (ip 명령): │ │
│ │ $ ip neigh show │ │
│ │ 192.168.1.1 dev eth0 lladdr aa:bb:cc:dd:ee:ff REACHABLE│ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ARP 캐시 삭제: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Windows: │ │
│ │ C:\> arp -d * (전체 삭제) │ │
│ │ C:\> arp -d 192.168.1.1 (특정 항목) │ │
│ │ │ │
│ │ Linux: │ │
│ │ $ sudo arp -d 192.168.1.1 │ │
│ │ $ sudo ip neigh del 192.168.1.1 dev eth0 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 정적 ARP 추가: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Windows: │ │
│ │ C:\> arp -s 192.168.1.50 aa-bb-cc-dd-ee-ff │ │
│ │ │ │
│ │ Linux: │ │
│ │ $ sudo arp -s 192.168.1.50 aa:bb:cc:dd:ee:ff │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
7. 충돌 도메인과 브로드캐스트 도메인¶
충돌 도메인 (Collision Domain)¶
┌─────────────────────────────────────────────────────────────────┐
│ 충돌 도메인 (Collision Domain) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정의: 동시에 전송 시 충돌이 발생할 수 있는 네트워크 영역 │
│ │
│ 허브의 충돌 도메인: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 하나의 충돌 도메인 │ │ │
│ │ │ │ │ │
│ │ │ PC1 ──┐ │ │ │
│ │ │ │ │ │ │
│ │ │ PC2 ──┼────[ HUB ] │ │ │
│ │ │ │ │ │ │
│ │ │ PC3 ──┘ │ │ │
│ │ │ │ │ │
│ │ │ * 모든 장치가 같은 충돌 도메인 │ │ │
│ │ │ * PC1과 PC2가 동시 전송 시 충돌 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 스위치의 충돌 도메인: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │
│ │ │ CD 1 │ │ CD 2 │ │ CD 3 │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ PC1 │ │ PC2 │ │ PC3 │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │
│ │ └──┼───┘ └──┼───┘ └──┼───┘ │ │
│ │ │ │ │ │ │
│ │ └──────────┼──────────┘ │ │
│ │ │ │ │
│ │ [ SWITCH ] │ │
│ │ │ │
│ │ * 각 포트가 별도의 충돌 도메인 │ │
│ │ * PC1과 PC2가 동시 전송 가능 (충돌 없음) │ │
│ │ * Full-duplex 사용 시 충돌 자체가 없음 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
브로드캐스트 도메인 (Broadcast Domain)¶
┌─────────────────────────────────────────────────────────────────┐
│ 브로드캐스트 도메인 (Broadcast Domain) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정의: 브로드캐스트 프레임이 전달되는 네트워크 영역 │
│ │
│ 스위치의 브로드캐스트 도메인: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 하나의 브로드캐스트 도메인 │ │ │
│ │ │ │ │ │
│ │ │ PC1 ──┐ │ │ │
│ │ │ │ │ │ │
│ │ │ PC2 ──┼────[ SWITCH ] │ │ │
│ │ │ │ │ │ │
│ │ │ PC3 ──┘ │ │ │
│ │ │ │ │ │
│ │ │ * 브로드캐스트는 모든 포트로 전달 │ │ │
│ │ │ * 스위치는 브로드캐스트 도메인을 나누지 못함 │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 라우터의 브로드캐스트 도메인: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌────────────────────┐ ┌────────────────────┐ │ │
│ │ │ 브로드캐스트 │ │ 브로드캐스트 │ │ │
│ │ │ 도메인 1 │ │ 도메인 2 │ │ │
│ │ │ │ │ │ │ │
│ │ │ PC1 ──┐ │ │ ┌── PC3 │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ PC2 ──┼──[SW1] │ │ [SW2]──┼── PC4 │ │ │
│ │ │ │ │ │ │ │
│ │ └──────────┬──────────┘ └──────────┬─────────┘ │ │
│ │ │ │ │ │
│ │ └────────[ ROUTER ]────────┘ │ │
│ │ │ │
│ │ * 라우터는 브로드캐스트를 전달하지 않음 │ │
│ │ * 각 인터페이스가 별도의 브로드캐스트 도메인 │ │
│ │ * VLAN도 브로드캐스트 도메인을 분리 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
장비별 도메인 비교¶
┌─────────────────────────────────────────────────────────────────┐
│ 장비별 도메인 비교 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────┬─────────────────┬─────────────────────────┐ │
│ │ 장비 │ 충돌 도메인 │ 브로드캐스트 도메인 │ │
│ ├───────────────┼─────────────────┼─────────────────────────┤ │
│ │ 허브 │ 분리 안 함 │ 분리 안 함 │ │
│ │ (Hub) │ (1개) │ (1개) │ │
│ ├───────────────┼─────────────────┼─────────────────────────┤ │
│ │ 브리지 │ 분리함 │ 분리 안 함 │ │
│ │ (Bridge) │ (포트별) │ (1개) │ │
│ ├───────────────┼─────────────────┼─────────────────────────┤ │
│ │ 스위치 │ 분리함 │ 분리 안 함 │ │
│ │ (Switch) │ (포트별) │ (1개, VLAN 제외) │ │
│ ├───────────────┼─────────────────┼─────────────────────────┤ │
│ │ 라우터 │ 분리함 │ 분리함 │ │
│ │ (Router) │ (포트별) │ (인터페이스별) │ │
│ └───────────────┴─────────────────┴─────────────────────────┘ │
│ │
│ 예시 네트워크: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ 브로드캐스트 도메인 1 │ │ │
│ │ │ │ │ │
│ │ │ [PC1]──┐ ┌──[PC3] │ │ │
│ │ │ CD:1 │ │ CD:3 │ │ │
│ │ │ │ │ │ │ │
│ │ │ [HUB]──[SWITCH] │ │ │
│ │ │ │ │ │ │ │
│ │ │ [PC2]──┘ │ │ │ │
│ │ │ CD:1 │ [PC4] │ │ │
│ │ │ └────────────┘ CD:4 │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────┬───────────────────┘ │ │
│ │ │ │ │
│ │ [ROUTER] │ │
│ │ │ │ │
│ │ ┌──────────────────────────────┴───────────────────┐ │ │
│ │ │ 브로드캐스트 도메인 2 │ │ │
│ │ │ │ │ │
│ │ │ [SWITCH] │ │ │
│ │ │ │ │ │ │
│ │ │ [PC5]──┴──[PC6] │ │ │
│ │ │ CD:5 CD:6 │ │ │
│ │ │ │ │ │
│ │ └───────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 충돌 도메인: 6개 (HUB 연결은 1개로 계산) │ │
│ │ 브로드캐스트 도메인: 2개 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
8. 연습 문제¶
기초 문제¶
1. MAC 주소의 구조를 설명하고, OUI가 의미하는 것을 설명하시오.
2. 다음 중 브로드캐스트 MAC 주소는? - (a) 00:00:00:00:00:00 - (b) FF:FF:FF:FF:FF:FF - (c) 01:00:5E:00:00:01 - (d) AA:BB:CC:DD:EE:FF
3. 스위치가 알 수 없는 목적지 MAC 주소의 프레임을 수신했을 때 어떻게 처리하는가?
4. 이더넷 프레임의 최소 크기가 64바이트인 이유를 CSMA/CD와 연관지어 설명하시오.
응용 문제¶
5. 다음 네트워크에서 충돌 도메인과 브로드캐스트 도메인의 수를 구하시오.
[PC1]──┬──[HUB]──┬──[PC2]
│ │
└──[SWITCH]──┬──[PC3]
│
[ROUTER]
│
[SWITCH]──┬──[PC4]
└──[PC5]
6. ARP 스푸핑(Spoofing) 공격이 어떻게 작동하는지 설명하고, 방어 방법을 제시하시오.
7. PC A(192.168.1.10)가 PC B(192.168.1.20)에게 데이터를 처음 전송할 때, L2와 L3 관점에서 어떤 과정이 발생하는지 순서대로 설명하시오.
심화 문제¶
8. Store-and-Forward와 Cut-Through 스위칭 방식의 차이점과 각각의 장단점을 설명하시오.
9. 같은 스위치에 연결된 두 PC가 Full-duplex 모드로 통신할 때 CSMA/CD가 사용되지 않는 이유를 설명하시오.
10. VLAN이 브로드캐스트 도메인을 어떻게 분리하는지 설명하시오.
정답
**1.** - MAC 주소: 48비트(6바이트), 16진수 표기 - 앞 3바이트: OUI (Organizationally Unique Identifier) - 제조사 식별 - 뒤 3바이트: NIC 고유 번호 - 제조사가 할당 - OUI는 IEEE에서 제조사별로 할당 **2.** (b) FF:FF:FF:FF:FF:FF **3.** - 플러딩(Flooding): 수신 포트를 제외한 모든 포트로 프레임 전달 - 응답을 통해 출발지 MAC 주소 학습 **4.** - 충돌 감지를 위해 전송 중에 충돌을 인식해야 함 - 최악의 경우 왕복 시간(RTT) 동안 전송이 지속되어야 충돌 감지 가능 - 10Mbps, 2.5km 거리 기준으로 계산하면 약 512비트(64바이트) 필요 **5.** - 충돌 도메인: 5개 (HUB는 1개, 스위치 포트별 1개씩) - 브로드캐스트 도메인: 2개 (라우터가 분리) **6.** - ARP 스푸핑: 공격자가 가짜 ARP Reply를 보내 다른 호스트의 ARP 캐시를 조작 - 결과: 트래픽이 공격자를 거치게 됨 (중간자 공격) - 방어: 정적 ARP 엔트리, DAI(Dynamic ARP Inspection), 802.1X 인증 **7.** 1. PC A가 PC B의 IP 주소 확인 2. ARP 캐시에 없으면 ARP Request 브로드캐스트 3. PC B가 ARP Reply로 MAC 주소 전송 4. PC A가 ARP 캐시 업데이트 5. 이더넷 프레임 생성 (목적지 MAC: PC B, 출발지 MAC: PC A) 6. IP 패킷을 프레임에 캡슐화 7. 스위치를 통해 PC B로 전달 **8.** - Store-and-Forward: 전체 프레임 수신 후 CRC 검사, 오류 있으면 폐기, 지연 높음 - Cut-Through: 목적지 MAC만 확인 후 즉시 전달, 지연 낮음, 오류 프레임도 전달 - 현대 스위치는 Store-and-Forward가 기본 **9.** - Full-duplex: 송신과 수신이 분리된 별도 회선 사용 - 동시에 송신과 수신 가능 - 충돌이 발생하지 않으므로 CSMA/CD 불필요 - 스위치의 각 포트가 독립적인 세그먼트 **10.** - VLAN: 하나의 물리적 스위치를 여러 논리적 네트워크로 분리 - 같은 VLAN 내에서만 브로드캐스트 전달 - 다른 VLAN 간 통신은 라우터(L3) 필요 - 브로드캐스트 도메인 크기 축소, 보안 향상다음 단계¶
- 06_IP_Address_Subnetting.md - IP 주소 체계와 서브네팅
참고 자료¶
- Data Communications and Networking (Forouzan)
- IEEE 802.3 Ethernet Standard
- RFC 826: ARP
- Cisco: Understanding Ethernet