공부/JUN STUDY

인터넷에 연결되는 과정(2) - DNS(Domain Name Service)에 대해

JUNFUTURE 2020. 5. 30. 19:33

안녕하세요, 우리가 크롬이나 인터넷 익스플로어 같은 브라우저를 클릭해서, 구글이나 네이버 같은 웹 페이지를 눈으로 직접 확인할때까지 기술적으로 어떤일들이 일어날까요?

본 포스터는 '인터넷에 연결되는 과정' 시리즈 포스팅의 두번째 글로 본격적인 내용에 들어가기에 앞서 관련개념인 'DNS(Domain Name Service)' 에 대해 알아보도록 하겠습니다.


※ 첫번째 포스팅을 보고 싶으신 분들은 다음 링크를 이용해 주세요!!

인터넷에 연결되는 과정(1) - IP에 대해

 

첫번째 글에서 언급했듯이,

앞으로 이어질 내용에서

굵은글자 효과를 가지고 있는 문장들은 전문적인 글에서 정의한 문장을 가져온 것이고
'풀어서 이해해보기 : ' 부분은 해당 문장의 의미를 저와 함께 천천히 이해해보는 것임을 알려드립니다! 

 

그럼 설명 시작해보도록 하겠습니다. :)

 

 

DNS(Domain Name Service)

우선 DNS에 대한 사전적인 정의부터 살펴봅시다!

 

DNS는 Domain Name Service/System의 약자로, 사용자가 원하는 사이트로 연결을 요청하면

도메인명을 해당사이트의 IP 주소로 변환해주는 서비스를 말한다.

최재원. 201911DNS 스푸핑을 이용한 포털 해킹과 파밍의 위험성. 한국정보통신학회논문지 제23권 제11호

 

풀어서 이해해보기 : 자, 한번 같이 이해해봅시다. 음 우선 키워드를 정리해보면 'Domain name(도메인명)', 'IP주소' 정도 인 것 같네요. 'IP주소'는 이전 포스팅에서 같이 정리하였듯이, 인터넷으로 연결된 두 장치간의 데이터 전송경로를 정해주고 통신을 주고 받기 위해 반드시 필요한 장치별 고유 주소라고 쉽게 이해할 수 있을 것 같아요. 그렇다면 'Domain name' 이란 것은 과연 무엇일까요? 또한 본 문장에서는 사용자가 원하는 사이트로 '연결을 요청하면' 도메인명을 해당 사이트의 IP주소로 변환해준다고 하였는데.. 정말 헷갈리죠. 사용자가 원하는 사이트라고 이야기 했으니까 사용자는 어떤 사이트를 원하고 있는 것 같고.. 대충 그래서 DNS라는 곳에 연결을 요청한다는 의미인것 같은데 도대체 '연결을 요청한다'는 것이 무슨 의미이고 사용자는 왜 굳이 DNS로 이런 요청을 하는 것인지.. 감이 잘 안오죠. 그럼 여기서 앞으로 알아가면 좋을 3가지 의문점에 대해 조금만 정리해봅시다.

 

  1. Domain name 이란 무엇인가?
  2. '사용자가 DNS에 연결을 요청한다' 는 문장의 의미 (구체적으로 연결을 요청한다는 것은 무슨의미인가?)
  3. 사용자는 왜 굳이 DNS로 어떠한 요청을 하는 것인지?

자, 그러면 순서대로 의문을 하나씩 풀어나아가보도록 하겠습니다.

 

1. Domain name

인터넷상에서 특정 웹페이지에 접근하려면 반드시 필요한 주소가 있었죠. 바로 해당 페이지의 IP주소입니다. 인터넷 상에 연결된 모든 장치들의 위치를 나타내주는 고유한 IP주소를 이용해 데이터의 전송경로를 하나로 정하고 정상적인 통신을 가능하게 해주기 때문이죠! 하지만 인간이 모든 IP주소를 외우고 여러 페이지들에 접속할때마다 ip주소를 사용하는 것은 불가능에 가깝습니다. 이에 인간이 특정 페이지에 자유롭게 접속하기 위해서는 알기 쉽게 나타낸 새로운 형태의 주소가 필요했고 그 주소가 바로 Domain name(도메인 명)인 것 입니다! 전문가들이 제시한 정의도 간단히 살펴볼까요??

 

도메인은 인터넷에서 IP(인터넷 프로토콜) 주소를 사람이 기억하기 쉽도록 하기 위하여 만들어진 것 이다.

인터넷주소자원에 관한 법률 제2조

