(Computer Network) Protocol Layer

네트워크 프로토콜의 설계에 대한 구조를 제공하기 위해, 네트워크 설계자는 프로토콜을 계층으로 조직합니다. 한 계층이 상위 계층에 제공하는 서비스에 관심을 갖고, 이것을 계층의 서비스 모델(Service model)이라고 합니다.
각 계층은 계층 내부에서 어떤 동작을 수행하거나, 직접 하위 계층의 서비스를 사용합니다.
프로토콜 계층은 소프트웨어, 하드웨어 또는 둘의 통합으로 구현할 수 있습니다.
HTTP와 SMTP 같은 애플리케이션 계층(application layer) 프로토콜과 트랜스포트 계층(transport layer) 프로토콜은 대부분 종단 시스템의 소프트웨어로 구현되며, 물리 계층(physical layer)과 데이터 링크 계층(data link layer)은 특정 링크상에 통신을 다루는 책임이 있으므로 이더넷,WiFi 인터페이스 카드와 같이 부여되어진 링크와 관련된 네트워크 인터페이스 카드로 구현됩니다.
다양한 계층의 프로토콜을 모두 합하여 프로토콜 스택(protocol stack)이라고 하고, 인터넷 프로토콜 스택은 5개의 계층으로 구성되어집니다.
물리 계층 (Physical Layer)
물리 계층의 기능은 프레임 내부의 각 비트를 한 노드에서 다음 노드로 이동하는 것 입니다.
물리 계층에서의 프로토콜들은 링크에 의존하고 링크의 실제 전송 매체(ex. 단일 모드 광케이블) 에 의존합니다.
링크 계층 (Data Link Layer)
인터넷의 네트워크 계층은 출발지와 목적지 간 패킷 스위치를 통해 데이터를 라우트합니다.
경로상의 한 노드에서 다른 노드로 패킷을 이동하기 위해, 네트워크 계층은 링크 계층 서비스에 의존해야 합니다. 특히 각 노드에서 네트워크 계층은 데이터를 아래의 링크 계층으로 보내고, 링크 계층은 그 데이터를 경로상의 다음 노드에 전달합니다. 다음 노드에서 링크 계층은 그 데이터를 상위의 네트워크 계층으로 보내게 됩니다.
링크 계층에서 제공하는 서비스는 그 링크에서 채용된 특정 링크 계층 프로토콜에 의해 결정됩니다.
링크 계층 프로토콜의 예로는 이더넷, 와이파이, 케이블 접속 네트워크의 DOCSIS 프로토콜을 들 수 있습니다.
데이터가 출발지에서 목적지로 가는 데에는 여러 링크를 거치므로, 데이터는 경로상의 서로 다른 링크에서 다른 링크 계층 프로토콜에 의해 처리될 수 있습니다.
링크 계층의 패킷은 Frame이라고 합니다.
네트워크 계층 (Network Layer)
인터넷의 네트워크 계층은 한 호스트에서 다른 호스트로 데이터를 라우팅 하는 역할을 합니다. 메일 서비스를 이용하기 위해 목적지 주소가 적힌 편지를 전달하는 것처럼, 출발지 호스트에서 인터넷 트랜스포트 계층 프로토콜은 트랜스포트 계층 세그먼트와 목적지 주소를 네트워크 계층으로 전달합니다. 그 다음 네트워크 계층은 목적지 호스트의 트랜스포트 계층으로 세그먼트를 운반하는 서비스를 제공합니다.
인터넷의 네트워크 계층은 두 가지 주요 요소를 갖게 되는데, 이 계층은 IP 데이터그램의 필드를 정의하며 종단 시스템과 라우터가 이 필드에 어떻게 동작하는지를 정의하는 ‘IP 프로토콜’ 을 가지고 있습니다. 오직 하나의 IP 프로토콜이 있고, 네트워크 계층을 가진 모든 인터넷 요소는 IP 프로토콜을 수행해야만 합니다.
인터넷 네트워크 계층은 출발지와 목적지 사이에서 데이터그램이 이동하는 경로를 결정하는 라우팅 프로토콜을 포함합니다.
네트워크 계층이 IP 프로토콜과 여러 라우팅 프로토콜을 가지고 있지만, IP가 인터넷을 함께 묶는 역할을 한다는 사실을 반영하여 흔히’ IP 계층’이라고도 부릅니다.
전송 계층 (Transport Layer)
인터넷의 전송 계층은 클라이언트와 서버 간에 애플리케이션 계층 메시지를 전송하는 서비스를 제공합니다. 인터넷에는 TCP와 UDP라는 트랜스포트 프로토콜이 있으며, 애플리케이션 계층 메시지를 전달하는 역할을 합니다.
TCP는 애플리케이션에게 연결 지향형 서비스를 제공하고, 이 서비스는 목적지로의 애플리케이션 계층 메시지 전달 보장과 흐름제어(송신자/수신자의 속도 일치)를 포함합니다. 또한 TCP는 긴 메시지를 짧은 메시지로 나누어 혼잡제어 기능을 제공하여, 네트워크가 혼잡할 때 출발지의 전송속도를 줄이도록 합니다.
UDP는 애플리케이션에 비 연결형 서비스를 제공합니다. 이 서비스는 신뢰성, 흐름제어, 혼잡제어를 제공하지 않는 아주 간단한 서비스입니다.
트랜스포트 계층 패킷을 세그먼트(Segment)라고 합니다.
응용 계층 (Application Layer)
응용계층은 네트워크 애플리케이션과 애플리케이션 계층 프로토콜이 있는 곳입니다.
인터넷의 응용 계층은 HTTP(웹문서 요청 및 전송), SMTP(전자메일 전송 및 제공) 및 FTP(두 종단 시스템 간의 파일 전송 제공) 같은 프로토콜을 포함합니다.
응용계층 프로토콜은 여러 종단 시스템에 분산되어 있기 때문에, 한 종단 시스템에 있는 애플리케이션이 다른 종단 시스템에 있는 애플리케이션과 정보 패킷을 교환하는데 이 프로토콜을 사용합니다.
응용계층에서 데이터를 전송하는 패킷을 Message라고 부릅니다.
OSI(Open System Interconnection) 모델

