URL과 DNS
URL (Uniform Resource Locator)
- 정의: URL은 인터넷 자원의 주소를 나타내는 문자열로, 웹 페이지나 파일, 서비스 등의 위치를 정의한다.
- 구성: URL은 다음과 같은 구성 요소로 이루어진다:
- 프로토콜: 자원을 접근하는 방법을 정의한다 (예: http://, https://, ftp:// 등).
- 도메인 이름: 자원의 위치를 정의하는 주소이다. 예를 들어, www.example.com처럼 특정 웹사이트를 지칭한다.
- 포트 번호: 특정 포트를 사용할 경우 포함되며, 생략하면 기본 포트가 사용된다 (HTTP는 80, HTTPS는 443).
- 경로: 특정 리소스(파일, 페이지 등)에 대한 경로를 정의한다 (예: /about).
- 쿼리 문자열: 리소스에 파라미터를 전달하기 위한 문자열이다 (예: ?id=123&name=abc).
예시:
https://www.example.com:8080/path/to/resource?id=123
DNS (Domain Name System)
- 정의: DNS는 도메인 이름을 IP 주소로 변환하는 시스템이다. 사람이 이해하기 쉬운 도메인 이름을 컴퓨터가 이해할 수 있는 숫자(IP 주소)로 바꿔준다.
- 예를 들어, 웹 브라우저에서 www.example.com을 입력하면 DNS는 이를 해당하는 IP 주소(예: 192.0.2.1)로 변환하여 서버에 접속한다.
- 기능:
- 도메인 이름을 IP 주소로 변환: DNS는 도메인 이름을 IP 주소로 변환하여 사용자가 요청한 웹사이트에 접속할 수 있도록 한다.
- 재귀적 쿼리: 사용자가 요청한 도메인 이름에 대해 DNS 서버가 직접 또는 다른 DNS 서버를 거쳐 최종 IP 주소를 찾는 과정을 재귀적 쿼리라 한다. 이는 DNS가 여러 단계로 이루어져 있기 때문이다.
- DNS 캐싱: DNS는 자주 요청되는 도메인에 대해 IP 주소를 일정 시간 동안 캐싱하여, 성능을 향상시키고 불필요한 DNS 조회를 줄인다.
- DNS의 단계:
- 로컬 DNS 캐시 확인: 먼저 사용자의 컴퓨터나 로컬 DNS 서버가 해당 도메인의 IP 주소를 이미 알고 있다면 캐시에서 바로 반환한다.
- 루트 DNS 서버 조회: 로컬 DNS 서버가 정보를 알지 못하면, 루트 DNS 서버를 조회하여 최상위 도메인(TLD)에 대한 정보를 얻는다.
- TLD DNS 서버 조회: TLD 서버는 도메인 이름의 마지막 부분을 담당하는 DNS 서버이다. 예를 들어, .com, .org 등의 최상위 도메인에 해당하는 서버에서 정보가 제공된다.
- 권한 있는 DNS 서버 조회: 마지막으로, 도메인에 대한 최종 IP 주소는 권한 있는 DNS 서버에서 제공한다.
- 재귀적 쿼리: DNS 서버가 다른 DNS 서버를 재귀적으로 조회하여 최종적인 IP 주소를 반환하는 방식이다. 이 방식은 한 번의 요청에 대해 여러 서버를 거쳐 응답을 받는 구조이다.