풀어서 이해해보기 : 드디어 문장만 보고 쉽게 이해할 수 있을 법한 내용의 정의가 등장한 것 같네요. 개인적으로 도메인 명이 무엇인지 알기 위해서 가장 중요한 것은 '도메인 네임이 필요한 이유' 를 이해하는 것이라고 생각합니다. 이 정의는 그러한 부분이 아주 정확하게 표현되어 있어서 굉장히 제 마음에 드는 정의인 것 같습니다. 도메인 네임은 정의 그대로 IP주소를 사용자가 사용하기 쉽게 만든 주소입니다. 이 정도로 기억하더라도 전혀 손색없이 좋은 이해입니다.

이 문장에서 의문이 들 법한 부분을 조금만 살펴보자면, 도메인은 어떤 형식으로 표현되고 어떻게 부여하는지에 대한 내용일 것 같습니다. 그럼 이어지는 내용을 통해 이해해보도록 합시다!

 

Domain name은 어떤 형식으로 표현될까요? 아무리 생각해 보아도 이를 이해하기 위해서는 예시를 이용하는 방법이 가장 효율적일 것 같으니 직접 대표적인 Domain name을 살펴보도록 합시다.

 

대표적인 Domain name(도메인 명)

www.naver.com / www.google.com  / www.tistory.com  / www.juntheworld.tistory.com  / www.youtube.com

다음과 같은 형식의 주소들이 바로 Domain name(도메인 명)입니다. 굉장히 익숙하죠. 도메인 명이 여러분들에게 익숙한 것은 당연합니다. 태생이 인간들이 인터넷을 사용할때 편하게 주소를 입력하기위한 목적으로 탄생한 주소이기 때문이죠. 이는 제가 Domain name의 형식을 이해하기 위해 별다른 설명없이 바로 예시를 이용하는 것이 효율적이라고 이야기한 이유이기도 합니다. Domain name의 형식과 부여하는 방법에 대해 조금 더 구체적으로 이야기 해보자면(절대 중요하지 않습니다.) 

www.google.co.kr

연결된 망(월드와이드웹). 기관이름. 기관의 성격(회사, 공공기관, 학교). 국가

 

반드시 이 형식을 따라야 하는 것은 아니지만, 주로 다음과 같은 형식으로 결정됩니다. 여기서 co는 기업을 나타내고 이외에도 공공기관은 go, 고등학교는 hs 등의 문자가 사용되고 한국은 kr, 일본은 jp등의 문자가 Domain name으로 사용됩니다. 우리가 특히나 자주보는 .com은 '영리 법인'이라는 뜻을 가지고 있다고 합니다. 한국은 이러한 일련의 과정을 고려해서 한국정보화진흥원(NIA)에서 도메인 이름을 결정합니다. 도메인 네임의 결정방법에 대한 자세한 내용이 궁금하다면  해당 기관에서 제공하는 정보들을 이용하는 것도 좋은 방법인 것 같습니다. 하지만! '인터넷에 연결되는 과정' 시리즈 포스팅에서는 Domain name의 형식이나 결정방법에 대해서는 전혀 이해하지 못하더라도 정말정말 괜찮습니다. 앞서 언급한 Domain name이라는 주소가 등장한 이유(이유 : 인간이 직접 외우고 사용하기 힘든 IP주소를 알기쉽게 나타내기위해)에 대해서만 확실히 이해하고 넘어가도록 합시다. 

 

2. '사용자가 DNS에 연결을 요청한다' 는 문장의 의미 - DNS(Domain Name Service)란?

우선 이 문장의 의미를 이해하기 위해서는 'DNS'가 무엇인지 알고있어야할 필요가 있을것 같네요. DNS는 Domain Name Service의 약자로 Domain name들과 그에 해당하는 IP주소들을 가지고 있는 서버를 의미합니다. 인간이 접속하고 싶은 사이트의 IP주소를 모두 기억하고 있는 것이 쉽지 않으므로, 대신해서 Domain Name에 해당하는 IP주소를 기억하고 있는 역할을 하는 서버인 것이죠. 감이 오시나요?? 아직 완벽히 이해되지 않으셨어도 전혀 문제 없습니다. 예시를 통해서 더 쉽게! 같이 살펴볼까요?

그림(1) - DNS(Domain Name Service)와 전화번호부 비유

