작성자:수메드 님카르데
인터넷 작동 방식이나 컴퓨터 네트워크 작동 방식을 이해하고 있다면 도메인 이름 시스템(DNS)에 대해 들어보셨거나 알고 계실 것입니다. DNS에 대해 잘 모르신다면 여기에서 컴퓨터 네트워크에 초점을 맞춘 이전 블로그 게시물을 확인해 보시기 바랍니다.
호스트 이름만으로는 우리가 통신하려는 특정 기계/하드웨어가 전 세계 어디에 있는지 알 수 없습니다. 따라서 모든 통신은 IP 주소를 사용하여 이루어집니다.
도메인 이름 서버는 서비스가 실행되는 컴퓨터/하드웨어의 IP 주소에 호스트 이름을 매핑하는 장치입니다.
이번 포스팅에서는 DNS 쿼리의 종류, DNS 서버의 종류, DNS 레코드의 종류에 대해 자세히 설명하겠습니다.
DNS 리졸버
DNS 확인자는 사용자가 요청한 특정 호스트 이름에 대해 데이터베이스에서 조회를 수행하기 위해 ISP(인터넷 서비스 공급자)가 사용하는 컴퓨터입니다. 그런 다음 해당 사용자를 매핑된 IP 주소로 리디렉션합니다. 이는 DNS 확인에서 중요한 역할을 합니다.
DNS 확인자는 데이터도 캐시합니다. 예를 들어 내 웹사이트example.com 현재 IP 주소가 35.195.226.230인 시스템에서 호스팅됩니다. . 따라서 전 세계의 DNS 확인자의 캐시는 다음을 매핑했습니다:
example.com -> 35.195.226. 230
나중에 IP가 35.192.247.235인 전 세계 다른 서버에서 내 웹사이트를 호스팅하고 싶다면 생각해 보세요. . 전 세계 모든 DNS 확인자의 DNS 캐시는 한동안 이전 IP 주소를 유지합니다. 이로 인해 DNS 전파가 완전히 이루어질 때까지 웹사이트의 기존 수단을 통해 서비스를 이용할 수 없게 될 수 있습니다.
DNS 확인자 캐시의 레코드는 일정 시간 동안 유지되며, 이를 TTL(Time to Live)(줄여서 TTL)이라고 합니다.
DNS 확인자에 레코드가 캐시되는 시간입니다. 이는 도메인을 구입한 등록 기관의 대시보드에서 설정할 수 있습니다.
참고:이제부터 이 블로그 게시물에서는 DNS Resolver를 Resolver로만 지칭하겠습니다.
DNS 서버 유형
루트 DNS 서버
루트 DNS 서버는 모든 TLD 도메인 서버의 주소를 가지고 있는 서버입니다. 요청은 호스트 이름에서 IP 주소를 얻기 위해 이동하는 동안 먼저 루트 DNS 서버를 만나게 됩니다.
2016년 현재 전 세계적으로 13개의 루트 도메인 이름 서버가 있습니다. 이는 전 세계에서 들어오는 요청 로드를 처리하는 시스템이 13개뿐이라는 의미는 아닙니다. 로드를 처리하는 지상 수준에는 여러 대의 서버가 있습니다.
다양한 조직이 루트 DNS 서버를 관리합니다:
크레딧:https://iana.org
TLD 도메인 서버
최상위 도메인에 따라 분류된 도메인입니다. 일반적으로 루트 DNS 서버 이후 반복 쿼리가 적중하는 다음 항목입니다. 호스트 이름에 대한 TLD 특정 기록을 저장합니다.
medium.com의 IP 주소를 요청한다고 가정해 보겠습니다. , ".com" TLD에 대한 TLD 도메인 서버가 쿼리됩니다. TLD 도메인 서버는 권한 있는 DNS 서버의 주소를 확인자에게 반환합니다.
그림. 신뢰할 수 있는 네임서버를 가리키는 TLD 네임서버
이제 질문이 생깁니다. TLD 이름 서버는 신뢰할 수 있는 이름 서버의 주소를 어떻게 알 수 있습니까? 대답은 간단합니다. Godaddy 또는 Namecheap과 같은 등록 기관을 통해 도메인을 구매하면 등록 기관도 해당 도메인을 TLD 이름 서버와 통신합니다. 따라서 신뢰할 수 있는 이름 서버에 접속할 수 있습니다.
요즘 일부 등록기관에서는 제3자 신뢰할 수 있는 이름 서버를 사용할 수 있는 기능을 제공합니다. 위 그림에 표시된 것처럼 등록기관의 대시보드에서 신뢰할 수 있는 네임서버를 설정할 수 있습니다.
신뢰할 수 있는 DNS 서버
이는 결국 Resolver에 의해 반복적으로 쿼리됩니다. A, NS, CNAME, TXT 등의 실제 레코드를 저장합니다.
따라서 사용 가능한 경우 호스트 이름의 IP 주소를 반환합니다. Authoritative DNS 서버에서도 사용할 수 없는 경우 특정 메시지에 오류가 발생하고 네임서버를 통해 IP 주소를 검색하는 프로세스가 종료됩니다.
DNS 쿼리 유형
DNS 쿼리에는 세 가지 유형이 있습니다:
재귀적 :사용자가 Resolver에 대해 재귀 쿼리를 수행합니다. 이는 실제로 DNS 조회를 수행하는 동안 이루어진 첫 번째 쿼리입니다.
확인자는 ISP 또는 네트워크 관리자일 수 있지만 일반적으로 거의 모든 경우 ISP입니다.
비재귀적: 비재귀 쿼리의 경우 확인자는 답변을 알고 있으며 다른 이름 서버에 추가 쿼리를 하지 않고 즉시 응답합니다. 이는 로컬 DNS 서버의 IP 주소가 로컬 캐시에 저장되어 있거나 신뢰할 수 있는 이름 서버에 직접 쿼리하기 때문에 발생합니다. 그들은 확실히 기록을 보유하고 있으며 이는 결국 재귀적인 쿼리를 방지합니다.
반복 :반복 쿼리는 확인자가 결과를 캐시하지 않았기 때문에 결과를 반환할 수 없을 때 발생합니다. 그래서 루트 DNS 서버에 요청합니다. 그리고 루트 DNS 서버는 특정 TLD 도메인 서버를 찾을 수 있는 위치를 알고 있습니다.
예를 들어 medium.com에 대한 IP 주소를 얻으려고 한다면 , 루트 도메인 서버는 .com의 주소를 갖게 됩니다. TLD 서버는 여기에 저장되어 확인자에게 다시 전송됩니다. 그런 다음 확인자는 TLD 서버에 IP 주소를 요청합니다. TLD 도메인 서버는 이를 알지 못할 수도 있지만 medium.com에 대한 권한 있는 DNS 서버의 주소를 알고 있습니다. .
좋아요, 이론은 충분해요. 흐름도를 통해 이해해 봅시다:
그림. DNS 확인
위의 다이어그램을 단계별로 분석해 보겠습니다.
- 사용자는 IP 주소를 원하는 호스트 이름을 확인자에게 요청합니다. 재귀 쿼리입니다.
- Resolver는 캐시에 캐시가 있는지 조회합니다.
- 그렇다면 사용자에게 다시 반환합니다.
- 캐시되지 않은 경우 전역적으로 존재하는 루트 DNS 서버에 반복적으로 요청합니다. 2016년 현재 루트 DNS 서버는 A~M으로 13개가 있습니다. 이제 루트 DNS 서버는 요청된 도메인의 TLD를 조회합니다. 예를 들어 호스트 이름이
medium.com인 경우 , 그러면 TLD는 ".com"이 되고 루트 DNS 서버는 ".com" 도메인 서버에 대한 항목을 가지며 결과를 확인자에게 다시 반환합니다. 확인자에는 모든 루트 도메인 이름 서버의 주소가 있어야 합니다. 그렇지 않으면 우선 DNS 조회가 실패할 수 있습니다. - 이제 Resolver는 TLD 도메인 서버에 도메인의 IP 주소를 요청하는 반복적인 요청을 다시 보냅니다. 그런 다음 TLD 도메인 서버는 요청된 도메인에 대한 권한 있는 서버의 주소를 반환합니다.
- 현재로서는 권한 있는 DNS 서버가 무엇인지 이해하셨을 것이라 믿습니다. 여기에는 호스트 이름이 IP 주소에 매핑되어 IP 주소가 확인자에게 다시 반환되는 실제 레코드가 포함되어 있습니다(이는 다시 사용자에게 반환됩니다).
- 신뢰할 수 있는 이름 서버에서 일치하는 레코드가 발견되지 않으면 요청한 호스트 이름에 대한 레코드가 없음을 나타내는 "DNS_PROBE_FINISHED_NXDOMAIN" 메시지와 함께 오류가 발생합니다.
- 요청이 통과하는 모든 네임서버에서 요청된 호스트 이름에 대한 결과가 캐시되므로 다른 사용자가 동일한 도메인을 요청할 때 해당 레코드가 이미 DNS 캐시에 존재하게 됩니다.
- 대체로 DNS 조회를 수행하려면 최대 4개의 쿼리가 필요합니다. 하지만 조회를 수행하는 데는 몇 밀리초도 걸리지 않습니다.
DNS 전파의 개념
IP "x"를 사용하는 모든 컴퓨터에서 Digital Ocean과 같은 제공업체를 통해 웹 사이트를 호스팅하고 웹 사이트 호스팅을 다른 IP 주소(예:"y")를 사용하는 다른 컴퓨터로 전환하려고 한다고 생각해 보세요. 트래픽이 새 IP 주소로 이동하도록 신뢰할 수 있는 레코드의 IP 주소를 변경해야 합니다.
등록기관/네임서버 대시보드의 기록을 업데이트하더라도 전 세계 Resolver의 모든 캐시에 반영되는 데 시간이 걸립니다. DNS 전파는 24~72시간이 걸릴 수 있지만 대부분의 ISP가 TTL을 낮게 유지하기 때문에 일반적으로 이보다 빨리 이루어집니다.
그게 전부입니다!
기사를 읽어주셔서 감사합니다. 질문이 있으시면 아래 댓글로 질문하시고 이 게시물을 원하는 사람과 공유해 주세요.
다음 편에서 뵙겠습니다. 즐거운 시간 보내세요. 감사합니다.
이에 대해 자세히 설명하는 컴퓨터 네트워크에 대한 다른 기사를 확인하실 수 있습니다:
컴퓨터 네트워크란 무엇이며 이를 실제로 이해하는 방법
_개발 세계가 처음이시든, 오랫동안 무언가를 만들어 오셨든, 아니면..._medium.freecodecamp.org
내 작업이 마음에 드시면 다음에서 커피 한 잔 사주세요:
Sumedh Nimkarde 커피 구매 - BuyMeACoffee.com
_안녕하세요. 저는 Sumedh입니다. 제가 하는 일은 물건을 만들고, 부수고, 다시 만드는 것입니다._buymeacoffee.com
Twitter를 통해 언제든지 저에게 연락해주세요.
무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요