동기식과 비동기식 통신은 무엇이 다른가

동기식과 비동기식 통신은 무엇이 다른가#

1. 현장에서 시작하는 질문#

현장 출입구의 컨트롤 박스 안에서 리더와 제어기가 데이터를 주고받고 있다고 가정해보겠습니다.

평소에는 정상적으로 동작했는데 어느 날부터 차량번호 인식 결과 일부가 누락되거나 이상한 문자로 들어오기 시작했습니다.

서버 로그에는 데이터 수신 기록이 있지만 실제 값은 다음처럼 깨져 있습니다.

정상
12가3456

오류
12?34?6

이 상황에서 프로그램만 확인해서 원인을 찾을 수 있을까요?

통신에서는 송신 장치와 수신 장치가 언제 하나의 비트를 읽어야 하는지 정확히 맞추는 것이 매우 중요합니다.

예를 들어 송신기가 다음 데이터를 보내고 있다고 생각해보겠습니다.

1 0 1 1 0 0 1 0

수신기가 정확한 순간에 신호를 읽으면 같은 데이터를 얻을 수 있습니다.

하지만 샘플링 시점이 계속 어긋난다면:

송신
1 0 1 1 0 0 1 0

수신
1 0 1 ? 0 1 ? 0

처럼 데이터가 잘못 해석될 수 있습니다.

그래서 디지털 통신에서는 단순히 0과 1을 전달하는 것뿐 아니라,

송신자와 수신자가 언제 다음 비트를 읽을 것인가?

라는 문제가 중요합니다.

이 문제를 해결하는 대표적인 접근이 동기식 통신과 비동기식 통신입니다.


2. 동기화가 왜 필요한가#

디지털 데이터는 일정한 시간 간격으로 전송됩니다.

예를 들어 한 비트가 다음과 같은 시간 동안 유지된다고 생각해보겠습니다.

시간 →

| 1 | 0 | 1 | 1 | 0 |

송신기는 이 간격을 알고 있습니다.

문제는 수신기입니다.

수신기도 정확히 같은 시점을 기준으로 데이터를 읽어야 합니다.

조금 과장해서 표현하면:

정상 샘플링

| 1 | 0 | 1 | 1 | 0 |
  ↑   ↑   ↑   ↑   ↑


잘못된 샘플링

| 1 | 0 | 1 | 1 | 0 |
 ↑    ↑    ↑    ↑

처럼 읽는 위치가 달라질 수 있습니다.

이를 해결하려면 송신기와 수신기 사이에 타이밍 기준이 필요합니다.

그 기준 역할을 하는 것이 Clock입니다.


3. Clock Signal이란 무엇인가#

Clock Signal은 디지털 회로가 동작하는 시점을 맞추기 위해 사용하는 주기적인 신호입니다.

개념적으로 다음과 같은 형태입니다.

High ──┐   ┌───┐   ┌───┐
       │   │   │   │   │
Low    └───┘   └───┘   └───

       ↑       ↑       ↑
     기준점   기준점   기준점

회로는 Clock의 상승 또는 하강 시점을 기준으로 데이터를 읽거나 상태를 변경할 수 있습니다.

따라서 Clock은 일종의 박자라고 생각하면 이해하기 쉽습니다.

여러 사람이 음악에 맞춰 움직이려면 같은 박자를 들어야 하는 것처럼 디지털 장치도 타이밍 기준이 필요합니다.


4. 동기식 통신이란 무엇인가#

Synchronous Communication은 송신기와 수신기가 공통된 타이밍 기준을 이용해 데이터를 전달하는 방식입니다.

가장 이해하기 쉬운 형태는 데이터선과 별도의 Clock 선을 함께 사용하는 구조입니다.

송신기              수신기

DATA  ───────────→  DATA

CLOCK ───────────→  CLOCK

송신기는 Clock에 맞춰 데이터를 변경합니다.

수신기도 같은 Clock을 기준으로 데이터를 읽습니다.

따라서:

Clock   ↑   ↑   ↑   ↑

Data    1   0   1   1

처럼 어느 순간에 데이터를 읽어야 하는지가 명확합니다.


5. 동기식 통신의 쉬운 비유#

동기식 통신은 군대의 행진과 비슷합니다.

여러 사람이 각자 마음대로 움직이는 것이 아니라:

