계층화된 구조를 이용하면 거대하고 복잡한 인터넷 시스템을 좀 더 단순하게 이해할 수 있다. 또한 계층 구조를 이용하면 자기 위 아래 계층에 같은 서비스를 제공할 수만 있는 한, 각 계층이 제공하는 서비스의 구현도 쉽게 교체할 수 있게 된다(모듈화).
네트워크에서 사용하는 수많은 프로토콜들은 구조의 어떤 계층에 속해 있으며, 각 계층은 (1) 레이어 내에서 특정 동작을 수행하거나 (2) 바로 아래 계층의 서비스를 이용해 서비스를 제공한다.
프로토콜 계층은 소프트웨어, 하드웨어, 혹은 둘을 조합해서 구현된다.
단, 그렇다고 해서 특정 계층이 하나의 네트워크 구성 요소에 속해 있는 것은 아니고, 특정 계층은 여러 종단 시스템, 패킷 스위치, 혹은 네트워크를 구성하는 그 외 구성 요소들에 분산되어 있을 수도 있다.
프로토콜의 계층화는 시스템 구성 요소들을 논하기 위한 구조화된 방법을 제공하며, 모듈화를 통해 시스템 구성 요소를 업데이트하기 용이해진다는 장점을 가지고 있다.
하지만 한 계층에서 하위 계층의 기능이 중복되어 오버헤드가 발생할 수 있고, 특정 한 계층의 기능이 다른 계층에만 존재하는 정보를 필요로 할 수도 있는데, 계층 분리로 인해 해당 정보를 직접 활용하지 못하는 경우가 발생할 수도 있다.
다양한 계층의 프로토콜을 모아 프로토콜 스택(protocol stack)을 구성할 수 있다. 인터넷 프로토콜 스택에는 다섯 개의 계층(물리, 링크, 네트워크, 전송, 애플리케이션)이 있다.
Five-layer Internet Protocol stack | Seven-layer ISO OSI reference model |
---|---|
Application | |
Presentation | |
Application | Session |
Transport | Transport |
Network | Network |
Link | Link |
Physical | Physical |
애플리케이션 계층에는 네트워크 애플리케이션과 그들이 사용하는 애플리케이션-계층 프로토콜이 위치한다. 인터넷의 애플리케이션 계층에는 HTTP, SMTP, FTP 등 많은 프로토콜들이 있다. 애플리케이션-계층 프로토콜은 한 종단 시스템의 애플리케이션과 다른 종단 시스템의 애플리케이션 사이에서 정보 패킷을 교환하는 데 쓰이며, 애플리케이션 계층의 이 정보 패킷을 가리켜 메시지(message)라 부른다.
인터넷의 전송 계층에서는 애플리케이션 엔드포인트들 사이의 메시지 전송이 일어난다. 인터넷에는 TCP와 UDP의 두 전송 프로토콜이 있으며, 이 프로토콜들은 애플리케이션-계층의 메시지를 전송하는 데 쓰인다. 전송 계층의 패킷은 세그먼트(segment)라 부른다.
네트워크 계층은 데이터그램(datagram)이라 불리는 네트워크-계층 패킷을 한 호스트에서 다른 쪽으로 이동시키는 데 쓰인다. 소스 호스트의 전송 계층 프로토콜은 전송 계층의 세그먼트와 목적지 주소를 네트워크 계층으로 보내고, 네트워크 계층은 목적지 호스트의 전송 계층으로 세그먼트를 전달하는 서비스를 제공한다.
인터넷 네트워크 계층에는 IP 프로토콜이 있다. IP 프로토콜은 데이터그램의 필드 및 종단 시스템들과 라우터가 이 필드를 어떻게 활용해야 하는지를 정의한다. IP 프로토콜은 인터넷에서 핵심적인 역할을 하기 때문에 네트워크 계층은 따로 IP 계층이라고도 부른다.
네트워크 계층에는 소스에서 목적지까지 데이터그램을 라우팅하기 위한, 여러 라우팅 프로토콜도 있다.
인터넷 네트워크 계층은 소스에서 목적지까지 일련의 라우터들을 통해 데이터그램을 라우팅한다. 패킷을 경로 상의 한 노드에서 다음 노드로 보낼 때, 네트워크 계층은 링크 계층이 제공하는 서비스를 이용한다. 구체적으로, 각 노드에서 네트워크 계층은 데이터그램을 하위의 링크 계층으로 보내면, 링크 계층은 데이터그램을 경로 상 다음 노드로 전달한다. 이 다음 노드의 링크 계층은 데이터그램을 상위의 네트워크 계층으로 전달한다. 링크 계층의 패킷은 프레임(frame)이라 부른다.
링크 계층이 제공하는 서비스는 구체적인 링크-계층 프로토콜에 의존하며, 링크-계층 프로토콜에는 Ethernet, Wi-Fi, DOCSIS 등이 있다. 데이터그램은 소스에서 목적지까지 가기 위해 여러 링크를 순회해야 하기 때문에, 데이터그램은 경로 상 여러 링크에서의 서로 다른 링크-계층 프로토콜들로 처리될 수도 있다. 예를 들어 한 링크에서는 Ethernet 프로토콜로 처리된 데이터그램이 다음 링크에서는 PPP로 처리될 수도 있다.
링크 계층의 역할은 한 노드에서 인접한 노드로 전체 프레임을 이동시키는 것이다. 물리 계층은 한 프레임의 각 개별 비트를 한 노드에서 다음 노드로 이동시키는 일을 한다. 이 계층의 프로토콜은 링크, 특히 링크의 실제 전송 매체에 의존적이다. 예를 들어 Ethernet은 많은 물리-계층 프로토콜을 가지고 있으며, 그 각각은 링크를 이루는 매체(꼬임쌍선, 동축 케이블, 광섬유...) 각각을 위한 것이다.
프로토콜 스택에는 위와 같은 5계층 스택만 있는 건 아니고, OSI 7계층이라 불리는 것도 있다. OSI 7계층은 애플리케이션, 프레젠테이션, 세션, 전송, 네트워크, 데이터-링크, 물리 계층으로 이루어져있다. 이 중 이름이 같은 다섯 가지는 위 5계층에서와 거의 동일한 역할을 하니, 프리젠테이션 계층과 세션 계층이 무슨 일을 하는지만 간단하게 보도록 하자.
프레젠테이션 계층에서는 통신하는 애플리케이션 사이에서 교환되는 데이터의 의미를 해석하는 서비스를 제공하며, 이 서비스에는 데이터 압축, 암호화 등이 포함된다. 세션 계층은 데이터 교환의 경계와 동기화를 제공한다.
상위 계층에서 하위 계층으로 갈 때에는 이전 계층의 패킷(페이로드, payload)에 하위 계층의 헤더를 추가하고, 하위 계층에서 상위 계층으로 올라갈 때에는 해당 계층의 패킷에서 헤더를 제거하는 과정을 거친다.
주목할 점은 링크-계층 스위치와 라우터가 종단 시스템의 모든 프로토콜 스택을 전부 구현하지 않고, 필요한 계층까지만 구현한다는 것이다. 이를 통해 알 수 있는 것은, 링크-계층의 스위치가 네트워크 계층의 IP 프로토콜을 구현하지 않더라도 라우터는 이를 구현할 수 있다는 것이다. 즉 링크-계층 스위치는 IP 주소(3계층)를 알지 못하더라도 2계층의 주소는 알 수 있다.