티스토리 뷰

We think about IT

[네트워크] 02. 디지털 데이터

알 수 없는 사용자 2020. 9. 12. 19:16

Why So Serious? Just For Fun. No Fun No Gain.

 

저번 포스팅에서는 네트워크란 무엇이고, 네트워크 간의 통신을 하기 위해서 사용되는 패킷이라는 것을 알아보았습니다. 네트워크는 "여러 장비들이 연결되어 데이터도 통신하고, 웹도 보여줄 수 있고, 메일도 송수신할 수 있는 등 다양한 기능을 가지고 있는 것"이며 패킷은 "네트워크의 대역폭을 효율적으로 사용하기 위해 큰 데이터를 바로 송신하고 않고 작게 나누어 송신하게 되는데 이때 작게 나눈 조각"을 나타내는 말입니다. 자세한 설명은 하단의 포스팅에 적혀있습니다.

 

 

[네트워크] 01. 네트워크와 패킷

Why So Serious? Just For Fun. No Fun No Gain. IT 업계에 종사한 지 얼마 되지 않았지만 네트워크라는 단어를 들으면 자연스레 LAN과 WAN 등의 단어가 떠오릅니다. 구글링을 해봐도 대부분 "컴퓨터 네트워크"��

nunucompany.tistory.com

이번 포스팅에서는 디지털 데이터(Digtal Data)에 대해서 알아보겠습니다. 저희가 컴퓨터를 통해 볼 수 있는 것에는 이미지도 존재하고, 동영상도 존재하며, 문자들도 존재합니다. 하지만 컴퓨터는 이를 숫자 0과 1만으로 이해하고 표현하고 있습니다. 이 0과 1의 집합을 디지털 데이터라고 합니다.

 

저희가 이미지를 보고있거나 동영상을 볼 때도 컴퓨터는 이처럼 이해하고 있습니다.

 

디지털 데이터는 또한 네트워크를 통해 전송될 때 전기 신호로 변환되어 전송됩니다. 즉, 거대한 데이터가 있다면 패킷의 형태로 쪼개어 송신을 할 때 그 구성은 0과 1로 표현된 전기신호라는 것 입니다. 전기 신호에 대해서는 추후에 더 자세히 알아보겠습니다.

 

디지털 데이터는 단위를 가집니다. 0과 1의 정보를 나타내는 최소 단위를 비트 (bit)라고 하고, 비트가 8개 모인 것을 바이트(byte)라고 합니다. 컴퓨터는 기본적으로 바이트 단위로 데이터를 읽고 쓰는 작업을 하기 때문에 디지털 데이터를 만들 때는 8비트를 1바이트로 다루는 것이 좋습니다. (딱히 만들 일은 없습니다....)

 

지금까지의 디지털 데이터의 설명으로 눈치채셨겠지만 사실 디지털 데이터는 이미 저희가 알고 있고 친숙한 개념입니다. 전자기기에 대해 이야기할 때 "이 핸드폰 용량은 512기가 바이트야." 라던지 "USB가 4기가 바이트 밖에 안돼서 불편해" 등 이미 많이 사용하고 있습니다. 그래서 단위에 대해 더 알아보기보다는 문자 코드의 역사를 알아보며 비트와 바이트의 설명을 이어나가겠습니다.

 

문자 코드의 역사는 아스키(ASCII, American Standard Code for Information Interchange) 코드에서 시작합니다. 아스키 코드는 8비트 중 7비트를 이용하여 문자를 표현하고, 1비트를 통신 에러 검출을 위해 사용합니다. (통신 에러 검출 비트를 패리티 비트라고 합니다.) 7비트를 통해서 표현할 수 있는 문자는 총 128개 문자입니다.

 

2의 n제곱 형태로 표현할 수 있는 데이터가 늘어납니다.

 

128개의 문자는 영어 알파벳을 표현하기에는 큰 문제가 없었지만 그 외 문자를 가지고 있는 나라에서는 사용할 수가 없었습니다. 그래서 패리티 비트를 사용하지 않고 8비트로 문자를 표현하기 시작합니다. 이를 확장 ASCII 코드라고 말합니다. 1개의 비트가 늘어나 256개의 문자를 표현할 수 있게 되어 유럽의 언어를 전부 표현할 수 있게 되었습니다. 유럽에서는 확장 ASCII 코드를 유럽 통일 표준안 (ISO-8859)으로 제정하였고 약간씩 상이한 부분에 대해서는 뒤의 버전을 다르게 했습니다. 예를 들어 ISO8859-1은 서유럽 언어를 표현하기 위한 표준안이고, ISO8859-2는 동유럽 언어를 표현하기 위한 표준안입니다. 또한 IBM에서는 이를 이용하여 코드 페이지를 만듭니다. 코드 페이지는 여러 언어(그리스어, 터키어, 한국어 등)를 분리하여 특정한 문자 인코딩 테이블로 정의한 것입니다. 코드 페이지는 CP라는 접두사를 사용하는데, 한글 인코딩에 관련된 프로그래밍을 하다 보면 보이는 'CP949'가 바로 코드 페이지 중 하나입니다.

 

하지만 확장 ASCII 코드도 많은 문제가 존재했습니다. 한글은 조합 가능 개수만 따져도 128개를 넘어서고, 중국어는 만 개의 문자가 넘습니다. 또한 정보를 표현하기 위해서 각종 고어(古語)들을 사용해야 할 필요도 있었습니다. 이를 해결해준 것이 유니코드입니다. 유니코드는 전 세계의 모든 문자를 다루도록 설계되었습니다. 유니코드는 2~4바이트의 넉넉한 공간에 문자를 할당합니다. (2의 n제곱 형태로 표현할 수 있는 데이터가 늘어납니다. 2바이트만을 확장해도 65,536의 경우의 수를 가집니다.) 프로그래밍을 할 때 자주 사용하는 UTF-8이 유니코드에 기반한 인코딩 방식 중 하나입니다.

 

이번 포스팅에서는 디지털 데이터에 대해서 알아보았습니다. 문자 코드를 알아보며 2바이트만 되어도 65,536 가지의 데이터를 표현할 수 있는 것을 보면 단순히 0과 1의 집합으로도 이미지나 동영상을 표현할 수 있다는 것을 알 수 있습니다. 읽어주셔서 감사합니다.

 

댓글