데이터링크 계층이란

2025-06-14

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-03_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_11.58.36.png 컴퓨터 네트워크를 계층 구조로 나누었을 때, 링크 계층(Link Layer)은 물리적인 연결에 가장 가까운 위치에 있다. 이 계층은 네트워크를 구성하는 각 노드들이 실제로 연결된 통신 경로를 통해 데이터를 주고받을 수 있도록 도와주는 역할을 한다.

여기서 말하는 노드(node)는 데이터를 주고받는 호스트(예: 사용자 단말기나 서버) 또는 라우터를 의미하고, 이 노드들이 서로 통신하려면 물리적으로 인접한 노드와 연결되어 있어야 한다. 이러한 연결을 우리는 링크(link)라고 부른다. 링크 계층은 바로 이 링크를 통해 데이터를 전달하는 일을 맡고 있다.

링크는 물리적인 전송 매체를 기반으로 한다. 예를 들어, 유선(wired) 링크는 이더넷 케이블이나 광케이블처럼 물리적인 전선을 통해 정보를 전달하고, 무선(wireless) 링크는 Wi-Fi나 LTE처럼 전파를 통해 통신한다. 또한 LAN(Local Area Network)은 비교적 좁은 공간에서 여러 장치가 공유된 매체를 이용해 연결된 환경을 말하고 이 역시 링크 계층의 역할이 중요한 영역이다.

링크 계층에서 데이터를 주고받을 때는 프레임(frame)이라는 단위를 사용한다. 프레임은 상위 계층(예: 네트워크 계층)에서 전달받은 데이터그램(datagram)을 감싸는 형태로 구성된다. 이렇게 만들어진 프레임을 인접한 노드에게 전송하는 것이 이 계층의 기본적인 역할이다. 말하자면, 링크 계층은 데이터그램을 한 홉(hop)씩 다음 노드로 넘겨주는 연결의 다리 역할을 한다.

이 기능은 단순해 보일 수도 있지만, 실제 네트워크 환경은 매우 다양하다. 예를 들어 이동통신망, 글로벌 ISP 환경, 데이터센터, 기업 내부 네트워크 등 각각의 환경마다 링크 계층이 다루는 기술과 방식은 조금씩 다를 수밖에 없다. 그만큼 링크 계층은 네트워크 기술의 기반을 이루면서도 다양한 하드웨어와 프로토콜을 포괄해야 하는 중요한 위치에 있다.

결국 링크 계층은 “한 노드에서 인접한 노드로 데이터를 안정적으로 전달”하는 데 집중해 매체 접근 제어(MAC), 주소 지정, 오류 검출 등의 기능을 제공한다.

링크 계층의 맥락

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-03_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_11.58.26.png 링크 계층은 네트워크 전체에서 한 구간씩 데이터를 전달하는 역할을 맡는다. 우리가 하나의 목적지까지 데이터를 보낼 때, 그 경로에는 여러 개의 네트워크 링크들이 연결되어 있을 수 있다. 예를 들어 어떤 패킷이 전송되는 동안 처음 구간에서는 Wi-Fi, 다음 구간에서는 이더넷(Ethernet)을 이용할 수도 있다. 이처럼 각 구간(link)마다 사용하는 전송 기술은 다를 수 있고, 그에 따라 적용되는 링크 계층 프로토콜도 서로 다르다.

각 링크 프로토콜은 자신만의 방식으로 데이터를 전달하고 제공하는 기능도 다르다. 예를 들어 어떤 프로토콜은 오류를 자동으로 감지하고 재전송해주는 신뢰성 있는 전송(reliable transfer)을 지원할 수 있지만, 다른 프로토콜은 그런 기능 없이 데이터만 빠르게 전달하는 데 초점을 맞출 수도 있다. 이처럼 링크 계층은 네트워크 전체를 구성하는 각기 다른 구간들에서 저마다의 방식을 통해 데이터 전달을 책임지고 있는 것이다.

이를 보다 쉽게 이해할 수 있도록, 하나의 여행에 비유해보자. 예를 들어 누군가가 프린스턴에서 로잔(Lausanne)까지 여행을 간다고 해보자. 프린스턴에서 JFK 공항까지는 리무진, JFK에서 제네바까지는 비행기, 제네바에서 로잔까지는 기차를 이용한다면, 이 여행 전체는 여러 개의 이동 수단이 결합된 여정이 된다. 이때 여행자는 바로 데이터그램(datagram)이고, 각 교통 수단이 지나가는 경로는 통신 링크(link), 이동 수단 자체는 링크 계층 프로토콜, 그리고 여정을 설계해준 여행사(또는 경로를 선택해주는 존재)는 라우팅 알고리즘에 해당한다.

