다중화와 역다중화
역다중화 = 빌(트랜스포트 계층)이 집배원(네트워크 계층)으로부터 우편물을 받았을 때, 이름을 확인하고 형제자매에게 직접 전달하는 것
다중화 = 앤(트랜스포트 계층)이 형제자매의 우편물을 모으고 집배원(네트워크 계층)에게 넘겨주는 것
- 네트워크 계층이 제공하는 호스트 대 호스트 전달 서비스에서, 호스트에서 동작하는 애플리케이션에 대한 프로세스 대 프로세스 전달 서비스로 확장하는 과정이다.
- 목적지 호스트의 트랜스포트 계층은 바로 아래의 네트워크 계층으로부터 세그먼트를 수신한다.
- 트랜스포트 계층은 세그먼트를 중간 매개자인 소켓에게 전달한다.
- 프로세스는 네트워크 애플리케이션의 일부분으로서 소켓을 갖고있다.
- 이는 네트워크에서 프로세스로, 한 프로세스에서 네트워크로 데이터를 전달하는 출입구 역할을 한다.
- 각각의 소켓은 하나의 유일한 식별자, 포트번호를 가진다.
- 각각의 트랜스포트 계층 세그먼트는 필드 집합을 가지고 있어서, 수신 소켓을 식별하기 위해 필드 집합을 검사한 후 적절한 소켓으로 보낸다.
- 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 역다중화라고 한다.
- 출발지 호스트에서 소켓으로부터 데이터를 모으고 각 데이터에 헤더 정보로 캡슐화하여 만든 세그먼트들을 네트워크 계층으로 전달하는 작업을 다중화라고한다.
- 다중화 서비스에는 2가지 요구사항이 있다.
- 소켓은 유일한 식별자인 포트번호를 갖는다.
- 각 세그먼트는 세그먼트가 전달될 적절한 소켓을 가리키는 특별한 필드를 갖는다.
- 출발지 포트번호 필드, 목적지 포트번호 필드
- 역다중화 서비스는 다음의 순서를 갖는다. (UDP의 기본 동작방식과 같음)
- 호스트의 각 소켓은 포트번호를 할당받는다.
- 세그먼트가 호스트에 도착하면,
- 트랜스포트 계층은 세그먼트 안의 목적지 포트번호를 검사하고,
- 그에 상응하는 소켓으로 세그먼트를 보낸다.
- 세그먼트의 데이터는 소켓을 통해 해당되는 프로세스로 전달된다.
비연결형 다중화와 역다중화
- UDP 소켓은 목적지 IP주소와 목적지 포트번호로 구성된 2개 요소의 집합에 의해 식별된다.
- 만약 2개의 UDP 세그먼트가 같은 목적지 IP주소와 목적지 포트번호를 가진다면, 이 둘은 같은 목적지 소켓을 통해 같은 프로세스로 향할 것이다.
- 출발지 포트번호는 회신 주소의 한 부분으로 사용된다.
- B → A에게 세그먼트를 보내기 원할 때, B → A로 가는 세그먼트의 목적지 포트번호는 A → B로 가는 세그먼트의 출발지 포트번호에서 가져온다.
연결형 다중화와 역다중화
- TCP 소켓은 4개 요소의 집합에 의해 식별된다.
- 출발지 IP주소
- 출발지 포트번호
- 목적지 IP주소
- 목적지 포트번호
- 다른 출발지 IP주소 또는 다른 출발지 포트번호를 가지고 도착하는 2개의 TCP 세그먼트는, 2개의 다른 소켓으로 향하게 된다.
TCP 연결 설정
- TCP 애플리케이션은 welcome 소켓을 가지고 있다.
이 소켓은 포트번호 12000을 가진 TCP 클라이언트로부터 연결 설정 요청을 기다린다. - TCP 클라이언트는 소켓을 생성하고, 연결 설정 요청 세그먼트를 보낸다.
- 서버 프로세스로 동작하는 컴퓨터의 호스트 운영체제가 목적지 포트 12000을 포함하는 연결 요청 세그먼트를 수신하면, 이 세그먼트를 포트번호 12000로 연결 수락을 기다리는 서버 프로세스로 보낸다.
- 서버는 연결 요청 세그먼트의 4개 요소의 집합에 주목한다.
- 새롭게 생성된 연결 소켓은 4개 요소의 집합의 4가지 값에 의해 식별된다.
- 그 다음에 도착하는 세그먼트의 출발지 포트번호, 출발지 IP주소, 목적지 포트번호, 목적지 IP주소가 전부 일치하면, 그 세그먼트는 이 소켓으로 역다중화될 것이다.
웹서버와 TCP
- 서버는 각각 다른 클라이언트가 보낸 세그먼트를 출발지 IP주소와 출발지 포트번호로 구별한다.
- 같은 웹서버 애플리케이션과 통신하기 위해 같은 목적지 포트번호(80)를 이용하는 두 클라이언트에 대한 예시를 보자.
- 호스트 C가 서버 B로 2개의 HTTP 세션을 시작
- 호스트 A가 서버 B로 하나의 HTTP 세션을 시작
- 호스트 A, 호스트 C, 서버 B는 각각 유일한 IP주소인 A, C, B를 가지고 있다.
- 호스트 C는 2개의 출발지 포트번호(26145, 7532)를 자신의 HTTP 연결에 할당한다.
- 호스트 A는 호스트 C와 독립적으로 출발지 포트번호를 선택하므로, 같은 출발지 포트번호인 26145를 할당할 수 있다.
→ 이렇게 하더라도 2개의 연결은 다른 출발지 IP주소를 가지기 때문에, 서버 B는 여전히 올바르게 역다중화할 수 있다.
'CS > 네트워크' 카테고리의 다른 글
TCP (1) | 2023.11.28 |
---|---|
파이프라이닝된 신뢰적인 데이터 전송 프로토콜 (0) | 2023.11.16 |
신뢰적인 데이터 전송 원리 (0) | 2023.11.11 |
비연결형 트랜스포트: UDP (0) | 2023.11.11 |
트랜스포트 계층 (0) | 2023.11.08 |