1. DNS ( Domain Name Server ) 란?
- 등장 배경
- 네트워크 안에서 host들을 식별하기 위한 목적으로 IP 주소를 사용한다.
- 사람의 경우 특정 웹 사이트에 접속 시 IP가 아닌 도메인 이름을 사용하는데, 도메인 이름을 사용하는 경우에도 최종적으로 IP 주소를 알아야 상대
장비와 연결이 가능하다. - 네트워크에서 도메인이나 호스트 이름을 IP 주소로 해석 해주는 TCP/IP Network Service인 DNS는 이를 위해 등장했다.
- DNS의 과거와 현재
- 초창기 호스트 수가 많지 않을 때는 local의 hosts.txt 파일을 이용했지만, 호스트 수의 폭발적 증가로 hosts 파일의 수정 및 업데이트가 힘들어졌다.
- 이를 해결하기 위해, 계층 구조를 가지는 분산 데이터베이스 구조의 DNS가 나오게 되었다.
2. DNS의 기본 원리
※ 실제 DNS의 동작 과정은 아래의 5. DNS 동작 과정을 참고하자.
- 사용자가 특정 웹사이트에 접속 하기 위해서는 아래 이미지와 같은 과정을 수행한다. ( 실제로 이렇게 단순하지는 않지만 개념 설명을 위해 단순화 )
- 사용자가 www.google.com을 입력 후 검색하면
- DNS 서버에 해당 도메인과 연결된 IP가 있는지 확인한 후에, 사용자에게 IP를 전달해주면,
- 그 값을 이용해 www.google.com으로 로 접속한다.
- 실제로는 너무 많은 도메인 개수로 인해서 DNS 서버 종류를 계층화 하여 단계적으로 처리한다.
3. DNS 구성 요소
- 도메인 네임 스페이스 ( Doamin Name Space )
- DNS가 저장, 관리하는 계층적 구조를 의미한다.
- 도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재하고, 그 하위로 인터넷에 연결된 모든 노드가 연속해서 이어진 계층 구조로 구성되어 있다.
- 네임 서버 ( Name Server )
- 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용할 수 있는 IP 주소로 변환시키기 위한 서버
- 변환을 위해 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요하기 때문에, 네임 서버는 이러한 정보를 가지고 있다.
- 리졸버 ( Resolver )로 부터 요청 받은 도메인 이름에 대한 IP 정보를 다시 리졸버로 전달해주는 역할을 수행한다.
- 리졸버 ( Resolver )
- DNS 클라이언트의 요청을 네임 서버로 전달하고, 네임 서버로부터 전달 받은 정보 ( 도메인에 대한 IP 주소 )를 클라이언트에게 제공하는 기능을 수행한다.
- 하나의 네임 서버에 DNS 요청을 전달하고, 해당 서버에 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받아온다.
- 자원의 한계로 리졸버의 모든 기능을 단말에 구현하는 것이 어려워 대부분의 기능은 DNS 서버에 구현하고, 클라이언트 호스트에는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현하는 옵션이 있다.
- 스터브 리졸버 ( Stub Resolver )
- 리졸버의 대부분의 기능을 DNS 서버에서 구현하고, 클라이언트 호스트에는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현
- 스터브 리졸버는 수 많은 네임 서버의 구조를 파악할 필요 없이 리졸버가 구현된 네임 서버의 IP 주소만 파악하면 된다.
- 스터브 리졸버는 설정된 네임 서버로 DNS 질의를 전달하고 네임 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달하는 인터페이스 기능을 수행한다.
4. DNS 서버 ( = Name Server ) 종류
- Root DNS Server
- ICANN이 직접 관리하는 최상위 서버로, TLD DNS 서버 IP들을 저장해두고 안내하는 역할을 한다.
- TLD DNS Server
- 도메인 등록 기관 ( Registry )이 관리하는 서버로, Authoritative DNS 서버 주소를 저장해두고 안내하는 역할을 한다.
- 도메인 판매 업체의 DNS 설정이 변경 되면, 도메인 등록 기관으로 전달되기 때문에 어떤 도메인이 어떤 판매업체를 통해 구매 되었는지 확인이 가능하다.
- Authoritative ( 혹은 Second-Level Domain [ SLD ] ) DNS Server
- 실제 도메인과 IP 주소의 관계가 기록되어 있는 서버
- 일반적으로 도메인 / 호스팅 업체의 네임서로를 의미하며, 개인 DNS Server 구축시에도 여기에 해당된다.
- Recursive DNS Server
- 인터넷 사용자가 가장 먼저 접근하는 DNS 서버로 관리 / 위임 받은 도메인 없이 모든 질의에 대해 응답하는 서버이다.
- ISP 업체에서 제공하는 DNS 서버로 Local DNS Cache에 존재하는 경우 정보를 제공해주고, 그렇지 않은 경우 Authoritative DNS Server에 질의한다.
5. DNS 동작 과정
- 가장 먼저, hosts file에 도메인과 IP가 매핑 되어 있는지 확인한다.
- 다음으로 자체 DNS cache table을 조회한다.
- 찾는 IP 정보가 없을 경우 Local DNS 서버에 도메인에 해당되는 IP 주소를 요청한다.
✓ Local DNS ? 가입한 통신사의 DNS 서버를 의미하며 컴퓨터의 LAN 선을 통해 인터넷이 연결 되면, 각 통신사 기지국의 DNS 서바가 등록된다.
- DNS Server 참조
- Local DNS Server -> Root DNS Server
- Local DNS Server에 IP 정보가 없는 경우, Root DNS Server에 "www.naver.com"의 IP 주소를 요청한다.
- Root DNS Server는 TLD DNS Server 주소만 관리하기 때문에, ".com" 최상위 도메인을 관리하는 TLD DNS Server의 주소를 안내해준다.
- Local DNS Server -> TLD DNS Server
- Local DNS Server는 ".com" 도메인을 관리하는 TLD Server에게 "www.naver.com"의 IP 주소를 요청한다.
- TLD DNS Server는 요청 도메인에 해당하는 IP가 없기 때문에, "naver.com"을 관리하는 SLD DNS Server의 주소를 안내해준다.
- Local DNS Server -> SLD DNS Server
- Local DNS Server는 SLD DNS Server에게 "www.naver.com"의 IP 주소를 요청한다.
- SLD DNS Server는 요청 도메인에 대한 IP를 가지고 있으므로 Local DNS 서버에게 해당 IP를 알려준다.
- Local DNS -> Root DNS -> TLD DNS -> SLD DNS 순서로 도메인에 대한 IP 주소를 찾는 과정을 Recursive Query 라고 한다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gaegurijump&logNo=110186376474
https://peemangit.tistory.com/52
🙋♂️ 궁금한 점이나 잘못된 내용을 댓글로 적어주시면 감사하겠습니다 !!
'Infra > Network' 카테고리의 다른 글
# [Network] LAN ( Local Area Network ) (0) | 2023.07.28 |
---|---|
# [Network] 이더넷 (Ethernet) (0) | 2023.07.19 |
# [Network] 허브 ( Hub ) (0) | 2023.06.27 |
# [Network] 스위치 ( Switch ) (0) | 2023.05.22 |
# [Network] 게이트웨이 (Gateway) (0) | 2023.03.28 |