이 비유에서 보듯이, 링크 계층은 전체 여정에서 한 구간 한 구간의 이동을 책임진다. 각 구간마다 교통수단이 다르고, 그에 따라 이용 방식이나 제공되는 서비스도 다르지만, 전체 여정을 위해서는 이 다양한 방식들이 함께 잘 조화되어야 한다. 네트워크에서도 마찬가지다. 하나의 패킷이 목적지까지 잘 도달하려면 각 링크마다 적절한 링크 계층 프로토콜이 작동하면서, 상위 계층에서 설정한 경로에 따라 순차적으로 안정적인 전달이 이루어져야 한다.

결과적으로 링크 계층은 이질적인 네트워크 환경을 부드럽게 연결해주는 인터페이스 역할을 해 물리적으로 인접한 노드 간에 데이터를 안전하고 효율적으로 넘겨주는 데 집중한다.

링크 계층의 핵심 기능들

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-04_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_12.14.57.png 링크 계층은 단순히 데이터를 옆 노드로 전달하는 것 이상의 역할을 한다. 이 계층은 네트워크의 하위에 위치하면서, 인접한 노드 간의 데이터 전송을 좀 더 안정적이고 효율적으로 만들기 위한 다양한 기능들을 제공한다. 하위 계층인 물리 계층이 제공하지 못하는 논리적인 조율을 담당해 상위 계층이 제대로 작동할 수 있도록 돕는다.

가장 기본적인 기능 중 하나는 프레이밍(framing)이다. 링크 계층은 상위 계층에서 내려온 데이터그램(datagram)을 프레임(frame)이라는 형식으로 감싼다. 이 과정에서 앞쪽에는 헤더(header), 뒤쪽에는 트레일러(trailer)를 덧붙이는데, 이 안에는 출발지와 목적지를 식별하기 위한 MAC 주소 같은 정보가 포함된다. MAC 주소는 IP 주소와 달리 물리적 장치에 부여된 고유한 식별자로, 동일한 네트워크 내에서의 통신에서 주로 사용된다.

또한 링크 계층은 공유된 매체(shared medium)—예를 들어 이더넷이나 무선 네트워크처럼 여러 장치가 동시에 접근할 수 있는 환경—에서는 누가 언제 통신할지를 정하는 채널 접근 제어(channel access) 기능도 수행한다. 이를 통해 충돌을 최소화하고, 네트워크 자원을 공정하게 분배할 수 있게 된다.

그 외에도 링크 계층은 선택적으로 신뢰성 있는 데이터 전송(reliable delivery)을 제공할 수도 있다. 손실되거나 오류가 발생한 프레임을 다시 보내주는 기능인데, 보통 무선 링크처럼 오류율이 높은 환경에서 중요하게 쓰인다. 반면 이더넷처럼 비트 오류율이 낮은 환경에서는 이런 기능이 오히려 불필요한 오버헤드가 되어 생략되기도 한다.

💡 그렇다면 TCP 같은 end-to-end 신뢰성이 있으면 충분하지 않나?
무선 구간에서 손실이 많으면, 매번 TCP 수준에서 다시 전송하는 것보다 링크 계층에서 빠르게 재전송해주는게 더 효율적일 수 있다.

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-04_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_12.15.05.png 이 외에도 링크 계층은 흐름 제어(flow control) 기능을 통해 송신자와 수신자의 전송 속도를 조절함으로써 버퍼 오버플로우를 방지하고, 안정적인 통신을 유지하도록 돕는다. 그리고 오류 검출(error detection) 기능은 신호 감쇠나 잡음으로 인해 발생할 수 있는 비트 오류를 수신 측에서 인식해 잘못된 프레임을 폐기하거나 재전송을 요청할 수 있도록 한다. 나아가 일부 시스템에서는 오류 정정(error correction) 기능까지 제공되어 수신 측에서 비트 오류를 스스로 복구하기도 한다.

마지막으로, 링크의 통신 방식에는 half-duplex와 full-duplex가 있다. half에서는 양쪽 노드가 동시에 데이터를 주고받을 수 없고, 번갈아 가며 전송해야 하는 반면, full에서는 양방향 통신이 동시에 가능하다.

💡 현재 대부분의 Ethernet은 전이중을 사용하고 있다. 무선처럼 충돌 위험이 있는 경우에는 반이중이 사용되기도 한다.

링크 계층은 어디에 구현되는가

