[Network] : Multiplexing & Demultiplexing

Multiplexing과 Demultiplexing은 네트워크의 Transport Layer에서 중요한 역할을 하는 프로세스입니다.

간단하게,

  • Transport Layer := Process들 간의 논리적인 커뮤니케이션(Process to Process)
  • Network Layer := Host들 간의 논리적인 커뮤니케이션(Host to Host)

이라고 할 수 있습니다.

Multiplexing

여러 개의 데이터 스트림을 하나의 통신 채널로 결합하는 프로세스
  1. 여러 애플리케이션 프로세스의 데이터를 하나의 전송 계층 세그먼트(Transport Layer Segment)로 결합합니다.
  2. 송신 Host의 여러 socket으로부터 데이터를 수집합니다.
  3. 수집된 데이터에 Transport Layer Header를 추가하여 Segment를 생성합니다.
  4. 생성된 Segment를 Network Layer로 전송합니다.

Demultiplexing

Multiplexing의 반대 프로세스로,

수신된 데이터 스트림을 개별 데이터 스트림으로 분리하는 프로세스
  1. 수신된 SegmentHeader 정보를 사용해 적절한 socket으로 데이터를 전달합니다.
  2. TCP/UDP Segment출발지 Port 번호목적지 Port 번호를 이용하여 올바른 애플리케이션 프로세스로 데이터를 전달합니다.
  3. IP 주소와 Port 번호를 조합하여 Segment를 적절한 socket으로 라우팅합니다.

Demultiplexing의 동작 방식

  1. 수신 Host의 Network Layer에서 IP 데이터그램을 수신합니다.
  2. Transport Layer에서 Segment Header를 검사합니다.
  3. UDP의 경우 :
    목적지 포트 번호만을 확인하여 해당 포트와 연결된 socket으로 Segment를 전달합니다.
     동일한 목적지 포트 번호를 가진 Segment는 모두 같은 socket으로 전달됩니다.
  4. TCP의 경우 :
    • 출발지 IP, 출발지 포트, 목적지 IP, 목적지 포트의 4가지 정보를 모두 확인합니다.
    • 이 4가지 정보와 일치하는 socket으로 Segment를 전달합니다.
  5. 적절한 socket이 식별되면, Segment의 데이터 부분을 해당 socket의 버퍼로 전달합니다.
  6. Application Layer의 프로세스는 socket으로부터 이 데이터를 읽어 처리합니다.

Connectionless Demultiplexing : UDP

UDP에서 사용되는 방식으로

출발지 IP 주소와 포트 번호가 달라도 같은 목적지 IP 주소와 포트 번호를 가지면 동일한 socket에 전달하는 프로세스
  • Segment를 demultiplexing할 때 목적지 포트 번호만을 사용합니다.
  • UDP는 연결 상태를 유지하지 않기 때문에, 각 Segment는 독립적으로 처리됩니다.
  • 연결 설정 과정이 없어 빠르고 효율적입니다.

위와 같은 특성으로 인해 connectionless demultiplexing은 간단하고 빠르지만, 신뢰성이나 순서 보장은 제공하지 않습니다.

Connection-oriented Demultiplexing : TCP

TCP에서 사용되는 방식으로

4-tuple에 의해 식별된 socket에 전달하는 프로세스
  • 4-tuple 구성
    • 출발지 IP 주소
    • 출발지 포트 번호
    • 도착지 IP 주소
    • 도착지 포트 번호
  • 하나의 서버는 동시에 여러 개의 TCP 소켓을 지원할 수 있습니다. 각 socket은 고유한 4-tuple로 구별됩니다.
  • TCP는 연결 지향적 프로토콜이므로, 데이터 전송 전에 연결이 설정되어야 합니다.
  • TCP의 특성상 신뢰성 있는 데이터 전송을 보장합니다.

위와 같은 특성으로 인해 Connection-orienter demultiplexing은 Connectionless demlx에 비해 더 복잡하지만, 신뢰성 있는 데이터 전송과 정확한 socket 식별을 가능하게 합니다.

'네트워크' 카테고리의 다른 글

[Network] : Web과 HTTP  (0) 2025.01.15