질문을 들었을 때 막연하게 드는 생각은 컴퓨터와 컴퓨터 사이를 네트워크로 연결해서 각 컴퓨터에서 보낸 요청을 주고 받는다 정도로 설명하고 싶었지만 아마 훨씬 복잡하게 되어있을 것이다. 네트워크라는 의미를 정확히 파악하지 못하고 있다는 게 문제다.
만약에 네트워크 망이라는 게 없다면 이렇게 직접적으로 두 컴퓨터를 연결해서 인터넷처럼 사용할 수 있을 것이다. 아마도 두 컴퓨터는 직접 케이블로 연결되어있어야 할 것이다. 근데 만약 이런 컴퓨터가 수백대, 수천대 아니 수억대에 달한다고하면 어떻게 감당해야할까?
10대 정도만 직접 케이블로 연결해서 통신한다고하면 아마 이렇게 많은 케이블들이 필요해질 것이다. 1 대당 9개의 케이블이 필요하니 45개의 케이블이 필요해졌다. 이 문제를 해결하고 오늘날의 인터넷이라는 것을 구축하기 위해서 네트워크의 각 컴퓨터는 라우터
라고하는 특수한 소형 컴퓨터에 연결이 된다.
이 라우터가 하는 작업은 단 한가지, 한 컴퓨터에서 보낸 메시지가 올바른 대상 컴퓨터에 도착하는지 확인한다. 컴퓨터 A에서 컴퓨터 B로 메시지를 보내려면 컴퓨터 A가 메시지를 라우터로 보내고, 라우터는 메시지를 컴퓨터 B가 있는 방향으로 전달
한다. 싸이월드의 파도타기와 비슷하다고 생각하면 될 것 같다.
이 라우터라는 시스템이 추가되면 10대의 컴퓨터는 10개의 케이블만 있으면 된다. 각 컴퓨터와 하나의 라우터가 연결되면 라우터를 이용해서 분산해서 통신데이터를 보내줄 수 있게된다.
물론 10대까지만 감당하면 된다고 하면 저정도면 충분하다. 근데, 진짜로 10대가 아니라 수 억개의 컴퓨터를 연결한다고 하면? 단일 라우터로는 부족하다. 라우터 하나로 전체 케이블을 산다고하면 벌써 10억개니까.. 10억개의 케이블을 일일히 깔아주는 것도 일이다. 그러면 어떻게 해야할까?
라우터는 특수한 소형
컴퓨터
다.
이 문장을 두고 생각해보면 된다. 결국은 라우터도 컴퓨터기 때문에 서로 통신이 가능하다. 그럼, 라우터 간에 방향만 알려준다면 전달해줄 수 있지 않을까? 라우터간의 연결을 만들면 분할해서 라우터간의 통신을 만들어줄 수 있다.
라우터에 라우터를 연결하고 라우터에서 다시 라우터로 무한대로 확장시킬 수 있다.
이렇게 네트워크를 짜나가다보면 우리가 부르는 인터넷에 가까워지지만 뭔가 놓치고 있다. 하지만 이렇게한다고해도 거리가 멀어지면 역시 케이블을 연결하기가 어렵다. 수백미터 수천미터 수천킬로미터에 달하면 라우터가 많아져 인터넷 망을 구축하는 비용을 감당하기 어렵다. 그럼 어떻게 처리할 수 있을까?
나우누리? 랜선 꼽으면 엄마한테 등짝 맞는다..
과거에 모뎀을 사용해서 인터넷망을 만들었던 적이 있었다. 이미 전세계적으로 전화망은 구축이 되어있으니 이 망을 이용해서 인터넷 망을 구축하면 좋지 않을까? 그래서 모뎀이라는 장비를 통해서 네트워크 정보를 전화시설에서 처리할 수 있도록 바꿔 연결한다. 모뎀은 네트워크 정보를 전화망에서 처리할 수 있도록 해주는 장치다.
전화시설에 연결되었으니, 이제 네트워크에서 다른 네트워크로 메시지를 보내면 된다. 그렇게 하기 위해서는 인터넷 서비스 제공업체(Internet Service Provider, ISP)에 연결한다. ISP는 모두 함께 연결되는 특수한 라우터를 관리하고 다른 ISP의 라우터에도 접근할 수 있는 회사다. 따라서 우리 네트워크의 메시지는 ISP의 네트워크의 네트워크를 통해 우리가 원하는 대상지의 네트워크에 전달된다. 인터넷은 이렇게 전체 네트워크 인프라로 구성된다.
컴퓨터에 메시지를 보내려면 네트워크 망이 깔리는 것도 중요하지만, 대상지가 어디인지 명확히 알려줘야한다. 편지를 보내는데 주소를 안쓰거나 잘못쓰면 반송되듯이 주소를 알아야 한다. 그래서 네트워크에 연결된 모든 컴퓨터는 각자의 IP(Internet Protocol)이 있는데, 이건 개개의 컴퓨터가 누구인지 알려주는 고유한 주소값이다. 주소는 점으로 구분된 4개의 숫자로 구성되는데, 192.168.0.1
다음과 같은 모양을 하고 있다.
컴퓨터는 이러한 주솟값을 이용해서 다른 컴퓨터를 찾아간다. 하지만 사람은 저렇게 복잡한 숫자를 기억할 수 없다. 그래서 우리는 '도메인 이름'이라고하는 별칭을 만들어 지정한다. 네이버를 들어가려고하는데,
구글 주소는
173.194.121.32
야!
이렇게 말하는 사람이 어디있을까? 따라서, 우리는 알파벳을 이용해 비교적 외우기 쉬운 도메인 이름을 만들었다.
웹 브라우저를 사용하여 웹을 탐색할 때 일반적으로 도메인 이름을 사용한다. 그건 웹과 인터넷이 같은 말이라는걸까? 아니다. 인터넷은 수십억 대의 컴퓨터를 모두 한꺼번에 연결하는 일종의 인프라스트럭처다. 이러한 컴퓨터들 중에 일부는 '웹 서버'로서 웹 브라우저가 이해할 수 있는 서비스를 제공한다. 인터넷은 인프라며, 웹은 그 위에 구동되는 서비스다. 그리고 다시 웹 위에서는 웹 어플리케이션이 서비스되고 있다.
이전까지 막연하게 인터넷과 웹은 같은 것이라고 인식하고 있었고, 라우터도 개념정도만 이해하고 있었는데 이렇게 다시금 정리하면서 개념을 확실하게 파악할 수 있었던 것 같다. 로드맵대로 하나씩 공부해보는게 좋을 것 같다는 생각이 들었다. 하루에 못해도 두개 세개정도씩은 공부하는게 좋을 것 같다. 물론 기술면접 내용도 준비해야하지만, 웹이나 네트워크, 그리고 CS기초에 대해서는 주기적으로 공부해야겠다. 공부할 시간이 많긴한데, 머리에 들어가는 속도가 느리니 계속 답답하다. 좀 숨통좀 트이고 싶다.