1970년대 후반 ISO(International Organization for Standardization)는 컴퓨터 네트워크가 7계층으로 구성되어야 한다는 제안을 했는데 이를 OSI(Open System Interconnection)이라고 부릅니다. OSI 모델은 인터넷 프로토콜이 생기기 시작할 때부터 이미 틀이 잡혀져 있었고, 개발 중에 있는 다른 많은 프로토콜 스택 중에 하나였습니다.
OSI 참조 모델에 있는 2개의 추가 계층인 ‘프레젠테이션 계층’은 통신하는 애플리케이션들이 교환되는 데이터의 의미를 해석하도록 하는 서비스를 제공하는 역할을 합니다. ‘세션 계층’은 데이터 교환의 경계와 동기화를 제공하는데, 이것에는 checking point와 회복 방법을 세우는 수단을 포함합니다.
인터넷에 OSI 참조 모델에서 찾을 수 있는 2개 계층이 없다는것에서 프레젠테이션 계층과 세션계층이 중요하지 않아서 없앤건가 라는 의문이 들었습니다.
이 질문에 대한 해답은, 애플리케이션 개발자에게 달려있습니다.
어느 한 서비스가 중요한가를 결정하는 것은 애플리케이션 개발자이며, 그 서비스가 중요하다면 그 기능을 애플리케이션에 넣는 것은 애플리케이션 개발자에게 달려 있습니다.
프로토콜의 계층화는 개념과 구조 측면에서 장점이 있습니다.
계층화는 시스템 구성요소에 대해 논의하기 위한 구조화된 방법을 제공하고, 모듈화는 시스템 구성요소를 갱신하기 쉽게 해주는 역할을 합니다.
그러나 계층화는 한 계층의 기능이 하위 계층과 기능적으로 중복이 된다는 잠재된 결점 또한 가지고 있습니다. 예를 들면, 많은 프로토콜 스택이 링크와 종단 시스템 두 곳 모두에서 오류 복구 기능을 제공합니다. 두번째 결점으로는 어느 한 계층에서의 기능이 다른 계층에만 존재하는 정보(ex. 타임 스탬프 값)를 필요로 할 수 있다는 것입니다. 이것은 계층을 분리하는 목적에 위배되는 경우라고 볼 수 있습니다.
참고 문헌 :
1. 컴퓨터 네트워킹 하향식 접근 , 프로토콜 계층과 서비스 모델
2. http://jungtak.tistory.com/135