하나
둘
하나
둘

라는 동일한 박자에 맞춰 이동합니다.

데이터 통신도 마찬가지입니다.

Clock
 ↓
DATA 1

Clock
 ↓
DATA 0

Clock
 ↓
DATA 1

수신기가 데이터의 경계를 추측할 필요가 줄어들기 때문에 연속적인 데이터를 효율적으로 전달할 수 있습니다.


6. 동기식이라고 항상 Clock 선이 따로 있는 것은 아니다#

여기서 중요한 점이 있습니다.

동기식 통신이라고 해서 반드시 별도의 Clock 케이블이 존재하는 것은 아닙니다.

대표적으로 두 가지 접근이 있습니다.

6.1 별도의 Clock을 전송하는 방식#

가장 직관적인 구조입니다.

Data  ───────→
Clock ───────→

SPI 같은 통신을 이해할 때 이런 형태를 볼 수 있습니다.

6.2 데이터에서 Clock을 복원하는 방식#

고속 통신에서는 데이터 신호 안에 타이밍 정보를 포함시키고 수신기가 이를 이용해 Clock을 복원하기도 합니다.

개념적으로는:

Data + Timing Information
          ↓
      Receiver
          ↓
    Clock Recovery
          ↓
       Data

형태입니다.

이렇게 하면 별도의 Clock 선 없이도 송신기와 수신기가 타이밍을 맞출 수 있습니다.


7. Clock Recovery란 무엇인가#

Clock Recovery는 수신된 신호에서 언제 비트를 읽어야 하는지에 대한 타이밍을 복원하는 과정입니다.

고속 통신에서는 매우 중요한 개념입니다.

송신기는 연속적인 데이터를 보냅니다.

101101001101...

수신기는 이 데이터를 단순히 전압값만 보고 해석하는 것이 아니라 신호 변화와 인코딩 정보를 이용해 적절한 샘플링 타이밍을 찾아야 합니다.

개념적으로 보면:

수신 신호
   ↓
신호 변화 분석
   ↓
Clock 복원
   ↓
비트 경계 결정
   ↓
데이터 복원

과정을 거칩니다.

현대의 고속 네트워크에서는 이런 타이밍 복원 기술이 매우 중요합니다.


8. 비동기식 통신이란 무엇인가#

Asynchronous Communication은 송신기와 수신기가 별도의 Clock 신호를 계속 공유하지 않는 방식입니다.

대신 각 장치가 자신의 Clock을 사용합니다.

송신기
내부 Clock
    ↓
Data ─────────→ Data
                  ↑
               내부 Clock
                수신기

그렇다면 두 장치는 데이터의 시작 시점을 어떻게 알 수 있을까요?

대표적인 비동기 Serial 통신에서는 Start Bit와 Stop Bit를 사용합니다.


9. UART로 비동기 통신 이해하기#

비동기 Serial 통신의 대표적인 예가 UART입니다.

다음과 같은 설정을 흔히 볼 수 있습니다.

9600-8-N-1

보통 다음 의미로 사용됩니다.

9600 : Baud Rate
8    : Data Bits
N    : No Parity
1    : Stop Bit

하나의 데이터를 보내는 기본 구조를 단순화하면 다음과 같습니다.

Idle
 ↓
Start
 ↓
Data Bits
 ↓
Parity
 ↓
Stop
 ↓
Idle

Parity는 설정에 따라 생략할 수 있습니다.


10. UART의 Idle 상태#

일반적인 UART 통신에서는 데이터가 없을 때 선이 Idle 상태를 유지합니다.

일반적인 논리 표현에서는:

Idle = 1

상태로 유지됩니다.

예를 들어:

───────────────
      Idle

상태에서 송신이 시작됩니다.


11. Start Bit는 왜 필요한가#

송신기가 데이터를 보내기 시작하면 Start Bit를 전송합니다.

개념적으로:

Idle
──────────┐
          │
          └──── Start

수신기는 이 변화를 감지합니다.

그리고 판단합니다.

새로운 데이터가 시작됐다.

이 순간을 기준으로 수신기는 자신의 내부 Clock을 이용하여 이후 비트를 일정한 간격으로 읽습니다.

즉 Start Bit는 단순한 숫자 하나가 아니라 수신기의 타이밍을 다시 맞추는 기준점 역할을 합니다.


