데이터통신

데이터통신 12.2 제어 접근

공부승식 2021. 6. 8. 17:12
728x90

제어 접근(Controlled access)

제어 접근에서 지국들은 서로 상의하여 어느 지국이 전송할 권리를 갖는지 찾는다.

지국은 다른 지국들에 의해 권리를 인정받을 때까지는 전송할 수 없다.

 

12.2.1 예약(reservation)

예약(reservation) 방식에서는 지국은 데이터를 전송하기 전에 예약을 해야한다.

시간은 구간들로 나뉘게 된다.

각 구간마다 예약 프레임이 그 구간에 전송되는 데이터 프레임의 앞에 놓인다.

모두 N개의 지국이 있다면 예약 프레임에는 정확히 N개의 미니 슬롯이 있따.

각 미니슬롯은 한 지국에 속한다.

어떤 지국이 데이터프레임을 보내려고 하면, 자신의 미니 슬롯에 예약을 한다.

예약을 할 수 있게 된 지국은 해당 예약 프레임의 뒤에 자신의 데이터프레임을 전송할 수 있다.

 

 

 

12.2.2 폴링(Polling)

폴링은 지국중 하나가 Primary station(주국)이 되고, 다른 지국들은 Secondary station(종국)이 되는 접속 형태에서 동작한다.

궁극적으로 종국으로 가는 데이터도 모두 주국을 통해서 전달된다.

주국이 링크를 제어하며 종국은 그 지시에 따른다.

어느 시간에 어느 지국이 링크를 사용하느냐 하는 것은 오로지 주국에 결정에 따른다.

따라서! -> 주국은 항상 모든 세션을 시작하는 지국이다.

이 방법은 충돌을 피하기 위해 폴과 선택을 사용한다.

단점: 주국이 실패하면 시스템이 다운된다.

 

선택

선택(select)기능은 Primary station이 무언가를 보낼 것이 있을 때마다 수행된다. 

Primary station이 링크를 제어한다는 것을 기억해라!

Primary station이 전송하지도 않고 수신하지도 않으면 primary station은 링크가 사용 가능하다는 것을 안다.

보낼 것이 있으면 주국은 그것을 보낸다. 

그러나 주국이 모르는 것: 목적장치가 수신 준비가 되어있나요?

그래서 주국은 종국이 곧 있을 전송에 대해 알고 있또록 하는것이고, 종국이 수신 준비가 되어있는가? 에 대한 응답을 받는다. 

=> 데이터를 전송하기 이전에 주국은 SEL(선택) 프레임을 만들어서 전송하며, 그 프레임의 필드 중 하나가 보내려고 의도하는 종국의 주소를 포함한다.

 

 

폴(Poll)

폴(Poll)기능은 주국이 종국으로부터 전송할 데이터를 모을때 수행한다.

주국이 데이터를 수신할 준비가 되어있으면 각 장치들에게 차례로 보낼 것이 있는지 물어보아야 한다.(폴링)

첫번째 종국에 접근하였을 때,  보낼 것이 없다 ? 부정 응답을 보낸다., 보낼것이 있다? 데이터를 그냥 보낸다.

Primary station은 부정 응답(NAK 프레임)을 받게 되면 데이터를 보낼 종국을 찾을 때까지 다음 종국에게 똑같이 묻는다.

응답이 긍정이라면,(데이터 프레임이 올 때) 주국은 프레임을 읽어들이고 응답(ACK 프레임)을 보내어 받은 것을 확인해 준다.

 

 

12.2.3 토큰 통과(Token passing)

토큰 통과(token passing) 방식에서 네트워크 안의 지국들은 지역 고리형태로 구성된다.

다시 말하면 각 지국에는 선행자(predecessor) 와 후행자(successor)가 있다.

선행자는 고리 형상에 있어서 논리적으로 앞에있는 지국이며 후행자는 바로 뒤에있는 지국이다. 

현행 지국은 채널을 접근중에 있는 지국이다.

이렇게 접근할 권리는 선행자로부터 현행지국으로 전해진 것이다. 

현행 지국이 전송할 데이터가 없게 되면 후행자에게 넘겨질 것이다.

 

이 채널 접근 권한이 어떻게 한 지국으로부터 다른 지국으로 전해질까?

이 방식에서는 Token(토큰) 이라고 불리는 특별한 패킷이 고리를 따라서 돌아다닌다.

토큰을 붙잡게 되는 지국은 채널 접근 권한을 갖게 되고 데이터를 전송하게 된다.

지국이 보낼 데이터가 생기면 지국은 선행자로부터 토큰을 받을 때까지 기다린다.

이후에 토큰을 넘겨받아 데이터를 보낼 수 있게 된다.

지국이 더 이상 보낼 데이터가 없으면 토큰을 후행자에게 넘겨준다.

지국은 다음 회전에서 토큰을 받을 때까지는 데이터를 보내지 못하고 기다려야한다.

