⭐️ DNS
DNS(도메인 네임 시스템)
: 도메인 이름(www.example.com)을 IP 주소(192.0.2.1)로 변환해주는 시스템
- 사람이 이해하기 쉬운 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로 바꾸어, 사용자가 웹사이트에 쉽게 접근할 수 있게 도와준다.
DNS 작동 방식
- 사용자가 도메인 입력
- 사용자가 브라우저에 도메인 이름(ex. example.com)을 입력한다.
- 로컬 DNS 서버 조회
- 먼저, 사용자의 컴퓨터는 캐시에서 IP 주소를 찾고, 없다면 인터넷 서비스 제공업체(ISP)의 로컬 DNS 서버에 질의한다.
- 루트 네임 서버로 요청 전달
- 로컬 DNS 서버가 IP 주소를 모르면, 최상위의 루트 네임 서버에 요청을 전달한다.
→ 루트 네임 서버는 요청을 다음 단계로 안내한다.
- 로컬 DNS 서버가 IP 주소를 모르면, 최상위의 루트 네임 서버에 요청을 전달한다.
- TLD 네임 서버로 요청 전달
- 루트 네임 서버는 .com, .org와 같은 최상위 도메인(TLD) 네임 서버로 요청을 전달한다.
- 권한 있는 네임 서버로 요청 전달
- TLD 네임 서버는 도메인의 권한 있는(authoritative) 네임 서버로 요청을 보낸다.
→ 이 서버는 실제 IP 주소를 가지고 있다.
- TLD 네임 서버는 도메인의 권한 있는(authoritative) 네임 서버로 요청을 보낸다.
- IP 주소 반환
- 권한 있는 네임 서버가 IP 주소를 반환하면, 로컬 DNS 서버를 거쳐 사용자에게 전달된다.
- 접속 완료
- 사용자의 브라우저가 해당 IP 주소로 접속하여 웹페이지를 표시한다.
- Chrome 같은 브라우저에서 www.google.com을 입력한다.
- 브라우저는 먼저 가장 가까운 곳부터 찾아본다. 브라우저 자체 캐시도 확인해보고, 컴퓨터 OS에 있는 hosts 파일도 확인해보고, 로컬 DNS 서버 캐시도 확인해본다.
- 먼저 Root DNS 서버에 가서 '.com을 관리하는 서버가 어디있어?' 하고 물어본다.
- 그 다음 .com DNS 서버에 가서 'google.com을 관리하는 서버가 어디있어?' 하고 물어본다.
- 마지막으로 google.com 권한 서버에 가서 'www.google.com의 IP 주소가 뭐야?' 하고 물어보면 드디어IP 주소를 알 수 있다.
- 이렇게 찾은 IP 주소는 나중에 또 쓸 수 있게 로컬 DNS 서버에 저장해두고, 브라우저한테 알려준다.
DNS 질의 종류
DNS 질의는 재귀 질의, 반복 질의, 역방향 질의로 나뉜다.
재귀 질의
: 클라이언트가 재귀 DNS 서버에 요청하면, 서버는 최종 IP 주소를 찾을 때까지 다른 DNS 서버에 질의하여 결과를 사용자에게 반환한다.
반복 질의
: 클라이언트가 재귀 DNS 서버와 각 계층의 DNS 서버에 직접 질의하며 순차적으로 정보를 수집해 IP 주소를 찾는다.
역방향 질의
: IP 주소를 통해 도메인 이름을 찾는 방식으로, 주로 네트워크 진단 및 보안에 활용된다.
DNS 서버에게 IP 주소를 요청할 때, UDP를 사용하는 이유
DNS 요청은 주로 UDP(사용자 데이터그램 프로토콜)를 사용한다.
단, 응답이 크거나 보안이 중요한 상황에서는 TCP를 사용할 수 있다.
UDP를 사용하는 이유
- 속도
- UDP는 연결을 설정하지 않고도 데이터를 빠르게 전송할 수 있기 때문에 TCP보다 속도가 빠르다.
- 간단한 연결
- DNS 요청은 한 번에 끝나는 단순한 구조이기 때문에, 연결 설정이 필요 없는 UDP가 효율적이다.
- 낮은 오버헤드
- UDP는 TCP와 달리 연결 유지, 흐름 제어, 오류 검사 같은 추가 기능이 없기 때문에 오버헤드가 낮아, 네트워크 자원을 더 적게 사용하면서도 빠르게 응답할 수 있다.
DNS 레코드
DNS 레코드
: 도메인에 대한 다양한 정보를 포함한 항목으로, 도메인 이름과 관련된 IP 주소나 메일 서버 등을 정의한다.
- 네트워크 자원의 위치와 성격을 명확히 하여, 도메인 기반의 인터넷 서비스가 원활하게 작동할 수 있게 해준다.
주요 DNS 레코드
- A 레코드 : 도메인 이름을 IPv4 주소로 매핑한다.
- AAAA 레코드 : 도메인 이름을 IPv6 주소로 매핑한다.
- CNAME 레코드 : 도메인을 다른 도메인에 별칭으로 연결한다.
- MX 레코드 : 메일 서버를 지정하여 이메일을 전달할 주소를 정의한다.
- TXT 레코드 : 인증 정보, 설명 등 도메인에 대한 텍스트 정보를 제공한다.