먼저 인터넷에 대한 몇 가지 오해부터 짚고 넘어가겠습니다. 인터넷은 웹(Web)이 아닙니다. 인터넷은 클라우드도 아니고, 마법 같은 것도 아닙니다.
마치 자동으로 작동하는 당연한 존재처럼 여겨지지만, 사실 그 이면에는 인터넷을 구동시키는 복잡한 과정들이 숨어 있습니다.
그래서... 인터넷은 정확히 무엇일까요?
인터넷은 실제로 '선'입니다. 물론 전 세계의 컴퓨터들을 연결하는 수많은 선들이죠.
인터넷은 또 하나의 인프라이기도 합니다. 상호 연결된 컴퓨터들이 표준화된 방식과 정해진 프로토콜을 통해 소통하는 글로벌 네트워크입니다.
결국 인터넷은 '네트워크의 네트워크'입니다. 컴퓨팅 기기들로 이루어진 완전히 분산된 시스템으로, 네트워크의 모든 지점 간 종단 간(end-to-end) 연결성을 보장합니다. 목표는 모든 기기가 다른 어떤 기기와도 통신할 수 있게 하는 것이죠.

인터넷은 우리 모두 매일 사용하는 것으로, 많은 사람들이 이것 없는 삶은 상상조차 할 수 없습니다. 인터넷과 그것이 제공하는 기술적 진보는 우리 사회를 바꿔 놓았습니다. 일하는 방식, 뉴스를 접하고 정보를 공유하는 방식, 서로 소통하는 방식까지 모두 변했습니다.
또한 무수한 기회를 창출했고, 인류의 발전을 도왔으며, 우리의 삶의 경험을 형성해 왔습니다.
이와 같은 것은 세상에 없습니다. 인터넷은 역사상 가장 위대한 발명품 중 하나입니다. 하지만 우리는 왜 인터넷이 처음 만들어졌는지, 어떤 과정을 거쳐 탄생했는지, 누가 만들었는지 생각해 본 적이 있을까요? 인터넷은 어떻게 오늘날의 모습이 되었을까요?
이 글은 일종의 시간 여행입니다. 인터넷의 기원과 오랜 세월 동안 걸어온 길을 살펴볼 것입니다. 코딩을 배우는 여정에서 이러한 지식은 분명 도움이 될 것입니다.
인터넷이 만들어진 역사를 배우면서 저는 모든 것이 결국 '문제 해결'로 귀결된다는 것을 깨달았습니다. 그리고 그것이야말로 코딩의 본질입니다. 문제를 파악하고, 해결책을 찾으려 노력하며, 해결책을 찾은 후에는 더 개선해 나가는 것이죠.
인터넷처럼 광범위하고 끊임없이 변화하는 기술은 한 사람이나 한 기관의 작품이 아니었습니다. 수많은 사람들이 새로운 기능을 개발하며 그 성장에 기여했습니다.
그렇기에 인터넷은 시간이 지나며 발전했습니다. 만들어지기까지 최소 40년이 걸렸고, 지금도 계속 진화하고 있습니다.
그리고 인터넷은 단순히 '만들고 싶어서' 만들어진 것이 아닙니다. 우리가 오늘날 알고 사용하는 인터넷은 실험의 결과물이었습니다. 인터넷의 전신인 ARPANET 말입니다.
그리고 그 모든 것은 하나의 문제에서 시작되었습니다.
스푸트니크의 충격
냉전이 한창이던 1957년 10월 4일, 소련이 최초의 인공위성 '스푸트니크(Sputnik)'를 우주로 발사했습니다.
인류가 만든 최초의 인공 물체가 우주에 떠오른 순간이었기에, 이는 미국인들에게 충격적인 사건이었습니다.
소련은 과학과 기술에서 앞서 있었을 뿐만 아니라 위협적인 존재였습니다. 미국인들은 소련이 적국을 감시하고 냉전에서 승리할 것이며, 미국 본토에 대한 핵 공격도 가능하지 않을까 두려워했습니다.

