IP의 등장으로 개별 기기들이 서로를 식별할 수 있었습니다. 이를 통해 호스트와 호스트가 연결되어 컴퓨터는 단일한 기계 이상의 가치를 창출해 낼 수 있었죠. 그러나 255까지의 숫자로 구성된 ip 주소는 일반 유저들이 외우기에는 너무나 어려웠죠. 이를 해결하기 위해 등장한 것이 DNS입니다.

DNS (Domain Name Service)

DNS는 복잡한 ip의 숫자들을 인간의 언어로 바꿔줍니다. 숫자로 해석하는 컴퓨터는 ip 주소를 통해 구별하는 것이 문제가 없지만, ‘수’보다 ‘언어’가 익숙한 인간에게는 구별이 어렵죠. 반면 DNS가 제공하는 언어적 구조의 주소는 인간의 해석에 큰 도움을 줍니다. 컴퓨터로서는 필요가 없는 기술일 수 있습니다. 그러나 그를 이용하는 인간의 편의를 위해선 굉장히 중요한 기술의 등장이었죠. 도메인을 ip와 연결하기 위해서는 먼저 도메인 서버에 ip주소를 등록해야 합니다. 도메인 서버는 하나만 있는 것이 아닙니다. 과거에는 스탠퍼드에서 관리하는 하나의 서버만 있었습니다. 그러나 시스템이 발전하고 복잡해지면서 서버의 규모와 주변 시설들의 크기도 커졌습니다. 지금은 통신사 등 기업들이 관리하는 서버부터 구글 등에서 무료로 제공하는 Public Domain Server까지 다양하게 존재합니다. 특히 최근들어 기업이 고객의 데이터를 상업적으로 관리한다는 우려로 인해 퍼블릭 서버에 대한 관심이 커지고 있습니다.

/hosts

우리는 각 PC마다 호스트 파일을 가지고 있습니다. 운영체제마다 저장 위치는 다르지만 모두 가지고 있죠. 이 파일에 들어가면 각 도메인이 어떤 ip에 연결시킬지 설정이 가능합니다. 앞서 설명한 도메인 서버 연결도 이곳에서 가능합니다. 이 파일은 굉장히 중요하고 때문에 보안 문제를 일으키는 주요 대상입니다. 만약 해커가 hosts 파일을 조작하면 우리는 해커의 의도대로 원치 않는 ip에 연결될 수 있습니다. 그만큼 철저한 관리가 필요한 파일이죠.

DNS의 작동 과정

과거 스탠퍼드에서 모든 DNS를 관리하던 시절에는 작동 과정이 단순했습니다. 등록 요청을 하면 스탠퍼드 측에서 등록해주고, 유저는 스탠퍼드가 제공하는 hosts 파일을 다운받아 사용했죠. 그러나 시간이 지나면서 도메인에 대한 요구는 기하급수적으로 증가합니다. 이에 따라서 도메인을 등록하고 제공하는 프로세스는 세분화됩니다. 이제는 도메인의 각 부분마다 담당하는 name server를 두는 방식으로 구성됩니다. 쉽게 말해서 모든 도메인을 관리하는 루트 서버가 존재합니다. 그리고 그 바로 아래, .com, .co.kr, .io 등을 관리하는 Top-Level 도메인 서버가 존재하고, 그 하위에 second, sub 등등의 서버가 도메인을 정확한 IP로 찾아가는 과정을 돕고 있습니다.

이렇게 복잡한 구조로 되어있다 보니 DNS를 깊게 들어가면 굉장히 어렵습니다. 각 DNS가 등록되고 읽어오는 과정에서 다양한 서버가 소통하기 때문에 그 모든것을 한 번에 이해하기는 쉽지 않습니다. 오늘을 일단 DNS가 IP를 대신해 인간이 활용하기 편리하도록 주소를 변환해 주는 개념이고, 이를 위해 다양한 주체들이 서버를 구성해 열심히 관리하고 있다는 점만 알아둬도 좋겠습니다.

Tags:

Categories:

Updated: