null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
DNS — 이름을 IP로, IP를 이름으로
#network
#dns
#domain
#ip
#resolver
@devpc
|
2026-05-04 01:59:38
|
GET /api/v1/nodes/406?nv=1
History:
v1 (2026-05-04) (Latest)
0
Views
1
Calls
# DNS — 이름을 IP로, IP를 이름으로 ## DNS가 없으면 어떻게 될까 `www.naver.com` 대신 `223.130.200.107` 을 외워야 한다. 브라우저 주소창에 IP를 직접 입력해야 하고, 서비스 서버 IP가 바뀌는 순간 아무도 접속할 수 없게 된다. **DNS(Domain Name System)** 는 도메인 이름을 IP 주소로 변환(Forward DNS)하거나, 반대로 IP에서 도메인 이름을 조회(Reverse DNS)하는 분산 데이터베이스다. --- ## DNS 서버 설정이 필요한 이유 컴퓨터가 `naver.com`을 IP로 바꾸려면 **어딘가에 물어봐야 한다.** 그 어딘가가 DNS 서버다. 통신사(ISP)가 자동으로 DHCP를 통해 DNS 서버 주소를 넘겨준다. 수동으로 IP를 설정할 때 DNS 서버 주소를 직접 입력해야 하는 이유가 여기 있다. ### 주요 공개 DNS 서버 | 운영주체 | 기본 DNS | 보조 DNS | |---------|---------|---------| | KT | 168.126.63.1 | 168.126.63.2 | | SK브로드밴드 | 210.220.163.82 | 219.250.36.130 | | **Google** | **8.8.8.8** | **8.8.4.4** | | Cloudflare | 1.1.1.1 | 1.0.0.1 | --- ## DNS 조회 흐름 ``` 브라우저: "naver.com의 IP가 뭐야?" ↓ 1. 로컬 캐시 확인 (있으면 즉시 반환) ↓ 2. OS의 hosts 파일 확인 (C:\Windows\System32\drivers\etc\hosts) ↓ 3. 설정된 DNS 서버에 쿼리 (예: 8.8.8.8) ↓ 4. DNS 서버가 재귀적으로 조회 (Root → TLD → Authoritative) ↓ 5. 결과 반환 + 캐시 저장 (TTL 시간 동안 유지) ``` --- ## 사설(Private) DNS 기업 환경에서는 자체 DNS 서버를 운영하기도 한다. **이유:** - 사내 그룹웨어(`intranet.company.local`)가 공개 DNS에 등록될 필요가 없다 - 특정 도메인을 차단하거나 내부 서버로 리다이렉트할 수 있다 - 응답 속도 최적화 임베디드 환경에서는 OTA 서버, 라이선스 서버, NTP 서버를 IP 대신 도메인으로 설정할 때 DNS가 작동해야 한다. ```c // lwIP DNS 사용 예 ip_addr_t resolved; err_t err = dns_gethostbyname("ntp.example.com", &resolved, dns_callback, NULL); // 콜백 내에서 resolved.addr로 소켓 연결 ``` --- ## 임베디드 환경에서의 DNS 주의점 1. **DNS 서버 미설정 시 도메인 기반 연결 전부 실패** — IP 직접 사용 또는 DNS 설정 필수 2. **DNS 캐시 TTL** — 서버 IP가 바뀌어도 TTL 만료 전까지 구 IP로 연결을 시도한다 3. **DNS 없이 동작해야 하는 환경** — 오프라인 차량 네트워크(AUTOSAR)에서는 IP를 직접 하드코딩하거나 사내 DNS를 구성한다 --- ## 정리 DNS는 네트워크 스택의 응용 계층(L7)에 속하지만, 그 어떤 TCP/UDP 연결보다 먼저 선행된다. DNS 응답이 늦거나 실패하면 연결 자체가 시작되지 않는다. 네트워크 디버깅 시 핑(ping)이 IP로는 되는데 도메인으로는 안 된다면, 가장 먼저 DNS 설정을 확인해야 한다.
// COMMENTS
Newest First
ON THIS PAGE