[네트워크]TCP/IP Multiplexing/demultiplexing

may.log·2023년 9월 19일
post-thumbnail

어플리케이션에서 동작하는 프로세스들이 Transport Layer의 프로토콜(TCP/UDP)를 이용하려면 각 프로세스 마다 소켓을 이용해야 한다.
하나의 컴퓨터에서 여러 프로세스가 동작하고, 각 프로세스는 소켓을 생성할 수 있다. 따라서 Transport Layer 입장에서는 여러 소켓에서 데이터를 전달받는 상황이 된다. 이렇게 여러 프로세스의 소켓에서 데이터가 송/수신되므로, 이때 필요한 개념이 Multiplexing과 Demultiplexing이다.

Multiplexing

여러 소켓들로부터 데이터를 받아, header(source port + dest port) +data 형식으로 segment를 만든다. 이 header의 정보는 demultiplexing 할 때 사용된다.

Demultiplexing

전달받은 segment들을 알맞은 소켓에 전달한다. 이때 segment의 헤더 정보를 가지고 어떤 소켓에 전달할지 판단한다.
host는 ip 주소와 포트넘버로 어떤 소켓에 segment를 전달할지 판단한다.

UDP는 demultiplexing을 어떻게 사용할까?

UDP는 dest IP와 dest port만 사용해서 어떤 소켓에 올릴지 demultiplexing 한다.
따라서 소켓은 아무한테나 올 수 있다. disconnection-oriented

TCP는 demultiplexing을 어떻게 사용할까?

TCP는 dest IP, dest port, source IP, source port 이 4가지 정보를 모두 사용해서 demultiplexing하기 때문에, 다 다른 소켓을 가지며 사용자만을 위한 고유하고 특정한 소켓을 가질 수 있다. 'CONNECTION-ORIENTED'
단점) 자원 많이 소모

정리

여러 소켓에 나온 데이터를 전송할 때는 Multiplexing, 받은 패킷을 적절한 소켓으로 보내줄 때는 Demultiplexing을 사용한다.

0개의 댓글