[네트워크] 트랜스포트 계층(2) - 다중화와 역다중화
서론
[네트워크] 트랜스포트 계층(1) - 서비스 및 개요
서론 지금까지 애플리케이션 계층들에 대해 다루었습니다. 이번 게시글부터는 트랜스포트 계층에 대해 정리해 보겠습니다. 트랜스포트 계층 서비스 및 개요 트랜스포트 계층 프로토콜은 서로
dkswnkk.tistory.com
이전 게시글에서 트랜스포트의 개요에 대해서 알아보았습니다.
이번 게시글에서는 트랜스포트 계층 다중화와 역다중화를 정리해 보겠습니다. 즉, 네트워크 계층이 제공하는 호스트 - 호스트 전달 서비스에서 호스트에서 동작하는 애플리케이션에 대한 프로세스 - 프로세스 전달 서비스로 확장하는 것을 살펴보겠습니다.
다중화와 역다중화
목적지 호스트에서의 트랜스포트 계층은 바로 아래의 네트워크 계층으로부터 세그먼트를 수신합니다.
트랜스포트 계층은 호스트에서 동작하는 해당 애플리케이션 프로세스에게 이 세그먼트의 데이터를 전달하는 의무를 가집니다. 예를 들어, 우리가 컴퓨터를 이용하여 웹 페이지를 다운로드하고 있다고 가정할 때, 어떻게 이것을 수행하는지 알아보겠습니다.
먼저 네트워크 애플리케이션의 한 부분으로서 프로세스가 소켓을 가진다는 것을 알아야 합니다. 소켓은 네트워크에서 프로세스로 데이터를 전달하며, 또한 프로세스로부터 네트워크로 데이터를 전달하는 출입구 역할을 합니다.
위 이미지처럼 수신 측 호스트의 트랜스포트 계층은 실제로 데이터를 직접 프로세스로 전달하지 않습니다. 대신에 중간 매개자인 소켓에게 전달합니다. 어떤 주어진 시간에 수신 측 호스트에 하나 이상의 소켓이 있을 수 있으므로, 각각의 소켓은 어떤 하나의 유일한 식별자를 가집니다. 이 식별자의 포맷은 소켓이 UDP 소켓인지 또는 TCP 소켓인지에 따라서 달라집니다.
이제 수신 측 호스트가 수신한 트랜스포트 계층 세그먼트를 어떻게 적절한 소켓으로 향하게 하는지에 대해서 생각해 봅시다.
- 각각의 트랜스포트 계층 세그먼트는 이러한 목적을 위해 세그먼트에 필드 집합을 가지고 있습니다.
- 수신 측의 트랜스포트 계층은 수신 소켓을 식별하기 위해서 이들 필드를 검사합니다.
- 그리고 이 세그먼트를 해당 소켓으로 보냅니다.
- 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 역다중화(demultiplexing)라고 합니다.
- 출발지 호스트에서 소켓으로부터 데이터를 모으고, 이에 대한 세그먼트를 생성하기 위해서 각 데이터에 헤더 정보(나중에 역다중화에 사용됨)로 캡슐화하고, 그 세그먼트들을 네트워크 계층으로 전달하는 작업을 다중화(multiplexing)라고 합니다.
역 다중화 작업을 설명하기 위해서, 이전 게시글에서 설명한 집안의 비유를 다시 살펴보겠습니다.
[네트워크] 트랜스포트 계층(1) - 서비스 및 개요
서론 지금까지 애플리케이션 계층들에 대해 다루었습니다. 이번 게시글부터는 트랜스포트 계층에 대해 정리해 보겠습니다. 트랜스포트 계층 서비스 및 개요 트랜스포트 계층 프로토콜은 서로
dkswnkk.tistory.com
각각의 아이는 이름으로 구별됩니다. 제니가 우편집배원으로부터 우편 한 묶음을 받았을 때, 제니는 그 우편물이 누구에게 온 것인지를 살펴보고, 그 우편물을 그녀의 형제나 누이에게 직접 전달함으로써 역다중화 작업을 수행합니다. 로제는 그녀의 오빠와 자매들의 우편물을 모으고 우편집배원에게 넘겨줄 때 다중화 작업을 수행합니다.
이제 트랜스포트 계층 다중화와 역다중화의 역할을 아마 이해했다고 생각하고, 이것이 실제로 호스트에서 어떻게 수행되는지 한번 정리해보겠습니다. 앞에서 정리한 것처럼, 트랜스포트 계층 다중화에는 다음 두 가지 요구사항을 가지고 있음을 알 수 있습니다.
- 소켓은 유일한 식별자를 가진다.
- 각 세그먼트는 세그먼트가 전달될 적절한 소켓을 가리키는 특별한 필드를 가진다.
위 이미지처럼 이 특별한 필드라는 것은 출발지 포트 번호 필드(source port number field)와 목적지 포트 번호 필드(destination port number field)입니다.
각각의 포트 번호는 0 ~ 65535까지 16비트 정수입니다. 그중에서 0 ~ 1023까지의 포트 번호를 잘 알려진 포트 번호라고 하여 사용을 엄격하게 제한하고 있습니다. 즉, HTTP(포트 번호 80)와 FTP(포트 번호 21)처럼 잘 알려진 애플리케이션 프로토콜에서 사용되도록 예약되어 있습니다.
트랜스포트 계층이 어떻게 역다중화 서비스를 구현할 수 있는지 이제 이해가 조금 될 것입니다.
- 호스트의 각 소켓은 포트 번호를 할당받습니다.
- 그리고 세그먼트가 호스트에 도착하면, 트랜스포트 계층은 세그먼트 안의 목적지 포트번호를 검사하고 이에 상응하는 소켓으로 세그먼트를 보내게 됩니다.
- 그러면 세그먼트의 데이터는 소켓을 통해 해당되는 프로세스로 전달됩니다.
위 방식은 UDP의 기본적인 동작 방식이며, TCP의 경우는 위보다 좀 더 많은 의미를 가지고 있습니다. 이 다음 게시글에서는 UDP에 대해서 좀 더 세부적으로 알아 보겠습니다.
다음글
트랜스포트 계층(3) - UDP
서론 [네트워크] 트랜스포트 계층(2) - 다중화와 역다중화 서론 [네트워크] 트랜스포트 계층(1) - 서비스 및 개요 서론 지금까지 애플리케이션 계층들에 대해 다루었습니다. 이번 게시글부터는 트
dkswnkk.tistory.com