Multiplexing과 Demultiplexing은 왜 필요할까요?
네트워크 통신에서 여러 개의 데이터를 효율적으로 처리하기 위해 필요합니다.
음 예를 들어서 설명해 보겠습니다.
예로는 편지 배달이 적절할 거 같습니다.
동구와 북구에는 작업반장이 한 명 있습니다.
각 작업반장은 각 구의 편지들을 모아서 우편배달부에게 전달해 주는 역할을 합니다.
여기서 작업반장이 하는 행동이 다중화
입니다.
만약 이 다중화 작업이 없다면 작업반장은 각 구의 편지들을 하나 받고 전달하고, 이러한 작업을 하는데 굉장히 효율성이 떨어집니다.
만약이 우편배달부가 북구의 편지를 받아서 동구의 각 사람들에게 편지를 나눠줍니다,
이러한 작업을 역다중화
입니다.
즉 쉽게 말하면,
다중화는 데이터를 보내기 전에 합치는 작업이고, 역다중화는 데이터를 받아서 적절한 곳에 뿌려주는 작업입니다.
만약 이러한 작업이 없다면 굉장히 비효율적이겠죠. 데이터의 개수가 많다면 엄~~ 청나게 오래 걸릴 겁니다.
그러면 다중화, 역다중화의 개념을 이제 알았기에, 트랜스포트 계층에 적용해 보겠습니다.
우선 보내는 쪽은 다중화를 위해서 포트번호
, 목적지 포트번호
, 등 header 정보를 넣어줍니다.
역다중화에서는 이러한 header 정보를 통해서 적절한 곳에 뿌려줍니다.
세부적인 Demultiplexing 작업
segment의 구조는 위와 같습니다.
세그먼트에는 IP address
, source port, destination port
번호등이 있습니다.
UDP의 경우
- 행선지 IP address
- 행선지 Port 번호
- 이러한 정보를 토대로 적절한 소켓에 뿌려줍니다.
TCP의 경우
- 출발지 IP address
- 출발지 port number
- 행선지 IP address
- 행선지 port number
- 이러한 정보를 토대로 적절한 소켓에 뿌려줍니다.
즉 Mux와 Demux는 세그먼트와 데이터그램의 헤드값에 기반합니다.
UDP는 demux 하는데 행선지의 포트번호만 있으면 됩니다.
TCP는 demux 하는데 행선지와 출발지의 Ip 주소, 포트 넘버가 필요합니다.
이러한 Mux와 Demux는 Transport Layer에 국한되는 것이 아닌 모든 레이어에서 일어납니다.
😀요약
- Multiplexing과 Demultiplexing은 네트워크 통신에서 여러 개의 데이터를 효율적으로 처리하기 위해 필요합니다.
- 여러 소켓에서 나온 데이터를 전송하는 역할은 Multiplexing
받은 데이터를 적절한 소켓으로 보내줄 때는 Demultiplexing
- 여러 소켓에서 나온 데이터를 전송하는 역할은 Multiplexing
- Demultiplexing은 segment를 포트번호와 헤더를 보고 적절한 소켓에 전달해야 함.
- 여기서 UDP는 행선지 포트번호만이 필요함.
- TCP는 행선지, 출발지의 포트번호와 IP주소가 필요함.
- 다중화와 역다중화는 Transport Layer 뿐만 아니라 모든 계층에서 일어난다.
'Computer Science > Network' 카테고리의 다른 글
[컴퓨터망] - Rdt,pipeline, Go-Back-N, Selective Repeat (2) | 2023.04.13 |
---|---|
[컴퓨터망] - UDP와 UDP segment (0) | 2023.04.12 |
[컴퓨터망] - Transport Layer 개요 (0) | 2023.04.12 |
[컴퓨터망] - Socket programming (TCP & UDP) (0) | 2023.04.12 |
[컴퓨터망] CDN & DASH (1) | 2023.04.12 |