목차
비녀장DNS의 유래
먼저, 각 연락처에 고유한 휴대폰 번호가 있는 휴대폰을 예로 들어 보겠습니다. 오늘 친구에게 전화해야 할 경우 전화번호를 입력하고 전화를 걸면 됩니다. 하지만 연락처가 많아질수록 전화번호를 모두 기억하는 것은 불가능하기 때문에 전화를 걸어야 할 때에는 해당 연락처만 찾아내면 된다. .전화를 걸 수 있습니다.
정보 필드에서 컴퓨터는 IP 주소를 연락처 번호로 사용합니다(예: 140.112.0.0). 그냥 IP 주소일 뿐입니다. 우리는 IP 주소를 사용하여 컴퓨터에 호스팅된 웹사이트에 액세스할 수 있습니다. 하지만 앞선 예처럼 숫자로 구성된 IP 주소가 너무 많아 사람이 식별하기 불편하기 때문에 도메인 이름을 갖게 됩니다. 예를 들어:google.com 구글 홈페이지이며 해당 IP는 142.250.191.78 입니다. 또한 IP 주소와 도메인 이름을 기록하려면 주소록과 유사한 장소가 필요합니다.
DNS란 무엇입니까?
DNS(도메인 이름 시스템)는 인터넷 이름 지정 서비스(도메인 이름 시스템)입니다. 이 DNS 시스템은 사람이 읽을 수 있는 도메인 이름을 다음과 같이 기계가 읽을 수 있는 IP 주소에 매핑합니다.google.com 해당 IP는 142.250.191.78입니다. 사용자가 브라우저에 도메인 이름을 입력하면 브라우저는 DNS를 통해 도메인 이름을 IP 주소로 변환해야 합니다. 필요한 IP 주소를 얻으면 사용자의 요청이 대상 서버로 전달됩니다.
알아야 할 DNS 용어
네임서버
실제로 DNS는 단일 서버가 아니라 다수의 서버로 구성된 블록입니다. 사용자의 쿼리에 응답하는 DNS 서버를 네임서버라고 합니다.
자원 기록
DNS 데이터베이스는 도메인 이름과 IP 주소의 매핑을 리소스 레코드 형식으로 저장합니다. RR은 사용자가 네임서버에 요청하는 최소 정보 단위로, 리소스 레코드의 종류도 다양하다. 독자에게 참조를 제공하기 위해 다음과 같은 다양한 리소스 레코드가 여기에 제공됩니다.
은닉처(캐싱)
DNS는 다양한 캐싱 계층을 사용하여 사용자 요청 대기 시간을 줄입니다. 캐싱은 글로벌 인터넷 전체의 쿼리를 만족시켜야 하기 때문에 DNS의 부담을 줄이는 데 중요한 역할을 합니다.
계층
DNS 이름 서버는 계층 구조로 구성됩니다. 계층적 구조 덕분에 DNS는 크기와 쿼리 로드가 계속 증가함에 따라 확장성이 뛰어납니다.
DNS는 어떻게 작동하나요?
AWS 다이어그램 및 설명
먼저 제공 AWS 다음에 몇 가지 고유명사와 함께 그림과 원문 설명을 설명하겠습니다.
- 사용자가 웹 브라우저를 열고 주소 표시줄에 입력합니다. www.example.com를 누른 다음 Enter 키를 누릅니다.
- 오른쪽 www.example.com 요청은 케이블 인터넷 공급자, DSL 광대역 공급자 또는 회사 네트워크와 같은 사용자의 ISP(인터넷 서비스 공급자)가 일반적으로 관리하는 DNS 확인자로 라우팅됩니다.
- ISP의 DNS 확인자는 www.example.com 요청은 DNS 루트 이름 서버로 전달됩니다.
- ISP의 DNS 확인자가 다시 전달합니다. www.example.com 이번에는 요청이 .com 도메인의 TLD 이름 서버 중 하나로 전달됩니다. .com 도메인의 이름 서버는 동일한 이름을 사용합니다. example.com 도메인과 연결된 4개의 Amazon Route 53 이름 서버의 이름이 요청에 응답합니다.
- ISP의 DNS 확인자는 Amazon Route 53 이름 서버를 선택하고 www.example.com 요청은 이 이름 서버로 전달됩니다.
- Amazon Route 53 이름 서버는 다음 위치에 있습니다. example.com 호스팅 지역에서 검색 www.example.com 기록하고 관련 값(예: 웹 서버의 IP 주소 192.0.2.44)을 얻은 다음 IP 주소를 DNS 확인자에 다시 전달합니다.
- ISP의 DNS 확인자는 최종적으로 사용자가 요구하는 IP 주소를 얻습니다. 파서는 이 값을 웹 브라우저에 다시 전달합니다. DNS 확인자는 또한 example.com IP 주소는 다음에 누군가가 볼 때를 위해 지정한 기간 동안 캐시(저장)됩니다. example.com 더욱 빠르게 대응할 수 있습니다. 자세한 내용은 TTL(Time to Live)을 참조하세요.
- 웹 브라우저는 DNS 해석기에서 얻은 IP 주소로 요청을 보냅니다. www.example.com 요구. 예를 들어 콘텐츠는 Amazon EC2 인스턴스에서 실행되는 웹 서버이거나 웹 사이트 엔드포인트로 구성된 Amazon S3 버킷일 수 있습니다.
- 192.0.2.44에 위치한 웹 서버 또는 기타 리소스는 www.example.com 웹 페이지는 웹 브라우저로 다시 전달되고 웹 브라우저는 페이지를 표시합니다.
DNS 계층 구조
앞서 설명한 것처럼 DNS는 요청을 수락하고 사용자 쿼리에 응답하는 단일 서버가 아니라 다양한 계층의 이름 서버를 갖춘 대규모 시스템으로 결합된 여러 서버로 구성됩니다.
DNS 계층 구조의 네 가지 유형의 서버
DNS 확인자(R이솔버)
파서는 쿼리 문자열을 쿼리 시퀀스로 변환하고 해당 요청을 다른 DNS 이름 서버로 전달하는 데 사용됩니다. 일반적으로 DNS 확인자 자체는 사용자 네트워크에 존재합니다.
루트 수준 이름 서버(루트 수준 이름 서버)
이 서버는 로컬 서버로부터 요청을 받습니다. 루트 네임서버는 최상위 도메인을 기반으로 네임서버를 유지하며,예를 들어.com, .edu, .us 등 예를 들어, 사용자가 요청할 때 교육.io , 루트 이름 서버는 .io 도메인의 IP 주소를 보유하는 TLD(최상위 도메인) 서버 목록을 반환합니다.
최상위 도메인 서버
이 서버는 권한 있는 이름 서버의 IP 주소를 저장합니다. 쿼리 당사자에게는 조직의 권한 있는 서버에 속하는 IP 주소 목록이 제공됩니다.
신뢰할 수 있는 이름 서버(신뢰할 수 있는 네임서버)
이는 웹 또는 애플리케이션 서버의 IP 주소를 제공하는 일부 대기업의 DNS 이름 서버입니다.
반복 및 재귀 쿼리
DNS 쿼리를 수행하는 방법에는 두 가지가 있습니다. CloudFlare의 단순화된 DNS 흐름 차트도 여기에 첨부되어 있습니다. 자세히 살펴보면 AWS 차트와 매우 유사하다는 것을 알 수 있습니다.
반복 쿼리
로컬 서버는 루트 서버, 최상위 도메인 이름 서버(TLD) 및 권한 있는 이름 서버(Authoritative Name Server)에 IP 주소를 요청합니다.
재귀 쿼리
최종 사용자는 로컬 서버를 요청합니다. 로컬 서버는 루트 수준 이름 서버를 추가로 요청합니다. 루트 수준 이름 서버는 요청을 다른 이름 서버로 전달합니다.
은닉처
캐시란 무엇입니까? 캐싱이란 자주 요청되는 데이터를 특정 장소에 저장해 필요할 때 빠르게 검색할 수 있도록 하는 것을 말합니다.
DNS에는 캐시도 있습니다! 캐싱은 사용자 응답 시간을 크게 줄이고 네트워크 트래픽을 줄일 수 있습니다. 다양한 계층에서 캐싱을 사용하면 DNS 인프라에 대한 대규모 쿼리 부담도 줄일 수 있습니다. 캐시는 브라우저, 운영 체제, 사용자 네트워크 내의 로컬 이름 서버 또는 ISP의 DNS 확인자에서도 볼 수 있습니다.
분산형 시스템을 위한 DNS
이전 기사에서는 분산 시스템의 개념을 소개하고 좋은 소프트웨어 시스템의 특징도 소개했습니다. 이제 추상화, 기능 및 요구 사항과 관련된 DNS 부분에 대해 이야기해 보겠습니다.
실제로 DNS 자체는 분산형 시스템이며 이러한 분산형 기능에는 다음과 같은 장점이 있습니다.
- 단일 실패 지점(SPOF)이 되는 것을 방지합니다.
- 사용자가 근처 서버로부터 응답을 받을 수 있도록 낮은 쿼리 대기 시간을 달성합니다.
- 유지 관리, 업데이트 또는 업그레이드 중에 더 높은 수준의 유연성을 달성합니다. 예를 들어, 한 DNS 서버가 실패하거나 과부하되면 다른 DNS 서버가 사용자 쿼리에 응답할 수 있습니다.
여기에서는 DNS가 확장성(Scalability), 신뢰성(Reliability) 및 일관성(Consistency)을 어떻게 향상시키는지도 설명합니다.
확장성
DNS는 확장성이 뛰어난 시스템입니다. ~에 따르면 클라우드플레어 기사에 따르면 현재 전 세계에는 13개의 루트 레벨 네임서버가 있으며, 이러한 루트 서버에서 복사된 추가 인스턴스가 사용자 쿼리를 처리하기 위해 전 세계에 배포됩니다. 이러한 요청은 쿼리를 처리하기 위해 TLD 및 루트 서버에 배포되고, 마지막으로 전체 시스템이 제대로 작동하도록 대기업 자체에서 관리하는 권한 있는 서버에 배포됩니다.
신뢰할 수 있음
은닉처
캐싱은 브라우저, 운영 체제 및 로컬 이름 서버에서 수행되며 ISP DNS 확인자는 자주 액세스하는 서비스의 풍부한 캐시도 유지 관리합니다. 일부 DNS 서버가 일시적으로 다운되더라도 캐시 기록을 제공할 수 있어 DNS를 안정적인 시스템으로 만들 수 있습니다.
서버 복제
DNS는 전 세계 각 복제 서버를 체계적으로 복제하여 사용자 요청 처리 지연 시간을 줄이고 전체 시스템의 안정성을 향상시킵니다.
일관성
DNS는 다양한 프로토콜을 사용하여 계층 구조의 복제된 서버 간에 정보를 업데이트하고 전송합니다. DNS는 높은 성능을 달성하기 위해 일관성을 타협합니다. 데이터를 쓰는 것보다 DNS 데이터베이스에서 읽는 빈도가 더 많기 때문입니다. 그러나 DNS는 최종 일관성을 제공하고 복제된 서버의 레코드 업데이트를 지연시킵니다.
앞서 언급한 캐싱 메커니즘으로 인해 일관성도 영향을 받습니다. 권한 있는 서버는 조직 내에 위치하므로 조직에 서버 오류가 발생할 경우 권한 있는 서버의 일부 리소스 레코드가 업데이트될 수 있습니다. 결과적으로 기본/로컬 및 ISP 서버의 캐시 레코드가 오래될 수 있습니다. 이 문제를 완화하기 위해 각 캐시 레코드에는 TTL(Time-To-Live)이라는 만료 시간이 있습니다.
추신
이 글은 이전 글과는 거리가 멀다 시스템 설계 구성 요소 빌딩 블록 소개 - 시스템 설계 05 시간이 좀 걸린 이유는 DNS의 원리를 이해하는 데 더 많은 시간을 투자했기 때문이고, DNS는 인터뷰에서나 일상 업무에서 꼭 알아야 할 필수 지식이라고 생각하기 때문에 많은 지면을 할애하여 설명했습니다. 깊이.DNS.
앞으로 더 큰 주제가 된다면 설명하는데 많은 시간을 할애하겠습니다. 읽어주셔서 감사합니다!