diff --git a/_posts/2024-02-05-DNS.md b/_posts/2024-02-05-DNS.md new file mode 100644 index 0000000..b435e79 --- /dev/null +++ b/_posts/2024-02-05-DNS.md @@ -0,0 +1,155 @@ +--- +layout: post +title: DNS 흐름 파악하기 +author: 이윤선 +categories: 기술세미나 +banner: + image: https://raw.githubusercontent.com/Kernel360/blog-image/main/2024/0205/5.png + background: "#000" + height: "100vh" + min_height: "38vh" + heading_style: "font-size: 4.25em; font-weight: bold; text-decoration: underline" +tags: [DNS, 기술세미나] +--- + +## 목차 + +1. 도메인과 호스트네임 +2. DNS란 +3. DNS 동작 과정 +4. DNS 레코드 타입 +5. 최종 정리 + +--- + +# 1. 도메인과 호스트네임 + +[www.naver.com](http://www.naver.com) 이라는 URL이 있을 때 도메인은 어느부분을 말하는 것일까요? + +www를 제외한 naver.com이 실제 도메인입니다. + +그럼 우리가 사용했었던 www는 무엇일까요? + +www는 호스트네임 입니다.  www 말고도 여러가지가 도메인 앞에 .과 함께 붙게되는데 + +예를들자면 + +### map.naver.com +![1](https://github.com/Kernel360/blog-image/blob/main/2024/0205/1.png?raw=true) + +### news.naver.com +![2](https://github.com/Kernel360/blog-image/blob/main/2024/0205/2.png?raw=true) +이라면 news, map은 호스트 네임 입니다. + +이제 실제로 DNS가 무엇이고 어떻게 동작하는지에 대해 네이버 웹사이트에 접속하는 것을 예로 들어보겠습니다. + + + +우리가 네이버 접속하러면 네이버가 제공하는 서버에 요청을 해서 데이터들을 받아올라면 네이버 서버의 IP 주소를 알아야 합니다. + +하지만 사용자가 각 서비스들의 서버 IP주소들을 다 외울 수는 없으니까 도메인을 통해서 해당 서버로 요청을 하게 되는데, + +그럼 네이버 서버의 IP가 naver.com이라는 도메인과 매핑되어 있는 정보는 어디에 있을까요? + +이러한 정보들이 저장되는 곳이 **DNS** 입니다. + +# 2. DNS란 + +# DNS(Domain Name System) + +- 도메인 이름과 IP 주소에 대한 정보를 관리하는 시스템 +- 각 서버의 IP주소를 의미있는 문자열인 도메인 추상화 +- 도메인만 IP주소를 몰라도 서버에 요청을 할 수 있음 + +DNS란 Domain Name System의 약자로 이름에서 알 수 있듯 도메인과 관련된 시스템입니다. + +DNS가 도메인 이름과 IP 주소에 대한 정보를 관리하고 있기 때문에 사용자들을 각 서버의 IP 주소를 몰라도 도메인을 브라우저에 입력해서 서버에 쉽게 접속할 수 있었던 것 입니다. + +# 3. DNS 동작과정 + +DNS는 다층적으로 구성된 네트워크에 분산되서 도메인 정보들이 저장되고 조회됩니다. +![4](https://github.com/Kernel360/blog-image/blob/main/2024/0205/4.png?raw=true) +DNS 서버는 네임서버라고 불리기도 하는데, 위 사진에서의 NS를, DNS 서버로 라고 생각하시면 됩니다. + +위 사진과 함께 DNS의 동작과정에 대해서 살펴보겠습니다. + +처음에 브라우저는 브라우저 캐시에서 요청한 도메인의 IP를 갖고 있는지 확인합니다. + +없다면 hosts 파일과 캐시에서도 IP를 확인하고 여기에도 없다면 로컬 DNS서버 캐시를 확인합니다. + +또 없다면 로컬 DNS는 Root DNS서버에다가 www.naver.com에 주소에 해당하는 IP를 어디서 찾을 수 있는지 물어봅니다.(루트 DNS 서버는 전 세계에 퍼져 있으며 한국에는 없지만 미러 서버가 이를 대신 합니다.) + +이 루트 DNS 서버는 응답으로 .com 으로 끝나는 도메인들을 담당하는 서버의 IP주소를 반환합니다. + +로컬 DNS 서버는 이 주소를 받고 최상위 도메인 서버로 찾아갑니다. + +최상위 도메인 서버는 naver.com 도메인 정보를 가진 DNS 서버 IP 주소를 반환하고 + +그 주소를 보고 마지막으로 sub domain 서버를 찾아가면 naver.com 여러 호스트네임별 IP주소가 있습니다. + +여기로부터 www.naver.com의 IP 주소를 얻어서 비로소 www.naver.com의 서버로 접속하게 되는겁니다. + +# 3. DNS 레코드 타입 + +- 도메인 이름에 어떤 타입의 값이 매핑되는지로 나뉨 +- A, CNAME, NS, SOA등.. + + + +DNS 레코드 타입을 통해 도메인 이름에 어떤 타입의 값으로 매핑될지 설정할 수 있으며 A, CNAME, SOA, NS 등이 있습니다. + +여기서 대표적인 A, CNAME, NS 레코드를 살펴보겠습니다. + +## DNS 레코드 타입 : A + +- A 타입은 도메인 IP주소를 매핑해준다는 의미 +- 해당 도메인으로 들어오면 IP주소로 이동 + +## DNS 레코드 타입 : CNAME + +- 도메인 이름에 대한 별칭을 매핑 +- A 타입을 이용해서 IP 주소를 명시하여 바로 이동할 수 있지만 CNAME을 사용하는 이유는 만약 서버 주소가 변경될 일이 있으면 별칭으로 매핑되어 있기 때문에 따로 값을 변경해주지 않아도 되기 때문입니다. 따라서 CNAME을 이용하면 변경에 유연한 구조로 가져갈 수 있다 라는 장점을 가집니다. + +## DNS 레코드 타입 : NS + +- 도메인 이름에 대한 권한이 있는 네임 서버를 매핑 +- 다른 네임 서버에 도메인 이름에 대한 권한을 위임 + +# 4. DNS 동작과정 최종정리 +![6](https://github.com/Kernel360/blog-image/blob/main/2024/0205/6.png?raw=true) +이제 마지막으로 DNS 동작과정을 정리해보겠습니다. + +브라우저에서 로컬 DNS 서버로 www.jdon.kr 요청을 보냅니다. + +로컬 DNS 서버에서 캐시를 확인하고 Root로 갑니다. + +그런데 Root에는 A 값이 없습니다. 아이피 주소가 없다는 것입니다. + +그래서 NS 값이 kr 네임 서버의 주소를 응답하게 됩니다. + +그러면 여기서 서비스의 네임서버의 주소를 응답해줍니다. + +네임 서버에 매핑된 cname으로 jdon.kr.이 매핑되어 있습니다. + +그래서 네임서버 내부에서 요청을 해가지고 이 jdon.kr에 대한 A 타입인 IP를 찾아서 최종적으로 클라이언트에게 주게 되는 것 입니다. + + + + + + + + + + + + + + + + + + + + +