12. Data Bit를 읽는 과정#

Start Bit를 발견한 수신기는 설정된 Baud Rate를 기준으로 데이터 비트를 읽습니다.

예를 들어:

Start | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | Stop

같은 구조가 될 수 있습니다.

수신기는 각 비트 구간의 적절한 시점에서 신호를 샘플링하여 0인지 1인지 판단합니다.

여기서 송신기와 수신기의 Baud Rate 설정이 크게 다르면 시간이 지날수록 샘플링 위치가 어긋날 수 있습니다.


13. Stop Bit는 무엇을 하는가#

데이터 전송이 끝나면 Stop Bit가 나타납니다.

일반적인 UART에서는 논리 1 상태가 사용됩니다.

Start
 ↓
Data
 ↓
Stop
 ↓
Idle

수신기는 Stop Bit를 통해 하나의 전송 단위가 정상적으로 끝났는지 확인할 수 있습니다.

Stop Bit가 예상한 시점에 정상적인 상태로 발견되지 않는다면 Framing Error가 발생할 수 있습니다.


14. Parity Bit는 무엇인가#

Parity는 간단한 오류 검출 방법입니다.

예를 들어 설정에서 다음과 같은 표현을 볼 수 있습니다.

8-N-1
8-E-1
8-O-1

여기서:

N = None
E = Even
O = Odd

를 의미합니다.

Parity는 전송 중 일부 비트가 변경됐는지를 탐지하는 데 도움을 줄 수 있습니다.

하지만 모든 오류를 검출할 수 있는 강력한 오류 검출 방식은 아닙니다.

그래서 장비 프로토콜에서는 별도로 Checksum이나 CRC를 사용하는 경우도 많습니다.


15. 동기식과 비동기식의 핵심 차이#

두 방식을 비교하면 다음과 같습니다.

비교 항목 동기식 통신 비동기식 통신
타이밍 기준 공유 또는 복원된 Clock 각 장치 내부 Clock
데이터 구분 연속적인 Stream이나 Frame Start·Stop으로 전송 단위 구분
Clock 선 있을 수도 있고 없을 수도 있음 일반적으로 별도 Clock 선 없음
전송 오버헤드 구조에 따라 상대적으로 작을 수 있음 Start·Stop 등 추가 Bit 존재
구현 상대적으로 복잡할 수 있음 비교적 단순
대표 사례 SPI, 다양한 고속 링크 UART
적합한 용도 연속적·고속 데이터 단순 장비·Serial 통신

중요한 것은 어느 한 방식이 무조건 더 좋다는 것이 아닙니다.

통신 거리, 속도, 비용, 구현 복잡도, 장비 특성에 따라 적절한 방식을 선택합니다.


16. 비동기식에서는 Clock이 없는가#

그렇지 않습니다.

이 부분은 초보자가 자주 오해합니다.

비동기식 통신에서도 송신기와 수신기 내부에는 Clock이 필요합니다.

차이는 동일한 Clock 신호를 계속 공유하지 않는다는 것입니다.

송신기 Clock
    ↓
송신

──── DATA ────→

              수신
               ↑
          수신기 Clock

양쪽 장치는 미리 합의된 전송 속도를 알고 있습니다.

예를 들어:

9600 baud

로 통신한다면 양쪽 모두 그 속도를 기준으로 비트 시간을 계산합니다.

Start Bit를 발견하면 수신기는 그 시점부터 자신의 Clock을 기준으로 데이터를 읽습니다.


17. 두 장치의 Clock이 완벽하게 같을 수 있을까#

실제 전자 부품의 Clock은 완벽하게 동일하지 않습니다.

예를 들어 송신기가 생각하는 9600 baud와 수신기가 생성하는 타이밍 사이에는 작은 오차가 있을 수 있습니다.

송신 Clock
|---|---|---|---|

수신 Clock
|----|----|----|----|

오차가 아주 작다면 정상적으로 데이터를 읽을 수 있습니다.

하지만 차이가 지나치게 커지면 뒤쪽 비트로 갈수록 샘플링 시점이 밀릴 수 있습니다.

처음

| 1 | 0 | 1 | 0 |
  ↑   ↑   ↑   ↑

시간이 지나며 오차 누적

| 1 | 0 | 1 | 0 |
   ↑    ↑    ↑

