프로그래밍[Univ]/네트워크

[네트워크] Physical Layer

Cloud Travel 2012. 6. 5. 16:37

* 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으로 변경하여 보낸다.