Computer Science/Network

[Network] DNS

LeeJaeJun 2023. 12. 22. 23:33
728x90
반응형

- DNS(Domain Name System)

도메인 이름(예: naver.com.)을 IP 주소로 변환하거나 그 반대로 변환하는 분산 네이밍 시스템입니다.

우리가 어떤 웹사이트(서버)에 접속하기 위해서는 해당 서버의 IP주소를 알아야하는데(전화를 하려면 전화번호를 알아야 하는 것처럼) 우리가 사이트마다 이것을 다 외울 수 없으니 이것들의 모음집(전화번호부 역할)을  만들어 외우기 쉬운 주소(도메인)으로 접속하는 것입니다. 이러한 모음집들이 저장되는 곳이 바로 DNS입니다.

DNS는 다층적으로 구성된 네트워크에 분산되어 도메인 정보들이 저장되고 조회됩니다.

  • 분산 구조형 데이터베이스
    • 데이터베이스 시스템(DNS 네임서버)의 분산 구성
    • 데이터의 영역별 구분(Domain Zone) 및 분산관리
    • 도메인의 네임서버 및 도메인 데이터는 해당 관리주체에 의해 독립적으로 관리
  • 트리(tree) 구조의 도메인 네임(Domain Name) 체계
    • Domain: 영역, 영토를 의미
    • 도메인 네임의 자율적 생성
    • 생성된 도메인 네임은 언제나 유일(Unique)하도록 네임 체계 구성

 

www.naver.com에서  naver.com은 도메인 이름이고 www는 호스트 이름 입니다. 

naver.com 도메인에 속한 이름이 www인 host를 찾는다고 할 수 있습니다.

 

- DNS cache

DNS Cache (또는 DNS 캐시)는 이전에 방문한 웹 사이트의 도메인 이름과 해당 도메인 이름에 대한 IP 주소의 일시적인 저장소입니다. 운영체제나 웹 브라우저는 DNS 응답을 일정 기간 동안 캐시에 저장하여 다음에 동일한 도메인에 대한 요청이 있을 때 재검색을 피하고 네트워크 트래픽을 줄이는 데 도움을 줍니다. DNS 캐시는 일반적으로 로컬 기기에 저장되며, 시스템 재부팅 전까지 유효합니다.

 

- Host file

Host 파일은 운영체제에 저장되는 텍스트 파일로, 도메인 이름과 IP 주소의 매핑을 직접 정의하는 데 사용됩니다. Host 파일은 DNS를 우회하여 도메인 이름을 IP 주소로 매핑하는 데 사용됩니다. 일반적으로 호스트 파일은 운영체제의 시스템 디렉토리에 위치하며, 사용자가 직접 편집할 수 있습니다.

호스트 파일은 주로 개발 또는 테스트 목적으로 사용되며, 특정 도메인 이름을 특정 IP 주소로 연결하거나 도메인 이름을 차단하는 데 사용될 수 있습니다. 일반적으로 인터넷에 연결된 일반 사용자들은 호스트 파일을 편집하는 대신 DNS 서버를 사용하여 도메인 이름 해결을 수행합니다.

 

 

DNS 캐시와 호스트 파일은 도메인 이름과 IP 주소의 매핑을 관리하는 데 사용되지만, DNS 캐시는 네트워크 트래픽을 줄이고 응답 시간을 개선하는 데 주로 사용되는 반면, 호스트 파일은 로컬 시스템에서 특정 도메인 이름을 제어하기 위해 사용됩니다.

 