UART가 데이터를 짧은 단위로 나누고 매번 Start Bit를 사용하는 이유 중 하나는 이러한 타이밍 차이가 무한정 누적되는 것을 막기 위해서입니다.


18. Baud Rate가 다르면 왜 통신이 깨질까#

한 장비는:

9600 baud

다른 장비는:

19200 baud

로 설정되어 있다고 생각해보겠습니다.

송신기와 수신기가 생각하는 한 비트의 시간이 완전히 다릅니다.

그래서 수신기가 잘못된 위치에서 데이터를 읽게 됩니다.

결과적으로:

  • 이상한 문자
  • 데이터 일부 누락
  • Framing Error
  • CRC 오류
  • 응답 없음

같은 현상이 나타날 수 있습니다.

따라서 Serial 통신 장애에서 가장 먼저 확인해야 하는 것이 통신 설정입니다.


19. 9600-8-N-1은 무엇을 의미할까#

산업 장비의 통신 설정에서 매우 흔하게 볼 수 있습니다.

9600-8-N-1

이를 풀어보면:

설정 의미
9600 Baud Rate
8 Data Bits
N Parity 없음
1 Stop Bit 1개

장비 A가:

9600-8-N-1

인데 장비 B가:

9600-7-E-1

이라면 정상적으로 통신하기 어렵습니다.

따라서 단순히 Baud Rate만 확인하면 안 됩니다.

최소한 다음 네 가지를 함께 확인해야 합니다.

Baud Rate
Data Bits
Parity
Stop Bits

20. RS-232와 UART의 관계#

현장에서 UART와 RS-232를 같은 의미처럼 부르는 경우가 있지만 정확하게는 구분할 필요가 있습니다.

UART는 비트의 송수신 형식과 타이밍을 처리하는 기능을 의미합니다.

RS-232는 실제 장비 사이에서 사용할 전기적 인터페이스 특성을 정의합니다.

개념적으로 보면:

Application Data
      ↓
UART
      ↓
RS-232 Transceiver
      ↓
Cable

처럼 생각할 수 있습니다.

즉:

UART = 비트 전송 형식과 타이밍을 처리하는 로직

RS-232 = 이를 실제 전기 신호로 전달하기 위한 인터페이스

라고 구분하면 이해하기 쉽습니다.


21. RS-485도 비동기식인가#

RS-485 자체는 전기적 신호 전달 방식을 정의하는 물리 계층 인터페이스입니다.

따라서 RS-485라는 이름만으로 동기식인지 비동기식인지 결정할 수는 없습니다.

하지만 산업 현장에서 사용하는 많은 RS-485 장비는 UART 기반의 비동기 Serial 데이터를 전달합니다.

예를 들어:

Modbus RTU

9600
8
N
1

같은 구조입니다.

따라서 현장에서:

RS-485니까 9600-8-N-1이다.

라고 단정해서는 안 됩니다.

반드시 장비의 통신 규격을 확인해야 합니다.


22. SPI는 어떻게 동기식 통신을 할까#

동기식 통신을 이해하기 좋은 대표적인 예가 SPI입니다.

SPI에서는 일반적으로 다음과 같은 신호를 사용합니다.

SCLK
MOSI
MISO
CS

SCLK가 바로 Clock입니다.

개념적으로:

Controller

Clock ──────────────→ Device
Data  ──────────────→ Device
Data  ←────────────── Device

구조입니다.

송신 측과 수신 측이 Clock을 기준으로 데이터를 읽기 때문에 Bit 경계를 명확하게 맞출 수 있습니다.


23. Ethernet은 동기식인가 비동기식인가#

이 질문은 단순히 UART와 같은 방식으로 분류하면 오히려 혼란스러울 수 있습니다.

현대 Ethernet PHY는 데이터 신호를 이용해 수신 측에서 필요한 타이밍 정보를 복원하는 고속 통신 방식을 사용합니다.

개념적으로:

Ethernet Frame
     ↓
PHY Encoding
     ↓
전기·광 신호
     ↓
Receiver
     ↓
Clock Recovery
     ↓
Bit 복원

과정을 거칩니다.

따라서 Ethernet에는 UART처럼 문자마다 Start Bit와 Stop Bit를 붙여 타이밍을 다시 맞추는 구조가 없습니다.

