링크 계층은 같은 로컬 네트워크 내에 있는 디바이스 간에 소통을 담당하는 계층이다. 구체적으로 말하자면 링크 계층의 주 기능은 전송계층의 datagram을 링크를 통해 한 노드에서 주변 노드로 전달하는 것이다.
링크 계층이 데이터를 한 노드에서 다른 노드로 전송한다는 면에서 전송계층과 같다고 생각할 수 있다. 둘은 서로 깊게 연관되어있지만, 둘은 엄연한 차이가 있다. 링크 계층은 더 낮은 계층에서 작동하며, Ethernet이나 Wi-fi 연결과 같은 동일한 로컬 네트워크에서의 소통만 다룬다. 한편, 네트워크 계층은 더 높은 계층에서 작동하며, 다른 네트워크 간에 데이터 전송(라우팅)을 전담한다. 패킷이 여러 다른 네트워크를 잘 거칠 수 있도록 함으로써 서로 다른 로컬 네트워크에 있는 디바이스들이 소통을 할 수 있도록 한다.
링크 계층의 주 역할은 datagram을 한 링크를 이용해 한 노드에서 주변 노드로 전달하는 것이다. 다른 사소한 기능들은 링크 계층 프로토콜마다 다르지만 주로 다음과 같은 부가적인 기능도 제공한다.
링크 계층에서 전달되는 데이터 단위를 'frame' 이라고 부른다. 이 frame은 전송계층의 datagram을 데이터 부분에 넣고 몇 개의 헤더 필드를 추가해서 만든 것이며, 이 과정을 framing이라고 한다.
링크 계층은 교통 경찰 기능도 한다. 송신자와 수신자가 각각 한 명인 point-to-point link에선 언제든지 데이터를 보내도 문제가 발생하지 않지만, 여러 개의 노드가 동일한 link를 사용한다면 얘기가 달라진다. link가 여러 노드로부터 공유되고 있기 때문에 데이터 전송에 충돌이 발생할 수 있다. 이와 같은 상황을 'multiple access problem'이라고 부른다. 신호등이 없어 교통 문제가 발생하는 상황처럼 생각하면 된다. 링크 계층은 이런 문제 상황에서 교통경찰로서 기능을 한다. 링크 계층은 medium access control (MAC) protocol라는 것을 활용함으로써 많은 노드의 frame 전송을 조정한다. 이를 통해 데이터 전송에 있어 충돌 없이 교통이 원활할 수 있도록 한다.
링크 계층의 또다른 기능은 datagram이 링크를 통해 전송할 때 에러 없이 전송될 수 있도록 보장하는 것이다. 신뢰성 있는 전송은 acknowledgement와 retransmission을 통해 이루어진다. 이 기능은 에러가 자주 일어나는 링크에는 적용되지만, 신뢰성 보장에는 오버헤드가 발생해서 대부분의 링크 계층 프로토콜이 제공하고 있지 않는 기능이다.
전송 계층과 네트워크 계층 모두 error detection을 하지만, 링크 계층은 error detection에서 더 나아가 어디에서 에러가 발생했는지를 파악하는 error correction 기능도 제공한다.
링크 계층 기능들은 'network adapter' 또는 'network interface card NIC)' 라고 하는 것을 통해 수행된다. Network adapter에는 가장 중요한 link-layer controller가 있는데, 이는 특정 목표를 위한 chip로 링크 계층의 대부분의 기능들을 담당한다. 결국 링크 계층은 거의 하드웨어로 구현되었다고 할 수 있다.
위 계층이 datagram을 만들면 host memory에 저장하는데, controller는 이 datagram을 메모리부터 가져와 frame으로 캡슐화하고, 링크 계층 프로토콜에 따라 링크로 전송한다. 한편, 수신자 측의 controller는 frame을 받고, datagram을 빼내고 위 계층으로 보낸다.