네트워크

다중화와 역다중화

knxwledge 2025. 1. 16. 16:04
용어정리
  • 소켓: 프로세스와 네트워크가 데이터를 주고 받는 문 같은 것이다. 각 프로세스는 여러 개의 소켓을 가질 수 있다.
  • 다중화 (Multiplexing): 4계층에서 소켓들로부터 데이터를 모은 뒤 각 데이터의 헤더정보로 캡슐화하고, 하위 계층으로 전달하는 작업을 말한다.
  • 역다중화 (Demultiplexing): 4계층에서 하위 계층으로부터 받은 패킷의 데이터를 올바른 소켓으로 전달하는 작업을 말한다.
Connectionless Multiplexing & Demultiplexing

 

비연결지향적인 UDP에서는 다음과 같이 다중화와 역다중화가 일어난다.

 

  • 하나의 서버 측 프로세스가 여러개의 클라이언트 측 프로세스와 통신한다.
  • 서버 측 프로세스는 한 개의 소켓을 이용하여 4계층과 데이터를 주고 받는다.
  • UDP 소켓은 목적지 IP와 목적지 포트 넘버로 구분된다. 두 개의 요소로 구분되는 것이다.
Connection-oriented Demultiplexing

 

연결지향적인 TCP에서는 다음과 같이 역다중화가 일어난다.

 

  • 하나의 서버 측 프로세스는 하나의 클라이언트 측 프로세스와 통신한다. 새로운 클라이언트 요청이 들어오면 프로세스가 복제된다.
  • 클라이언트 프로세스들은 서로 다른 소켓을 이용한다.
  • TCP 소켓은 출발지 IP, 출발지 포트 번호, 목적지 IP, 목적지 포트 번호, 이 네 가지로 구분된다. 위 그림에서 PS1의 소켓과 PS2의 소켓은 IP와 포트 번호가 같다. 따라서 UDP처럼 목적지 IP와 목적지 포트만으로만 소켓을 구분할 수 없다.
Connection-oriented Demultiplexing with Threads

 

TCP 요청을 받는 서버 중에서 threading을 쓰는 서버가 있다. Thread는 리소스를 많이 사용하지 않는 서브프로세스 (lightweight subprocess)다.  이런 경우 역다중화는 다음과 같이 진행된다.

 

  • 하나의 서버 측 프로세스가 여러 클라이언트 측 프로세스와 통신할 수 있다. 새로운 클라이언트 측 요청이 있을 때 프로세스가 복제되지 않고 thread가 생성된다. 서버 측 프로세스 하나에 너무 많은 클라이언트 요청이 들어왔을 때만 프로세스가 복제된다.
  • 클라이언트 프로세스들은 서로 다른 소켓을 이용한다.
  • TCP 소켓은 출발지 IP, 출발지 포트 번호, 목적지 IP, 목적지 포트 번호, 이 네 가지로 구분된다.