고속 네트워크를 이해할 때는 Clock Recovery라는 개념이 더 중요해집니다.


24. Clock Synchronization과 Clock Recovery는 다르다#

비슷한 용어지만 구분할 필요가 있습니다.

Clock Recovery#

수신한 통신 신호에서 비트를 읽기 위한 타이밍을 복원하는 기술입니다.

Signal
 ↓
Clock Recovery
 ↓
Bit Timing

Clock Synchronization#

서로 다른 장비의 시간 기준 자체를 맞추는 것입니다.

예를 들어:

Camera      10:00:00.001
Server      10:00:00.001
Controller  10:00:00.001

처럼 여러 시스템의 시간을 맞추는 문제입니다.

NTP나 PTP 같은 기술은 후자의 문제와 관련됩니다.

따라서:

Clock Recovery
≠
시스템 시간 동기화

라는 점을 기억해야 합니다.


25. 주차관제 현장에서 살펴보기#

하나의 주차관제 시스템 안에서도 여러 통신 방식이 사용될 수 있습니다.

예를 들어:

LPR Camera
     │
     │ Ethernet
     ↓
Parking Server
     │
     │ TCP/IP
     ↓
Controller
     │
     │ RS-485
     ↓
현장 장비

여기서 RS-485 장비가 UART 기반 비동기 Serial 통신을 사용한다고 가정해보겠습니다.

통신 설정은:

9600-8-N-1

입니다.

그런데 장비를 교체한 후 데이터가 깨지기 시작했습니다.

이 경우 확인해야 할 항목은 단순히 케이블만이 아닙니다.

Baud Rate
Data Bits
Parity
Stop Bits
RS-485 A/B 배선
종단 설정
장치 주소
프로토콜

까지 함께 봐야 합니다.


26. 데이터가 깨질 때 어디부터 확인할까#

현장에서 다음과 같은 데이터가 들어왔다고 가정해보겠습니다.

정상
STX 01 OPEN ETX

오류
STX ?1 O?EN ??

점검 순서를 정하면 문제를 더 빠르게 찾을 수 있습니다.

26.1 통신 설정#

먼저 양쪽 장비의 설정을 비교합니다.

Baud Rate
Data Bits
Parity
Stop Bits

26.2 배선#

Serial 인터페이스에 따라:

TX / RX
A / B
GND

등을 확인합니다.

26.3 신호 품질#

  • 케이블
  • 접지
  • 종단
  • 노이즈
  • 커넥터

등을 확인합니다.

26.4 원시 데이터#

가능하다면 프로그램에서 변환하기 전의 Raw Byte를 확인합니다.

예를 들어:

02 01 10 03 FF

형태로 실제 수신 데이터를 확인합니다.

26.5 프로토콜 해석#

물리적으로 데이터가 정상적으로 들어온다면:

STX
ADDR
CMD
LEN
PAYLOAD
CRC
ETX

등의 프로토콜 구조를 확인합니다.


27. 원시 프레임을 먼저 보는 이유#

현장에서 프로그램 화면에:

통신 오류

라는 메시지만 표시된다고 가정해보겠습니다.

이 메시지만으로는 원인을 알 수 없습니다.

실제 문제는 다음 중 하나일 수 있습니다.

배선 오류
↓
Bit 오류
↓
Byte 오류
↓
Frame 오류
↓
CRC 오류
↓
Protocol 오류
↓
Application 오류

따라서 가능하다면 가장 아래쪽의 Raw Data까지 확인하는 것이 좋습니다.

예:

TX
02 01 10 00 13 03

RX
02 01 90 00 A7 03

처럼 실제 송수신 바이트를 확인하면 문제를 훨씬 구체적으로 분석할 수 있습니다.


28. 패킷과 프레임은 제조사마다 다르다#

산업 장비에서는 다음과 같은 자체 프로토콜을 쉽게 볼 수 있습니다.

[STX]
[ADDR]
[CMD]
[LEN]
[PAYLOAD]
[CRC]
[ETX]

하지만 이것이 모든 장비의 표준 구조라는 뜻은 아닙니다.

어떤 장비는:

HEADER
LENGTH
DEVICE ID
COMMAND
DATA
CHECKSUM

형태를 사용할 수도 있습니다.

또 어떤 장비는 ASCII 문자열을 사용할 수 있습니다.

OPEN,01,1234\r\n