이 과정에서 지국이 토큰을 받았는데 보낼 데이터가 없으면 토큰을 다음 지국에 그냥 전해준다.

 

 이 접근방법을 위해서는 토큰 관리가 필요하다. (지국을 토큰을 붙들고 있는 시간을 제한해야함)

토큰이 손실되거나 손상되지 않도록 감시해야한다. 예를 들면 토큰을 붙들고 있던 지국이 동작을 멈춰버리면 토큰이 손실되게 된다.

토큰 관리의 다른 기능은 지국과 전송할 데이터의 종류에 우선순위를 부여하는 것이다. 

그리고 낮은 순위의 지국이 상위 순위의 지국에게 토큰을 양보하도록 하는 것.

 

 

12.3 채널화(Channeliztion)

채널화(또는 채널 분할)는 링크의 가용 대역폭을 지국들 사이에서 시간적으로(TDMA), 주파수상(FDMA)으로 또는 코딩(CDMA)을 통해 다중접근하는것이다.

 

12.3.1 FDMA

주파수 분할 다중접근(FDMA, frequency division multiple access) 

에서는 가용 대역폭을 주파수대역으로 나눈다. 각 지국은 대역을 배정받아 데이터를 전송한다.

각 대역은 지국에 할당되어 항상 해당 지국만 사용할 수 있다.

각 지국은 또한 통과대역 필터를 사용하여 전송주파수를 제한한다.

지국 사이의 방해를 방지하기 위하여 각 통과대역은 작은 보호대역(guard band)으로 서로 떨어져있게된다.

FDMA는 통신 전체기간동안 미리 정한 주파수 대역을 규정한다.

이는 스트림데이터가 쉽게 FDMA를 사용할 수 있다는 것을 의미한다.

(데이터 링크층의 접근방법중 하나이다.)

 

12.3.2 TDMA

시간 분할 다중접근 (TDMA, time-division multiple access)

에서는 지국들이 시간상에서 채널을 공유한다.

각 지국은 자신이 데이터를 전송할 수 있는 타임 슬롯을 할당받는다.

각 지국은 할당받은 타임 슬롯에 자신의 데이터를 전송한다.

 

 

12.3.3 CDMA

코드 분할 다중 접근(CDMA, code-division multiple access)

하나의 채널이 전체 대역을 차지하고(FDMA와 다르다), 모든 지국이 동시에 전송한다.(TDMA와 다르다)

CDMA는 서로 다른 코드를 사용해 통신한다.

(사람들로 가득찬 방에서 각자 다른 언어로 이야기한다고 생각해보자. 방이라는 공유 채널에서 다른말(코드)를 사용하는 쌍이 쉽게 통신할 수 있는것)

 

아이디어

동일한 채널에 연결된 4개의 지국을 가정해보자.

1번지국으로부터의 데이터는 d1, 2번지국으로부터의 것은 d2, 이런식으로 해보자.

1번지국에 할당된 코드는 c1, 2번지국에는 c2,이런식으로 하자.

할당된 코드는 2가지 성질이 있다고 가정하자.

1. 각 코드를 다른 코드로 곱하면 0이 된다.

2. 각 코드를 자신의 코드에 곱하면 지국의 개수(4)가 된다.

이 두가지 성질을 생각하면서 어떻게 이 4개의 지국이 위 그림처럼 공유채널을 사용하여 서로 통신할 수 있을지 보자.

1번 지국은 자기 데이터를 자기 코드로 곱하여 d1*c1을 얻는다.

2번 지국도 마찬가지로 하여 d2*c2를 얻으며 나머지도 똑같이 얻는다.

채널을 통과하는 데이터는 그림에 보인것 처럼 이 모든것들의 합이다. 

다른 3개의 지국 중 하나로부터 데이터를 받고자 하는 지국은 채널의 데이터를 송신자의 코드로 곱한다.

1번 지국과 2번 지국이 통신하고 있는데 2번지국에서 1번지국이 뭐라고 말하는지 들으려고 한다.

그러면 채널의 데이터를 1번 지국의 코드인 c1으로 곱한다. 

c1*c1의 결과는 4이지만 c2*C1, c3*c1, c4*c1의 결과는 모두 0이므로 2번지국은 1번지국으로부터의 데이터를 수하기 위해서는 결과값을 4로 나누면된다.

C는 위 순열로 이루어져있다( 자기를 곱하면 4인데 다른코드와 곱하면 0인형태)

(d1*c1 + d2*c2+d3*c3+d4*c4) +c1 = 4*d1

나누기 4하면 d1이 나온다. 

 

수열 생성

침 수열을 생성하기 위해서는 Walsh Table을 사용한다.

W1 = [+1]

W2 = [1  1

           1 -1]

4칸으로 나누어서  

W   W

W    W보수

이렇게 한다.

W4는

W2   W2

W2   W2보수

이렇게만든다. 

그러면 한 행이 한 칩 수열이 된다.