Mutiplexing & Demultiplexing
- 전송 계층에서 제공하는 기본적인 기능
- 하나의 머신에서 여러 개의 프로세스들이 존재하고 개별 프로세스들은 다른 머신과의 네트워크를 하기 위해선 하나의 통로를 거쳐야하는데 이 과정
- sender 에서 여러 개의 프로세스가 각자의 소켓을 가지고 메시지를 보내게 된다면 TCP or UDP 를 통해서 이 과정에서 멀티플렉싱이 일어남
- receiver 에서는 주로 디멀티플렉싱이 일어남
멀티플렉싱
- 전송계층에서 도장을 찍어주듯이 헤더에 목적지에 대한 정보를 입력
디멀티플렉싱
- 전송계층에서 세그먼트를 받아 윗 계층에 존재하는 여러 프로세스들에게 정확하게 전달해주기 위해서 헤더를 보고 어떤 프로세스에 전달해줘야되는지 확인하고 적절히 나눠주는 것
세그먼트는 payload와 header로 이루어져있음.
헤더에 반드시 포함되어야 하는 것이 Source port와 destination port 이다. (나의 포트와 목적지 포트번호)
Connectionless Demultiplexing
- 디멀티플렉싱은 receiver측에서 일어나게 된다.
- 소켓을 만들면 호스트 로컬 포트번호가 할당된다
- UDP소켓에서는 반드시 목적지 IP 주소와 목적지 포트를 명시해주어야한다.
- 호스트가 UDP 세그먼트를 받게되면(전송계층에서), 세그먼트에 적힌 목적지 포트를 확인하고 전달해준다.
Connection-oriented Demultiplexing
- TCP 소켓은 4개의 속성으로 확인한다. (Source IP, Port) , (Dest IP, Port)
- TCP는 전용소켓을 통해서 데이터를 주고받기 때문에 특정 프로세스에 매핑된 소켓을 찾을 수 있는 정보가 필요하다
- 그 정보가 (목적지 아이피, 포트번호), (발신지 아이피, 포트번호) 4가지 정보이다.
그림처럼 하나의 어플리케이션에서 여러 개의 소켓을 가지고 여러 호스트들과 통신을 할 수도 있다. 이때는 프로세스fork 나, Thread 를 사용해서 각 프로세스, Thread가 하나의 소켓을 담당하도록 설계한다.
- fork 란?
- fork 는 원래 실행되던 프로세스의 복사본을 만드는 함수이다.
- 최초의 프로세스를 부모 프로세스라고 하고 fork 되어서 만들어진 프로세스를 자식 프로세스라고 한다.
UDP : connectionless
- hand-shaking 을 하지 않는다. 각 세그먼트는 독립적으로 동작한다. (마치, 퀵택배처럼)
- 신뢰성을 보장하지 않는다. 메시지 간 순서 개념이 없다.
- UDP 세그먼트의 구조를 보면, 연결유지를 위한 정보가 없다.
- 따라서, 데이터 트레픽의 오버헤드가 적다.
Checksum
- UDP 체크섬은 에러를 검출해주는 역할을 하는 필드
'네트워크 > 라우팅,스위칭 관리' 카테고리의 다른 글
Sisco Router Routing Protocol 설정 - Static (0) | 2021.04.26 |
---|---|
시스코 IOS Software (0) | 2021.04.26 |
IPv4 데이터그램 단편화 (0) | 2021.04.22 |
MTU (0) | 2021.04.22 |
3. TCP/IP (0) | 2021.04.20 |