minzzl

2강. [CH-01 Introduction] - 데이터와 시그널 본문

전공공부/데이터통신

2강. [CH-01 Introduction] - 데이터와 시그널

minzzl 2022. 12. 10. 15:00
728x90
반응형

앞선 글에서 데이트라는 것은 "비트의 집합"이라고 언급한 적이 있습니다. 데이터는 비트의 집합이며 이들은 저장장치들에 어떠한 방식으로든 0과 1로 기록이 되어있습니다.

그렇다면, 우리가 살펴보고자하는 데이터통신은, 이 비트의 집합들을 어떻게 다른 컴퓨터와 주고 받을 것이냐는 내용일 것입니다.

 

그렇다면,

메인 메모리에 저장된 이 데이터를 통째로 다른 컴퓨터로 보내고 싶다면 어떻게 해야할까요?

가장 단순한 방법은, 메인 메모리의 출력 선들에 가닥을 추가해서, 다른 메인 메모리의 입력선에 연결해주면 될 것입니다. 연결하는 순간 전류의 속도로 전송이 완료될테니 말이죠.

 

그러나 이런 방법은 컴퓨터 내부에서 레지스터나 CPU, 메모리들을 서로 연결하는데 사용할 수 있어도 컴퓨터끼리의 전송에서는 불가능할 것입니다. 이유는 단순합니다. 메모리의 모든 bit에 선을 연결해야지만 가능하기 때문입니다.

만약 16GB 메모리가 있다면, 16 X 1023^3 X 8 bit 로 구성되어 있을 것입니다. 각각에 한 가닥 씩 연결해서 다른 컴퓨터의 메모리에 연결하려면 16 X 1023^3 X 8 개의 전기줄을 연결해야합니다.. 이는 너무다도 경제성이 떨어지는 것이기 떄문에 다른 방법이 필요합니다.

 

따라서 우리는 시그널을 통해 데이터를 전달하도록 설계하였습니다.

 

먼저, 우리는 컴퓨터끼리의 연결된 도선은 한 가닥이라고 우선 설정하고 진행해보겠습니다. 여기서 도선이 한 가닥이라면, 위의 메모리에 연결된 도선처럼 한 비트 씩만 전송이 되는 것이 아니냐하는 생각을 하실 수도 있습니다. 결론부터 말씀드리자면, 아닙니다. 도선이 하나라고 해서 꼭 1bit 씩만 전송이 되는 것이 아니기 때문입니다. 이 부분에 대한 개념은 차차 설명하도록 하겠습니다. 그럼 먼저 도선 하나를 이용해 비트를 실제로 전송하는 방법인 시그널에대해 알아봅시다. 그리고 시그널에 대해 공부하다보면, 왜 도선이 하나라고 해서 꼭 1bit만 전송이되는 것이 아닌지 확인 할 수 있습니다.

 

사실 데이터는 시그널로 바뀌어 전송되고, 전송된 시그널은 다시 데이터로 바뀌어 저장됩니다. 데이터는 비트의 집합이므로 비트의 집합을 전송하기 위해서는 반드시 시그널로 바꾸어주어야합니다.

 

예를 들어보겠습니다.

메모리 어딘가에 100101이 저장되어 있다고 합시다. 이 데이터를 다른 컴퓨터로 전송해야한다고 하죠. 이것들을 전송하는 가장 쉬운 방법은 전깃줄을 직접 연결하는 것이지만, 그렇게하는 것은 경제성이 매우 떨어진다고 언급했습니다. 그래서 채택한 것이 시그널을 이용하는 것입니다. 즉 도선에 전압을 걸었다 풀었다 하는 방식으로 한 비트를 전송합니다. 즉 보내는 컴퓨터에서, 컴퓨터 사이를 이은 전싯줄에 일정한 간격으로 1과 0을 의미하는 전압을 걸어주면, 예를 들어 5V는 1을, 0V는 0을 걸어주면 그에 맞게 판정하여 메모리에 저장하는 방식으로 전송이 이루어질 수 있습니다.

 

2.1 디지털 시그널 예시

여기서, 이렇게 전압을 시간 간격으로 걸어주는 것이 바로 시그널입니다.

이와 같이 데이터는 반드시 시그널로 변환되어야 다른 컴퓨터로 전송될 수 있습니다.

 

그러나 주의해야할 것이있습니다.

2.2 디지털 시그널의 오개념

시그널을 표현하기 위해 많은 책들에서 이런 그림을 사용하지만, 이 그림을 너무 있는 그대로 받아들이면 안됩니다. 이 그림을 보면 시그널이 매체를 통해 전송되어 컴퓨터 2가 이를 읽는다는 생각이 듭니다. 그러나 이는 말도 안됩니다. 왜냐하면 컴퓨터2도 그냥 일정 시간 간격으로 도선의 전압을 측정할 뿐이기 때문에, 만약 이런 방식으로 전송이 되는 것이라면 저 시그널을 오른쪽부터 읽는 꼴이 되어 순서를 아예 반내로 읽게 됩니다.

 

그림 2.1은 오른쪽으로 향한 축이 시간 축이라는 것을 명심하셔야합니다. 

 

또한 위의 예에서는 Voltage level을 0V 혹은 5V로 변화시키는 방식을 이용해 데이터를 시그널로 바꾸었습니다. 그런데 사실 굳이 이 방법만있는 것은 아닙니다. 이런 방법 외에도 전압의 크기가 변화하는 주파수를 변화시키는 방식으로 1혹은 0을 의미하는 시그널을 만들어낼 수도 있습니다. 뒤에서 자세히 다루겠지만, 이런식으로 데이터를 어떤 방법을 통해 시그널로 바꿀 것인가 하는 것을 라인코딩이라고 합니다. 또한 추가적으로, 실제 전송 환경에서는 특정한 라인 코딩 알고리즘의 취약점을 해결하기 위해, 전송하고자 하는 데이터 자체에 약간의 변형을 가하는 경우가 많은데 이걸 구체적으로 어떻게 변형시키고 복원시킬 것인가 하는 것에 대해 다루기도 하며, 이를 Block coding이라고 합니다.

 

다시 본론으로 돌아와, 시그널에 대해 더 이야기 해보겠습니다.

시그널에는 아날로그 시그널과 디지털 시그널 2가지가 있습니다. 위의 예시는 당연코 디지털 시그널입니다. 5V와 0V 이외에 Voltage에는 의미가 없습니다. 물론 아날로그 시그널도 사용합니다. 

 

수학자들의 노력덕분에 아날로그와 디지털은 상호변환이 가능하고, 아날로그 데이터도 디지털 시그널/아날로그 시그널로 모두 전송이 가능합니다. 디지털 데이터도 마찬가지입니다. 다만 우리는 아날로그 데이터를 본 글에서 다루지 않을 뿐입니다. 그래서 단순히 데이터라고 했을 때 디지털 데이터라고 떠올리는 것이 이해를 돕기에 편할 것입니다.

 

* 다음의 글을 보고 작성한 글입니다.

https://m.blog.naver.com/unionlkh/220684444933

 

 

728x90
반응형