1.5 프로토콜 계층과 서비스 모델 - Computer Network

1.5 프로토콜 계층과 서비스 모델 - Computer Network

Tag
Computer Network
Computer Science Engineering

1.5.1 계층구조

계층구조는 크고 복잡한 시스템의 잘 정의된 특정 부분을 논의할 수 있게 해주며, 이러한 단순화는 매우 중요하다.
시스템이 계층구조를 가질 때, 그 계층이 제공하는 서비스의 구현을 변경하는 것도 매우 쉽다.
어떤 한 계층의 구현이 변하더라도 시스템의 나머지 부분은 변하지 않는다는 것이다.
💡 계층구조의 각 계층은 (1) 그 계층에서 어떤 동작을 취하고 (2) 그 계층 바로 아래 계층 서비스를 사용함으로써 서비스를 제공한다.

프로토콜 계층화

네트워크 프로토콜의 설계 구조를 제공하기 위해,
네트워크 설계자는 프로토콜(프로토콜을 구현하는 네트워크 하드웨어와 소프트웨어)을 계층(layer)으로 조직한다.
즉, 각각의 프로토콜은 한 계층에 속하며, 프로토콜 계층은 소프트웨어, 하드웨어 또는 둘의 통합으로 구현할 수 있다.
  • 한 계층은 상위 계층에 제공하는 서비스(service)에 관심을 갖고, 이것을 계층의 서비스 모델(service model)이라고 한다.
  • 각 계층은 그 계층 내부에서 어떤 동작을 수행하거나, 직접 하위 계층의 서비스를 사용한다.
다양한 계층의 프로토콜을 합하여 프로토콜 스택(protocol stack)이라고 한다.

인터넷 프로토콜 스택

인터넷 프로토콜 스택은 5개 계층으로 구성된다.
물리, 링크, 네트워크, 트랜스포트, 애플리케이션 계층
아래부터 1계층 ~ 5계층
notion image

애플리케이션(Application) 계층

💡 네트워크 애플리케이션과 애플리케이션 계층 프로토콜이 있는 곳이다.
  • 인터넷의 애플리케이션 계층이 포함하는 대표적 프로토콜은 다음과 같다.
    • HTTP : 웹 문서 요청과 전송 제공
    • SMTP : 전자메일 전송 제공
    • FTP : 두 종단 시스템 간의 파일 전송 제공
  • 도메인 네임 서버(domain name server, DNS)는 이 애플리케이션 계층에 존재한다.
  • 애플리케이션 계층 프로토콜은 여러 종단 시스템에 분산되어 있어서한 종단 시스템에 있는 애플리케이션이 다른 종단 시스템에 있는 애플리케이션과 정보 패킷(메시지, message)을 교환하는 데 이 프로토콜을 사용한다.

트랜스포트(Transport) 계층

💡 클라이언트와 서버 간에 애플리케이션 계층 메시지를 전송하는 서비스를 제공한다.
  • 트랜스포트 계층 패킷 = 세그먼트(segment)
  • 트랜스포트 프로토콜의 두 가지 종류로는 다음과 같으며, 이들은 애플리케이션 계층 메시지를 전달한다.
    • TCP
      • 애플리케이션에게 연결 지향형 서비스를 제공한다.
      • 목적지로의 애플리케이션 계층 메시지 전달 보장과 흐름 제어(송신자/수신자의 속도 일치)를 포함한다.
      • 긴 메시지를 짧은 메시지로 나누고, 혼잡 제어 기능을 제공한다. (네트워크가 혼잡할 때 출발지의 전송률을 줄임)
    • UDP
      • 애플리케이션에게 비연결형 서비스를 제공한다.
      • 신뢰성, 흐름 제어, 혼잡 제어를 제공하지 않는다.

네트워트(Network) 계층 (= IP 계층)

💡 한 호스트에서 다른 호스트로 데이터그램(datagram, IP의 전송 단위)을 라우팅하는 책임을 진다.
즉, 출발지와 목적지 간 일련의 패킷 스위치(인터넷에서는 라우터)를 통해 데이터그램을 라우트한다.
  1. 출발지 호스트에서 인터넷 트랜스포트 계층 프로토콜(TCP 또는 UDP)은 트랜스포트 계층 세그먼트와 목적지 주소를 네트워크 계층으로 전달한다.
  1. 네트워크 계층은 목적지 호스트의 트랜스포트 계층으로 세그먼트를 운반하는 서비스를 제공한다.
네트워크 계층은 IP 데이터그램의 필드를 정의하며 종단 시스템과 라우터가 이 필드에 어떻게 동작하는지를 정의하는 프로토콜, IP 프로토콜을 가지고 있다.
  • 오직 하나의 IP 프로토콜이 존재한다.
  • 네트워크 계층을 가진 모든 인터넷 요소는 IP 프로토콜을 수행해야만 한다.
인터넷 네트워크 계층은 라우팅 프로토콜을 포함한다.
  • 라우팅 프로토콜은 출발지와 목적지 사이에서 데이터그램이 이동하는 경로를 결정한다.
  • 인터넷은 네트워크의 네트워크이며, 한 네트워크 내부에서 네트워크 운용자는 원하는 어떠한 라우팅 프로토콜이라도 수행할 수 있다.

