도메인 네임을 관리하는 서버
계층적이고 분산된 도메인 네임에 대한 관리 체계이자 이를 관리하는 프로토콜
. 으로 계층적으로 구분됨ex) www.google.com에서
- 루트 도메인: . (제일 끝에 생략되어 있음)
- TLD: com
- 2단계 도메인: example
- 3단계 도메인: www
- FQDN : www.google.com.
- host name: www
서브도메인: 다른 도메인이 포함된 도메인. google.com의 서브도메인으로 mail.google.com, www.google.com 등이 있음
플로우
www.google.com에 접속한다고 가정했을 때, 다음 순서로 네임 서버가 동작함
1. 로컬 네임 서버
2. 루트 네임 서버
3. TLD 네임 서버 (.com)
4. 책임 네임 서버 (google.com)
5. 최종 IP 주소 응답
사용자 PC
│
▼
Local DNS Resolver (ISP 또는 8.8.8.8 등)
│
▼
Root Name Server
│
▼
TLD Server (.com)
│
▼
Authoritative Name Server (google.com)
│
▼
→ IP 주소 반환 (ex: 142.250.206.68)
로컬 네임 서버(Local DNS Resolver)
8.8.8.8, 8.8.4.4, cloudflare: 1.1.1.1클라이언트가 로컬 네임 서버에 특정 도메인 네임에 대응하는 IP 주소를 질의했을 때,
루트 네임 서버(Root Name Server)
.com, .net, .org, .kr 등 TLD 네임 서버의 위치 정보를 알려줌.com 등 도메인을 관리하는 TLD 서버의 IP 주소를 반환함TLD Name Server(Top Level Domain Server)
.com, .net, .org, .kr 등 최상위 도메인(TLD)을 관리책임 네임 서버(Authoritative Name Server)
www.google.com에 대한 A 레코드(IPv4), AAAA 레코드(IPv6) 등을 포함| 계층 | 설명 | 예시 |
|---|---|---|
| Local DNS Resolver | 사용자 근처 DNS 서버, 캐시 우선 | 8.8.8.8 (Google DNS) |
| Root Name Server | 최상위 DNS 서버, TLD 서버 알려줌 | . (점 하나로 표시됨) |
| TLD Server | .com, .net 등 도메인별 서버 | .com, .kr |
| Authoritative Server | 실제 IP 정보 보유 | google.com 네임 서버 |
ex)
사용자가 로컬 DNS server에 www.google.com을 요청할 때:
특징
[사용자] ──> [로컬 DNS] ──> [루트] ──> [TLD] ──> [책임 DNS] ──> [로컬 DNS] ──> 사용자
↑ ↑ ↑
반복적 질의 ← 내부적으로는 반복적으로 조회
ex)
로컬 DNS server가 루트 DNS server에 www.google.com을 요청할 때:
.com 서버에 물어보라고 반환.com TLD server에 요청 -> google.com 서버에 물어보라고 반환특징
[로컬 DNS] ──> [루트] → .com DNS 알려줌
└─> [.com TLD] → google.com DNS 알려줌
└─> [google.com DNS] → 최종 IP 주소 알려줌
동작 방식
캐시 위치
동작 방식
| TTL 길게 설정 | TTL 짧게 설정 |
|---|---|
| 네트워크 부하 ↓ | 실시간 변경 반영 ↑ |
| 응답 속도 ↑ | 변경 즉시 적용 가능 |
| 변경 사항 반영 늦음 | 네트워크 부하 ↑ |
방어 방법
방어 방법
인터넷 자원을 식별하는 모든 방식을 총칭하는 상위 개념
두 가지 방식으로 나뉨.
구성요소
ex) https://www.example.com:443/search?q=test#section2
| 구성 요소 | 설명 |
|---|---|
https | 프로토콜 (스킴): 어떤 방식으로 접근할지 |
www.example.com | 호스트명: 도메인 이름 또는 IP 주소 |
:443 | 포트 번호 (생략 가능, 기본값 사용 시) |
/search | 경로(path): 서버 내 자원의 위치 |
?q=test | 쿼리(query string): 요청에 대한 추가 데이터 |
#section2 | 프래그먼트(fragment): 문서 내 특정 위치 식별 |
자원의 고유한 이름을 나타내며, 위치와는 무관하게 자원을 식별할 수 있게 해줌
ex) urn:isbn:9783161484100
이 URN은 특정 책의 ISBN을 식별함. 하지만 이 URN만으로는 어디서 이 책을 찾을 수 있는지는 알 수 없음 → 위치는 URL이 제공, 이름은 URN이 제공
| 구분 | URI | URL | URN |
|---|---|---|---|
| 목적 | 자원 식별 | 자원의 위치 지정 | 자원의 고유 이름 지정 |
| 포함 관계 | 상위 개념 | URI의 하위 | URI의 하위 |
| 예시 | https://www.example.com | https://www.example.com/index.html | urn:isbn:9783161484100 |
| 위치 정보 포함 | 경우에 따라 다름 | ✅ 있음 | ❌ 없음 |