DNS
IP 주소를 매번 기억하는 것은 어렵다. IP 주소를 문자로 변환하여 사람이 보기 좋은 형태로 만들기 위해 사용되는 서비스가 DNS이다.
IP 주소를 가리키는 문자를 도메인 네임이라고 한다.
도메인 네임은 단순히 보기 좋은 것 뿐만 아니라 서버의 IP 주소가 변경되어도 도메인 네임은 유지한 채 IP만 변경하여 지속적인 서비스가 가능하다는 장점이 있다.
지역을 기반으로 같은 도메인 네임에 다른 IP 주소를 매핑하여 가까운 서버에서 응답을 받을 수 있도록 할 수도 있다.
DNS 에서 도메인 네임을 IP 주소로 변환하는 과정을 name resolution 이라고 한다.
DNS 서버의 종류
Caching name servers
일반적으로 ISP, 로컬 네트워크 에서 많이 사용됨
도메인 네임을 IP 주소로 변환하는 것은 여러 작업을 거치는데, 매번 TCP 연결을 위해 이 작업을 수행하는 것은 비효율적이므로 변환한 도메인 네임과 IP 주소 매핑을 일정시간 저장하고 요청이 올 경우 바로 응답함
TTL 을 설정하여 캐시의 만료를 설정함. 옛날에는 네트워크 대역폭이 작아 최대한 DNS 요청을 줄이기 위해 TTL 을 하루 이상 설정했지만 요즘에는 그렇지 않음
Recursive name servers
대부분의 Caching name server는 Recursive name server 이기도 함
전체 DNS 확인 요청을 수행하는 서버
Root name servers
DNS 확인 요청을 위해 적절한 TLD 서버를 연결해주는 루트 서버
루트 이름 조회 서비스를 제공하는 13개의 기관이 있으며 Anycast 를 통해 지역 기반 라우팅으로 적절한 루트 네임 서버에 DNS 요청을 전송함
TLD name servers
TLD는 Top-level domain 의 약자이며, 도메인 네임의 최상위 계층 네임 서버를 나타냄
www.inforum24.com에서 마지막 .com 부분이 TLD를 나타냄
TLD 별로 TLD 네임 서버가 존재하며 TLD 네임 서버는 적절한 Authoritative name server로 리디렉션 응답을 보냄
Authoritative name servers
도메인 네임의 마지막 두 부분이 authority 를 나타내며 해당하는 authority 에 대해 실제 IP 주소를 제공함
이러한 다양한 DNS 서버의 역할을 하나의 서버에서 수행할 수도 있음
로컬 네트워크 서버에서 여러 디바이스가 동일한 도메인 네임에 접근할 경우 매번 DNS 요청을 보내지 않고 로컬 네임 서버에 도메인 네임과 IP 주소 매핑을 저장해두고 사용함
디바이스 내부에 로컬 DNS 캐시를 저장하여 로컬 네임 서버까지 거치지 않고 IP 주소를 알아내기도 함
DNS와 UDP
DNS 는 UDP 를 사용하여 동작함
DNS 요청 하나에 다양한 네임 서버에 요청을 보내야 하는데 매번 핸드셰이킹을 한다면 성능 차이가 심함
DNS 요청 하나만 처리하고 매번 연결을 닫는 과정도 수행해야 하므로 UDP 를 적용함
DNS 요청이 실패할 경우 단순히 다시 요청을 보내면 됨
DNS 요청이 하나의 UDP 패킷으로 전송할 수 없을 만큼 크면 TCP 연결을 맺고 패킷을 전송함
DNS 레코드 유형
A record
특정 도메인 이름이 특정 IPv4 주소를 가리킴
하나의 도메인 이름이 여러 A 레코드를 가질 수 있으며, DNS 라운드 로빈을 통해 여러 IP 간 트래픽 균형을 맞춤
여러 개의 A 레코드를 가진 도메인 이름으로 DNS 요청을 보내면 여러개의 IP 주소를 응답으로 받음. 요청자는 IP 주소의 순서대로 제일 첫번째 IP 주소로 요청을 보내며 실패할 경우 다른 IP 를 사용할 수 있음. 이후 다른 디바이스에서 해당 도메인 네임에 대해 DNS 요청을 보내면, 제일 첫번째 IP 주소를 마지막으로 응답하여 IP 주소간 트래픽 균형을 맞춤
Quad A record
A record 와 유사하지만 IPv6 주소를 반환하는 차이가 있음
CNAME(canonical name) record
한 도메인에서 다른 도메인으로 트래픽을 리디렉션하기 위해 사용됨
MX(mail exchange) record
이메일을 전달하기 위해 사용됨
자동으로 SMTP 25번 포트를 사용함
SRV record
MX 와 유사하게 동작하며 특정 서비스를 연결하기 위해 사용됨
우선순위, 포트 번호, 가중치 등 다양한 설정을 통해 세밀한 제어가 가능함
TXT record
도메인에 대한 텍스트 데이터를 저장해서 사용함
유연한 설정이 가능하여 보안 처리, 서비스 설정 등 다양한 방법으로 TXT record 가 사용되고 있음
SOA record
도메인 관리, 권한 정보를 식별하기 위한 정보를 설정하기 위해 사용됨
NS record
네임서버를 가리킬 때 사용됨
도메인 네임
도메인 네임의 마지막 부분을 TLD 라고 함. 최근 몇년 간 TLD 의 수가 급증하고 있음
TLD 는 ICANN 이라는 비영리 조직에서 관리함
오른쪽에서 두번째 부분은 도메인이라고 부름 www.inforum24.com 의 inforum24에 해당함
도메인은 TLD 네임 서버에서 authoritative 네임 서버로 이동할 때 사용됨
도메인을 제외한 부분을 서브 도메인이라고 부름
서브 도메인이 하나의 호스트에만 할당된 경우 호스트 네임이라고 부르기도 함
도메인을 할당받으려면 비용을 지불해야하지만, 서브 도메인은 자유롭게 할당할 수 있음