이에 미국은 과학과 기술에 대해 더욱 진지하게 고민하기 시작했습니다. 스푸트니크의 경종 이후 우주 경쟁이 시작되었고, 얼마 지나지 않아 1958년 미국 행정부는 여러 기관에 자금을 지원했는데, 그중 하나가 ARPA였습니다.
ARPA는 Advanced Research Projects Agency(첨단연구계획국)의 약자입니다. 국방부 산하의 컴퓨터 과학 연구 프로젝트로, 과학자와 연구자들이 정보, 연구 결과, 지식을 공유하고 소통할 수 있는 통로였습니다. 또한 컴퓨터 과학 분야가 발전하고 진화하는 데 큰 도움을 주었습니다.
바로 이곳에서 ARPA 국장 중 한 명이었던 J.C.R. 릭라이더(J.C.R. Licklider)의 비전이 이후 수년에 걸쳐 구체화되기 시작했습니다.
ARPA가 없었다면 인터넷은 존재하지 않았을 것입니다. 바로 이 기관 덕분에 최초의 인터넷 원형, 즉 ARPANET이 탄생한 것입니다.
컴퓨터의 글로벌 네트워크 구축
릭라이더는 ARPANET이 만들어지기 몇 년 전에 ARPA를 떠났지만, 그의 아이디어와 비전은 인터넷을 만드는 기반과 초석을 놓았습니다. 그것이 오늘날 우리가 아는 모습이 된 것은 너무나 자연스럽게 여겨지지만요.
당시 컴퓨터는 지금 우리가 아는 것과 달랐습니다. 크기가 어마어마하고 가격도 극도로 비쌌습니다. 숫자 계산 기계, 대체로 '계산기'로 여겨졌으며 제한된 몇 가지 작업만 수행할 수 있었습니다.
따라서 메인프레임 컴퓨터 시대에는 각각의 컴퓨터가 특정 작업 하나만 처리할 수 있었습니다. 여러 작업이 필요한 실험을 진행하려면 컴퓨터를 한 대 이상 확보해야 했고, 그것은 곧 값비싼 하드웨어를 추가로 구입한다는 의미였습니다.
해결책은 무엇일까요?
여러 대의 컴퓨터를 하나의 네트워크에 연결하고, 서로 다른 시스템들이 같은 언어를 사용하여 소통하게 만드는 것이었습니다.
여러 컴퓨터를 네트워크에 연결한다는 아이디어 자체는 새롭지 않았습니다. 1950년대에도 그런 인프라가 존재했으며, WAN(광역 네트워크, Wide Area Networks)이라고 불렸습니다.
하지만 WAN은 많은 기술적 한계가 있었고, 좁은 지역에 국한되어 할 수 있는 일도 제한적이었습니다. 각 기계마다 고유한 언어를 사용했기 때문에 다른 기계와 통신하는 것은 불가능했습니다.
그래서 릭라이더가 제안하고 1960년대 초에 대중화한 '글로벌 네트워크'라는 개념은 혁명적이었습니다. 이는 컴퓨터와 인간의 완벽한 공생이라는 그의 더 큰 비전과 맞닿아 있었습니다.
그는 미래에 컴퓨터가 삶의 질을 향상시키고 반복적인 작업을 없애줌으로써, 인간이 창의적으로, 더 깊이 사고하고 상상력을 마음껏 펼칠 시간과 여유를 갖게 될 것이라고 확신했습니다.
그러나 그 비전이 현실이 되려면 서로 다른 시스템들이 언어의 장벽을 넘어 더 넓은 네트워크에 통합되어야만 했습니다. 바로 이 '네트워킹(Networking)'의 개념이 오늘날 우리가 사용하는 인터넷의 핵심입니다. 요컨대 서로 다른 시스템들이 소통하기 위한 공통 표준의 필요성인 셈입니다.
분산형 패킷 교환 네트워크의 구축
1960년대 말까지 컴퓨터에서 작업을 실행하려면 데이터가 '회선 교환(Circuit Switching)'이라는 방식으로 전화선을 통해 전송되었습니다.
이 방식은 전화 통화에는 잘 맞았지만, 컴퓨터와 인터넷에는 매우 비효율적이었습니다.
이 방식에서는 데이터를 하나의 완전한 패킷으로만 보낼 수 있었고, 한 번에 한 대의 컴퓨터에만 전송할 수 있었습니다. 정보가 유실되어 처음부터 절차 전체를 다시 시작해야 하는 경우도 흔했습니다. 시간이 많이 걸리고, 비효율적이며, 비용이 많이 드는 방식이었죠.
게다가 냉전 시대에는 위험하기까지 했습니다. 전화 시스템이 공격당하면 전체 통신 시스템이 마비될 수밖에 없었습니다.
이 문제에 대한 답이 바로 '패킷 교환(Packet Switching)'이었습니다.
패킷 교환은 데이터를 전송하는 간단하고 효율적인 방식입니다. 데이터를 하나의 큰 스트림으로 보내는 대신, 작은 조각들로 나눕니다.
그런 다음 정보 패킷들을 블록으로 분해하여, 가능한 한 빨리, 가능한 한 많은 방향으로 전송합니다. 각 패킷은 네트워크 안에서 저마다 다른 경로를 거쳐 목적지에 도달합니다.
목적지에 도착하면 패킷들은 다시 재조립됩니다. 이것이 가능한 이유는 각 패킷에 발신자, 수신지, 그리고 번호에 관한 정보가 담겨 있기 때문입니다. 이를 통해 수신 측은 패킷들을 원래 형태로 되돌려 놓을 수 있습니다.
이 방식은 여러 과학자들이 연구했지만, 폴 배런(Paul Baran)의 분산형 네트워크 아이디어가 나중에 ARPANET에 채택되었습니다.
배런은 핵 공격에서도 생존할 수 있는 통신 시스템을 고민하고 있었습니다. 본질적으로 그는 장애에 견딜 수 있는 통신 시스템을 찾고자 했습니다.
그는 네트워크가 중앙집중식(centralised)과 분산형(distributed)이라는 두 가지 유형의 구조를 중심으로 구축될 수 있다는 결론에 도달했습니다.
이러한 구조에서 세 가지 유형의 네트워크가 파생됩니다. 중앙집중식, 분산식(decentralised), 그리고 완전 분산형(distributed)입니다. 이 세 가지 중 공격에서 살아남을 수 있는 것은 마지막 완전 분산형뿐이었습니다.