%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2025-06-04_%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB_1.01.34.png 링크 계층은 네트워크에 연결된 모든 호스트—즉, 컴퓨터, 스마트폰, 서버, 라우터 등 네트워크 통신을 수행하는 모든 장치—에 구현되어 있다. 단 한 대의 장치라도 링크 계층이 없으면 물리적으로 인접한 장치와의 데이터 전송이 불가능해진다.

링크 계층은 주로 네트워크 인터페이스 카드(NIC: Network Interface Card) 또는 네트워크 칩셋에 의해 구현된다. 예를 들어 우리가 흔히 사용하는 이더넷 카드, Wi-Fi 칩 등이 바로 링크 계층 기능을 담당하는 하드웨어이다. 물리적인 신호만 주고받는 것이 아니라, 링크 계층과 물리 계층을 모두 구현한 복합적인 구조를 갖고 있다. 즉, 프레임 생성, MAC 주소 처리, 오류 검출, 채널 접근 등의 링크 계층 기능뿐 아니라 전기적 신호를 주고받는 물리 계층의 역할까지 함께 수행한다.

이 NIC는 호스트의 내부 시스템 버스에 연결되어 있어 CPU, 메모리 등 시스템의 다른 구성 요소와 데이터를 주고받을 수 있다. 따라서 운영체제의 네트워크 스택에서 내려온 데이터그램이 링크 계층까지 도달하면 NIC를 통해 실제 프레임으로 변환되고, 물리 매체를 타고 외부로 전송된다. 반대로 수신된 프레임도 NIC에서 처리되어 상위 계층으로 전달된다.

흥미로운 점은, 이 구현이 하드웨어만 구성된 것이 아니다. 실제로 링크 계층은 하드웨어, 소프트웨어, 그리고 펌웨어가 결합된 형태로 동작한다. 예를 들어 프레임 포맷이나 주소 필드 해석 같은 기능은 하드웨어에 내장된 논리 회로에서 수행되지만, 드라이버나 펌웨어는 이러한 동작을 설정하거나 제어하는 데 쓰인다. 또한 운영체제는 NIC와의 인터페이스를 관리하면서 오류가 생겼을 때 로그를 남기거나 처리 순서를 조절하기도 한다.

링크 계층이 하는 일 - 송/수신 관점

controller는 NIC나 칩셋을 의미하고, 여기서 프레임 생성 및 처리, 오류 검사 등을 맡음. physical layer는 전기 신호를 만들고 해석하는 계층. 컴퓨터에서 하나의 애플리케이션이 다른 장치의 애플리케이션과 통신을 할 때, 데이터는 여러 네트워크 계층을 차례로 거치며 포워딩된다. 송신 측에서는 애플리케이션 계층에서 만들어진 데이터가 전송 계층, 네트워크 계층을 거쳐, 마지막으로 링크 계층에 도달하게 된다.

이때 링크 계층은 상위 계층에서 전달받은 데이터그램(datagram)을 받아 이를 프레임으로 감싼다. 이 과정에서 헤더(link header)가 추가되며, 이 안에는 MAC 주소, 프레임 번호, 오류 검출 코드 등 전송에 필요한 다양한 정보들이 담긴다. 또한 링크 계층은 선택적으로 오류 검출(error checking), 신뢰성 있는 전송(reliable delivery), 흐름 제어(flow control) 기능을 수행하기도 한다. 이렇게 구성된 프레임은 네트워크 인터페이스 컨트롤러(NIC)를 통해 전선이나 전파와 같은 물리적 매체를 통해 전송된다.

수신 측에서도 이 흐름은 거꾸로 진행된다. 먼저 물리 계층을 통해 신호가 수신되고, NIC가 이를 프레임으로 재구성한다. 이 프레임은 링크 계층에서 처리되며, 이때 오류가 있는지 검사하고, 필요시 재전송을 요청하거나 프레임을 버리기도 한다. 오류가 없고 정상적인 프레임이라면, 그 안에서 데이터그램을 추출해 상위 계층(네트워크 계층)으로 전달한다.

이 과정은 송신자와 수신자 양쪽 모두에서 이루어지고 링크 계층은 노드 간의 직접적인 통신을 가능하게 하는 가장 가까운 계층으로서 기능한다. 데이터를 전달하는 것처럼만 보일 수 있지만 실제로는 오류 처리, 흐름 조절, 주소 해석 등 다양한 세부 기능들이 함께 작동하면서 안정적이고 신뢰성 있는 네트워크 통신을 만들어내고 있다.