ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Network] DNS의 동작원리를 정말 쉽게 알아가보자
    Network 2025. 2. 7. 04:02
    728x90
    반응형

    이번에 내가 작성할 내용은 DNS이다.

    사실 정말 얼른 리뷰하고싶었지만

    오늘까지 면접을보고 피곤해서 거의 쓰러졌다.

    하지만, 다음주 월요일에 또 면접이있기에

    얼른 게시글을 올리고 나는 다음으로 넘어가보려한다.

     

    DNS에대해 궁금하신 분(나포함) 정말 많았다고 생각했지만

    내가 생각하기에는 제대로 이해안가는 게시글들이 너무 많았다고 생각했다.

    그래서 내가 직접 이해한 바를 잘 표현해보면 좋겠다고 생각해서 이렇게 글을 끄적여본다.

     

    DNS(Domain Name System)

    이라고 불리우는것을 집중 탐구해보자!

    DNS(Domain Name System)

    '도메인 네임 시스템'의 사전적 정의를 적으라고하면 나는 그런 말들은 적지 않으려고한다. 어디든 다 나오는 내용이니까.

    나는 진짜 일반적인 사람들도 이해할 수 있도록 작성을하는게 목적이다.

     

    DNS는 왜 필요한가?를 보면

    혹시 WiFi나 핫스팟 등을 연결할 때 이런것들 본적이 있는가?

    내 맥북에있는 WiFi설정에서 가져와봤다.

    저 밑에 IP주소라고 보이지않는가?

    이 글에서 계속해서 IP주소를 말 할 예정이다.

    IP(Internet Protocol)이다. 말그대로 인터넷에 접속하기위해 필요한 번호라고 생각하면된다.

    그러면 우리가 사용하는 Google, Naver 등 다양한 인터넷 페이지들이있는데 어떻게 접속하는가?!

    라고 의문이든다면 완전 합격이고 아니어도 괜찮다.

     

    정답은

    우리가 가진 IP를 가지고 Google, Naver의 IP에 접속하는 것이다.

    알기쉽게 그림으로 보여주면

    이렇게 수많은 고객들이 매일 매순간 접속하게되는데

    고객을 보통 클라이언트(Client)라고 부르고 Google같은 서비스를 제공하는 곳을 서버(Server)라고한다.

     

    우리는 서버에 접속할 때, 서버의 IP에 접근한다고 요청을 보내고

    그 요청을 받는다면 우리는 접속하게 되는것이다.

     

    그러면 Google이라는 회사는 미국에있고 Naver는 한국에있는데 우리는 어떻게 Google의 인터넷에 접속할 수 있지?

    구글의 주소는 www.google.com으로 알고있는데 저게 IP주소는 아닐텐데 어떻게 접속 요청을 보내는거지? 

    여기서 나온 시스템이 "DNS(Domain Name System)"이다.

     

    DNS가 그 역할을 해준다. google의 주소를 우리가 입력하면 IP주소로 바꿔주는 시스템이다.

    아?! 그러면 우리는 모든 페이지에 편하게 그냥 이름만 입력하는데 접속되는건

    자동으로 변환해주는 시스템이있구나?! 라고 생각하면된다.

    반응형

    그러면 맨처음부터 DNS가 있었는가?

     

    아니다. DNS보다 이전에는 하나의 파일에 이름과 IP를 저장했었다.

    어떻게 그게 가능하냐고? 정말 옛날이기 때문이다. 한 가정에 컴퓨터 한 대가 있을까 말까한 그런 시절말이다.

    그렇기에 가능했지만 점차 과학기술의 발전에따라 인터넷을 이용하는 사람들의 수가 늘어나면서

    하나의 파일이 모든것을 담당하기에는 부족함을 느꼈다.

     

    그래서 나온 것이 "분산"이다!

    하나의 파일이 모든 정보를 담당하지않고 적당히 나눠서하자~

    그러면 어떻게 나눌래?에서 DNS의 구조들이 잘나왔고

    DNS의 주요 특징이 여기서 나온다.

     

    DNS의 주요 특징

    1. 계층화

    2. 위임

    동시에 설명하자면 하나의 파일이 모든 것을 담당하지못하니 계층구조로 만들어서 아래의 사람에게 IP주소를 줄 권한을 주는 것이다.

     

    이래도 이해가 안갈수가 있으니 내가 다시 그림을 그려서 가져왔다.

    두 회사가 있다고 생각해보자.

    A라는 CEO는 모든 사람들을 자기가 관리한다.

    B라는 CEO는 자기 아래에 팀을 형성해서 그 사람들이 관리하도록 권한을 위임한다.

     

    여러분은 어디가 더 좋다고 생각하는가?

     

    A의 상황

    사실 신뢰 측면에서는 A의 회사가 모든 사람들을 관리하니까 자기 자신만 공격을 당하지 않으면 괜찮다.

    하지만!? 만약에 공격을 당한다면? 피해는 전체가 다 입게된다.

     

    B의 상황

    그렇다면 B라면 어떨까? B는 신뢰가 구축된 친구들에게 팀장의 권한을 주는것이다.

    이렇게되면 팀장의 사람은 공격을 받는다면 본인의 팀만 피해를 받게된다.

    만약에 팀장과 B와의 신뢰관계만 잘 구축된다면 정말 괜찮지않은가?

    실제로 우리가 생각하는 회사, 군대 모든 곳들이 직책에따른 계층사회이다.

    728x90

    이제 조금은 이해가 갔을까?

    DNS는 그러면 어떻게 계층구조가 되어있을까?

    우리가 흔히보는

    google.com, naver.com을 생각해보자

    계층구조는 나뭇가지처럼 이루어져있으므로 가장 공통되는 부분이 가장 위에 갈것이다!

    그렇게 공통적으로 com이 나온다.

    그렇다!!!! 뒤에있는게 제일 위쪽이다.

    하지만 com 뒤에 숨겨져있는게 있는데 그게 "."이다. (보통 생략된다고한다.)

    우리가 볼 때 .kr .com 이런 것들 뒤에 . 이 숨겨져있다.

    ---------- . -----------
    --------/     \---------
    ----com        kr-------
    ---/   \        \-------
    naver  google   ac------

    요론 느낌이다. 다 적기위해 "."을 위로 올렸다.

    용어는 간단하게만 말하면 위에서부터 루트존, TLD존, 세컨드, 서드 존이라고 생각하면된다.

     

    Root zone - "."

    TLD(Top Level Domain) zone - com, kr, net

    2LD - naver, google, daum ... 

    3LD ........

     

    이제 조금 이해가 가는가....?

    설명하다보니 조금은 어렵기도하다.

     

    뭐 이렇게 이해가갔다면

    어떻게 IP를 받냐고?

     

    google.com을 예로 들어보자

    1. 클라이언트가 Root존에게 물어본다 -> Root는 TLD존(com) IP를 알려준다.

    2. 클라이언트가 TLD존(com)에게 물어본다 -> TLD는 2LD존(google) IP를 알려준다.

    3. 클라이언트가 2LD존(google.com)에게 물어본다 -> IP를 획득한다.

     

    찾았다!!

    이런 방식으로 구성된다.

     

    만약 이해가 안가면 길 물어보는 예시로 설명을 해주겠다.

    1. 내가 A에게 병원가는법을 물어봤다. -> A는 조금 더 아는 B를 알려준다.

    2. 내가 B에게 병원가는법을 물어봤다. -> B는 조금 더 아는 C를 알려준다.

    3. 내가 C에게 병원가는법을 물어봤다. -> C는 어디로 가는지 알려준다.

     

    어떤가... 이러면 확실하게 이해가 가지않는가?!

    이런 방식으로 DNS의 동작원리가 계층구조로 동작한다는것을 한 번 보여주었다.

     

    이러한 IP 주소를 얻는 행위를 name resolution(이름풀이)라고 명명하는데

    이 자세한 동작원리 부분은 내가 다음 게시글에서 더욱 자세하게 한 번 나열해보려한다.

    728x90
    반응형
Designed by Tistory.