[네트워크 기초] 비용 효율적인 자원 공유

in #network6 years ago

비용 효율적인 자원 공유

네트워크를 통해 간접적으로 연결된 노드의 집합에서,

모든 한 쌍의 호스트는 연속된 링크와 노드를 따라 서로에게 메시지를 보내는 것이

가능하다. 물론 단 한 쌍의 호스트뿐만 아니라 모든 쌍의 호스트에게 메시지를 교환 하고 싶다.

그렇다면 통신하고자 하는 모든 호스트들이 동시에 네트워크를 사용하려고 한다면,

어떻게 네트워크를 공유해야 할까? 즉, 여러 호스트들이 똑같은 링크를 동시에

사용하고자 할 때, 어떻게 공유할 수 있을까?

호스트가 어떻게 네트워크를 공유하는가를 이해하기 위해서는 다중화(Multiplxing),

즉 다중 사용자간의 시스템 자원 공유를 의미하는 기초 개념을 도입해야 한다.

직관적으로 이해하면 다중화는 시분할 컴퓨터 시스템과 유사하게 설명될 수 있다.

즉, 단일 CPU가 다중 작업 간에 공유될 때, 각각의 작업은 자신들만의 프로세서를 가지고 있다고

믿는 것처럼 이해할 수 있다. 이와 유사하게, 다중 사용자에 의해 보내진 데이터가 네트워크를

구성하는 물리적 링크 위에서 다중화 될 수 있다.

이것이 어떻게 동작하는지 보기 위해, 위의 그림을 살펴보자.

이 네트워크는 왼쪽 네 개의 호스트 (송신자 S1 ~ S4)가 하나의 물리적 링크로 연결된 교환망을

공유하여, 오른쪽 네 개의 호스트(수신자 R1 ~ R4)로 데이터를 보내고 있다.

이 상황에서 네 개의 데이터 흐름은 스위치(multiplexer, 정확히는 MUX)에 의해

하나의 물리적 링크로 다중화(multiplexed)되고, 오르쪽 스위치에 의해 다시

각각의 흐름으로 역다중화(demultiplexed)된다.

다중 흐름을 하나의 물리적 링크 위에 다중화 하는데 여러가지 방법이 있다.

1. STDM(Synchronous Time-Division Multiplexing)

2. FDM( Frequency - Division Multiplexing)

3. 통계적 다중화(Statistical Multiplexing)



STDM은 시간을 동일한 크기의 조각으로 나누어 라운드 로빈(Round-robin)방식으로

각각의 흐름에 데이터를 보낼 수 있는 기회를 주는 것이다.

다시 말하면 시간 조각 1동안 S1에서 R1로 데이터가 전송되고,

시간 조각 2동안 S2에서 R2로 .. 3동안 S3에서 R3로.. 데이터가 전송된다는 것이다.



FDM은 서로 다른 주파수로 각각의 흐름을 전송하는데, 각 TV 방송국이 물리적 케이블

TV링크 위에 서로 다른 주파수를 이용하여 자사의 신호를 전송하는 것과 유사하다.



또 하나의 다중화 형태인 통계적 다중화는 두 가지 핵심 개념이 있다.

첫 째는 STDM처럼 물리적 링크가 시간적으로 공유된다.

하지만 STDM과 달리 각 흐름으로부터 데이터가 미리 정해진 시간에 따르지 않고

요구(Request) 에 따라 전송된다. 그러므로 한 개의 흐름만이 데이터를 보내야 한다면,

자신의 시간 몫이 돌아올 때까지 기다리는게 아니고 즉시 전송할 수 있다.

이렇게 유휴시간을 줄임으로 패킷 교환의 효율성이 높아진다.



그러나 통계적 다중화는 모든 흐름에게 자신이 전송할 수 있는 기회를 보장하는

방법이 없다. 즉, 일단 하나의 흐름이 데이터를 보내기 시작하면, 다른 흐름에게

기회를 줄 수 있도록 전송을 제한할 수 있는 어떤 방법이 필요하다.

이 필요성을 추족하기 위해 통계적 다중화는 각 흐름이 주어진 시간에

보낼 수 있는 데이터 블록의 크기를 제한한다. 이 제한된 크기의 블록은 패킷(Packet)

이라 지칭되는데, 어플리케이션 프로그램이 보낼 수 있는 임의의 크기를 갖는 메시지(message)와

구분된다. 패킷 교환망의 최대 패킷 크기 제한은 호스트가 생성한 메시지를

한 패킷에 담아 보낼 수 없는 경우를 초래하기도 한다.

즉, 소스는 메시지를 여러 개의 패킷으로 나누어 보내고, 받는 쪽에서 재조립해야 한다.