- DNS에 어떤 주소가 처음 질의되었을 때

  1. 로컬 DNS 캐시 확인: 사용자의 장치 또는 네트워크에는 로컬 DNS 캐시가 있을 수 있습니다. 이 캐시는 이전에 방문한 도메인 이름과 해당 도메인 이름에 대한 IP 주소의 임시 저장소입니다. 처음 질의된 주소가 로컬 DNS 캐시에 존재하는지 확인합니다. 로컬 DNS 서버는 일반적으로 통신사 것으로 세팅되어 있는데 임의로 수정할 수 있습니다.
  2. DNS 요청 전달: 만약 로컬 DNS 캐시에 해당 주소가 없는 경우, 사용자의 장치는 DNS 서버에 질의를 전달합니다.(이 도메인의 IP주소를 어디서 찾을 수 있는지 질의) 이는 일반적으로 ISP(ISP의 DNS 서버) 또는 사용자가 설정한 사용자 정의 DNS 서버로 전달됩니다.
  3. 룩업 시작: DNS 서버는 도메인 이름에 대한 IP 주소를 찾기 위해 계층적인 방식으로 룩업 과정을 시작합니다. 룩업은 도메인 이름의 계층 구조를 따라 위에서 아래로 진행됩니다. 
  4. 최상위 도메인(TLD) 서버 질의: DNS 서버는 도메인 이름의 최상위 도메인(TLD) 서버에 질의를 보냅니다. 예를 들어, ".com"이나 ".org"와 같은 TLD 서버입니다.
  5. 권한 있는 DNS 서버 질의: TLD 서버는 도메인의 권한 있는 DNS 서버로 질의를 전달합니다. 권한 있는 DNS 서버는 해당 도메인에 대한 IP 주소를 가지고 있거나 다른 권한 있는 DNS 서버에 대한 질의를 진행합니다.
  6. IP 주소 응답: 권한 있는 DNS 서버는 도메인 이름에 대한 IP 주소를 DNS 서버에 응답합니다. 응답은 DNS 서버를 거쳐 사용자의 장치로 전달됩니다.
  7. 로컬 DNS 캐시 업데이트: DNS 서버로부터 받은 IP 주소는 로컬 DNS 캐시에 저장되어 다음에 동일한 도메인 이름에 대한 요청이 있을 때 재검색을 피하고 빠른 응답을 제공합니다.

이러한 단계를 통해 DNS 서버는 처음 질의된 주소에 대한 IP 주소를 찾고, 이를 사용자의 장치로 전달하여 정확한 도메인 이름 해석을 가능하게 합니다.

 

- DNS 스푸핑(spoofing)

사용자 컴퓨터가 DNS에 IP 주소를 물어보는 것을 가로채서 가짜 사이트 IP 주소를 알려주어 그곳에 접속하도록 유도하는 해킹 방법입니다.(전화번호부를 조작해서 보이스피싱하는 번호로 걸게 만드는 것)

 

- 로컬 DNS 수정

정부에서 막아놓은 사이트에 접속하거나(국가검열받은 전화번호부 대신 외국 전화번호부를 사용하는 느낌) 특정 서비스를 빠르게 이용하기 위해서 로컬 DNS를 수정합니다.

ex) 로컬 DNS 서버를 구글에서 제공하는 8.8.8.8로 설정해놓음으면 유튜브, 구글 등 서비스를 더 빠르게 사용할 수 있습니다.(대신 다른 서비스들이 느려질 수 있습니다.)

 

- 도메인 구매

후이즈, 가비아 같은 국내 서비스나 GoDaddy와 같은 해외 서비스를 통해 도메인을 구매할 수 있습니다. 구매 사이트마다 기간별 가격이 다릅니다.

  • A Record: 도메인을 서버의 IP로 직접 연결하는 것입니다. IP로의 직통연결이라 접속이 빠릅니다.
  • CANME: 도메인을 별명과 연결하는 것입니다. IP가 유동적으로 변하는 서버의 경우 그 바뀌는 IP들에 일정하게 연결된 다른 도메인 즉, canonical name을 적는다는 것입니다. AWS나 Firebase 등을 사용할 때 사용합니다. IP가 유동적인 서버를 사용하는데 도움이 되지만 한 과정을 더 거치게 됩니다.
728x90
반응형

'Computer Science > Network' 카테고리의 다른 글

[Network] HTTP  (1) 2023.12.22
[Network] URI와 URL  (1) 2023.12.22
[Network] UDP header  (1) 2023.12.22
[Network] TCP header 형식  (1) 2023.12.22
[Network] TCP와 UDP  (1) 2023.12.22