Multiplexing과 Demultiplexing은 네트워크의 Transport Layer에서 중요한 역할을 하는 프로세스입니다.
간단하게,
- Transport Layer := Process들 간의 논리적인 커뮤니케이션(Process to Process)
- Network Layer := Host들 간의 논리적인 커뮤니케이션(Host to Host)
이라고 할 수 있습니다.
Multiplexing
여러 개의 데이터 스트림을 하나의 통신 채널로 결합하는 프로세스
- 여러 애플리케이션 프로세스의 데이터를 하나의 전송 계층 세그먼트(Transport Layer Segment)로 결합합니다.
- 송신 Host의 여러 socket으로부터 데이터를 수집합니다.
- 수집된 데이터에 Transport Layer Header를 추가하여 Segment를 생성합니다.
- 생성된 Segment를 Network Layer로 전송합니다.
Demultiplexing
Multiplexing의 반대 프로세스로,
수신된 데이터 스트림을 개별 데이터 스트림으로 분리하는 프로세스
- 수신된 Segment의 Header 정보를 사용해 적절한 socket으로 데이터를 전달합니다.
- TCP/UDP Segment의 출발지 Port 번호와 목적지 Port 번호를 이용하여 올바른 애플리케이션 프로세스로 데이터를 전달합니다.
- IP 주소와 Port 번호를 조합하여 Segment를 적절한 socket으로 라우팅합니다.
Demultiplexing의 동작 방식
- 수신 Host의 Network Layer에서 IP 데이터그램을 수신합니다.
- Transport Layer에서 Segment Header를 검사합니다.
- UDP의 경우 :
• 목적지 포트 번호만을 확인하여 해당 포트와 연결된 socket으로 Segment를 전달합니다.
• 동일한 목적지 포트 번호를 가진 Segment는 모두 같은 socket으로 전달됩니다. - TCP의 경우 :
• 출발지 IP, 출발지 포트, 목적지 IP, 목적지 포트의 4가지 정보를 모두 확인합니다.
• 이 4가지 정보와 일치하는 socket으로 Segment를 전달합니다. - 적절한 socket이 식별되면, Segment의 데이터 부분을 해당 socket의 버퍼로 전달합니다.
- 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 |
---|