Transport Layer 개요 (Multiplexing, Demultiplexing)
0. Transport Layer
앞서 살펴본 TCP/IP 프로토콜 스택에서 Application Layer 바로 아래에 위치하는 Transport Layer에 대해 알아보자.
1. Transport Layer의 역할
Transport Layer의 역할은 크게 두가지가 있다.
1) Source(출발지) 부터 Destination(도착지) 까지 패킷이 제대로 전송될 수 있도록 함
2) Application Layer에서 만든 데이터를 일정한 크기로 자름
이처럼 Transport Layer는 실질적으로 패킷들이 출발지에서 도착지까지 제대로 전송될 수 있도록 하는 프로토콜을 제공하며, 데이터를 패킷단위로 자르는 역할 또한 수행한다.
2. Transport Layer 프로토콜 종류
물론 세부적으로 들어가면 Transport Layer에도 여러가지 프로토콜들이 존재하지만, 대표적으로 두가지 프로토콜이 있다.
- TCP (Transmission Control Protocol)
- Reliable, in-order delivery : 신뢰성 있게, 순서대로 전송한다.
- Connection Setup : 데이터를 보내기 전에 상대방의 상태를 확인하고 보낸다.
- Congestion control : 네트워크 상에서 패킷들이 몰려 발생하는 혼잡을 피하기 위해 보내는 패킷 양을 조절
- Flow control : 라우터와 받는 수신자의 상황을 봐서 보내는 패킷 양을 조절
- Delay나 Bandwidth를 건드리지는 못한다.
- UDP (User Datagram Protocol)
- 패킷을 어떤 수신자의 어떤 서비스가 받아야 하는지(IP주소, Port 번호), 패킷이 중간에 망가지지는 않았는지만 처리한다.
- 나머지 기능은 제공 X
3. Multiplexing, Demultiplexing
어플리케이션들이 Transport Layer의 프로토콜을 이용하기 위해서는 프로세스마다 Socket을 이용해야 한다고 했다.하지만, 컴퓨터에는 여러개의 어플리케이션들이 돌아가고, 각각의 어플리케이션들은 하나 이상의 Socket을 생성할 수 있다. 따라서 Transport layer 입장에서는 여러개의 Socket에서 데이터들이 쏟아지는 형태가 된다.이렇게 여러 어플리케이션의 Socket들이 데이터를 송/수신하므로 필요한 개념이 바로 Multiplexing과 Demultiplexing이다.
1) Multiplexing
여러 어플리케이션의 Socket들로부터 들어오는 데이터를 수집하여, 패킷으로 만들어 하위 레이어로 전송하는 것
2) Demultiplexing
하위 레이어로부터 수신된 패킷을 올바른 Socket으로 전송하여 올바른 어플리케이션에게 전송하는 것.
이때 정확한 어플리케이션의 Socket으로 전달해주기 위해 포트넘버를 활용한다.
내용을 정리해보면,
1. Transport Layer는 패킷이 제대로 전송될 수 있도록 하는 프로토콜들의 집합으로, 데이터를 일정 크기로 자르는 역할도 수행한다.
2. 여러 소켓에서 나온 데이터를 전송할때는 Multiplexing을, 받은 패킷을 적절한 소켓으로 보내줄때는 Demultiplexing을 적용한다.
위 내용은 공부하며 작성한 것으로, 오류가 있을 수 있습니다.