Intro
앞서 우리는 네트워크에 대한 구성 요소들부터 개념적 구분까지 다뤄봤다. 즉, 네트워크에 대한 전반적인 뼈대를 잡았다. 이제 네트워크의 흐름을 이해하기 위해 알아야 하는 규칙, Protocol들에 대해 다뤄보겠다. 우선 MAC을 다루며 이런 규칙이 왜 존재해야 하는지, 크게 어떤 기준을 가지고 나뉘는지 알아보겠다.
MAC
오늘도 우리의 친구 위키백과를 통해 MAC의 정의부터 살펴보도록 하자.
매체 접근 제어(Media Access Control, MAC)는 자료 전송 프로토콜의 하부 계층이며 일곱 계층의 OSI 모델에 규정된 데이터 링크 계층의 일부이다.
즉, MAC은 2계층인 Data Link Layer에 속한 부계층 중 하나로, 네트워크에 속한 여러 단말 간 충돌을 방지하는 역할을 한다. 사실 우리에게 MAC은 APPLE의 MAC, 아니면 차라리 MAC 주소로 더 익숙할 것이다. 다만 Multiple Access Protocols로 범위를 넓히면 네트워크에 관심이 있거나, 한 번쯤은 수업을 들어봤을 지금 이 글을 읽고 있는 당신은 '유레카!'를 외칠 것이다. 좀 더 쉬운 말로 MAC의 역할을 풀어쓰면, 여럿의 사용자가 정보를 주고 받기 위해 줄에 접근하는 방법이다. 즉, 충돌을 피하기 위해 상호 간 규칙을 정하는 것인데 접근 방법에 따라 두 가지로 나뉘고, 혼자 동떨어진 한 녀석까지 포함해 크게 3가지 프로토콜로 구분한다.
- Random Access Protocol
- Controlled Access Protocol
- Channelization Protocol
Random Access Protocols
Random Access Protocol은 만인이 평등한 규칙이다. 같은 네트워크에 속한 매체들은 동등한 지위를 갖고 랜덤으로 접근 권한을 정해 접근한다. 네트워크를 접해본 사람들에게 가장 익숙한 프로토콜이자 대중적인 규칙이다. 이번 포스트에서는 세부적인 프로토콜들을 자세히 다루기보다는 간략하게 어떤 프로토콜들이 속해있는지 소개하며 넘어가겠다.
- Contention-based Random Access Methods
- ALOHA
- Slotted-ALOHA
- CSMA
- CSMA/CD
- CSMA/CA
Controlled Access Protocols
Controlled Access Protocol은 RA Protocol과 반대로 규칙을 다 정하고 순서대로 접근하는 방식이다. Credit이 있거나, 예약하고 확인하는 등 다양한 방식으로 규칙을 정한다. 일반 사용자들은 쉽게 느끼지 못하지만 사용자가 볼 수 없는 영역에 CA Protocol을 사용하는 경우가 생각보다 많다.
- Reservation
- Polling
- Token Passing
Channelization Protocols
앞서 나온 두 프로토콜과 다르게 Channelization Protocols은 생소한 사람들이 많을 것이다. 설령 이름을 들어봤더라도 단지 이런 게 있다 정도로 넘어간 사람들이 많을 것이다. 그 이유는 앞서 언급한 다른 프로토콜과 다르게 Channelization은 순수 전자과의 영역이기 때문일 것이다. 앞서 프로토콜들이 규칙을 정하는 알고리즘에 가까웠다면, 이번에는 주파수, 시간, 코드 등 좀 더 머리 아픈 이야기들이 첨가된다.
- FDMA(Frequency Division Multiple Access)
- TDMA(Time Division Multiple Access)
- CDMA(Code Division Multiple Access)
다른 프로토콜들은 뒤에 나올 포스트들에서 자세히 다루겠지만, Channelization은 전자과의 영역이라 따로 다루지는 않을 것이다. 하지만 전공이 전자공학과인만큼 이렇게 아무것도 다루지 않고 넘어갈 수 없으니, 간단하게나마 아주 조금만 깊게 들어가 보겠다.
우선 전자과 관점에서 통신을 보면 주파수 대역폭에 신호를 실어 나르는 것이다. 이때 A가 보내는 신호와 B가 보내는 신호는 누가 보냈는지 구분되지 않는다. 따라서 여러 사용자가 하나의 공통 채널을 이용하는 경우 어떤 자원을 구분으로 규칙을 정하는지에 따라 위에 세 종류의 프로토콜로 나뉘게 된다. F는 주파수, T는 시간, C는 코드, 잘 모르겠으면 이것만 기억하도록 하자.
FDMA
FDMA는 풀어 말하면 Frequency Division Multiple Access이다. 즉, 주파수 영역을 신호를 구분하는 기준으로 삼은 프로토콜이다. 각 신호를 주파수별로 나누게 된다. 시간 개념이 들어가지 않아, 구현이 쉽고 직관적이어서 1세대 이동통신에 사용되었다. 이제는 알면 세대차이로 느껴질 아날로그 전화기가 이 방식을 채택했다. 사실 주파수 영역을 전자과가 아닌 사람이 본다면 받아들이기 힘들 것이다. 전자공학도는 세상이 정현파로 보이는 사람들이니 예외로 친다면, 조금이나마 직관적으로 볼 수 있도록 도식을 준비했다.
정말 간단하게 준비했지만, 이게 정말 도움이 될까 싶다(항상 느끼지만 미적 감각이 현대인에게는 굉장히 중요한 듯하다..). 간단하게 설명하자면, 신호를 보낼 때 좌표평면에 한 점에 신호를 보내게 된다. 그 신호가 찍힐 수 있는 주파수 영역이 정해져 있는 것이 FDMA이다. 그러나 인근 주파수끼리 간섭이 일어나 장애를 발생시킬 수 있기에 사용자 영역 사이에 Guard Band 영역을 추가해야 한다. 이는 이미 한정적인 주파수 영역을 효율적으로 쓰지 못하게 한다. 이는 후에 IP가 v4에서 v6로 변화하게 된 이유와 유사하다.
TDMA
TDMA는 Time Division Multiple Access의 약어로 앞에 FDMA가 주파수 영역을 나눴다면, Time, 즉 시간을 여러 구간으로 나누고 각 사용자에게 할당한다. 사용시간을 정함으로써 신호가 겹치지 않게 해 준다. 인접 주파수끼리 간섭을 고려해 Guard Band를 추가한 FDMA와 다르게, 좌표계를 빈틈없이 사용할 수 있어 효율적이다. FDMA와 비교했을 때 구현 방법에 따라 다르겠지만, 약 3~6배 정도 효율이 증가한다고 알려져 있다. 이렇게 개선된 TDMA 방식은 2세대 이동통신에 사용되었다.
CDMA
CDMA는 Code Division Multiple Access의 약어로, 직역하면 코드분할 다중접속이다. 사실 Frequency, Time 모두 전자과에게는 익숙한 영역이었다. 전자과가 아니더라도 물리를 공부했던 사람이라면 쉽게 받아들일 수 있을 것이다. 하지만 이번에 나온 Code는 조금 다르다. 물리를 공부했다고 알 수 있는 게 아니고, 전자과라도 익숙지 않은 용어일 것이다. 우리가 아는 코드는 C, C++, 요즘은 Python으로 짜인 코드들밖에 없을 것이다. 하지만 인코딩(Encoding)과 디코딩(Decoding)으로 말을 바꾸면 들어봤을 것이다. CDMA는 각 사용자가 고유의 부호를 할당받아 자신의 신호를 부호화해서 보내고, 해당 부호를 알고 있는 수신기에서 복호화해 복원해 받는 방식이다.
좀 더 나중에 설명된 것으로 추측할 수 있듯이, 3세대 이동통신에서 사용되었다. 조금 더 눈치가 빠른 사람은 인코딩과 디코딩이 사용되었다는 것으로 보안성이 좋다는 것을 알 수 있었을 것이다. CDMA는 설명할지 안 할지 고민했지만, 인코딩과 디코딩, 그리고 암호화를 통한 보안성을 접할 수 있기에 언급했다. 너무 자세히는 알 필요 없고, 이 정도만 알고 있어도 큰 문제는 발생하지 않을 것이다.
Appendix
이번 Appendix에서는 비전공자에게는 매우 생소했을 Channelization에 대해 Summary를 하는 것으로 대체하겠다. 좀 더 일상적인 비유를 통해 직관적으로 이해할 수 있길 바란다.
- FDMA : 큰방을 여러 방으로 나눠 대화를 원하는 사람들은 같은 방에 들어가 대화를 진행하는 방식
- TDMA : 큰방에 여러 명이 있으나, 각각 지정된 시간에만 발언권을 주어 대화를 원활하게 하는 방식
- CDMA : 큰방에 여러 나라 사람들이 있어서 언어가 통하는 사람들끼리 대화를 하는 방식
사실 MAC이라는 제목을 보고 들어온 사람들은 ALOHA, CSMA, CSMA/CD, CSMA/CA 등을 기대하고 들어왔을 것이다. 하지만 RA, CA, Channelization을 설명하지 않으면, 개별적으로 프로토콜을 설명할 때마다 RA, CA 등에 대해 설명을 해야 할 것이다(물론 Channelization은 전자과의 영역이기에 몰라도 크게 상관없을 것이다 :D). 비효율성을 줄이고, 이해를 돕기 위해 별도로 포스트를 작성하게 되었다.
Next
많은 분들이 고대하던 ALOHA에 드디어 들어간다. 이름부터 뭔가 산뜻하게 다가온다. 하지만 막상 들어가 보면, 그렇게 산뜻하지 않을 것이다. 충돌로 깨지고, 박살 나고 난리도 아니다. 누구나 처음부터 완벽할 수 없다. 그 당시에는 그것으로 충분했을 것이다. 지금 작성 중인 블로그도 마찬가지라고 생각한다. 완벽함을 준비하고 업로드를 했으면, 시작조차 하지 못했을 것이다. 일단 시작을 했다는 것이 중요하다.
잡설은 미뤄두고 ALOHA로 시작해서, CSMA, CSMA/CD, CSMA/CA 등을 다루며 본격적으로 네트워크 하면 많이 접하는 용어들을 다룰 것이다.