따라서 현장에서는 제조사의 프로토콜 문서가 가장 중요한 기준입니다.


29. 동기 문제와 프로토콜 문제를 구분해야 한다#

데이터가 깨졌다고 해서 반드시 Clock 문제는 아닙니다.

예를 들어:

01 02 03 04

라는 데이터가 정상적으로 들어왔는데 프로그램이 이를 잘못 해석했다면 물리적 동기 문제가 아니라 프로토콜 또는 Parser 문제일 수 있습니다.

반대로 Raw Byte 자체가 계속 달라진다면:

  • Baud 설정
  • 물리 신호
  • Clock 오차
  • 배선
  • 노이즈

등을 의심할 수 있습니다.

따라서:

신호
↓
Bit
↓
Byte
↓
Frame
↓
Protocol
↓
Application

순서로 분석하는 것이 중요합니다.


30. 테스트 환경에서 UART 통신 확인하기#

실제 장비를 바로 변경하기보다 먼저 시험 환경에서 Serial 통신을 확인하는 것이 좋습니다.

예를 들어 Python의 가상 Serial Port를 사용할 수 있습니다.

import serial

ser = serial.serial_for_url(
    "loop://",
    baudrate=9600,
    bytesize=8,
    parity="N",
    stopbits=1,
    timeout=1
)

ser.write(b"HELLO")

data = ser.read(5)

print(data)

결과:

b'HELLO'

이 테스트를 통해 기본적인 Byte 송수신과 프로그램 로직을 확인할 수 있습니다.

다만 이런 소프트웨어 Loopback으로 실제 케이블의 신호 왜곡이나 Clock 오차까지 검증할 수는 없습니다.

그런 문제는 별도의 시험망과 측정 장비가 필요합니다.


31. Clock 문제를 관찰하려면 무엇을 사용할까#

실제 신호의 타이밍 문제를 확인하려면 상황에 따라 다음과 같은 장비를 사용할 수 있습니다.

  • Oscilloscope
  • Logic Analyzer
  • Serial Analyzer
  • Protocol Analyzer

Logic Analyzer를 이용하면 다음과 같은 정보를 확인하는 데 도움이 됩니다.

Start Bit
Data Bits
Parity
Stop Bit
Bit Timing

그리고 UART Decoder 기능을 지원한다면 실제 Byte까지 자동으로 해석할 수 있습니다.

다만 실제 설비의 전기 신호를 측정할 때는 해당 인터페이스의 전압 수준과 장비 안전 조건을 반드시 확인해야 합니다.


32. 보안 측면에서도 Serial 통신을 주의해야 한다#

RS-232나 RS-485 같은 Serial 통신은 통신 자체에 암호화 기능이 포함되지 않는 경우가 많습니다.

따라서 누군가 물리적으로 통신선에 접근할 수 있다면 데이터가 노출되거나 시스템에 따라 임의 명령이 전달될 위험을 고려해야 합니다.

특히:

  • 출입정보
  • 차량번호
  • 장비 제어 명령
  • 결제 관련 데이터

등을 다루는 시스템에서는 보호 대책이 필요합니다.

환경에 따라:

네트워크 분리
접근 통제
Gateway 인증
VPN
TLS
명령 권한 검증
감사 로그

등을 적용할 수 있습니다.


33. 통신 설정을 무작정 변경하면 안 되는 이유#

장비가 통신되지 않는다고 해서 다음 값을 임의로 변경하면서 맞춰보는 것은 좋은 방법이 아닙니다.

9600
19200
38400
57600
115200

먼저 제조사 문서를 확인하고 현재 설정을 기록해야 합니다.

그렇지 않으면 원래 상태를 잃어버려 장애 원인을 더 찾기 어려워질 수 있습니다.

권장되는 흐름은 다음과 같습니다.

현재 설정 기록
↓
제조사 규격 확인
↓
Raw Data 확인
↓
원인 가설 수립
↓
시험 환경 변경
↓
결과 비교

즉 측정하고 판단한 뒤 변경하는 것이 기본입니다.


34. 동기식과 비동기식은 어느 쪽이 더 좋은가#

정답은 없습니다.

동기식 통신은 연속적인 고속 데이터를 효율적으로 전달하는 데 유리할 수 있습니다.

