IT/Network

[Network] Transport Layer (트랜스포트 계층) - 3.2 다중화와 역다중화

Wookii 2018. 1. 15. 12:56
728x90

3.2 Multiplexing and Demultiplexing

네트워크 계층이 제공하는 host-to-host delivery service에서 host에서 동작하는 애플리케이션에 대한 process-to-process delivery service로 확장하는 것을 transport 계층의 다중화 (multiplexing)와 역다중화 (demultiplexing)라고 한다.


목적지 호스트에서의 트랜스포트 계층은 바로 아래의 네트워크 계층으로부터 세그먼트를 수신한다. 트랜스포트 계층은 호스트에서 동작하는 해당 애플리케이션 프로세스에게 이 세그먼트의 데이터를 전달하는 의무를 가진다.


네트워크 애플리케이션의 한 부분으로서 프로세스는 socket 을 가진다. 이를 이용해서 네트워크에서 프로세스로 데이터를 전달하며, 또한 프로세스로부터 네트워크로 데이터를 전달하는 출입구의 역할을 하게 된다. 따라서 수신하는 호스트의 트랜스포트 계층은 실제로 데이터를 직접 프로세스로 전달하지 않고, 중간 매개자의 역할을 하는 소켓에게 전달해준다. 이때, 어떤 주어진 시간에 수신 측 호스트에는 하나 이상의 소켓이 있을 수 있다. 따라서 각각의 소켓은 특정한 하나의 유일한 식별자를 가진다. 이 식별자의 형식은 소켓이 UDP 소켓인지 또는 TCP 소켓인지에 따라서 달라진다.


수신 측의 호스트가 수신한 트랜스포트 계층 세그먼트를 어떻게 적절한 소켓으로 향하게 하는지에 대해서 생각해보자. 각각의 트랜스포트 계층 세그먼트들은 이러한 목적을 위해 세그먼트에 필드 집합을 가지고 있다. 마지막 수신자에서 트랜스포트 계층은 수신할 소켓을 확인하고 해당 세그먼트를 그 소켓으로 보내기 위해 이 필드들을 검사한다. 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 Demultiplexing 이라고 한다. 출발지 호스트에서 소켓으로 데이터를 모으고, 이에 대한 세그먼트를 생성하기 위해 각 데이터에 헤더 정보로 캡슐화 (encapsulation)하고 그 세그먼트들을 네트워크 계층으로 전달하는 작업을 Multiplexing 이라고 한다.


트랜스포트 계층 Multiplexing에는 다음의 두 가지 요구 사항을 갖는다.

  1. 소켓은 유일한 식별자를 가진다.
  2. 각 세그먼트는 세그먼트가 전달될 적절한 소켓을 가리키는 특별한 필드를 가진다. 이 특별한 필드는 Source port number field와 Destination port number field이다.

각각의 포트 번호는 0 ~ 65535까지 16비트의 정수이다. 그중에서도 0 ~ 1023까지의 포트 번호를 'well-known port number'라 하고 사용을 엄격하게 제한한다. 대표적인 well-known port number로는 HTTP (80), FTP (21) 등이 있다. 이 목록은 RFC 1700에 명시되어 있고, http://www.iana.org 에서 갱신된다.



호스트의 각 소켓은 포트 번호를 할당받는다. 그리고 세그먼트가 호스트에 도착하면, 트랜스포트 계층은 세그먼트 안의 목적지 포트 번호를 검사하고 상응하는 소켓으로 세그먼트를 보내게 된다. 그러면 세그먼트의 데이터는 소켓을 통해 해당되는 프로세스로 전달된다. 이것은 UDP의 일반적인 동작 방식이다. 그러나 TCP의 multiplexing과 demultiplexing은 좀 더 많은 의미를 갖고 있다.


728x90