DNS(Domain Name Service)를 전화번호부에 비유해서 이해하면 도움이 많이 되는 것 같아 이렇게 준비해보았습니다. 이 표는 실제 네이버와 구글, 티스토리의 Domain Name과 cmd창에서 ping명령어를 통해 검색해본 IP주소를 나타낸 것입니다. (cmd가 뭔지.. ping명령어가 뭔지.. 전혀 몰라도 괜찮습니다. 여기서는 그냥 도메인 네임과 그에 해당하는 IP를 알려주는 역할을 하는 친구라고만 생각해주세요) 우리도 복잡한 전화번호를 모두 외우지 않고 휴대폰의 전화번호부에 전화번호와 그 번호를 가지고 있는 이름을 우리가 알기 쉽게 적어둡니다. 그리고 전화를 할때 물론 해당 전화번호를 입력해서 직접 전화를 걸어도 되지만, 전화번호부의 이름을 검색해서 전화를 걸죠. 이와 매우 비슷한 원리를 가지고 있는 것이 바로 DNS입니다. IP주소라는 전화번호를 도메인이라는 우리가 알기쉽게 입력한 이름으로 저장해두고, 해당 도메인 명을 기억하고 입력해서 사이트에 접속하는 것이죠.(전화번호부 : 전화를 거는 것이죠.) 이해가 되셨나요? 

 

 

그림(2) - 인터넷 페이지에 접속하기 위해 DNS(Domain Name Service)에 IP를 요청하는 과정

그래서 우리가 인터넷 페이지에 접속할때는 다음과 같은 방식을 통해서 우리가 아는 Domain Name을 IP주소로 변환하는 과정이 필요합니다. 또 그러한 변환은 DNS(Domain Name Server)에 사용자가 요청하는 것을 통해서 실현할 수 있는 것입니다. 

 

추가적으로 DNS(Domain Name Service)는 누가 제공해주는 것일까요? 음 전화번호부와 DNS는 상당히 유사하다고 했으니 한번 전화번호부는 누가 제공해주는지 생각해볼까요? 전화번호부는 우리들이 직접 하나하나 작성합니다. 전화번호와 그 전화번호를 나타내는, 우리가 이해하기 쉬운 이름으로 저장하면서 말이죠. 그럼 DNS도 우리가 직접 작성하는 걸까요? 아닙니다. DNS는 우리가 사용하는 인터넷의 제공자가 직접 제작해서 우리에게 제공해주는 것입니다. 여기서 인터넷의 제공자란 우리에게 정말 익숙한 그 3개의 회사. KT, U+, SK 맞습니다. 대한민국에서 사는 분들의 대부분은 이 3개의 회사중 한 곳에서 인터넷 사용권을 구매해서 사용하고 있죠. 여기서 조금만 더 엄밀히 이야기 하자면 인터넷 제공 업체는 Domain Name Server를 직접 구축해서, 사용자에게 이 서버에서 원하는 IP주소를 자동으로 찾아 제공해주는 일련의 Domain Name Service를 제공해 주는 것입니다! (사실 DNS는 Domain Name Server와 Domain Name Service를 둘다 나타내는 용어이긴 합니다. 줄임말이기 때문에 나타나는 어쩔 수 없는 특징이죠.) 때문에 그림(1)의 전화번호부는 'JUNFUTURE의 전화번호부'라고 쓰여있고 DNS는 'JUNFUTURE가 사용할 DNS'라고 쓰여있었던 것입니다. 전화번호부는 사용자가 직접 제작하고 DNS는 미리 만들어져 있는 것을 사용자가 잠깐 사용하는 것이기 때문이죠. 혹여나 디테일을 눈치 채신 분이 계시다면 큰 칭찬을 해드리고 싶습니다.

 

여기서 작은 의문이 하나 생깁니다. 그렇다면 우리가 사용하는 전화번호부 처럼 사용자가 직접 Domain Name과 IP주소를 입력해두고 사용하면 안되는 것일까? 우선 질문에 대한 대답부터 이야기 해보자면, 됩니다. 만약 이런 의문이 드신 분이 계시다면 정말 훌륭합니다. 아주 좋은 질문이에요. 실제로 우리가 사용하는 컴퓨터에는 직접 IP주소와 그에 해당하는 Domain Name을 직접 입력할 수 있는 정말 전화번호부와 비슷한 공간이 있습니다. 컴퓨터 내부에 존재하는 hosts라는 이름의 파일 인데요. 윈도우 운영체제를 사용하시는 분들은 C:\Windows\System32\drivers\etc의 주소에 들어가면 hosts파일이 존재하는 것을 확인해보실 수 있습니다. 이렇듯 이 hosts파일에서 Domain Name과 IP를 사용자가 직접 설정하여 저장할 수 도 있습니다. 다만 인터넷에 존재하는 수없이 많은 사이트에 대한 Domain Name과 IP를 저장해두는 것을 사용자가 직접하기에는 한계가 있으니 DNS라는 서버로 따로 구축을 해두고 이것을 사용하는 것이죠. 그래서 hosts파일은 주로 DNS에는 등록이 안되어 있지만 사용자가 원하는 특별한 장치들에 쉽게 연결하고 싶을 때 사용하는 방법입니다. 나중에 이어지는 포스팅을 통해서 좀 더 자세한 내용을 다루도록 하겠습니다. 본 포스팅에서는 DNS의 역할에 대해서만 집중해 주신다면 정말 감사하겠습니다.

 

