DNS(Domain Name Server) 란?
DNS는 사람에 따라 Domain Name Server, Domain Name Service, Domain Name System 등으로 불립니다.
간단하게 쓰면 도메인 이름을 IP로 변경 해주는 서버 입니다. 실제로 컴퓨터가 통신 할때엔 IP를 사용하게 되는데, 사람이 쉽게 읽고 사용할 수 있는 도메인(ex. www.google.com)을 실제 그 도메인이 올라가 있는 웹 서버의 IP를 알아와서 해당 서버와 통신을 할 수 있게 해주는 서버 입니다.
도메인의 이해
아래 이미지 처럼 각각의 도메인 영역이 나누어져 있고 일반적으로 사람이 도메인을 입력할 때 google.com 까지만 입력 하지만 원래는 google.com. 처럼 가장 뒤에 .(root)가 숨어 있습니다.
www.google.com 에 대해 도메인을 나누면 아래 사진과 같이 나눌 수 있습니다.
DNS의 통신 흐름
cash 정보가 없다는 가정하에 아래 순서와 같이 통신이 진행 됩니다. 최상위 도메인부터 한단계씩 읽어가며 정보를 확인하게 됩니다.
- 1. 클라이언트가 DNS서버에게 www.google.com 재귀질의
- 2. DNS서버는 최상위 도메인(.)에게 www.google.com 반복 질의
- 3. 최상위 도메인(.) 서버는 .com의 IP와 함께 .com에게 질의 해보라고 답변 패킷 전송
- 4. DNS서버는 .com에게 www.google.com 반복 질의
- 5. .com 서버는 google.com의 IP와 함께 .google.com에게 질의 해보라고 답변 패킷 전송
- 6. DNS서버는 google.com에게 www.google.com 반복 질의
- 7. google.com 서버는 자신의 존파일 정보를 확인하여 www.google.com의 IP를 전송
- 8. DNS서버는 전달받은 www.google.com IP를 클라이언트에게 답변 패킷 전송
위 글에서 cache가 없다는 가정하에 진행을 했는데, 이렇게 정보를 전달 받을 경우 존파일에 설정된 일정 시간동안 알아낸 DNS 정보를 자신의 dns cache table에 저장하여 이후 같은 질의가 올 경우 이 테이블을 보고 바로 답변을 줍니다.
Client의 DNS 질의 우선 순위
클라이언트는 DNS를 질의하기 전 아래와 같이 특정 순서대로 확인하고 없을 경우 DNS 서버에게 질의하게 됩니다.
1. Window
- 1) DNS cache table 확인 (ipconfig /displaydns)
- 2) C:\windows\system32\drivers\etc\hosts.ics 파일 내용 확인
- 3) C:\windows\system32\drivers\etc\hosts 파일 내용 확인
- 4) DNS 서버에게 질의
2. Linux
- 1) nscd(Name Service Cache Daemon) 확인 (별도로 데몬이 설치되어 있어야 함)
- 2) /etc/hosts.conf 파일 내용 확인 (파일 내용에 따라 동작이 조금 바뀌지만, 자세한 내용 생략)
- 3) DNS 서버에게 질의