Theory
네트워크
Multiplexing & Demultiplexing

Mutiplexing

다중화 (MUX)


개념

  • 여러 애플리케이션의 소켓들로부터 들어오는 데이터를 수집하여, 세그먼트로 만들어 하위 레이어로 전송하는 것

  • 애플리케이션 계층의 여러개의 소켓에서 전송되는 데이터를 모으고, 데이터에 헤더 정보를 포함한 세그먼트들을 네트워크 계층에 전달

    - 세그먼트: 전송계층에서 다중화하여 만들어진 데이터
    - IP 데이터그램: 네트워크 계층에서 다중화하여 만들어진 데이터
  • 출발지 호스트에서 소켓으로부터 데이터를 모아 헤더 정보를 더해 캡슐화 한 후, 캡슐화된 세그먼트들을 네트워크 계층으로 전달하는 작업

  • 여러 애플리케이션들이 전송계층으로 메세지를 전달하면, 전송 계층에서는 헤더를 붙여 캡슐화하고 네트워크 계층으로 일렬로 보냄



Demultiplexing

역다중화 (DEMUX)


개념

  • 하위 레이어로부터 수신된 세그먼트의 정보를 확인하여 응용계층의 각각 올바른 소켓으로 전달해주는 과정
    • 세그먼트의 헤더정보 속 포트번호를 사용하여 올바른 소켓으로 전달
    • 이때 프로토콜(TCP/UDP)에 따라 구체적인 헤더 정보가 다름
  • 수신 측에서 도착한 세그먼트를 해당 소켓으로 전달하기 위해 수신 측 포트 번호를 사용하여 세그먼트를 구분하는 과정


다중화 유형

연결형 다중화/역다중화(connection-oriented)

  • 통신 소켓간에 1:1 논리적 연결 설정
  • 소켓 식별: 출발지 IP주소 + 출발지 포트번호 + 목적지 IP주소 + 목적지 포트번호
  • TCP에서 사용
  • 서버호스트는 동시에 많은 TCP소켓 지원 가능
  • 웹 서버는 연결되는 각 클라이언트마다 다른 소켓을 가짐
    • 하지만 오늘날의 고성능 웹서버들은 하나의 프로세스만 사용
    • 각각의 새로운 클라이언트 연결을 위해 새로운 연결 소켓과 함께 새로운 스레드를 생성하는 방식 이용

비연결형 다중화/역다중화(connectionless)

  • 통신 소켓간에 1:1 논리적 연결 미설정
  • 한개의 소켓이 여러개의 소켓과 연결이 가능함 (1:N 통신 가능)
  • 소켓 식별: 목적지 IP주소 + 목적지 포트번호
  • UDP에서 사용
    • UDP 소켓은 목적지 IP 주소와 목적지 포트번호에 의해서만 식별되므로 프로세스가 데이터를 받았지만 누구의 데이터인지 확인할 방법이 없음
    • 이로인해 UDP는 단방향 통신이며 응답 메시지가 없는 통신임

해당 내용은 전송계층에서의 다중화와 역다중화에 초점이 맞춰져있지만, 다중화와 역다중화는 한 계층의 프로토콜이 상위 계층의 프로토콜에 의해 사용될 때마다 필요한 작업이다.