- Published on
쉽게 이해해보는 인터넷 : 네트워크-1
Overview

우리는 인터넷을 통해 지금 이 페이지를 보고 있습니다.
인터넷은 전 세계의 컴퓨터들을 마치 거미줄처럼 엮어 하나로 이어줍니다.
It is a network of networks that consists of private, public, academic, business, and government networks of local to global scope, linked by a broad array of electronic, wireless, and optical networking technologies.
인터넷은 국소적인 크기부터 거대한 크기까지 개인, 공용, 학술, 사업, 국가의 다양한 목적의 네트워크들을 유무선, 광통신 기술을 통해 연결한 '네트워크들의 네트워크'이다.
Wikipedia
인터넷의 위키피디아 설명입니다.
오늘 얘기하고자 하는 핵심을 얘기해주는 문구인데요.
관련해서 간단히 비유를 들어보고자 합니다.
만약 서울시에 사는 철수가 부산에 사는 영희에게 편지를 전해주고 싶다면 어떻게 해야할까요?
현대에선 우리가 배울 네트워크 덕분에 카카오톡, 이메일만으로도 쉽게 메세지를 전달할 수 있습니다.
그렇지 않더라도 철수는 그저 편지에 발신지와 수신지 주소를 적고 근처의 우체통에 넣거나 우체국에 접수만 하면 됩니다.
이제 어떤 절차가 이루어지는지 살펴볼까요?
- 우체통에 들어간 편지는 집배원께 수거되어 우체국으로 도착합니다.
- 우체국에 도착한 편지는 다른 편지들과 함께 모여 권역을 담당하는 우편집중국으로 보내집니다.
- 우편집중국에선 대량의 편지들을 수신지에 따라 분류하고 다시 이를 부산 권역의 우편집중국으로 보냅니다.
- 부산 담당의 우편집중국은 다시 편지들을 세부적인 수신지에 따라 분류하고 수신지를 담당하는 부산의 어느 우체국으로 편지들을 보냅니다.
- 부산의 어느 우체국은 이를 다시 동네마다 분류하고, 편지는 집배원님에 할당되어 영희의 집으로 도착합니다.
위 과정을 한 번 살펴봅시다.
철수가 영희에게 편지를 전해주기 위해서 영희가 사는 물리적 위치를 식별했을까요?
영희가 사는 주소를 알고 있을 뿐 정말 영희가 지구상의 어느 위치(위도, 경도, ..)에 살고 있는지를 식별하진 않았습니다.
단지 영희가 사는 집을 국가 체계에 맞추어 논리적으로 대응시킨 "주소"만 알고 있을 뿐입니다.
또한 철수가 영희의 주소를 직접 찾아가지 않습니다. 부산과 서울을 고작 편지 주고받자고 움직이기엔 너무 멀지요. 애초에 편지가 나온 이유를 생각하면 당연하지요. 철수는 대신 가까운 근처의 우체국에 편지를 "위임"합니다.
어느 "주소"로 편지가 도착해야하는지만 명시하였죠.
마지막으로 철수 근처의 우체국이 편지를 받아 곧장 영희에게 전달했을까요?
그렇지 않습니다. 물론 무척 가까운 곳이라면 그럴 수도 있지만 위에서 말했듯 부산은 꽤 먼 곳입니다. 대신 이 편지들을 모아 우편집중국으로 보냅니다. 우편집중국은 이를 권역 별로 분류하여 수신지 권역의 우편집중국으로 보냅니다.
부산 권역 우편집중국은 이를 다시 세부적으로 시 혹은 구 별로 분류하고 해당 구역의 우체국으로 보냅니다. 우체국은 이를 다시 동 혹은 더 세부적 사항에 따라 분류하고 최종적으로 영희에게 도착합니다.
이러한 예시를 길게 설명드린 이유는 인터넷의 디자인과 동작도 이와 상당히 흡사한 측면이 있기 때문입니다.
먼저 네트워크에 대해서 설명하고 인터넷으로 얘기하겠습니다.
Network?
우선 컴퓨터 네트워크(이하 네트워크)의 정의에 대해 살펴보도록 합시다.
A computer network is a set of computers sharing resources located on or provided by network nodes.
네트워크란 노드에 위치하거나 노드가 제공하는 리소스를 공유하는 컴퓨터들의 집합이다.
Wikipedia
조금 어려운 말들이 나오는데요.
여기서 노드는 나중에 다시 의미를 살펴볼 것 입니다.
일단 간단한 사례부터 점진적으로 네트워크를 알아보도록 하겠습니다.

