업데이트됨 1개월 전
물리 계층은 날것의 비트를 전달합니다. 그러나 비트만으로는 혼돈입니다—시작도, 끝도, 의미도 없는 1과 0의 흐름. 데이터 링크 계층은 그 혼돈을 가져다가 대화를 만들어냅니다.
이것이 2계층입니다: 비트가 프레임이 되고, 장치가 이름을 얻고, 오류가 퍼지기 전에 잡히는 곳. 로컬 네트워크의 계층—모든 사람이 주소로 서로를 아는 동네.
2계층이 해결하는 문제
여러 컴퓨터를 연결하는 선을 상상해 보세요. 모두가 그것을 공유합니다. 한 컴퓨터가 비트를 보내면, 모두가 수신합니다. 어떤 비트가 당신을 위한 것인지 어떻게 알 수 있을까요? 메시지가 어디서 시작하고 끝나는지 어떻게 알 수 있을까요? 전송 중에 무언가가 손상되었는지 어떻게 알 수 있을까요?
2계층은 이 모든 것에 답합니다:
- 프레임 구성: 비트를 명확한 경계가 있는 구조화된 패키지로 감싸기
- 주소 지정: 메시지가 올바른 수신자를 찾을 수 있도록 모든 장치에 고유한 이름(MAC 주소) 부여
- 오류 감지: 손상된 프레임이 상위에서 문제를 일으키기 전에 잡아내기
- 매체 접근 제어: 공유 미디어에서 누가 언제 말하는지 조율하기
이것은 홉 단위 통신입니다. 2계층은 인터넷을 가로지르는 최종 목적지에는 관심이 없습니다—다음으로 직접 연결된 장치에 프레임을 전달하는 것에만 관심이 있습니다. 천 리 길도 한 홉씩.
MAC 주소: 네트워크 인터페이스의 이름
모든 네트워크 인터페이스는 MAC 주소를 가집니다—6쌍의 16진수로 표기되는 48비트 식별자:
처음 세 쌍(00:1A:2B)은 제조사를 식별합니다. 마지막 세 쌍(3C:4D:5E)은 특정 장치를 식별합니다. Apple 장치는 특정 접두사로 시작합니다. Dell, Cisco, Intel도 마찬가지입니다. MAC 주소로 장치의 제조사를 종종 추측할 수 있습니다.
세 가지 유형의 MAC 주소가 중요합니다:
- 유니캐스트: 하나의 특정 장치. 대부분의 트래픽.
- 브로드캐스트 (
FF:FF:FF:FF:FF:FF): 로컬 네트워크의 모든 장치. 모두의 주목이 필요할 때 사용. - 멀티캐스트: 관심 있는 장치들의 그룹. 스트리밍, 라우팅 프로토콜 및 기타 그룹 통신에 사용.
이더넷 프레임: 봉투
이더넷이 2계층을 지배합니다. 이더넷 프레임은 데이터를 운반하는 봉투입니다:
| 필드 | 크기 | 용도 |
|---|---|---|
| 프리앰블 & 시작 | 8바이트 | 동기화—"메시지가 옵니다" |
| 목적지 MAC | 6바이트 | 누가 수신해야 하는지 |
| 출발지 MAC | 6바이트 | 누가 보냈는지 |
| 타입 | 2바이트 | 내용이 무엇인지 (IPv4? IPv6? ARP?) |
| 페이로드 | 46~1500바이트 | 실제 데이터 |
| 프레임 검사 시퀀스 | 4바이트 | 오류 감지 체크섬 |
최소 페이로드는 46바이트입니다. 더 작은 메시지는 채워집니다. 최대는 1500바이트—3계층에서 단편화 문제를 일으키는 유명한 MTU(최대 전송 단위)입니다.
프레임 검사 시퀀스는 CRC 체크섬입니다. 송신자는 프레임 내용을 기반으로 계산합니다. 수신자는 다시 계산합니다. 일치하지 않으면 프레임이 손상된 것이고 조용히 버려집니다. 이 계층에서는 재전송이 없습니다—그것은 스택 위에 있는 TCP의 역할입니다.
스위치: 동네 소문꾼
스위치는 완벽한 기억력을 가진 소문꾼입니다. 모든 대화를 엿들어 누가 어디에 있는지 배웁니다.
MAC 주소 AA:BB:CC:DD:EE:FF에서 3번 포트로 프레임이 도착하면, 스위치는 생각합니다: "아, 그 장치는 3번 포트 뒤에 있구나." 이것을 MAC 주소 테이블에 기록합니다. 시간이 지나면서 동네의 완전한 지도를 만듭니다.
프레임을 전달해야 할 때:
- 테이블에서 목적지 MAC을 찾습니다
- 찾으면 해당 특정 포트로만 프레임을 보냅니다
- 찾지 못하면 들어온 포트를 제외한 모든 포트로 프레임을 플러딩합니다
- 브로드캐스트이면 모든 곳에 플러딩합니다
이것이 스위치가 대체한 허브보다 더 스마트한 이유입니다. 허브는 멍청한 리피터였습니다—모든 프레임이 모든 곳으로 갔습니다. 스위치는 배우고 선택적으로 전달합니다. 당신의 사적인 대화는 (대부분) 사적으로 유지됩니다.
MAC 테이블 항목은 약 5분간 아무 신호가 없으면 만료됩니다. 이것은 이동하거나 연결이 끊긴 장치를 처리합니다. 스위치는 그 장치를 잊어버리고 다시 말을 걸어올 때 다시 배웁니다.
VLAN: 가상 동네
하나의 물리적 스위치가 VLAN(가상 LAN)을 통해 여러 개의 논리적 스위치가 될 수 있습니다.
아파트 건물처럼 생각해 보세요. 하나의 건물, 많은 분리된 세대. 10호 거주자는 20호로 들어갈 수 없습니다. VLAN도 동일한 분리를 만듭니다—VLAN 10의 장치는 같은 물리적 스위치에 연결되어 있더라도 VLAN 20의 장치에 직접 접근할 수 없습니다.
이것이 중요한 이유:
- 보안: 경리부 트래픽을 게스트 WiFi와 분리 유지
- 성능: 브로드캐스트 폭풍을 더 작은 도메인으로 제한
- 조직: 물리적 위치가 아닌 기능으로 그룹화
VLAN이 여러 스위치에 걸쳐야 할 때, 프레임은 VLAN ID로 태그됩니다(802.1Q 태깅). 트렁크 포트는 여러 VLAN의 태그된 트래픽을 전달합니다. 액세스 포트는 종단 장치를 연결하고 단일 VLAN을 처리합니다.
스패닝 트리: 무한 루프 방지
이중화는 좋습니다. 스위치 간에 두 개의 경로가 있으면 하나가 실패해도 트래픽이 다른 경로를 사용합니다. 하지만 루프는 치명적입니다.
루프에 빠진 프레임은 절대 죽지 않습니다. 영원히 순환하며 모든 스위치에서 복제되고, 역시 영원히 루프하는 복사본을 생성합니다. 몇 초 만에 네트워크는 기하급수적으로 증가하는 동일 프레임의 홍수에 빠집니다. 이것이 브로드캐스트 폭풍이며, 네트워크를 마비시킵니다.
스패닝 트리 프로토콜(STP)이 이것을 방지합니다. 스위치는 루트 브리지를 선출하고, 최단 경로를 계산하며, 전략적으로 중복 링크를 차단합니다. 네트워크는 트리가 됩니다—루프가 불가능해집니다. 링크가 실패하면 STP는 재계산하고 이전에 차단된 경로를 열어줍니다.
원래 STP는 느렸습니다(재수렴에 30~50초). 현대 네트워크는 몇 초 안에 복구되는 Rapid Spanning Tree(RSTP)를 사용합니다.
ARP: 낯선 사람 소개하기
당신의 컴퓨터는 192.168.1.100에 접근해야 한다는 것을 알고 있습니다. 그런데 이더넷 프레임에는 IP 주소가 아닌 MAC 주소가 필요합니다. IP 주소에 해당하는 MAC 주소는 어떻게 알아낼까요?
모두에게 물어봅니다.
모든 네트워크 대화는 꽤 정중하게 들리는 질문 하나로 시작됩니다: "192.168.1.100을 쓰는 분이 누구인가요? 192.168.1.50에게 알려주세요." 이것이 ARP 요청입니다—로컬 네트워크의 모든 장치에 브로드캐스트됩니다.
그 IP를 가진 장치가 응답합니다: "그건 저예요. 제 MAC 주소는 00:1A:2B:3C:4D:5E입니다."
이제 당신의 컴퓨터가 알게 됩니다. 다시 물어볼 필요가 없도록 이 매핑을 ARP 테이블에 저장합니다. ARP는 IP가 이더넷 위에서 작동할 수 있게 하는 악수입니다—3계층 주소와 2계층 주소 사이의 다리.
2계층에서 발생하는 문제들
듀플렉스 불일치: 한 장치는 전이중(full-duplex, 동시에 송수신 가능)으로 동작하고, 다른 장치는 반이중(half-duplex, 교대로 통신)으로 동작합니다. 결과: 끔찍한 성능, 이상한 오류, 설정을 확인하기 전까지는 이해할 수 없는 늦은 충돌.
VLAN 잘못 설정: 장치는 VLAN 10에, 서버는 VLAN 20에, 라우터에게는 아무도 알리지 않았습니다. 패킷은 어디에도 가지 않습니다. "연결은 되어 있는데 아무것도 접근할 수 없다"는 것은 종종 VLAN 문제입니다.
스패닝 트리 문제: 잘못된 루트 브리지 선출, 최적이 아닌 경로, 또는 더 나쁘게는—STP가 비활성화된 상태에서 누군가가 실수로 루프를 만들었습니다. 위의 브로드캐스트 폭풍을 참조하세요.
MAC 플러딩 공격: 공격자가 수천 개의 가짜 출발지 MAC으로 프레임을 보냅니다. 스위치 테이블이 가득 찹니다. 스위치는 새로운 합법적인 항목을 배울 수 없게 되어 모든 것을 모든 곳에 플러딩하기 시작합니다. 보안 문제이자 성능 재앙입니다.
핵심 정리
- 2계층은 직접 연결된 장치 간의 홉 단위 전달을 제공합니다
- MAC 주소는 네트워크 인터페이스를 식별하는 48비트 하드웨어 식별자입니다
- 이더넷 프레임은 데이터를 주소와 오류 감지 체크섬으로 감쌉니다
- 스위치는 MAC 위치를 학습하고 선택적으로 프레임을 전달합니다—허브보다 훨씬 스마트합니다
- VLAN은 공유 물리 인프라에서 논리적 네트워크 분리를 만듭니다
- 스패닝 트리는 이중화 토폴로지에서 루프를 방지합니다
- ARP는 IP 주소를 MAC 주소로 매핑하여 3계층과 2계층을 연결합니다
데이터 링크 계층에 대한 자주 묻는 질문
MAC 주소와 IP 주소의 차이점은 무엇인가요?
MAC 주소는 네트워크 인터페이스에 내장된 영구 하드웨어 식별자입니다—어떤 장치인지 식별합니다. IP 주소는 네트워크가 할당하는 논리적 주소입니다—네트워크의 어느 위치에 있는지 식별합니다. MAC 주소는 로컬 범위에서 작동하고(같은 네트워크 세그먼트), IP 주소는 전 세계적으로 작동합니다(인터넷 전체). 둘 다 필요합니다: 네트워크 간 라우팅에는 IP, 로컬 선에서의 전달에는 MAC.
스위치가 왜 MAC 주소를 "학습"해야 하나요?
스위치도 허브처럼 모든 프레임을 모든 곳에 플러딩할 수 있습니다. 하지만 그렇게 하면 대역폭을 낭비하고 보안 문제가 생깁니다. 어떤 MAC 주소가 어떤 포트 뒤에 있는지 학습함으로써, 스위치는 프레임이 가야 할 곳에만 전달할 수 있습니다. 이것은 네트워크를 더 빠르고, 더 안전하며, 더 확장 가능하게 만듭니다.
MAC 주소를 변경할 수 있나요?
네, 대부분의 운영 체제에서 하드웨어 MAC 주소를 소프트웨어로 덮어쓸 수 있습니다. 이것을 MAC 스푸핑이라고 합니다. 합법적인 용도로는 개인 정보 보호, 테스트, MAC 기반 접근 제어를 재구성하지 않고 고장난 네트워크 카드를 교체하는 것 등이 있습니다. 불법적인 용도로는 MAC 필터링 우회나 다른 장치를 사칭하는 것이 있습니다.
두 장치가 같은 MAC 주소를 가지면 어떻게 되나요?
혼돈입니다. 스위치는 어떤 포트가 어떤 장치로 이어지는지 혼란스러워합니다. 프레임이 엉뚱한 곳으로 전달됩니다. 두 장치 모두 간헐적인 연결 문제를 겪습니다. 제조사가 할당한 MAC에서는 드문 일이지만, 수동 설정이나 가상화 환경에서는 발생할 수 있습니다. 이상하고 간헐적인 네트워크 문제가 발생한다면 중복 MAC을 확인해 볼 만합니다.
이 페이지가 도움이 되었나요?