데이터 통신에 대한 이해 (동기/비동기 방식의 관점에서)
두개의 디바이스가 케이블 등을 통해서 데이터를 서로 주고 받는 현상은 잘 생각해보면 신기하기만 하다.
케이블과 디바이스에서는 어떤 전기적인 상황이 발생하는 것일까?
이 현상을 자세한 설명까지는 아니어도 러프하게 그려볼 수는 있을 것이다.
먼저 두개의 디바이스가 케이블을 통해서 서로 전기가 통하는 상태여야 한다.
케이블 선은 전기가 통하는 상태(1)이거나 통하지 않는 상태(0)이다
만약 전기신호를 보내는 사람이 받는 사람에게 전기가 통하다가 통하지 않게 한다면 전기신호를 받는 쪽에서는 신호가 1-0 이라고 생각할 것이다.
그런데 사실은 보내는 사람은 1-1-0-0을 찍은 것이라면 어떨까?
받는 사람은 전기신호를 잘못 해석한 것이다.
이런 실수를 없애려면 서로 규칙을 정해야 한다.
가령 보내는 사람은 진짜신호 앞에 무조건 한번 0을 찍는다.
그리고 보내고 싶은 신호를 8개로 만들어서 찍는다.
맨 마지막에도 0을 더 찍는다라고 규칙을 정하면 받는 사람은 10개의 신호를 실수 없이 이해할 것이다.
모든 신호가 계속 이런 패턴으로 들어온다면 긴 데이터도 주고 받을 수 있게 된다.
이런 데이터 전송 방식은 비동기적인 방식(클럭 신호를 사용하지 않음)이며 예를 들자면 키보드의 타자 신호가 이에 해당된다.
그러나 위의 방식은 작은 전송량을 필요로 할 때는 괜찮지만 많은 전송량을 필요로 하는 usb같은 케이블에서는 문제가 된다. 파일 하나 pc로 전송하려면 10자리씩 보내고 쉬고 보내고 쉬었다 보내고 하는 과정이 엄청난 시간이 든다.
이 방법과는 달리 전송 시간을 단축하는 방법은 전송하는 개수가 10개씩이 아니라 예를 들어 100개씩 붙여서 보내 버리면 된다. 그러면 받는 쪽에서 10개가 아니라 100개를 받아서 저장하고 쉬지않고 또 받아 저장하고 하면 전송시간이 엄청나게 절약된다.
하지만 보내는 신호가 더 많아진다면 예를 들어 현재 받고 있는 신호가 1-1-1 이라는 신호인지 아니면 그냥 1-1이라는 신호인지 구분하려면 시간간격(클럭)을 세면서 받아야 오류가 안난다.
그러려면 보내는 쪽은 100개를 보내는 데이터 회선과 시간간격을 체크하는 회선, 즉 2개의 회선을 상대방에게 제공해야 한다.
이 방식이 바로 동기적인 전송방식(클럭신호제공)이라고 한다.
동기/비동기적인 관점이지만 데이터전송을 조금이라도 편하게 이해할 수 있는 시간이 된 것 같다.