가장 간단한 형태의 네트워크입니다.
두 개의 컴퓨터가 케이블 하나를 두고 서로 "직접" 연결이 되어있는 모습입니다.
A는 B에게 메세지를 보낼 수 있고 그 역도 마찬가지입니다.
그러나 네트워크는 꼭 두 개의 컴퓨터만 연결된 것을 말하지 않습니다.
만약 10대의 컴퓨터(A, B, C, ... J)를 직접 케이블을 통해 네트워크로 연결한다면 어떻게 될까요?
이 상황에선 각 컴퓨터가 노드라고 할 수 있습니다. 따라서 각 노드를 이어주려면 모든 노드쌍을 케이블로 이어주어야 합니다.
따라서 잠깐 고등학교 수학을 빌리자면 10개의 컴퓨터 중 2개를 뽑는 경우의 수 가 케이블의 개수가 될 것입니다.
고작 10개의 컴퓨터만 포함된 네트워크를 만드는데 무려 45개나 되는 케이블 연결이 필요하네요.

100개라면 어떨까요? .
무려 거의 5000개의 케이블이 필요합니다. 당장 학교만 해도 컴퓨터가 100대는 훨씬 넘을텐데, 학교 내부망을 만든다고 하더라도 어마어마한 케이블이 필요할 겁니다.
케이블의 개수만 문제일까요?
기본적으로 데이터도 에너지(전류, 전자기파 등등)를 통해 표현이 됩니다.
이 에너지는 매질을 통해 전파되는데 여기선 그 매질이 케이블인 겁니다.
케이블엔 저항이 있기 때문에 매순간 에너지 손실이 일어나고 혹은 외부적 잡읍이 끼어 노이즈가 생기기도 합니다.
따라서 만약 어떤 컴퓨터 조합 A, B가 가깝다면 상관없지만 매우 멀리 떨어져있다면?
A에서 B로 메세지를 전송했지만 도착했을 즈음엔 이미 데이터라고 보기 어려운 무언가가 도착하게 될 겁니다. 전송 도중에 데이터가 손실되는 것이지요.
이런 문제를 해결하기 위한 방법은 바로 모든 메세지가 경유할 중간점을 하나 만드는 겁니다.

라우터의 역할은 메세지가 가야할 방향을 정해주는 것 입니다.
만약 A(철수)가 라우터(경유지)에게 B(영희)로 보낼 메세지(편지)를 케이블(비둘기)을 통해 전달하면
라우터는 B의 위치를 알고 있기 때문에 해당 케이블(비둘기)로 메세지를 보냅니다.
이렇게 할 경우 각 컴퓨터와 라우터를 연결하는 10개의 케이블(비둘기)만 있으면 네트워크를 형성할 수 있습니다.
이제 노드에 대해서도 얘기해볼 수 있습니다.
노드는 네트워크에서 데이터를 보내고 받는 컴퓨터와 데이터를 받아 적절한 목적지로 분배해주는 라우터를 함께 지칭하는 개념임을 알 수 있습니다.
이제 좀 더 거대한 네트워크를 생각해봅시다.
만약 네트워크로 연결하고 싶은 컴퓨터가 수천, 수백만 컴퓨터를 넘어가면 어떻게 될까요?
그리고 만약 네트워크에 포함된 컴퓨터들의 거리가 너무 멀면 어떻게 될까요?
라우터는 사실은 컴퓨터입니다. 라우팅 소프트웨어를 위해 제작된 하드웨어도 있지만, 우리의 개인용 컴퓨터도 라우터로 똑같이 동작할 수 있습니다.
따라서 라우터와 라우터를 연결하는 것도 충분히 가능합니다.

