티스토리 뷰
이전 포스트에서 트랜스포트계층 프로토콜이 UDP와 TCP가 다중화와 역다중화 , 신뢰 줄 수 있는 서비스 제공을 한다고 말했다. 이번 포스트에서는 다중화와 역다중화에 대해 알아보자.
다중화와 역다중화
다중화와 역다중화는 네트워크 계층이 제공하는 호스트 대 호스트 전달 서비스에서
호스트에서 동작하는 애플리케이션에 대한 프로세스 대 프로세스 전달 서비스로 확장하는 것이다.
다시금 쉽게 얘기하자면 휴대폰대 휴대폰으로 연결하는 것이 네트워크계층이라면
카톡대 카톡으로 연결하게 해주는 것이 트랜스포트 계층이라고도 할 수 있겠다.
2장에 대한 포스트에서 소캣을 통해 애플리케이션이 데이터를 전달한다고 했는데
(출발지 -> 목적지) 데이터 운행중 네트워크 계층에서 트랜스포트 계층의 목적지 소캣으로 전달하는 작업을 역다중화라고 하며
다시금 반대로 그 세그먼트들을 트랜스포트 계층에서 네트워크 계층으로 전달하는 작업으로 다중화라고 한다.
다중화/역다중화 의 두가지 요구사항
다중화와 역다중화를 위해서는 무엇이 필요할까 생각해보자.
올바른 소켓을 가기위해서는 일단 식별자를 가진 소켓이 존재한다는 것이고
해당 데이터가 어디로 가야하는지 데이터 해당 값을 갖고 있어야 할 것이다.
그러므로 다중화의 두가지 요구사항은 이렇게된다.
첫째는 소켓은 유일한 식별자를 갖는다는 것
둘쨰는 각 세그먼트는 세그먼트가 전달될 적절한 소캣을 가르키는 특별한 필드를 갖는다는 것
여기서 소켓의 유일 식별자는 포트 번호로 되고 세그먼트가 특별한 필드에 소켓의 주소 (포트번호)를 갖고 있어야한다는 말이된다. 그래서 UDP와 TCP 즉, 트랜스포트 계층 프로토콜의 헤더 필드에는 출발비 포트 번호와 목적지 포트 번호를 갖고 있게된다.
트랜스포트 계층 프로토콜
출발지 포트번호 | 목적지 포트 번호 |
그밖의 헤더 필드 | |
애플리케이션 데이터 |
이러한 출발지와 목적지 포트 번호를 통해 소캣을 식별하여 프로세스에 데이터를 전달하는 방식은 UDP의 기본적인 동자이다. (그러나 TCP는 이보다 훨씬 다중화와 역 다중화에 더 많은 원리가 존재한다)
이제 본격적으로 TCP와 UDP의 다중화/역다중화에 대해 살펴보자
비연결 다중화/ 역다중화 UDP
출발 종단 시스템에서 목적 종단 시스템으로 데이터를 전달한다.
애플리케이션 계층에서 HTTP를 소켓에 넣을 때 TCP로 트랜스포트 계층에서 캡슐화를 하고 다시금 네트워크 계층으로 (다중화)IP프로토콜로 캡슐화 되는 방식으로 캡슐화로 데이터가 계속해서 전달된다. 이후 목적지로 오는 경우 반대로 역캡슐화가 진행되며 네트워크 계층에서 다시금 트랜스포트 계층으로(역다중화) 패킷을 받고 해당 패킷은 결과적으로 목적지 종단시스템에 도달하게 된다.
++ 여기서 네트워크 계층에서 -> 트랜스포트 계층으로 찾아갈 때 UDP 소켓이
목적지IP주소와 목적지 포트번호로 구성된 두 요소로 된 집합의 헤더를 통해 식별된다는 것을 기억하자! (위에서 말했다)
연결지향형 다중화/ 역다중화 TCP
TCP 역다중화를 수행하기 위해서는 TCP소켓과 TCP 연결 설정을 살펴보는 과정이 필요하다 .
UDP 와 다른점으로 TCP는 2개의 요소 ( 목적지IP주소와 목적지 포트번호)로 식별하는 것이 아닌 4개의 요소(목적지IP주소와 목적지 포트번호, 출발지 IP주소와 출발지 포트번호)로 식별된다는 것이다.
UDP의 경우 목적지IP주소와 목적지 포트번호가 같으면 같은 소켓으로 데이터가 전달되지만
TCP의 경우 목적지IP주소와 목적지 포트번호가 같더라도 다른 요소가 다르면 다른 소켓에 데이터가 전달되게 된다.
이러한 연결방식의 차이는 이전에 설명한 서버와 클라이언트 간의 TCP 연결 방식에 필요하기 때문에 있는 것이다 .
TCP는 연결 지향성으로 서버와 클리언트가 연결된 채 데이터를 주고받으려면 확실한 둘간의 관계가 필요하다.
그러나 UDP의 경우 벼연결로 (속도를 위해) 데이터를 주고 받을려면 위와 같은 확실환 둘간의 관계가 필요없다.
'Network' 카테고리의 다른 글
4.1 네트워크 계층 개요 (0) | 2023.01.21 |
---|---|
3.1 트랜스포트 계층 서비스 및 개요 (0) | 2022.10.21 |
2.2 웹과 HTTP (0) | 2022.10.14 |
2.1 네트워크 애플리케이션 구조 (0) | 2022.10.14 |
1.5 프로토콜 계층과 서비스 모델 (1) | 2022.10.03 |