이런 유형의 네트워크에서 일부가 파괴되더라도 나머지 부분은 여전히 작동하며, 해당 작업은 단순히 다른 부분으로 옮겨져 처리됩니다.
당시에는 네트워크의 급속한 확장까지 염두에 두지 않았습니다. 필요하지 않았으니까요. 그리고 그 확장은 이후 수년이 지나면서야 모습을 드러내기 시작했습니다. 배런의 아이디어는 시대를 앞서갔지만, 오늘날 인터넷이 작동하는 방식의 토대를 마련했습니다.
실험용 패킷 교환 네트워크는 성공을 거두었고, 이 방식을 채택한 초기 ARPANET 아키텍처로 이어졌습니다.
ARPANET은 어떻게 구축되었나
냉전 위협에 대한 대응으로 시작된 것이 점점 다른 무언가로 변모하고 있었습니다. 인터넷의 첫 번째 원형이 서서히 모습을 드러내기 시작했고, 최초의 컴퓨터 네트워크인 ARPANET이 구축되었습니다.
이제 목표는 자원 공유였습니다. 데이터든, 연구 결과든, 애플리케이션이든 말입니다. 이를 통해 사람들은 자신이 어디에 있든 멀리 떨어진 값비싼 컴퓨팅 파워를 마치 눈앞에 있는 것처럼 활용할 수 있게 되었습니다.
그때까지 과학자들은 다른 장소에 있는 컴퓨터의 자원을 활용할 수 없었습니다. 각 메인프레임 컴퓨터마다 고유한 언어를 사용했기 때문에 시스템 간 소통 부족과 호환성 문제가 있었던 것입니다.
하지만 컴퓨터가 효과적으로 작동하려면 같은 언어를 사용하고 하나의 네트워크로 연결되어야 했습니다.
그 해결책이 바로 수백 킬로미터 떨어져 있는 자원 공유형 메인프레임 슈퍼컴퓨터들 간의 통신 연결을 설정하는 네트워크를 구축하는 것이었습니다.
기관과 대학이 운영하는 센터들을 연결하는 실험용 전국 단위 패킷 교환 네트워크 구축이 시작되었습니다.
1969년 10월 29일, 서로 다른 컴퓨터들이 처음으로 연결되어 '노드 대 노드(node-to-node)' 통신, 즉 한 컴퓨터에서 다른 컴퓨터로의 통신에 성공했습니다. 이는 통신에 혁명을 일으킬 실험이었습니다.
인류 역사상 최초의 메시지가 UCLA(캘리포니아 대학교 로스앤젤레스)에서 SRI(스탠퍼드 연구소)로 전송되었습니다.
그 내용은 단순히 "LO"였습니다.
원래 "LOGIN"을 입력하려 했으나 시스템이 다운되어 재부팅해야 했기 때문에 처음에는 불가능했습니다. 하지만 작동했습니다! 첫걸음이 내딛어졌고, 언어의 장벽이 깨진 것입니다.
1969년 말까지 전체 네트워크의 네 개 노드, 즉 UCLA, SRI, UCSB(캘리포니아 대학교 산타바버라), 유타 대학교 간의 연결이 구축되었습니다.

