Mutiplexing & Demultiplexing
배경
전송계층과 애플리케이션 계층
전송계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스 간의 논리적인 통신(Logical Communication)을 제공
논리적 통신(Logical Communication)
: 실제 물리적인 전송이 아닌, 메세지를 주고받는 과정에서 오류체크, 흐름제어 등의 역할즉, 네트워크를 통한 안정적, 신뢰성있는 데이터 전달로 애플리케이션 프로세스들이 직접 연결된 것 처럼 보이게 함
전송계층 프로토콜은 네트워크 라우터가 아닌 종단 시스템에서 구현 됨
애플리케이션의 메시지를 분할하여 전송계층 헤더를 추가해 세그먼트로 변환
어플리케이션 계층의 클라이언트들은 각각 독립적인 프로세스로 실행 됨
전송계층과 네트워크 계층
전송계층의 메시지 운반
애플리케이션 계층 프로세스 → 네트워크 계층(네트워크 계층의 경계 지점)
네트워크 계층 → 애플리케이션 계층 프로세스
예시: 편지 보내기
토끼 가족과 고양이 가족이 편지를 주고 받는다.
엄마 토끼는 가족들의 편지를 모아서 집배원에게 편지를 전달해준다.
고양이네 집에 편지가 도착하면 엄마 고양이가 편지들을 가족들에게 나눠준다.
편지 : 애플리케이션 메시지
집 : 호스트(종단 시스템)
가족들 : 각 프로세스
엄마 : 전송계층 프로토콜
우편 서비스 : 네트워크 계층의 프로토콜
집배원 : 소켓
다중화
: 엄마 토끼가 가족의 우편물을 모아 집배원에게 넘겨주는 작업역다중화
: 엄마 고양이가 우편물을 가족들에게 직접 나눠주는 작업
IP 서비스 모델
최선형 전달 서비스(Best Effort Delivery)
비신뢰적 서비스
네트워크를 통해 데이터를 전송할 때 최선을 다하지만, 패킷 손실, 중복, 순서 변경 등의 문제가 발생할 수 있음
신뢰적 서비스
이 서비스는 데이터 손실, 중복, 순서 병경 등의 문제 없이 데이터를 전송할 것을 보장
TCP는 IP의 호스트 간의 비신뢰적인 서비스를 프로세스 사이의 신뢰적인 데이터 전송 서비스로 만들어줌
하나의 호스트에서 여러개의 네트워크 애플리케이션 프로세스가 실행 중 이다. 전송계층은 하위의 네트워크 계층으로부터 수신한 데이터를 여러 프로세스들 중 하나에게 전달해야한다. 이때 수신 측 호스트의 전송계층은 데이터를 직접 프로세스에게 전달하지 않고, 호스트가 가진 여러개의 소켓들 중 적절한 한 개의 소켓으로 전달하는 역할을 한다.
개념
전송계층이 제공하는 응용 프로세스 통신 통로 자료구조
어플리케이션 프로세스가 전송계층에 실제 데이터를 주고받는 자료구조
사용 이유
소켓 주소(
IP주소 + 포트번호
)를 통해 응용 프로세스의 소켓 주소를 구분할 수 있으며 프로세스는 여러 개의 소켓을 가질 수 있음즉, 소켓 주소를 가지고 있지 않으면 어떤 프로그램으로 전달되야 하는지, 어떤 프로그램의 어떤 소켓으로 전달되어야 할지를 알 수 없음
IP주소를 통해 네트워크에서 통신하는 각 호스트를 식별함
호스트는 NIC을 통해 네트워크에 연결되고, 각 NIC는 고유한 IP주소를 할당 받음
NIC (Network Interface Card)
: 컴퓨터의 내부에 위치하는 하드웨어 장치로, 이를 통해 컴퓨터가 네트워크에 연결되고 통신할 수 있음
따라서 IP주소는 NIC를 통해 연결된 호스트들을 식별함
전송계층은 하나의 NIC로부터 다른 NIC까지 데이터를 전송함
이때 IP주소만으로는 NIC의 여러 프로세스를 구분할 수 없음 (IP는 호스트의 NIC를 구분함)
따라서 어플리케이션 프로세스는 포트 번호를 통해 같은 NIC을 사용하는 어플리케이션 프로세스를 구분함
해당 포트번호를 가지고 어플리케이션 프로세스를 구분해서 데이터를 전달 할 수 있도록 하는것이 전송계층의 다중화 서비스
Mutiplexing
다중화 (MUX)
개념
여러 애플리케이션의 소켓들로부터 들어오는 데이터를 수집하여, 세그먼트로 만들어 하위 레이어로 전송하는 것
애플리케이션 계층의 여러개의 소켓에서 전송되는 데이터를 모으고, 데이터에 헤더 정보를 포함한 세그먼트들을 네트워크 계층에 전달
출발지 호스트에서 소켓으로부터 데이터를 모아 헤더 정보를 더해 캡슐화 한 후, 캡슐화된 세그먼트들을 네트워크 계층으로 전달하는 작업
여러 애플리케이션들이 전송계층으로 메세지를 전달하면, 전송 계층에서는 헤더를 붙여 캡슐화하고 네트워크 계층으로 일렬로 보냄
Demultiplexing
역다중화 (DEMUX)
개념
하위 레이어로부터 수신된 세그먼트의 정보를 확인하여 응용계층의 각각 올바른 소켓으로 전달해주는 과정
세그먼트의 헤더정보 속 포트번호를 사용하여 올바른 소켓으로 전달
이때 프로토콜(TCP/UDP)에 따라 구체적인 헤더 정보가 다름
수신 측에서 도착한 세그먼트를 해당 소켓으로 전달하기 위해 수신 측 포트 번호를 사용하여 세그먼트를 구분하는 과정
다중화 유형
연결형 다중화/역다중화(connection-oriented)
통신 소켓간에 1:1 논리적 연결 설정
소켓 식별:
출발지 IP주소 + 출발지 포트번호 + 목적지 IP주소 + 목적지 포트번호
TCP에서 사용
서버호스트는 동시에 많은 TCP소켓 지원 가능
웹 서버는 연결되는 각 클라이언트마다 다른 소켓을 가짐
하지만 오늘날의 고성능 웹서버들은 하나의 프로세스만 사용
각각의 새로운 클라이언트 연결을 위해 새로운 연결 소켓과 함께 새로운 스레드를 생성하는 방식 이용
비연결형 다중화/역다중화(connectionless)
통신 소켓간에 1:1 논리적 연결 미설정
한개의 소켓이 여러개의 소켓과 연결이 가능함 (1:N 통신 가능)
소켓 식별:
목적지 IP주소 + 목적지 포트번호
UDP에서 사용
UDP 소켓은 목적지 IP 주소와 목적지 포트번호에 의해서만 식별되므로 프로세스가 데이터를 받았지만 누구의 데이터인지 확인할 방법이 없음
이로인해 UDP는 단방향 통신이며 응답 메시지가 없는 통신임
해당 내용은 전송계층에서의 다중화와 역다중화에 초점이 맞춰져있지만, 다중화와 역다중화는 한 계층의 프로토콜이 상위 계층의 프로토콜에 의해 사용될 때마다 필요한 작업이다.
캡슐화 (encapsulation)
개념
네트워크 프로토콜에서 데이터를 전송하기 위해 데이터에 헤더와 트레일러 같은 제어정보를 추가하는 프로세스
전송계층의 캡슐화
전송계층에서 헤더에 다중화에 필요한
출발지 포트 번호
,목적지 포트 번호
를 붙여서 세그먼트 만듦네트워크 계층으로 보낸 해당 세그먼트는 IP데이터그램에 의해 인캡슐레이션 됨
세그먼트가 IP데이터그램의 data부분에 들어감
IP 데이터그램 IP패킷이라 많이 부르지만, 패킷이란 표현은 일반적으로 많이 사용되는 표현이다. 따라서
IP데이터그램
이 더 정확한 이름이다.
Ref
Last updated