Multiplexing & Demultiplexing

KVV·2024년 12월 2일

Network layer가 제공하는 Host to Host 전달 서비스에서 Application process to Application process 전달 서비스로 확장하는 것.

Transport layer가 하나의 Host에서 동작 중인 여러 개의 Process 중 하나의 Process를 골라 Segment를 전달하는 과정

수신측 Transpost layer는 데이터를 직접 프로세스로 전달하지 않고 중간 매개체인 socket에게 전달한다.

  • 각 socket은 하나의 유일한 식별자를 갖고, 이 식별자는 UDP, TCP에 따라 달라진다.

Multiplexing: 송신 Transport layer에서 socket으로부터 데이터를 모으고, 각 데이터에 헤더 정보로 캡슐화하여 segment를 생성해 Network layer로 전달하는 작업

Demultiplexing: 수신 Transport layer에서 수신 socket을 식별하기 위해 segment에 존재하는 필드 집합을 검사하고, 해당 socket으로 보내는 작업

  • port number: 0 ~ 65535까지의 16 bit 정수
  • Process의 각 socket은 port number를 할당받는데, 이 port number를 이용하여 목표로 하는 socket을 찾을 수 있다.
    • UDP Demultiplexing의 기본 동작, TCP는 조금 더 복잡하다.

Demultiplexing에서 사용하는 field

  1. Source port number
  2. Destination port number
  3. Well-known port number: 0 ~ 1023까지의 port number

통신 과정에서, IP 주소를 통해 목적지 HOST를 찾고 PORT NUMBER를 통해 목적지 PROCESS를 찾을 수 있다.

Q) 출발지 Port number는 왜 존재하는가?

출발지(A) > 목적지(B) > 출발지(A) 의 경우에, 회신 주소로써 출발지 port number를 사용할 수 있다.

A) Connectionless Multiplexing / Demultiplexing

UDP Multiplexing / Demultiplexing 의 방식이다.

  1. Host A의 Transport layer는 (Application data, source port number, destination port number, 다른 2개의 값) 을 포함하는 transport layer segment를 생성하고 Network layer로 전송한다.

  2. Network layer는 segment를 IP datagram으로 캡슐화하고 최선형 서비스로 segment를 Host B로 전달한다.

  3. Host B는 segment 안에 존재하는 destination port number를 검사하고, 해당 segment를 port number 46428로 식별되는 socket에 전달한다. (Demultiplexing)

출발지 IP 주소와 출발지 port number 중 어느 것이 다르더라도, 목적지 IP 주소와 목적지 port number가 동일하면 같은 process로 향한다.

IP 주소를 사용하지 않는 것이 아니라, Multiplexing / Demultiplexing의 과정에서만 사용하지 않고, Network Layer에서는 사용한다.

B) Connection - Oriented Multiplexing / Demultiplexing

TCP Multiplexing / Demultiplexing 의 방식이다.

  1. 송신 Host의 Transport layer는 (source IP address, source port number, destication IP address, destination port number) 을 포함하는 transport layer segment를 생성하고 Network layer로 전송한다.

    • Demultiplexing 시, 4개의 값을 모두 사용한다.
  2. Network layer는 segment를 IP datagram으로 캡슐화하고 최선형 서비스로 segment를 수신 Host로 전달한다.

  3. 수신 Host는 segment 안에 존재하는 source IP address, source port number, destication IP address, destination port number를 모두 검사하고, 해당 segment를 4개의 값이 모두 같은 경우에만 같은 socket에 전달한다. (Demultiplexing)

source IP address, source port number, destication IP address, destination port number가 모두 동일해야 같은 process로 향한다.

4가지 정보를 모두 사용하여 Demultiplexing 함으로써 두 Process 간의 연결을 지속적으로 유지한다.

사실상 TCP에서 IP 주소는 Transport / Network Layer 에서 한 번씩 즉, 2번 저장된다.

TCP 연결 설정

  1. TCP 서버 애플리케이션은 welcome socket을 갖고 있다. 이 소켓은 포트 번호 12000을 가진 TCP 클라이언트로부터 연결 설정 요청을 기다린다.

  2. TCP 클라이언트는 소켓을 생성하고, 연결 설정 요청 세그먼트를 보낸다.

    • Source port number: client가 지정, Detination port number: 12000
  3. 서버 호스트 운영체제가 목적지 포트 12000을 포함하는 연결 요청 세그먼트를 수신하면, 이 세그먼트를 포트 번호 12000으로 연결 수락을 기다리는 서버 프로세스로 보낸다.

  4. 이후 도착하는 segment에 대해 (source IP address, source port number, destication IP address, destination port number) 4개의 값을 식별하여 알맞은 socket으로 전달한다.

Web sever & TCP

웹 서버는 각기 다른 클라이언트가 보낸 segment를 출발지 IP 주소와 출발지 port number로 구별한다.

즉, Server는 Source IP / Port number를 이용하여 Client 정보를 식별할 수 있다.

  • Persistent HTTP: 지속적인 연결 동안 클라이언트와 서버는 같은 socket을 통해 HTTP 메세지를 교환할 것이다.
  • Non-persistent HTTP: 모든 요청/응답마다 새로운 TCP 연결이 생성되고 종료된다. 즉, 매번 새로운 socket이 생성되고 종료될 것이다.

0개의 댓글