네트워크는 그 후로도 꾸준히 성장했고, 점점 더 많은 대학들이 합류했습니다.
1973년에는 영국과 노르웨이를 잇는 노드까지 생겼습니다. ARPANET은 대학이 운영하는 이러한 슈퍼컴퓨팅 센터들을 하나의 네트워크로 묶어내는 데 성공했습니다.
그 시절 가장 위대한 성취 중 하나는 새로운 문화가 싹틔운 점입니다. 네트워킹을 통해 공유하고 집단적으로 최선의 해결책을 찾으며 문제를 해결하는 문화였죠.
당시 과학자와 연구자들은 네트워크의 모든 측면을 질문했습니다. 기술적인 부분뿐만 아니라 윤리적인 측면까지도요.
이러한 논의가 이루어진 환경은 모두에게 열려 있고 위계질서가 없었습니다. 누구나 자유롭게 의견을 표현하고 협력하여 커다란 문제들을 해결할 수 있었습니다.
바로 이런 문화가 오늘날의 인터넷으로 이어졌습니다. 포럼, 소셜 미디어 등을 통해 사람들은 질문을 던져 답을 얻거나, 인류의 삶과 경험에 영향을 미치는 온갖 문제를 함께 해결하기 위해 모입니다.
시간이 흐르면서 ARPANET과 무관한 독립적인 패킷 교환 네트워크들이 속속 등장했습니다(1970년대에 국제적 차원에서 존재하던 ARPANET은 급속히 늘어나기 시작했습니다). 이것이 새로운 과제였습니다.
이 서로 다른 네트워크들은 각자의 방언과 데이터 전송 방식에 대한 고유한 표준을 가지고 있었습니다. 그들이 하나의 더 큰 네트워크, 즉 오늘날 우리가 아는 인터넷에 통합되는 것은 불가능했습니다.
이 서로 다른 네트워크들이 서로 대화하게 만드는 것, 과학자들이 '인터네트워킹(Internetworking)'이라 불렀던 이 과정은 큰 도전 과제임이 입증되었습니다.
공통 표준의 필요성
오늘날 우리의 기기들은 더 넓은 글로벌 네트워크에 자동으로 연결되도록 설계되어 있습니다. 하지만 그 당시에는 이 과정이 복잡한 작업이었습니다.
'네트워크의 네트워크', 즉 우리가 인터넷이라 부르는 이 전 세계적 인프라는 합의된 특정 프로토콜 위에 구축되어 있습니다. 이는 네트워크가 소통하고 데이터를 교환하는 방식에 기반합니다.
ARPANET 초기에도 여전히 자체 네트워크 외부의 컴퓨터가 네트워크 내부의 컴퓨터와 통신할 수 있는 공통 언어가 부족했습니다. 안전하고 신뢰할 수 있는 패킷 교환 네트워크였음에도 불구하고 말입니다.
이 초기 네트워크들은 서로 어떻게 소통할 수 있었을까요? '글로벌 네트워크'라는 비전을 현실로 만들려면 네트워크를 더욱 확장해야 했습니다.
열린 네트워크의 네트워크를 구축하려면 범용 프로토콜, 즉 규칙의 집합이 필요했습니다.
그 규칙들은 안전한 데이터 전송을 위해 충분히 엄격해야 하는 동시에, 데이터가 전송되는 모든 방식을 수용할 수 있을 만큼 유연해야 했습니다.
TCP/IP, 문제를 해결하다
빈트 서프(Vint Cerf)와 밥 칸(Bob Kahn)은 오늘날 우리가 인터넷이라 부르는 것의 설계를 시작했습니다. 1978년 전송 제어 프로토콜(Transmission Control Protocol)과 인터넷 프로토콜(Internet Protocol), 이른바 TCP/IP가 탄생했습니다.
상호 연결을 위한 규칙은 다음과 같았습니다:
- 독립적인 네트워크는 변경될 필요가 없다
- 소통 달성을 위한 노력이 필요하다
- 내부 네트워크는 이들을 연결하는 게이트웨이와 함께 존재한다. 게이트웨이의 역할은 네트워크 간 번역이다. 이를 위한 보편적이고 합의된 프로토콜이 하나 존재한다
- 중앙 통제는 없다. 책임자인 개인이나 조직도 없다
서프의 설명은 다음과 같습니다:
TCP의 역할은 단순히 한 HOST가 생성한 메시지 스트림을 받아, 변경 없이 원격 수신 HOST에서 동일한 스트림을 재현하는 것이다.
인터넷 프로토콜(IP)은 수많은 기기들 사이에서 정보의 위치를 찾아내는 것을 가능하게 합니다.
그렇다면 데이터는 어떻게 이동할까?
패킷은 어떻게 한 지점에서 다른 지점으로 이동할까요? 예를 들어 발신지에서 수신지까지요? TCP/IP는 이 여정에서 어떤 역할을 하며, 어떻게 이동을 가능하게 만들까요?
사용자가 정보를 주고받을 때, 첫 단계는 발신 측 기기의 TCP가 해당 데이터를 패킷으로 분해하여 배포하는 것입니다. 이 패킷들은 인터넷을 따라 라우터에서 라우터로 이동합니다.
이 과정에서 IP 프로토콜이 패킷들의 주소 지정과 전달을 담당합니다. 마지막에는 TCP가 패킷들을 원래 상태로 다시 조립합니다.
그 후 인터넷에 무슨 일이 일어났나?
1980년대 내내 이 프로토콜은 철저히 검증되었고 수많은 네트워크에 채택되었습니다. 인터넷은 빠른 속도로 계속 성장하고 확장되었습니다.
상호 연결된 글로벌 네트워크의 네트워크가 마침내 현실이 되기 시작했습니다. 하지만 여전히 주로 연구자, 과학자, 프로그래머들이 메시지와 정보를 교환하는 데 널리 사용했을 뿐, 일반 대중은 인터넷을 잘 알지 못했습니다.
그러나 1980년대 말, 인터넷이 다시 한번 변모하면서 이 상황도 바뀌게 됩니다.
이는 팀 버너스 리(Tim Berners-Lee) 덕분이었습니다. 그가 소개한 것이 바로 웹(Web), 즉 오늘날 우리가 알고 사용하는 인터넷의 모습입니다.
인터넷은 단순히 한 컴퓨터에서 다른 컴퓨터로 메시지를 보내는 수준을 넘어, 처음에는 상호 연결된 웹사이트들의 모음에 불과했던 것을 사람들이 쉽고 직관적으로 탐색할 수 있는 방식으로 발전했습니다. 웹은 인터넷 위에 구축되었습니다. 인터넷이 웹의 기반입니다.
이 글이 오늘날 우리가 사용하는 이 정보의 은하수가 어떻게 시작되었는지에 대한 배경과 통찰을 제공했기를 바랍니다. 그리고 그것이 실제로 어떻게 시작되었고, 어떤 길을 걸쳐 오늘날 우리가 알고 사용하는 인터넷이 되었는지 배우는 시간이 즐거웠기를 희망합니다.