3. 사용자는 왜 굳이 DNS로 어떠한 요청을 하는 것인지?

그럼 마지막 의문에 대해서 살펴보도록 합시다. 지금까지의 포스팅을 거치면서도 충분히 이 의문에 대한 답이 언급된 것 같은데요, 다시한번 정리 한다는 생각으로 다루어 봅시다. 사용자는 왜 굳이 DNS로 본인이 기억하고 있는 Domain Name 에 대한 IP주소(의문에서 언급된 '어떠한'에 대한 구체적 의미)를 요청하는 것 일까요? 편리함 때문입니다. 단순하죠. 그 편리함이라는 것은 직접 사용자가 hosts파일을 이용해서 Domain Name과 IP주소를 전부 입력하지 않고 인터넷 제공자가 만들어준 목록들을 잠깐 사용해서 IP주소를 알아낼 수 있다는 편리함이죠. 또한 인터넷상에 수많은 IP주소들과 Domain Name을 저장하는 것은 한계가 있기 때문에 이러한 한계도 극복시켜준다는 점에서 DNS는 편리함을 제공해 준다고 할 수 있습니다. 

 

지금까지 DNS의 정의와 그 정의로 인해 발생하는 3가지 의문에 대해 살펴보며, Domain Name이란 무엇인지 DNS가 무엇인지, 어떻게 DNS를 사용하는지, DNS가 왜 필요한지에 대해 살펴보았습니다. Domain Name이란 IP주소를 사용자가 알기쉽게 기억하기 위한 또 다른 형식의 주소입니다. DNS는 이러한 Domain Name들을 기록하고 있는 서버이자 직접 해당 IP주소를 사용자에게 제공하는 서비스였습니다. 사용자는 접속을 원하는 페이지의 도메인 명(ex:www.google.co.kr) 을 기억하고, 접속이전에 이전에 인터넷 제공자가 미리 제작해둔 DNS(Domain Name Server)를 이용하여 해당 Domain Name의 IP주소를 제공받는 다는 것을 알게 되었습니다. hosts라는 파일을 이용해서 사용자가 직접 전화번호부처럼 도메인 명과 해당 IP주소를 저장해둘 수 있지만, 인터넷에 수많은 IP주소를 모두 저장할 수 없기에 DNS를 이용하면 편리한 인터넷 사용이 가능 하다는 것까지도 살펴보았습니다. 본 문단에 있는 모든 내용을 이해하지 못하셔도 정말 괜찮습니다. 다음에 이어질 문장하나만 기억해주세요. DNS란 IP를 쉽게 기억하고 사용하기 위한 Domain Name들을 모아 인터넷 제공자가 만든 서버이자 서비스이다. 이 한 문장만 알고있으면 앞으로 이어질 '인터넷에 연결되는 과정' 시리즈 포스팅을 이해하기 위해 필요한 관련개념으로서의 DNS를 이해하는데 전혀 지장이 없을 것입니다. 절대절대 걱정하지마시고 또 다음 포스팅에서 뵙겠습니다!

 

이상으로 포스팅을 마치겠습니다. 지금까지 따라오신 분들 너무 고생많으셨습니다! 감사합니다. :)

 

 

 

※ 본 포스터는 '인터넷에 연결되는 과정' 을 이해하기 위해서 필요한 'DNS(Domain Name Service)'에 대한 정보만을 다루고 있는 것으로, 'DNS(Domain Name Service)'의 좀 더 정확한 개념과 정보에 대해 총체적으로 이해하는 것에는 한계가 있습니다. 해당 개념을 완벽히 이해하기 위해서는 다음과 같은 추가 학습을 추천드립니다.

  1. 국가도메인과 일반도메인, 최상위도메인의 차이

  2. DNS를 이용하지 않고 IP주소를 알아내는방법 (hosts파일의 역할및 사용이유)

 

 

HACK THE WORLD / 20200529 / 인터넷에_연결되는_과정(1) - IP에 대해