링크(Link) 계층

💡 전체 프레임을 한 네트워크 요소에서 이웃 네트워크 요소로 이동시킨다.
링크 계층 패킷 = 프레임(frame)
경로상의 한 노드(호스트 혹은 패킷 스위치)에서 다른 노드로 패킷을 이동하기 위해 네트워크 계층은 링크 계층 서비스에 의존해야 한다.
  1. 각 노드에서 네트워크 계층은 데이터그램을 아래 링크 계층으로 보내고 링크 계층은 그 데이터그램을 경로상의 다음 노드에 전달한다.
  1. 다음 노드에서 링크 계층은 그 데이터그램을 상위 네트워크 계층으로 보낸다.
링크 계층에서 제공하는 서비스는 그 링크에서 채용된 특정 링크 계층 프로토콜에 의해 결정된다.
e.g., 어떤 프로토콜은 송신 노드로부터 하나의 링크를 통해 반대편에 있는 수신 노드까지 신뢰적인 전송을 제공한다. (이는 TCP의 신뢰적인 전달 서비스와는 다름)
데이터그램은 출발지에서 목적지로 가는데 여러 링크를 거치므로, 데이터그램은 경로상의 각기 다른 링크에서 다른 링크 계층 프로토콜에 의해 처리될 수 있다.

물리(Physical) 계층

💡 프레임 내부의 각 비트를 한 노드에서 다음 노드로 이동시킨다.
이 계층의 프로토콜들은 링크에 의존하고, 더 나아가 링크의 실제 전송 매체(꼬임쌍선, 단일 모드 광케이블 등)에 의존한다.

1.5.2 캡슐화

그림은 아래 과정의 물리적 경로를 보여준다.
  1. 송신 종단 시스템의 프로토콜 스택 아래로 데이터를 보내며
  1. 중간의 링크 계층 스위치와 라우터의 프로토콜 스택을 위아래로 거치고
  1. 수신 종단 시스템의 프로토콜 스택 상위로 보낸다.
notion image

라우터와 링크 계층 스위치

  • 이들은 둘 다 패킷 교환기다.
  • 종단 시스템과 비슷하게, 라우터와 링크 계층 스위치는 네트워킹 하드웨어와 소프트웨어를 계층으로 구성한다.
  • 그러나 모든 계층을 구현하지는 않고, 일반적으로 하위 계층을 구현한다.(그림에서는 링크 계층 스위치가 1, 2 계층을 구현하고 라우터는 1~3 계층을 구현)
  • 즉, 인터넷 라우터들은 IP 프로토콜(3계층 프로토콜)을 구현할 수 있지만, 링크 계층 스위치는 불가하다.

호스트

이는 다섯 계층 모두를 구현한다.
💡 인터넷 구조가 네트워크의 ‘가장자리’에서 그 복잡성을 유지한다.

캡슐화(encapsulation)

💡 각 계층에서 패킷은 헤더 필드와 페이로드 필드(payload field)라는 두 가지 형태의 필드를 갖는다.
페이로드(payload)는 일반적으로 그 계층 상위로부터의 패킷을 말한다.

캡슐화 과정

  1. 송신 호스트에서 애플리케이션 계층 메시지(application-layer message, 위 그림에서의 M)는 트랜스포트 계층으로 보내진다.
  1. 가장 간단한 경우, 트랜스포트 계층은 메시지에 수신 측 트랜스포트 계층에서 사용될 추가 정보인 트랜스포트 계층 헤더 정보(Ht)를 더한다.
트랜스포트 계층 세그먼트(transport-layer segment) = 애플리케이션 계층 메시지 + 트랜스포트 계층 헤더 정보
  • 트랜스포트 계층 세그먼트는 애플리케이션 계층 메시지를 캡슐화한다.
  • 트랜스포트 계층 헤더 정보가 포함하는 내용은 다음과 같다.
    • 수신 측의 트랜스포트 계층이 그 메시지를 적절한 애플리케이션으로 보내도록 하는 정보들
    • 메시지의 비트들이 변경되었는지 아닌지를 수신자가 결정하게 하는 오류 검출 비트
  1. 트랜스포트 계층은 세그먼트를 네트워크 계층으로 보낸다.
  1. 네트워크 계층은 출발지와 목적지 종단 시스템 주소와 동일한 헤더 정보(Hn)를 추가하여 네트워크 계층 데이터그램(network-layer datagram)을 만든다.
  1. 데이터그램은 링크 계층으로 전달된다.
  1. 링크 계층도 자신의 헤더 정보를 추가하여 링크 계층 프레임(link-layer frame)을 만든다.

캡슐화 과정은 위에서 말한 것보다 더 복잡할 수 있다.
큰 메시지는 여러 개의 트랜스포트 계층 세그먼트로 분할될 수 있으며, 그들 각각은 여러 개의 네트워크 계층 데이터그램으로 분할될 수 있다.
그러고 나서 수신 측에서 각 세그먼트는 분할된 데이터그램들로 재구성되어야 한다.