* Physical Layer
- Link Layer까지 내려운 Stream(01010111000...)을 Signal로 변경하여 전송한다.
- 주고 받는 데이터와 시그널에는 digital과 analog방식이 존재한다.
> 이로인해 4가지의 경우의 수가 나온다.(digital to digital / digital to analog / analog to analog / analog to digital)
- 다음 3가지의 문제를 해결해야 한다.
Q1. Stream을 어떻게 Signal로 변경할 것인가?
Q2. 물리적 Interface
Q3. Synchronization(동기화)
- 이번 페이지는 digital to digital 방식에서 Q1과 Q3를 해결하는 방식을 볼 것이다.
- Q1과 Q3의 문제는 매우 밀접한 관계를 같는다.
* Digital to Digital
- Data digital 신호를 signal digital로 encoding, decoding을 실시한다.
- volt의 상태를 양분해서 data를 보낸다.(0과 1신호의 2분법이기 때문에 간단하다.)
- A와 B와 같이 보낼 수 있다. 각 방식의 차이는 다음과 같다.
> bps(bit/sec : 데이터 전송률)은 서로 같다면, 하나의 data에 대해 A는 1개의 Signal을 B의 경우는 2개의 Signal을
만들어야 한다. 이를 baud(보드 : 데이터를 보내는데 필요한 Signal)라고 한다.
> A의 보드 값이 100이면 B의 보드 값은 200이 된다.
> 위 와같이 2가지 방식이 존재하게 된 이유는 다음의 이유때문이다. => 동기화!
* Synchronization(동기화) 문제
- data를 signal화하여 주고 받는 방식은 간단하다. But, 서로의 정보를 보내거나, 해석하는 주기를 맞추기는 힘들다.
- 위와 같이 Send에서 encoding한 것을 Receive에서 decoding할때 서로의 시간 간격이 같아야 한다.
(encoding clock = decoding clock)
- 하지만 clock을 같게하기는 매우 힘든 일이다. 일반적으로 clock을 동기화 하기 위해서는
Receiver가 Data를 분석하여 시간을 맞춰나가야 한다.
- 문제를 알아 봤으니 사용되거나 사용됬던 알고리즘을 보면서 각각의 문제를 해결했는지를 살펴보자
* Encoding Algorithm
ⓐ NRZ Algorithm
- 0은 양수, 1은 음수의 Signal을 보낸다.
- 동기화 문제가 해결되지 않았다. 01010101과 같이 지속적으로 신호가 변경되면 받는 측에서 clock을 측정가능하지만
000000,11111 과 같이 연속된 값이 전송되면 clock 측정이 불가능하다.
ⓑ Manchester
- 0은 하강 edge를 1은 상승 edge를 포함시켜서 전송을 한다.
- 데이터가 어떤 형식으로 오는지 관계없이 동기화가 가능하다.
- 현재 Ethernet coding의 방식이다.
- 단점
> NRZ와 같은 bps를 같는다고 해도 2배의 baud를 보내야 한다. cost가 증가한다.
(주파수를 2배로 늘려야 한다)
ⓒ Etc : 동기화 문제를 해결하기 위해서 만들어진 다양한 방식들
- Multi-level
- Block coding
> m-bit의 데이터를 n-bit으로 바꿔서 보낸다.( n>m )
> 4B/5B = 4bit의 data를 5bit으로 변경하여 signal을 전송한다.
ex) 1000 > 10010
- Scrambling(뒤섞기)
> 연속되는 값을 일정 bit의 pattern으로 변경하여 보낸다.