[Data Communication] 물리 계층에서의 데이터 전송
디지털 통신은 컴퓨터가 이해할 수 있는 비트를 주고받는 일인데.. 소리나 영상 같은 아날로그 데이터를 전송하려면 데이터를 비트로 변환해야 한다.
이 과정에서 물리 계층이 개입되고, 이 계층은 전기 신호 / 소리 / 빛 등 아날로그 신호를 비트로 표현하는 역할을 수행한다.
PCM (Pulse Code Modulation)
아날로그 소리를 디지털로 변환하는 디지털 오디오의 표준으로, 샘플링 / 양자화 / 인코딩을 수행한다.
소리는 시간에 따라 연속적으로 변하니 연속 신호라고 할 수 있는데, ADC는 소리를 디지털로 변환하는 장치이며, PCM은 그 장치 중 하나라고 생각하면 된다.
샘플링 - 아날로그 신호를 일정 간격으로 끊어서 값을 측정. (1초에 8000번 측정 = 8kHz)
양자화 - 샘플링으로 얻은 아날로그 값(전압)을 정해진 수치로 반올림해서 정수로 표현. (비트 수가 많을수록 정밀)
인코딩 - 양자화된 정수 값을 2진수 비트열로 변환. (256 -> 100000000)
샘플링은 아날로그 형태의 연속된 곡선에 점을 찍는 작업이라고 생각하자.
샘플링이 너무 빠르면 데이터 양이 커지고, 너무 느리면 정보가 손실된다.
Nyquist Sampling Theorem - 최대 주파수의 2배 이상으로 샘플링해야 아날로그 신호를 완벽하게 복원할 수 있다.
여기서 주파수는 Hz단위로, 1초에 몇 번 반복되는지를 의미한다.
소리가 1초에 몇 번 진동하는지, 전자파에서는 1초에 전기신호가 몇 번 진동하는지를 주파수를 통해 표현한다.
소리의 주파수는 소리 자체의 진동수를, 전자파의 주파수는 신호를 운반하는 파형의 진동수라고 생각하면 된다.
진동수를 의미하는 주파수라는 개념을 사용하는 건 같지만, 컴퓨터가 인식하는 방식은 전혀 다르다.
가청 주파수는 20Hz ~ 20,000Hz이고
블루투스는 2.4GHz / 와이파이는 2.4GHz 5.0GHz / LTE는 700MHz ~ 수십 GHz 를 사용한다.
같은 주파수를 사용하면 전파가 서로 섞여서 혼선이 발생할 수 있고, 낮은 주파수는 멀리 전달될 수 있고 높은 주파수는 속도가 빠르지만 거리가 짧다는 단점이 있다.
통신사는 주파수 면허를 구매해 해당 대역을 사용한다.
전자기기에는 기기가 사용할 주파수 대역이 정해져 있고, 그 주파수만 인식하고 주파수에 해당하는 방식으로만 통신한다.
아날로그를 디지털 신호로 변환하는 작업도 물리 계층에서 수행하고, 디지털 신호를 아날로그로 바꾸는 작업도 역시 물리 계층에서 수행한다. (각각 복조, 변조를 의미)
변조와 복조를 수행하는 기기를 MODEM 이라고 부른다. (MOdulation + DEModulation)
LTE / WIFI / 전화선 모두 내부적으로 모뎀을 사용한다.
디지털 데이터는 비트로 구성되어있고, 현실로 데이터를 보내려면 아까와는 반대로 전기 신호 / 소리 등의 아날로그 신호 형태로 데이터를 변환해야 한다.
ASK (Amplitude Shift Keying) - 신호의 크기로 0과 1을 구분하는 방식. (RFID, 초기 모뎀)
FSK (Frequency Shift Keying) - 주파수로 0과 1을 구분하는 방식. (무선 리모컨, 모뎀)
PSK (Phase Shift Keying) - 위상으로 0과 1을 구분하는 방식. (위성통신, 와이파이, 고속 모뎀)
QAM (Quadrature Amplitude Modulation) - 진폭과 위상을 동시에 사용해 더 많은 비트를 전송하는 방식. (LTE, 케이블 모뎀)
모뎀이 저걸 전부 다 쓰는건 아니고.. 통신 환경과 목적에 따라 선택해서 사용한다.
옛날 전화 모뎀은 FSK, PSK 기반으로 만들어졌고, 현대 와이파이 LTE 모뎀은 QAM을 사용한다.
QAM은 ASK와 PSK를 합친 변조 방식으로 16QAM은 진폭 4단계 위상 4단계를 사용해 각 조합으로 4비트를 표현한다.
(256QAM은 8비트 표현)
하나의 사인파에 1비트만 실으면 느리지만, QAM은 1심볼에 여러 비트를 실을 수 있어 빠르게 통신할 수 있다.
주어진 대역폭에서 많은 데이터를 보내려면 심볼에 최대한 많은 데이터를 담아야 하는데, 이를 위해 진폭과 위상을 동시에 조절하는 QAM을 사용한다.
퀄컴이 QAM을 잘 구현하고.. 모뎀을 잘 뽑는다.
심볼 간 거리가 좁아질수록 잡음에 민감한데, 퀄컴은 에러 보정 알고리즘 / 고성능 회로 설계를 통해 이런 문제를 극복했다.
위의 네 가지 방식은 소리에도 사용되고 전자기파에도 사용되는 범용적인 변조 기법이니.. 소리에만 사용된다고 생각하지 말자.
GibberLink로 스마트폰끼리 삐~ 소리나 사람이 듣지 못하는 소리로 서로 정보를 교환하는 작업은 디지털 - 아날로그 - 디지털 순서로 데이터를 교환하는 예시로 볼 수 있다.
지금까지는 디지털 데이터를 아날로그 신호로 바꾸는 디지털 신호를 다뤘고, 이제 아날로그 정보를 아날로그 파형으로 변환하는 아날로그 변조를 살펴보자.
여기서 변조는 데이터를 전송 가능한 파형에 실어서 보내는 작업을 의미한다.
라디오 방송국에서 사람의 목소리를 전파에 실어서 공중에 쏘는 작업을 변조라고 할 수 있다.
AM (Amplitude Modulation) - 정보 신호에 따라 사인파의 크기(진폭)를 바꾼다.
FM (Frequency Modulation) - 정보 신호에 따라 사인파의 진동 속도(주파수)를 바꾼다.
PM (Phase Modulation) - 정보 신호에 따라 사인파의 시작 위치(위상)를 바꾼다.
Carrier Frequency는 정보를 실어 보내기 위해 사용하는 기본 파형으로 정보를 운반하는 역할을 수행해 반송파라고 불린다.
전파는 주파수가 높을수록 멀리 감지되니 정보를 높은 주파수의 Carrier에 실어서 보낸다.
Modulating Signal은 실제로 보내고 싶은 정보로 반송파를 통해 전달하게 되는 정보를 의미한다.
Modulated Signal은 위의 두 가지를 합친 실제 전송형 파형으로 이 신호가 실제 전선으로 전송된다.
고속 푸리에 변환(ffft)은 시간 영역의 신호를 주파수 영역으로 바꿔주는 알고리즘이다.
물리 계층에서 핵심적으로 사용되고, 디지털 신호를 입력받아 이 신호 안에 어떤 주파수 성분이 있는지 출력한다.
실제 통신에서는 신호가 사인파들의 합성으로 구성된다.
사람의 말 / 전파 / 소리 / 모든 신호는 기본적으로 여러 사인파 주파수의 조합이고, 해당 신호가 어떤 주파수로 구성되어있는지 분석해야 변조 / 복조 / 에러 보정을 수행할 수 있다.
오케스트라 곡을 입력받으면.. 이 안에 피아노는 몇 Hz에 있고 바이올린은 몇 Hz에 있는지 찾아준다고 생각하면 된다.
당연히 모뎀에도 사용되는데.. LTE / 5G 신호를 복조할 때 중요한 역할을 수행한다.
사인파가 하나 뿐이면.. fft 쓸 필요도 없이 분석할 수 있겠지만 현실에서는 모든 신호가 사인파들의 합성 신호로 구성되니 신호를 사인파로 쪼개서 이해하고 필요한 주파수를 추출하는 fft가 필요하다.
통신에서는.. 오류 처리가 매우 중요하다.
Reed-Solomon 코드는 통신 / 저장 매체에서 자주 사용되는 에러 정정 코드로 여러 통신에서 유용하게 사용된다.
데이터에 일부 오류 정정용 코드를 추가해 추후 오류가 생겨도 복원할 수 있게 해 주는 기술으로, RS(7, 3) 코드는 7개의 심볼 중 3개가 원래 데이터이고 4개가 에러 정정 코드임을 의미한다.
원래 데이터 [D1, D2, D3]
추가된 정정 코드 [+C1, +C2, +C3, +C4]
전체 전송 [D1, D2, D3, C1, C2, C3, C4]
일부가 깨지더라도 2개까지는 복구할 수 있다.
(RS(N, K) 에서 (N - K) / 2 개 까지는 복원 가능)
신호 레벨을 정하고 레벨 별로 전압을 설정해둔다.
신호 레벨이 많아질수록 비트전송률이 높아지지만, 신호 레벨 구분이 힘들어진다.
노이즈가 없는 이상적인 채널에서의 최대 비트 전송률은 아래와 같이 결정된다.
노이즈가 전혀 없으니 심볼을 정확하게 구분할 수 있어 신호 레벨을 무한히 늘릴 수 있다.
다만 현실에서는 노이즈가 없을 수가 없으니..
Shannon은 잡음이 있는 환경에서 얼마나 전송할 수 있는지를 제시한다.
레벨을 늘리면 SNR이 높아야 정확히 구분할 수 있다.
Shannon Capacity를 계산해 노이즈가 있는 상황에서 최적 코딩을 가정한 이론적 최대 용량을 구하고, Nyquist 정리를 적용해 신호 레벨 수를 계산하자.
0, 1 같은 디지털 비트를 전선이나 광섬유에 보내려면 이걸 어떤 파형으로 표현할지 정해야 하는데.. 이렇게 디지털 비트의 모양을 결정하는 방식을 라인 코딩이라고 부른다.
즉, 0을 0V / 1을 5V로 보낸다는 약속으로 생각하면 된다.
Unipolar - 전압이 한 방향으로만 표현된다. (1 -> V / 0 -> 0V)
Polar - 전압이 두 가지 방향으로 표현된다. (1 -> V / -1 -> -V)
Bipolar - 0은 항상 0V, 1은 +V와 -V를 번갈아가면서 사용한다.
MultiLevel - 심볼 하나에 여러 비트를 담기 위해 전압 레벨을 2개 이상 사용한다.
Multitransition - 전압 변화 패턴 자체를 이용해 비트로 표현한다.
NRZ
Non-Return to Zero의 약자로 디지털 비트를 전송할 때 전압 신호가 비트를 유지하는 동안 그대로 유지되고, 중간에 0V로 돌아가지 않는 방식을 의미한다. (비트를 보낼 때 전압이 그대로 유지)
NRZ-L 은 전압 자체가 의미를 가지는 방식이고
NRZ-I 는 전압의 변화가 의미를 가지는 방식을 의미한다.
구현이 쉽고 낮은 주파수를 사용하지만 동기화가 어렵고 에러 감지가 어렵다.
Manchester Encoding
비트마다 반드시 중간 시점에 전압이 바뀌는 방식이다.
전압 변화의 위치를 통해 0과 1을 구분한다.
1: H -> L / 0: L -> H (IEEE 기준)
클럭 동기화가 뛰어나고 에러 감지가 쉽다.
대역폭을 2배로 사용하고 전력 소모가 많다.
2B1Q
Two Binary One Quaternary로 2비트의 정보를 1개의 4레벨 전압 신호로 표현하는 방법이다.
NRZ처럼 1비트당 1심볼이면 대역폭이 많이 필요하지만 2비트를 1심볼로 보내면 대역폭을 반으로 줄일 수 있다. (노이즈에 민감)
수신 측은 이 전압 값을 감지해서 2비트씩 디코딩한다.
라인 코딩의 한계를 보완하기 위해 블록 코딩을 사용한다.
동기화 문제, DC 성분 문제, 에러 검출 문제를 해결해 주는 기술으로 전송 전에 일정 비트 블록 단위로 데이터를 변환해 더 좋은 전송 특성을 가지는 코드로 바꾸는 방식이다.
디지털 데이터를 전송하기 좋게 일정한 블록 단위로 인코딩해 신호 품질을 높이고 에러를 방지한다.
라인 코딩 전에 일어나는 단계로, 실제 전송 흐름은 아래와 같다.
4비트 그룹을 5비트로 변환 - 라인코딩 - 전기 신호 전송
마지막에만 라인 코딩을 사용하고 그 전 단계까지는 블록 코딩을 사용한다.
블록 코딩으로 전송에 적합한 비트로 패턴 자체를 바꾸고, 라인 코딩으로 바꾼 비트를 전압 신호로 변환한다.
4B/5B 블록 코딩으로 4비트 데이터를 5비트 코드로 매핑해서 전송해 실제로 32개의 5비트 코드 중 16개만 사용한다.
항상 신호 변화가 있도록 설계된 5비트 코드를 쓰기 위해 5비트로 늘리고, 덕분에 수신자는 5비트가 들어오면 항상 클럭을 잡아낼 수 있다.
'Computer Science > Computer Network' 카테고리의 다른 글
[Data Communication] Layer Packet Signal (0) | 2025.04.01 |
---|---|
[Nginx] nginx.conf (1) | 2023.12.28 |
[Nginx] Timeout (0) | 2023.12.24 |
[Network] 백엔드 아키텍처 (0) | 2023.12.21 |
[Nginx] 내부 구조와 리버스 프록시 (1) | 2023.12.21 |
댓글
이 글 공유하기
다른 글
-
[Data Communication] Layer Packet Signal
[Data Communication] Layer Packet Signal
2025.04.01 -
[Nginx] nginx.conf
[Nginx] nginx.conf
2023.12.28 -
[Nginx] Timeout
[Nginx] Timeout
2023.12.24 -
[Network] 백엔드 아키텍처
[Network] 백엔드 아키텍처
2023.12.21