데이터링크 계층(data link layer)은 인접하는 두 노드(컴퓨터, 라우터 등)를 직접 연결하는 링크상에서 프레임 전달을 담당한다. 데이터링크 계층에서 인접 노드 간 데이터 전송을 hop-by-hop 또는 node-by-node 전송이라 한다. 이를 그림으로 나타내면 [ 그림 2-8 ] 과 같다. 프레임을 A에서 F로 전달하는 동안 세 부분에서 전송이 일어난다.

먼저, A의 데이터링크 계층은 B(라우터)의 데이터링크 계층에 프레임을 보낸다. 이어서 B의 데이터링크 계층은 E의 데이터링크 계층으로 새 프레임을 보낸다. 마지막으로 E의 데이터링크 계층은 F의 데이터링크 계층으로 새 프레임을 보낸다. 노드들 사이에 교환되는 프레임의 각 헤더는 서로 상이한 값을 갖는다. A에서 B로 전달되는 프레임에는 B가 목적지 주소가 되고, A가 발신지 주소가 된다. B에서 E로 가는 프레임에는 E가 목적지 주소가 되고 B가 발신지 주소가 된다. 트레일러의 값들도 다를 수 있다.

데이터링크 계층에서는 [ 그림 2-9 ] 와 같이 네트워크 계층에서 내려온 데이터에 헤더와 트레일러를 덧붙여서 프레임(frame)을 구성하여 흐름 제어와 오류 제어(또는 에러 제어)를 통해 신뢰성 있는 프레임 단위의 전달을 제공한다. 헤더 부분에서는 데이터의 시작을 나타내는 표시와 목적지 주소 등이 들어가고, 트레일러 부분에는 전송 에러를 검출하기 위한 오류 제어 정보가 들어간다.

신뢰성 있는 프레임을 전달하기 위한 데이터링크 계층의 주요 기능은 다음과 같다.

대표적인 데이터링크 계층 프로토콜에는 HDLC(High-level Data Link Control), BSC(Binary Synchronous Control), PPP(Point-to-Point Protocol), LAN에서 사용하는 LLC(Logical Link Control) 등이 있다.