IT 프로그래밍/컴퓨터네트워크

[컴퓨터네트워크] Multiplexing and Demultiplexing

기술1 2024. 12. 2. 22:13
반응형

HTTP 메시지 처리 과정 및 Demultiplexing 설명

1. 클라이언트에서 HTTP 요청을 보낼 경우

  • 클라이언트의 응용 계층(Application Layer)에서 HTTP 요청 메시지가 생성됩니다.
  • 전송 계층이 이 메시지를 세그먼트(Segment)로 나누고, 세그먼트에 헤더(포트 번호 등)를 추가합니다.
  • 만들어진 세그먼트는 네트워크 계층으로 전달되고, 이를 통해 서버로 전송됩니다.

2. 서버에서 HTTP 요청 수신

  • 서버의 네트워크 계층은 수신된 세그먼트를 전송 계층으로 전달합니다.
  • 전송 계층은 세그먼트의 헤더를 확인하여 포트 번호를 기반으로 적절한 응용 계층 프로세스(application process)에 데이터를 전달합니다.
  • 이 과정에서 중요한 작업이 Demultiplexing(역다중화)입니다.

3. Demultiplexing: 특정 프로세스로 전달하기

  • 서버의 전송 계층에서 수신된 HTTP 요청은 여러 응용 계층 프로세스 중 하나로 전달되어야 합니다.
  • 전송 계층의 헤더 정보(포트 번호)를 기반으로 어떤 프로세스가 이 요청을 처리할지 결정합니다.
    • 예를 들어, 포트 번호 80은 웹 서버 프로세스(HTTP)에, 포트 번호 443은 HTTPS 프로세스에 매핑됩니다.
  • 결정된 프로세스에 HTTP 요청 메시지가 전달됩니다.

4. 서버가 클라이언트로 응답하는 과정

  • 선택된 응용 계층 프로세스가 요청을 처리한 후, HTTP 응답 메시지를 생성합니다.
  • 이 메시지는 전송 계층에서 세그먼트로 나누어지고, 네트워크 계층을 통해 클라이언트로 전송됩니다.
  • 클라이언트는 동일한 과정을 통해 응답 메시지를 수신하고, 최종적으로 HTTP 메시지를 애플리케이션으로 전달합니다.

Multiplexing/demultiplexing

트랜스포트 계층 다중화와 역다중화 : 호스트 대 호스트 전달을 프로세스 대 프로세스 전달로 확장 

Multiplexing: Sender에서의 전송 계층 역할

1. 응용 계층에서 데이터 생성

  • 여러 응용 계층 프로세스(예: 웹 브라우저, 이메일 클라이언트 등)가 각각의 데이터를 생성합니다.
  • 이 데이터는 소켓(Socket)을 통해 전송 계층으로 전달됩니다.

2. 전송 계층에서 헤더 추가

  • 전송 계층은 각 응용 계층의 데이터를 구분할 수 있도록 헤더(Header)를 추가합니다.
  • 이 헤더에는 다음과 같은 정보가 포함됩니다:
    • 출발 포트 번호(Source Port): 데이터를 생성한 응용 계층 프로세스와 연결
    • 목적 포트 번호(Destination Port): 데이터의 수신처 응용 계층 프로세스
    • 순서 번호(Sequence Number): 데이터의 순서 제어
    • 검증 정보(Checksum): 데이터 무결성 확인

3. Multiplexing: 데이터를 구분하여 처리

  • 여러 응용 계층 프로세스에서 데이터를 동시에 전송하려고 할 때, 전송 계층은 각 데이터를 별도의 세그먼트로 분리하고, 헤더 정보를 추가하여 네트워크 계층으로 전달합니다.
  • 이 작업을 Multiplexing(다중화)라고 합니다.
    • 다중화는 여러 응용 계층 프로세스에서 전달된 데이터를 하나의 통합된 형태로 네트워크 계층에 전달하는 역할을 합니다.

4. 네트워크 계층으로 전달

  • 전송 계층은 헤더가 추가된 세그먼트를 네트워크 계층으로 전달합니다.
  • 네트워크 계층은 이를 기반으로 최적의 경로를 선택하여 데이터를 수신 측으로 전송합니다.

Demultiplexing

Demultiplexing이 작동하는 방식

  1. 호스트가 IP 데이터그램을 수신
    • 각 데이터그램에는 출발지 IP 주소(Source IP Address)와 목적지 IP 주소(Destination IP Address)가 포함되어 있습니다.
  2. 데이터그램은 1개의 전송 계층 세그먼트를 포함
    • 각 세그먼트에는 출발지 포트 번호(Source Port Number)와 목적지 포트 번호(Destination Port Number)가 포함되어 있습니다.
  3. 호스트는 IP 주소와 포트 번호를 사용하여 세그먼트를 적절한 소켓으로 전달
    • 전송 계층은 IP 주소포트 번호를 확인하여 세그먼트를 올바른 응용 프로그램 프로세스에 연결합니다.

Connectionless

다양한 소스 IP 주소에서 동일한 목적지(destination)로 데이터를 전송할 경우, 동일한 소켓으로 전달될 수 있습니다. 반면, 동일한 소스 IP 주소와 동일한 목적지의 경우에는 반드시 같은 소켓으로 전달됩니다. 즉, 소켓 연결은 (소스 IP, 소스 포트, 목적지 IP, 목적지 포트)의 조합으로 구분됩니다.

 

P3 -> P1

세그먼트를 전송한다고 했을 때 이 segment 헤더의 source number는 9157번 , destination number는 6428이라고 헤더에 명시되어서 전달이 됩니다. 

 

 Connection-oriented demux

TCP socket은 다음 4가지로 식별이 됩니다.

  • source IP address
  • source port number
  • dest IP address
  • dest port number

수신자가 소스 IP, 소스 포트, 목적지 IP, 목적지 포트의 네 가지 정보를 모두 활용하여 데이터를 적절한 소켓으로 전달해야 합니다. 이 정보를 통해 특정 소켓을 식별하며, 정확한 소켓으로 데이터를 라우팅합니다.

 

여러개의 클라이언트가 전송합니다. 각각의 TCP 소켓은 4가지로 식별이 됩니다. 일반적으로 웹 서버는 각각의 클라이언트 Connection에 대해서 다른 소켓을 가지고 있습니다. 

 

클라이언트와 서버가 TCP로 통신할 때, 서버는 하나의 접속 소켓(listening socket)을 생성하여 연결 요청을 대기합니다. 클라이언트는 클라이언트 측 TCP 소켓을 생성하고, 이 소켓을 생성할 때 서버의 IP 주소와 포트 번호를 명시합니다. 이 과정에서 클라이언트와 서버는 연결을 설정하기 위해 TCP 핸드셰이킹을 수행합니다. 핸드셰이킹이 성공적으로 완료되면, 서버는 클라이언트와의 통신을 처리하기 위해 새로운 연결 소켓(connection socket)을 생성합니다. 이렇게 생성된 연결 소켓을 통해 클라이언트와 서버는 데이터를 주고받으며 통신을 진행할 수 있습니다.

 

세그먼트, 데이터그램 헤더로 다중, 역다중화가 이루어집니다.

UDP - destination port number로 역다중화가 됩니다.

TCP - source and destination IP address, and portn umber로 역다중화가 이루어집니다. 

반응형