하나의 라우터는 여러 컴퓨터들을 잇고 하나의 작은 네트워크를 만들어냅니다.
그러나 하나의 라우터가 연결할 수 있는 포트는 유한합니다. 그러니 라우터와 라우터를 이어서 두 개의 네트워크를 만든 것이 위 그림의 모습입니다.
그렇다면, 여러 라우터들을 이어줄 라우터들 두어 네트워크들의 네트워크를 만들 수도 있단 의미겠죠?

이렇게 네트워크들의 네트워크를 만들고 또 그들의 네트워크를 만들어나가면
무한히 많은 컴퓨터들을 전체 하나의 네트워크로 이어줄 수 있습니다.
아까 위에서 인터넷에 대한 설명을 기억하시나요?
다시 한 번 문구를 읽어보겠습니다.
It is a network of networks that consists of private, public, academic, business, and government networks of local to global scope, linked by a broad array of electronic, wireless, and optical networking technologies.
인터넷은 국소적인 크기부터 거대한 크기까지 개인, 공용, 학술, 사업, 국가의 다양한 목적의 네트워크들을 유무선, 광통신 기술을 통해 연결한 '네트워크들의 네트워크'이다.
Wikipedia
그렇습니다. 네트워크들의 네트워크. 이것을 전세계의 컴퓨터로 확장하면
그것을 특별히 인터넷이라고 부릅니다.
Internet is Everywhere
이렇게 인터넷이 무엇인지 알아보았습니다.
개별 컴퓨터들을 모아 네트워크를 만들고 그 네트워크들을 모아 더 큰 네트워크를 만들고..
이러한 과정을 반복해 전 세계의 컴퓨터를 연결한 거대한 네트워크가 인터넷입니다.
이제 세계 어디서나 어디로든 메세지를 주고받을 수 있을까요?
결과적으론 그렇습니다만, 사실은 훨씬 더 많은 디테일이 필요합니다.
다시 맨 처음 우체국의 예시로 돌아가보도록 하겠습니다.
철수는 영희의 물리적 위치를 식별하지 않고 논리적으로 대응된 주소를 목적지로 명시합니다.
또한 편지를 보내기 위해 직접 영희에게 찾아가거나, 길을 따라가지도 않습니다.
대신 근처에 있는 우체국에 주소를 적어 편지를 접수할 뿐입니다.
철수는 우체국이 어떻게 편지를 영희에게 전달해주는지 전혀 모르는데도 영희에게 편지가 도착하리라 확신할 수 있습니다.
어떻게 이게 가능한걸까요?
그것은 우리 사회에 이것이 시스템으로서 약속되어있기 때문입니다.
앞서 말했듯 인터넷은 수많은 네트워크들을 연결한 거대한 네트워크입니다.
심지어 그 아래의 네트워크들은 서로 물리적 환경도 달라집니다.
따라서 무작정 네트워크를 연결했다고 해서 통신이 가능한 것은 아닙니다.
인터넷도 통신을 위해 약속이 존재합니다.
서로를 식별하기 위해 주소를 할당하고 적절한 양식에 맞추어 메세지를
보내면 주소에 대응된 상대방에게 메세지가 도착한다는 것이 보장되어야 합니다.
이러한 약속을 이제 프로토콜(Protocol)이라 부를 겁니다.
프로토콜은 통신에 있어 서로 준수해야할 사항에 대한 '명세'입니다.
인터넷이란 개념을 실현하는 것에 있어 가장 큰 어려움은 사실 이 프로토콜에 대한 설계였습니다.
다음 포스팅부턴 이러한 프로토콜을 어떻게 설계하고 인터넷의 다양한 요구사항들을 충족하는지 알아보도록 하겠습니다.