[데이터 통신] 데이터 링크 계층(Data Link Layer)
Data Link Layer
인터넷은 다양한 네트워크가 서로 연결되어 구성된 거대한 구조이다. 이 네트워크들은 라우터(Router) 또는 스위치(switch) 같은 연결 장치(Connecting devices)를 통해 서로 이어져 있으며, 하나의 호스트에서 다른 호스트로 데이터가 전송되기 위해서는 여러 네트워크를 거쳐야 한다.
이 과정에서 중요한 역할을 하는 계층이 바로 데이터 링크 계층(Data-Link Layer)이다. 우리는 이전의 Chapter에서는 네트워크 전반적인 흐름을 다뤘지만, 이제는 한 층 더 내려가 네트워크 내에서 실제로 데이터가 전달되는 물리적인 연결(link) 수준에서 통신을 들여다보게 된다.
데이터 링크 계층은 두 개의 기본 요소로 구성된다.
- 링크(Link) : 두 장치 간의 실제 물리적 또는 논리적 연결
- 노드(Node) : 링크를 사용하는 장치, 즉 호스트나 라우터의 네트워크 인터페이스
이 계층이 제공하는 핵심 서비스들은 다음과 같다.
- 프레이밍(Framing) : 비트 스트림을 프레임 단위로 나누어 전송
- 에러 제어(Error Control) : 오류 발생 시 검출 및 재전송
- 흐름 제어(Flow Control) : 송신자와 수신자 간 속도 조절
- 접근 제어(MAC - Media Access Control) : 공유 매체 사용 시 어느 장치가 먼저 전송할지 결정
링크는 크게 두 가지 유형으로 나눌 수 있다.
- Point-to-Point 링크 : 두 노드 간 직접 연결된 형태
- 브로드캐스트(Broadcast) 링크 : 하나의 링크를 여러 노드가 공유
또한 데이터 링크 계층은 두 개의 서브 계층(sub-layer)으로 나뉜다.
- LLC(Logical Link Control) : 상위 계층과의 인터페이스 관리
- MAC(Media Access Control) : 물리적 메체에 접근 제어
다음으로 중요한 개념은 링크 계층의 주소(Link-layer Addressing)이다. 인터넷의 각 장치는 서로를 식별하기 위해 주소가 필요하다. 우리가 IP 주소를 사용하는 것처럼, 데이터 링크 계층에서도 장치 식별을 위해 MAC 주소와 같은 고유 주소를 사용한다.
링크 계층의 주소는 호스트나 라우터의 인터페이스에 할당되는 하드웨어 주소로, 이 주소는 일반적으로 네트워크 카드 제조 시 설정되며 전 세계적으로 고유하다.
링크 계층 주소의 세 가지 주요 유형은 다음과 같다.
- Unicast Address : 단일 수신자를 위한 주소
- Multicast Address : 특정 그룹의 수신자에게 전송
- Broadcast Addresss : 같은 네트워크에 있는 모든 장치에 전송
하지만 네트워크 계층(IP)과 데이터 링크 계층(MAC)은 서로 다른 주소 체계를 사용한다. 이 차이를 해결하기 위해 ARP(Adress Resolution Protocol)가 사용된다. ARP는 IP주소를 해당하는 MAC 주소로 변환해주는 프로토콜로, 네트워크 상의 통신을 가능하게 해주는 다리 역할을 한다.
데이터 링크 계층 개요
Nodes and Links - 노드와 링크
데이터 링크 계층에서의 통신은 노드 간 통신(node-to-node communication)이다. 즉, 데이터를 전송할 때 전체 경로를 한 번에 보는 것이 아니라, 바로 다음 노드까자의 전달에 초점을 맞춘다.
예를 들어, 하나의 호스트에서 다른 호스트로 데이터를 보내기 위해서는 여러 개의 네트워크(LAN, WAN)를 거쳐야 하며, 이 중간에는 라우터(Router)가 연결 장치로 존재한다. 여기서
- 노드(Node)란 실제로 데이터를 전송하거나 받는 장치들, 즉 호스트와 라우터를 의미한다.
- 링크(Link)는 노드들 사이를 물리적으로 연결하는 통신 경로이다. 이 경로는 유선 케이블일 수도 있고, 무선일 수도 있다.
그래서 전체 전송 경로는 ‘노드 -> 링크 -> 노드 -> 링크…’ 식으로 구성되어 있으며, 하나의 데이터 단위는 한 링크를 따라 한 번에 하나의 노드까지 마치 릴레이처럼 이동한다.
Services - 데이터링크 계층이 제공하는 서비스
데이터 링크 계층은 물리 계층과 네트워크 계층 사이에 위치하며, 아래 계층(물리 계층)으로부터 신호를 받고, 위 계층(네트워크 계층)에게는 처리된 프레임을 전달하는 역할을 한다.
이 계층은 다음과 같은 주요 서비스를 제공한다.
- 프레이밍(Framing) : 수신한 비트 스트림을 의미 있는 단위인 프레임으로 나눈다.
- 주소 지정(Addressing) : 프레임 내에서 송수신 장치를 식별하기 위해 링크 계층 주소(MAC 주소)를 사용한다.
- 에러 제어(Error Control) : 전송 중 발생한 오류를 감지하고, 재전송을 요청하거나 수정한다.
- 흐름 제어(Flow Control) : 수신자와 처리 속도에 맞춰 전송 속도를 조절하여 데이터 손실을 방지한다.
- 매체 접근 제어(MAC - Media Access Control) : 동일한 통신 매체를 여러 노드가 공유할 경우, 누가 언제 전송할지를 제어한다.
이러한 서비스는 통신의 안정성과 신뢰성을 보장하는 핵심 기능이다.
Two Categories of Links - 링크의 두 가지 유형
노드 간에는 물리적으로 케이블, 전파 등 다양한 매체를 통해 연결되지만, 데이터 링크 계층은 단순히 연결되어 있다고 끝나는 것이 아니다. 이 계층은 그 연결을 어떻게 활용할지를 제어한다.
링크는 크게 두 가지로 나뉜다.
- Point-to-Point Link
- 두 노드 간의 독점적인 연결이다.
- 일반적으로 하나의 송신자와 하나의 수신자만 존재하며, 충돌 가능성이 없다.
- 예: 두 라우터 사이의 전용 연결
- Broadcast Link
- 여러 노드가 하나의 매체를 공유한다.
- 하나의 노드가 데이터를 보내면, 같은 링크에 연결된 모든 노드가 수신한다.
- 대표적으로 이더넷이 여기에 해당한다.
브로드캐스트 링크의 경우 충돌이 발생할 수 있기 때문에, 이를 제어하는 MAC 프로토콜이 필수이다.
Two Sublayers - 두 개의 서브 계층
데이터 링크 계층은 그 기능이 많기 때문에, 이를 두 개의 하위 계층으로 나눠서 관리한다.
- DLC(Data Link Control) 서브 계층
- 프레이밍, 에러 제어, 흐름 제어 등의 핵심 기능을 담당한다.
- 노드 간 신뢰성 있는 데이터 전달을 보장한다.
- MAC(Media Access Control) 서브 계층
- 네트워크 매체 접근 제어를 담당한다.
- 특히 브로드캐스트 링크에서 누가 먼저 전송할지, 충돌은 어떻게 피할지 등을 제어한다.
많은 LAN 프로토콜(이더넷, Wi-Fi..)은 이 구조를 따르고 있다.
Link-Layer Addressing - 링크 계층 주소 지정
이제 중요한 부분인 주소(Addressing)이다. 인터넷에서는 IP 주소만으로는 패킷이 목적지에 정확히 도달할 수 없다. 왜냐하면 IP 주소는 네트워크 간 식별자이기 때문에, 실제 링크(네트워크 내부)에서 어떤 장치에게 프레임을 줄지는 알 수 없기 때문이다.
이 문제를 해결하는 것이 바로 링크 계층 주소, 즉 MAC 주소(Media Access Control)이다. 각 네트워크 인터페이스에는 고유한 MAC 주소가 있으며, 전송되는 프레임은 이 MAC 주소를 이용해 정확한 장치를 식별한다.
그리고 이 IP 주소 <-> MAC 주소 변환을 위해 사용하는 것이 바로 ARP(Address Resolution Protocol)이다. ARP는 목적지 IP주소를 기반으로 해당 장치의 MAC 주소를 찾아낸다. 이를 통해 데이터는 네트워크 내의 올바른 장치로 정확히 전달된다.
주소의 세가지 유형
링크 계층의 주소에는 다음과 같은 세 가지 형태가 있다.
- Unicast 주소
- 하나의 특정 수신자에게 보내는 주소
- 예: A라는 컴퓨터의 MAC 주소로 보내는 프레임
- 가장 일반적으로 사용되는 LAN인 이더넷(Ethernet)에서 유니캐스트(Unicast) 링크 계층 주소는 총 48비트(6바이트)로 구성되어 있고, 12개의 16진수 숫자로 표현되며, 각 바이트는 콜론(:)으로 구분된다.
- 두 번째 16진수 자리(A3에서 ‘3’)는 홀수여야 유니캐스트 주소로 간주된다.
- Multicast 주소
- 여러 장치로 구성된 그룹에 동시에 보내는 주소
- 예: 스트리밍 서비스가 특정 그룹에만 방송할 때
- 유니캐스트 주소와 동일하게 48비트 길이이며, 16진수 12자리, 콜론으로 구분된 형식이다.
- 차이점은 첫 바이트의 두 번쨰 자리 즉, 두 번째 16진수 숫자(A2에서 ‘2’)가 짝수여야한다.
- Broadcast 주소
- 해당 네트워크 상에 존재하는 모든 장치에게 프레임을 보내는 주소
- 예: ARP 요청(“이 IP 가진 사람 누구야?”)은 네트워크 전체에 브로드캐스트됨
- 48비트 전체가 1로 채워진 MAC 주소이며,
- 16진수로는 FF:FF:FF:FF:FF:FF 로 표현된다.
- 이 주소로 전송된 프레임은 같은 네트워크 세그먼트에 있는 모든 노드가 수신하게 된다.
이러한 다양한 주소 체계를 통해 링크 계층은 정확하고 유연한 통신을 가능하게 한다.
ARP(Address Resolution Protocol) - 주소 결정 프로토콜
인터넷에서 하나의 호스트가 다른 호스트로 IP 패킷(datagram)을 보내려면, 우선 상대방의 IP 주소는 알고 있어야 한다. 하지만 문제는, 실제로 데이터를 전송하는 링크 계층에는 IP주소가 아닌 MAC 주소를 기반으로 프레임을 전달한다는 점이다.
즉, IP계층에는 목적지 IP만으로는 충분하지만, 데이터 링크 계층에서는 ‘다음 노드’의 MAC 주소가 반드시 필요하다. 이때, 네트워크 상에서 목적지 IP주소를 해당 MAC 주소로 변환해주는 프로토콜이 ARP(Address Resolution Protocol)이다.
ARP의 위치
ARP는 TCP/IP 프로토콜 스택에서 IP 계층과 데이터 링크 계층 사이에 위치한다. 즉, IP 계층이 ARP에게 “이 IP 주소의 MAC 주소 좀 알려줘”라고 요청하면, ARP는 네트워크 상의 해당 장치를 찾아 MAC 주소를 응답해준다.
ARP 작동 방식
ARP는 크게 두 단계로 작동한다.
- ARP 요청(Request)
- 출발지 노드가 브로드캐스트 프레임을 네트워크 전체에 보낸다.
- “이 IP주소(N2)를 가진 장치가 있나요? MAC 주소가 뭔가요?”
- 출발지 IP주소와 MAC 주소, 목적지 IP 주소가 포함된다.
- ARP 응답(Reply)
- 해당 IP 주소를 가진 장치만 응답한다.
- 자신의 MAC 주소를 포함한 ARP 응답을 유니캐스트로 보낸다.
- 이후 출발지 노드는 그 MAC 주소를 저장하여 이후에는 ARP를 다시 하지 않아도 된다.
ARP 패킷 구조
ARP 메시지는 다음과 같은 필드들로 구성된 고정된 포맷의 패킷이다.
이 포맷을 통해 송신자는 명확하게 누구에게 묻고, 누구에게 응답을 받을지 지정할 수 있다.
ARP 동작 예시
예시 상황을 보자면,
- 호스트 Alice는 자신의 IP 주소 (N1)와 MAC 주소(L1)를 가지고 있다.
- Bob이라는 호스트에게 데이터를 보내야 하는데, IP 주소(N2)는 알고 있지만 MAC주소(L2)는 모른다.
-
Alice와 Bob은 같은 네트워크에 있다.
- ARP 요청과 응답
- Alice는 ARP 요청을 브로드 캐스트 한다. -> “N2라는 IP 주소를 가진 사람이 있나요?”
- Bob이 응답한다. -> “내가 N2야. 내 MAC 주소는 L2야”
- 전체 네트워크 구조
- Alice → Router R1 → Internet → Router R2 → Bob
- Alice 측의 패킷 흐름
- Alice는 먼저 자신의 ARP 테이블을 확인한다. -> N2에 대한 MAC 주소가 없으면, ARP 요청을 보낸다.
- 응답을 받은 후, 데이터를 L2로 전송한다.
- R1과 R2 라우터에서의 흐름
- 각 라우터(R1, R2)도 다음 홉(next hop)으로 패킷을 전송하려면 ARP 요청이 필요하다.
- R1은 목적지에 가까운 다음 장치의 MAC 주소를 알아야하고,
- R2 역시 최종 목적지인 Bob의 MAC 주소(L2)를 알아야한다.
- Bob 측의 패킷 처리
- R2로부터 도착한 프레임을 받은 Bob은, 자신의 MAC 주소와 일치하는 것을 확인하고 해당 데이터를 처리한다.