테마
물리 계층과 데이터 링크 계층
네트워크 통신은 일을 여러 층으로 나눠 층마다 한 가지 일만 맡기는데, 이 층을 계층(layer)이라 한다. OSI(Open Systems Interconnection, 개방형 시스템 상호 연결) 모델은 이를 7개로 나누고, 그중 가장 아래 두 계층은 데이터를 "바로 옆 장비까지" 옮기는 일을 맡는다. 물리 계층(physical layer)은 0과 1의 비트를 전기·빛·전파 신호로 바꿔 매체에 싣는다. 데이터 링크 계층(data link layer)은 그 비트를 프레임(frame)이라는 덩어리로 묶어, 같은 네트워크 안의 정확한 장비에게 전달하고 깨진 것은 걸러 낸다. 유선 LAN(Local Area Network, 근거리 통신망)에서는 이더넷(Ethernet)이 두 계층을 함께 정의한다. 이더넷 프레임은 받을 장비를 장치마다 붙은 MAC 주소(Media Access Control address, 매체 접근 제어 주소)로 가리킨다. 프레임 안에는 IP(Internet Protocol, 인터넷 프로토콜)나 ARP(Address Resolution Protocol, 주소 결정 프로토콜) 같은 위 계층의 데이터가 실린다.
물리 계층: 비트를 신호로
물리 계층은 비트를 매체에 맞는 신호로 바꿔 보내고, 받는 쪽에서 다시 비트로 되돌린다. 구리 케이블에서는 전압 변화가, 광섬유에서는 빛이, 무선에서는 전파가 신호다. 이 계층은 비트의 뜻을 모른다. 어디부터 어디까지가 한 덩어리인지, 누구에게 가는지는 위 계층이 정한다.
허브(hub)는 물리 계층 장비다. 케이블을 꽂는 단자인 포트(port) 하나로 신호가 들어오면, 나머지 모든 포트로 그대로 복사해 내보낸다. 받는 쪽이 누구인지 보지 않으므로 허브에 연결된 기기는 모두 같은 신호를 받고, 자기 것이 아니면 버린다.
데이터 링크 계층의 역할
데이터 링크 계층은 같은 네트워크 안에서, 즉 라우터(router)를 거치지 않고 닿는 범위 안에서 한 장비가 다음 장비에게 프레임을 넘기게 한다. 이를 위해 세 가지를 한다. 비트 흐름에서 프레임의 시작과 끝을 구분하고, 헤더(header)에 받을 장비의 주소를 적고, 전송 중에 비트가 깨졌는지 검사한다. 깨진 프레임은 고치지 않고 버린다. 빠진 데이터를 다시 보내는 일은 위 계층의 프로토콜(protocol)이 맡는데, 대표가 TCP(Transmission Control Protocol, 전송 제어 프로토콜)다.
이더넷 프레임
이더넷 프레임의 데이터 부분에는 위 계층이 넘긴 패킷(packet)이 들어간다. 그 앞에는 받을 장비와 보낸 장비의 주소가, 끝에는 오류 검사 값이 붙는다. 오늘날 대부분의 네트워크가 쓰는 Ethernet II 형식은 다음과 같다. 타입 칸의 IPv4(Internet Protocol version 4, 인터넷 프로토콜 4판)와 IPv6(Internet Protocol version 6, 인터넷 프로토콜 6판)는 IP의 두 판이고, 0x로 시작하는 값은 16진수(hexadecimal)로 적은 숫자다.
| 필드 | 크기 | 내용 |
|---|---|---|
| 목적지 MAC 주소 | 6바이트 | 받을 장비의 주소 |
| 출발지 MAC 주소 | 6바이트 | 보낸 장비의 주소 |
| 타입 | 2바이트 | 데이터의 종류. 0x0800은 IPv4, 0x0806은 ARP, 0x86DD는 IPv6 |
| 데이터 | 46~1500바이트 | 위 계층의 패킷 |
| FCS(Frame Check Sequence) | 4바이트 | 오류 검출용 값 |
데이터 부분의 최대 크기 1500바이트가 이더넷의 MTU(Maximum Transmission Unit, 최대 전송 단위)다. 데이터가 46바이트보다 작으면 채움 바이트를 덧붙여 프레임 전체를 최소 64바이트로 맞춘다. 여러 기기가 선 하나를 나눠 쓰던 초기 이더넷에서는, 보내는 도중에 다른 기기와의 충돌을 알아챌 수 있을 만큼 전송이 길게 이어져야 했기 때문이다. 타입 필드가 있기 때문에 받는 쪽은 데이터 부분을 IP에 넘길지 ARP에 넘길지 알 수 있다.
FCS(Frame Check Sequence, 프레임 검사 순서)는 보내는 쪽이 프레임 내용으로 계산해 붙이는 4바이트 값이다. 계산에는 CRC(Cyclic Redundancy Check, 순환 중복 검사)라는 방식을 쓴다. 받는 쪽은 같은 계산을 다시 해서 값이 다르면 전송 중에 비트가 깨졌다고 보고 프레임을 버린다. FCS는 오류를 찾아낼 뿐 고치지도, 다시 보내 달라고 요청하지도 않는다.
MAC 주소와 NIC
MAC 주소는 NIC(Network Interface Card, 네트워크 인터페이스 카드)마다 붙은 48비트 주소다. NIC는 컴퓨터를 네트워크 선이나 무선에 연결하는 장치다. 노트북에 유선 단자와 와이파이가 함께 있으면 NIC가 둘이므로 MAC 주소도 둘이다.
MAC 주소는 보통 00:1A:2B:3C:4D:5E처럼 8비트씩 끊어 16진수 두 자리로 적는다. 앞 24비트는 표준화 단체인 IEEE가 제조사마다 겹치지 않게 배정한 OUI(Organizationally Unique Identifier, 조직 고유 식별자)이고, 뒤 24비트는 제조사가 기기마다 붙인 번호다. 공장에서 정해지지만 소프트웨어로 바꿀 수 있고, 같은 MAC 주소가 여러 장소의 와이파이에 계속 보이면 그 기기가 어디를 다녔는지 따라갈 수 있다. 그래서 최근 스마트폰·노트북은 와이파이에서 무작위 MAC 주소를 쓰기도 한다. 모든 비트가 1인 FF:FF:FF:FF:FF:FF는 특별한 주소로, 같은 네트워크의 모든 장비에게 한꺼번에 보내는 브로드캐스트(broadcast)에 쓴다.
이어지는 내용은 물리 계층과 데이터 링크 계층 2에서 다룬다.
면접 포인트
- "데이터 링크 계층은 무슨 일을 하나요?" → 같은 네트워크 안에서 다음 장비로 프레임 전달. 프레임 경계 구분, MAC 주소로 수신 장비 지정, 오류 검사.
- "이더넷 프레임 구조는?" → 목적지 MAC·출발지 MAC·타입·데이터(최대 1500바이트, MTU)·FCS. 타입이 IP인지 ARP인지 알려 준다.
- "MAC 주소란?" → NIC마다 붙은 48비트 주소. 앞 24비트 제조사, 뒤 24비트 기기 번호.
FF:FF:FF:FF:FF:FF는 브로드캐스트. - FCS는 오류 검출만 한다. 깨진 프레임은 버려지고, 다시 보내는 일은 위 계층의 몫이다.