비동기식 통신은 별도의 Clock 선 없이 비교적 단순하게 장비를 연결할 수 있다는 장점이 있습니다.

결국 다음 조건에 따라 선택합니다.

판단 항목 고려할 내용
전송 속도 얼마나 많은 데이터를 전달해야 하는가
통신 거리 장비 사이의 거리가 얼마나 되는가
배선 추가 Clock 선을 사용할 수 있는가
비용 회로와 인터페이스 복잡도를 어느 정도 허용할 수 있는가
장비 수 여러 장비를 연결해야 하는가
실시간성 정확한 타이밍이 얼마나 중요한가
호환성 기존 장비가 어떤 인터페이스를 지원하는가

따라서 기술 이름만 보고 선택하는 것이 아니라 시스템 요구사항을 먼저 봐야 합니다.


35. 핵심 개념 한눈에 정리하기#

동기식 통신

송신기와 수신기가
공통된 타이밍 기준을 사용
        ↓
Clock 공유 또는 Clock 복원
        ↓
연속적인 데이터 전달에 유리
비동기식 통신

별도의 Clock을 계속 공유하지 않음
        ↓
Start Bit로 시작점 확인
        ↓
내부 Clock으로 데이터 Sampling
        ↓
Stop Bit로 전송 단위 종료

가장 중요한 차이는 Clock이 존재하느냐가 아니라 송수신 측이 타이밍을 어떻게 맞추느냐입니다.


36. 자기 점검#

Q1. 동기식과 비동기식의 가장 큰 차이는 무엇인가?#

송신기와 수신기가 비트 타이밍을 맞추는 방식이 다릅니다. 동기식은 공유되거나 복원된 Clock을 기준으로 하고, 대표적인 비동기 Serial 통신은 Start Bit를 기준으로 수신기의 내부 Clock을 다시 맞춥니다.

Q2. 비동기식 통신에는 Clock이 없는가?#

아닙니다. 송신기와 수신기 내부에는 각각 Clock이 있습니다. 다만 별도의 Clock 신호를 계속 공유하지 않는다는 의미입니다.

Q3. 9600-8-N-1에서 8-N-1은 무엇을 의미하는가?#

8 Data Bits, No Parity, 1 Stop Bit를 의미합니다.

Q4. RS-485는 항상 비동기식인가?#

RS-485 자체는 전기적 인터페이스 규격이므로 이것만으로 동기식 또는 비동기식을 결정할 수 없습니다. 실제 산업 장비에서는 UART 기반 비동기 Serial 데이터와 함께 사용하는 경우가 많습니다.

Q5. 데이터가 깨지면 가장 먼저 무엇을 확인해야 하는가?#

장비 규격을 기준으로 Baud Rate, Data Bits, Parity, Stop Bits 같은 통신 설정과 물리적 배선을 먼저 확인하고, 가능하다면 Raw Byte를 확인해 어느 단계부터 데이터가 잘못되는지 추적하는 것이 좋습니다.


37. 이 글을 마치며#

동기식과 비동기식 통신의 차이를 단순히:

동기식 = Clock 있음
비동기식 = Clock 없음

으로 외우면 실제 통신 시스템을 이해하기 어렵습니다.

더 정확한 관점은 다음과 같습니다.

동기식
→ 지속적인 데이터 흐름에서
   송수신 타이밍을 공유하거나 복원한다.

비동기식
→ 별도의 Clock을 계속 공유하지 않고
   전송 단위마다 시작점을 다시 맞춘다.

이 차이를 이해하면 UART에서 왜 Start Bit와 Stop Bit가 필요한지, Baud Rate가 맞지 않으면 왜 문자가 깨지는지, 고속 Ethernet에서는 왜 Clock Recovery가 필요한지를 하나의 흐름으로 이해할 수 있습니다.

그리고 현장에서 통신 문제가 발생했다면 화면의 "통신 오류"라는 메시지만 보지 말고:

단자
↓
배선
↓
신호
↓
통신 설정
↓
Bit
↓
Raw Byte
↓
Frame
↓
Protocol
↓
Application

순서로 문제의 경계를 좁혀가는 것이 중요합니다.

물리적인 연결과 데이터 해석을 하나의 통신 과정으로 보는 것, 이것이 현장에서 통신 장애를 빠르게 분석하는 가장 기본적인 출발점입니다.

이 페이지의 목차