ComputerScience 📚/컴퓨터네트워크

[네트워크] 트랜스포트 계층(2) - 다중화와 역다중화

dkswnkk 2022. 6. 29. 13:59

 

서론

 

[네트워크] 트랜스포트 계층(1) - 서비스 및 개요

서론 지금까지 애플리케이션 계층들에 대해 다루었습니다. 이번 게시글부터는 트랜스포트 계층에 대해 정리해 보겠습니다. 트랜스포트 계층 서비스 및 개요 트랜스포트 계층 프로토콜은 서로

dkswnkk.tistory.com

이전 게시글에서 트랜스포트의 개요에 대해서 알아보았습니다.

이번 게시글에서는 트랜스포트 계층 다중화와 역다중화를 정리해 보겠습니다. 즉, 네트워크 계층이 제공하는 호스트 - 호스트 전달 서비스에서 호스트에서 동작하는 애플리케이션에 대한 프로세스 - 프로세스 전달 서비스로 확장하는 것을 살펴보겠습니다.

 

다중화와 역다중화

목적지 호스트에서의 트랜스포트 계층은 바로 아래의 네트워크 계층으로부터 세그먼트를 수신합니다.

네트워크 5계층

트랜스포트 계층은 호스트에서 동작하는 해당 애플리케이션 프로세스에게 이 세그먼트의 데이터를 전달하는 의무를 가집니다. 예를 들어, 우리가 컴퓨터를 이용하여 웹 페이지를 다운로드하고 있다고 가정할 때, 어떻게 이것을 수행하는지 알아보겠습니다.

먼저 네트워크 애플리케이션의 한 부분으로서 프로세스가 소켓을 가진다는 것을 알아야 합니다. 소켓은 네트워크에서 프로세스로 데이터를 전달하며, 또한 프로세스로부터 네트워크로 데이터를 전달하는 출입구 역할을 합니다.

트랜스포트 계층 다중화와 역다중화

 위 이미지처럼 수신 측 호스트의 트랜스포트 계층은 실제로 데이터를 직접 프로세스로 전달하지 않습니다. 대신에 중간 매개자인 소켓에게 전달합니다. 어떤 주어진 시간에 수신 측 호스트에 하나 이상의 소켓이 있을 수 있으므로, 각각의 소켓은 어떤 하나의 유일한 식별자를 가집니다. 이 식별자의 포맷은 소켓이 UDP 소켓인지 또는 TCP 소켓인지에 따라서 달라집니다.

 이제 수신 측 호스트가 수신한 트랜스포트 계층 세그먼트를 어떻게 적절한 소켓으로 향하게 하는지에 대해서 생각해 봅시다.

  1. 각각의 트랜스포트 계층 세그먼트는 이러한 목적을 위해 세그먼트에 필드 집합을 가지고 있습니다.
  2. 수신 측의 트랜스포트 계층은 수신 소켓을 식별하기 위해서 이들 필드를 검사합니다.
  3. 그리고 이 세그먼트를 해당 소켓으로 보냅니다.
  4. 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 역다중화(demultiplexing)라고 합니다.
  5. 출발지 호스트에서 소켓으로부터 데이터를 모으고, 이에 대한 세그먼트를 생성하기 위해서 각 데이터에 헤더 정보(나중에 역다중화에 사용됨)로 캡슐화하고, 그 세그먼트들을 네트워크 계층으로 전달하는 작업을 다중화(multiplexing)라고 합니다. 

 역 다중화 작업을 설명하기 위해서, 이전 게시글에서 설명한 집안의 비유를 다시 살펴보겠습니다. 

 

[네트워크] 트랜스포트 계층(1) - 서비스 및 개요

서론 지금까지 애플리케이션 계층들에 대해 다루었습니다. 이번 게시글부터는 트랜스포트 계층에 대해 정리해 보겠습니다. 트랜스포트 계층 서비스 및 개요 트랜스포트 계층 프로토콜은 서로

dkswnkk.tistory.com

각각의 아이는 이름으로 구별됩니다. 제니가 우편집배원으로부터 우편 한 묶음을 받았을 때, 제니는 그 우편물이 누구에게 온 것인지를 살펴보고, 그 우편물을 그녀의 형제나 누이에게 직접 전달함으로써 역다중화 작업을 수행합니다. 로제는 그녀의 오빠와 자매들의 우편물을 모으고 우편집배원에게 넘겨줄 때 다중화 작업을 수행합니다.

이제 트랜스포트 계층 다중화와 역다중화의 역할을 아마 이해했다고 생각하고, 이것이 실제로 호스트에서 어떻게 수행되는지 한번 정리해보겠습니다. 앞에서 정리한 것처럼, 트랜스포트 계층 다중화에는 다음 두 가지 요구사항을 가지고 있음을 알 수 있습니다.

  1. 소켓은 유일한 식별자를 가진다.
  2. 각 세그먼트는 세그먼트가 전달될 적절한 소켓을 가리키는 특별한 필드를 가진다.

트랜스포트 계층 세그먼트에서의 출발지와 목적지 포트 번호 필드

위 이미지처럼 이 특별한 필드라는 것은 출발지 포트 번호 필드(source port number field)목적지 포트 번호 필드(destination port number field)입니다.

각각의 포트 번호는 0 ~ 65535까지 16비트 정수입니다. 그중에서 0 ~ 1023까지의 포트 번호를 잘 알려진 포트 번호라고 하여 사용을 엄격하게 제한하고 있습니다. 즉, HTTP(포트 번호 80)FTP(포트 번호 21)처럼 잘 알려진 애플리케이션 프로토콜에서 사용되도록 예약되어 있습니다.

트랜스포트 계층이 어떻게 역다중화 서비스를 구현할 수 있는지 이제 이해가 조금 될 것입니다.

  1. 호스트의 각 소켓은 포트 번호를 할당받습니다.
  2. 그리고 세그먼트가 호스트에 도착하면, 트랜스포트 계층은 세그먼트 안의 목적지 포트번호를 검사하고 이에 상응하는 소켓으로 세그먼트를 보내게 됩니다.
  3. 그러면 세그먼트의 데이터는 소켓을 통해 해당되는 프로세스로 전달됩니다. 

위 방식은 UDP의 기본적인 동작 방식이며, TCP의 경우는 위보다 좀 더 많은 의미를 가지고 있습니다. 이 다음 게시글에서는 UDP에 대해서 좀 더 세부적으로 알아 보겠습니다.

 

다음글

 

트랜스포트 계층(3) - UDP

서론 [네트워크] 트랜스포트 계층(2) - 다중화와 역다중화 서론 [네트워크] 트랜스포트 계층(1) - 서비스 및 개요 서론 지금까지 애플리케이션 계층들에 대해 다루었습니다. 이번 게시글부터는 트

dkswnkk.tistory.com