
Danielle Ormshaw 지음
컴퓨터의 근본적인 목적은 단 하나입니다. 바로 숫자, 즉 1과 0의 형태로 정보를 주고받는 것입니다.
저는 이 개념의 무게를 처음 깨달았을 때 완전히 매료되고 말았습니다. 단순한 1과 0의 나열만으로 어떻게 이토록 복잡한 상호작용을 만들어낼 수 있을까요?
그래서 컴퓨터 과학 서적을 뒤지고 인터넷을 샅샅이 뒤졌지만, 이 모든 것이 어떻게 하나로 연결되는지 이해하는 데 고생했습니다. 이 글은 제가 이 여정을 시작했던 몇 달 전에 발견했으면 좋았을 법한 가이드입니다.
사람은 십진법으로 소통한다
사람들이 숫자로 의사소통할 때 사용하는 것은 십진법입니다. 십진법은 열 개의 숫자(0~9)로 구성되며, 각 숫자가 놓인 자릿수를 기준으로 해석합니다. 십진수 148을 예로 들어볼까요? 이 숫자를 읽을 때 우리는 무의식중에 다음과 같은 과정을 거칩니다.

- 가장 오른쪽 숫자에 10⁰을 곱합니다.
- 가운데 숫자에 10¹을 곱합니다.
- 가장 왼쪽 숫자에 10²을 곱합니다.
- 1~3단계의 결과를 모두 더합니다.
이 시스템 덕분에 우리는 정확한 값, 즉 백마흔여덟(148)이라는 의미를 도출할 수 있습니다.
십진법에서는 항상 각 자릿수에 10의 거듭제곱을 곱합니다. 왼쪽으로 새로운 자릿수가 추가될 때마다 지수는 1씩 증가합니다. 이런 이유로 십진법을 '밑(base)이 10인 체계'라고 부릅니다. 어렵지 않죠?
컴퓨터는 이진법으로 소통한다
컴퓨터도 비슷한 방식으로 소통하지만, 이진법을 사용합니다. 이진법은 두 개의 숫자(0, 1)로 구성되며, 십진법과 동일한 방식으로 분해할 수 있습니다. 다만 밑이 10이 아니라 2라는 점이 다릅니다.
이진수 110을 예로 들어보겠습니다. 컴퓨터가 이 이진 코드를 해석할 때는 다음과 같은 과정을 거칩니다.

- 가장 오른쪽 숫자에 2⁰을 곱합니다.
- 가운데 숫자에 2¹을 곱합니다.
- 가장 왼쪽 숫자에 2²을 곱합니다.
- 1~3단계의 결과를 모두 더합니다.
마찬가지로 왼쪽으로 새로운 자릿수가 추가될 때마다 지수를 1씩 늘려주면 됩니다.
인터넷은 정보를 운반하기 위해 설계된 물리적 시스템이다
지금까지 이진 코드로 정보를 저장하는 방법을 살펴봤습니다. 그렇다면 실제로는 어떻게 작동할까요?
인터넷은 아마존 배송 기사와 같습니다. 다만 택배 상자 대신 '비트(bit)'를 배송하죠. 사진이든 문서든 상관없이, 인터넷에서 오가는 모든 정보는 비트로 표현됩니다. 각 비트는 하나의 이진값(0 또는 1)을 가지며, 여덟 개의 비트가 모여 하나의 바이트(byte)가 됩니다.

컴퓨터로 파일을 내려받다 보면 킬로바이트(KB)나 메가바이트(MB) 단위의 파일 크기를 자주 보게 됩니다. 킬로바이트는 약 1,000바이트, 메가바이트는 약 100만 바이트입니다.
이진 정보의 전송은 세 가지 방식 중 하나로 이루어집니다.
- 전기 신호 전송
- 광섬유 전송
- 무선 전송
인터넷 서비스 제공업체(ISP)가 이러한 시스템을 뒷받침하는 물리적 인프라를 공급합니다.
인터넷에 연결된 모든 기기에는 고유한 주소가 있다
아마존에서 상품을 주문하면 배송 기사가 주소를 확인해 정확한 장소로 배달하죠. 인터넷도 정확히 같은 방식으로 작동합니다.
구글에서 검색을 하면, 요청이 IP 주소라고 불리는 고유한 숫자열로 전송됩니다. 이 요청에는 수많은 비트와 함께 요청을 보낸 기기의 IP 주소도 포함되어 있습니다. 이는 마치 '반송 주소'와 같아서, 수신 측이 요청이 어디서 왔는지 파악할 수 있습니다.
그런데 구글에 접속할 때 일련의 숫자를 브라우저에 직접 입력하지 않습니다. 그렇다면 컴퓨터는 어떻게 각 요청을 어디로 보내야 할지 알까요?
인터넷은 프로토콜과 검사 지점의 집합으로 작동한다
도메인 네임 시스템(DNS)은 사람이 읽을 수 있는 웹 주소를 숫자 형태의 IP 주소로 변환합니다. DNS가 해당 주소를 모르는 경우에는 연결된 서버 네트워크를 활용해 답을 찾아냅니다.

두 기기가 통신할 때는 정보를 패킷(packet) 단위로 주고받습니다. 정보가 크면 여러 개의 패킷으로 나눠 전송해야 하는 경우가 많은데, 각 패킷에는 정보의 일부(바이트)와 송신자·수신자의 IP 주소가 담겨 있습니다.
패킷은 교통 관리 시스템을 통해 기기들의 네트워크를 이동합니다. 라우터(router)는 패킷이 지나갈 수 있는 경로를 추적하고 '가장 저렴한' 경로를 찾아냅니다. 여기서 가장 저렴한 경로란 보통 혼잡도가 가장 낮은 경로를 의미합니다. 흥미롭게도 라우터는 패킷을 관리할 때 국제 정세 같은 비기술적인 요소까지 고려하기도 합니다.
패킷들은 서로 다른 경로를 거쳐 이동하기 때문에, 목적지에 순서와 상관없이 도착하는 경우가 많습니다. 네트워크는 이 문제를 어떻게 처리할까요?
전송 제어 프로토콜(TCP)은 재고 확인 역할을 합니다. 모든 패킷이 도착했다면 TCP는 송신 기기에 수신 확인 응답을 보냅니다. 반대로 누락된 패킷이 있다면 TCP는 '수령을 거부'하고 빠진 패킷들을 다시 요청합니다.

정리하자면, DNS는 사람이 읽을 수 있는 웹 주소를 IP 주소로 변환하고, 정보는 패킷 형태로 분해·전송·수신됩니다. 패킷 안에는 비트 형태의 이진 정보가 담겨 있으며, 전선, 광섬유, 무선 네트워크가 이 비트들을 IP 주소 사이에서 주고받는 것입니다.
다음 단계는?
이 글이 기본 개념을 이해하는 데 도움이 되었다면 박수와 함께 트위터 팔로우로 응원을 보내주세요. 즐거운 코딩 되세요!
무료로 코딩을 배워보세요. freeCodeCamp의 오픈소스 커리큘럼은 이미 4만 명 이상이 개발자로 취업하는 데 도움을 주었습니다. 지금 시작하세요!