도순씨의 코딩일지

데이터 통신 :: 통계적 다중화, Splitting, 프로토콜(protocol) 본문

𝐂𝐎𝐌𝐏𝐔𝐓𝐄𝐑 𝐒𝐂𝐈𝐄𝐍𝐂𝐄/𝐃𝐀𝐓𝐀 𝐂𝐎𝐌𝐌𝐔𝐍𝐈𝐂𝐀𝐓𝐈𝐎𝐍

데이터 통신 :: 통계적 다중화, Splitting, 프로토콜(protocol)

도순씨 2020. 9. 21. 00:00

🌼 통계적 다중화 (Statistical Multiplexing)

통계적 다중화는 시분할 다중화를 변경한 방법입니다. 비동기식 다중화라고 불리기도 하는 통계적 다중화는 1대 1로 전송을 하면 링크가 너무 낭비되기 때문에 여러 개를 공유하는 방식으로 변경한 것입니다. 이를 통해 자원 공유의 효율성이 더 높아질 수 있습니다. 

위 사진은 시분할 다중화와 통계적 다중화를 나타낸 것입니다.  시분할 다중화에서 Wasted Bandwidth를 통해서 낭비되는 구역이 있음을 알 수 있습니다. 통계적 다중화에서는 남은 공간을 뒤에 남겨놓으므로써 공간을 절약하였습니다. 하지만 시분할 다중화는 Demux의 어느 쪽으로 내보내야 할지 시간에 따라서 정해져 있지만, 통계적 다중화는 그런 기준이 없습니다. 따라서 앞에 흰 부분은 앞에 표식을 붙여 어디에서 보내주었는지 표시한 것입니다. 

 

 

🌼 Splitting

앞에서 Mux 포스팅을 보고 오셨다면 화살표의 개수가 바뀐 것을 아실 수 있을 것입니다. 이전에는 링크를 하나로 구성하였지만, 최근에는 데이터의 크기가 매우 커져 하나의 링크로는 감당할 수 없게 되었습니다. 그래서 보내는 쪽에서 여러개로 쪽에서 수신쪽으로 합치는 방식을 사용하고 있습니다. 링크들이 무선이라면 링크가 아주 굵어질 수 없으므로 현재에도 유효한 방법이라 할 수 있습니다.

 

 

🌼 통계적 다중화와 패킷 스위칭

그렇다면 통계적 다중화와 패킷 스위칭은 아예 똑같은 개념일까요? 그렇지 않습니다. 둘은 엄연히 다른 개념입니다. 통계적 다중화 는 링크를 공유하는 방법입니다. 반면 패킷스위칭 은 노드가 목적지를 향해 데이터를 전달하는 방법입니다. 또 패킷 단위로 링크 사용을 재스케쥴링합니다. 링크는 거의 통계적 다중화를 사용합니다. 동기식 다중화를 하면서도 패킷스위칭을 할 수 있고, 서킷 스위칭도 다중화가 가능하긴 하지만 통계적 다중화와 잘 맞는 것은 아닙니다.

 

다른 이야기를 해보자면 링크로 나가기 위해서 경쟁하는 패킷을 저장하는 것을 버퍼링(buffering)이라 합니다. 버퍼가 쌓이면 패킷에서 꺼내는 순서를 바꿀 수 있습니다. 이것을 패킷 스케쥴링이라 하죠. 준비한 버퍼보다 넘치는 경우 버퍼 오버플로우가 일어나는데, 이 때 해결하는 방법은 모든 것을 버리는 수밖에 없습니다. 이때 혼잡(congestion) 상황이 일어나게 되는 것입니다. 

 

 

🌼 통신 서비스

통신의 주체는 응용 프로그램입니다. 응용프로그램마다 원하는 기능은 모두 다릅니다. 따라서 네트워크는 응용 프로그램이 원활하게 통신할 수 있는 기능을 제공합니다. 호스트 간의 연결을 프로세스 간 통신 형태로 변환하는 형태를 사용합니다. 네트워크는 프로세스와 프로세스 간의 채널(channel)을 지원합니다. 

 

🌼 프로토콜 (Protocol)

프로토콜 은 통신 과정에서 원활한 통신을 위해서 통신에 사용되는 약속입니다 . 양쪽이 같아야 한다는 것을 전제로 합니다. (대칭 관계) 다양한 컴퓨터통신 시스템/응용으로 인해서 프로토콜이 복잡해졌고 이로 인해서 불명확한 해석이 늘어났습니다. 또한 관리의 어려움이 들어났고 이러한 문제점들이 새로운 프로토콜이 필요할 때마다 반복되었습니다. 이를 해결하기 위해서 복잡성을 해결하는 구조적인 기법이 필요합니다.

 

복잡성을 해결하기 위해서 제시된 방법이 계층화(Layering) 입니다. 복잡함은 한 번에 풀고자하면 매우 어려운 문제입니다. 그래서 계층화가 필요합니다. 복잡한 내용/문제를 숨겨서 문제를 단순화시키고(추상화) 추상화를 반복적으로 적용하면 됩니다. 추상화는 자연스럽게 계층화를 유도합니다. 계층화는 두 가지 장점을 제공합니다. 첫째, 네트워크 구축 문제를 다루기 쉽게 만들어줍니다. 둘째, 모듈화된 설계를 제공합니다. 신규 서비스를 제공하기 원하는 경우에, 해당 부분만 고치고 나머지 부분은 그대로 진행하면 됩니다.

 

통신 프로토콜은 여러 계층으로 정의되어 있습니다. 

각 계층은 하나의 기능을 하는 개체로서 다른 프로토콜에서 재사용 가능합니다. 사진에서 위쪽의 체계는 많이 다를 수 있지만 아래쪽은 비슷하기 때문에 재활용 가능성이 더 높습니다. 

 

프로토콜은 하나의 계층도 프로토콜이라 할 수 있습니다. 각 프로토콜 객체는 두 개의 다른 인터페이스를 가집니다. 첫째, 서비스 인터페이스(service interface) 입니다. 해당하는 프로콜의 작업을 정의해줍니다. 쉽게 말하자면 '나를 쓰려면 이렇게 쓰라' 라는 설명을 제공하는 것입니다. 둘째, 동료 인터페이스(peer-to-peer interface) 입니다. 동료 인터페이스는 동료 간에 교환되는 메시지를 정의합니다. 이것을 통해 한 기기의 응용/프로토콜이 다른 기계의 동료 프로토콜과 통신하는 방법이 결정됩니다. 

 

프로토콜 그래프 (프로토콜 스택) 은 프로토콜의 모음과 그들 사이의 의존관계를 나타냅니다. 각각도 대칭이고 전체 구성도 대칭이어야 한다는 특징을 갖고 있습니다. peer 간의 통신은 대개 논리적으로 이루어지는데, 실제 통신은 하위 계층을 사용하여 이루어집니다. 비디오 응용은 다른 응용과 차이가 있으므로 분리합니다. 수신쪽에서는 이것이 어떤 프로토콜인지 분류하여야 할 필요가 있습니다. 또, RRP(Request/Reply Protocol, 요구/응답 프로토콜)사이에는 demux key가 필요합니다. 

 

Comments