본문 바로가기
Web

[Web] DNS가 뭘까? 도메인, A Record, CName

by DuncanKim 2022. 6. 24.
728x90

[Web] DNS가 뭘까? 도메인, A Record, CName

(Domain Name System)

 

www.naver.com

naver.com이 도메인이다. www는 호스트네임이라고 한다.

호스트 네임은 mail, blog 등 다양하게 있을 수 있다.

 

도메인은 IP 주소를 쉽게 활용하기 위해서 만들어진 네임 태그와 같은 것이다.

도메인과 IP 주소는 매칭되어서 숫자로 어딘가로 전송이 된다.

그렇다면, 특정 IP - 특정 도메인 쌍이 어딘가에 데이터로 저장이 되어야

브라우저에 도메인으로 쓸 때 IP로 변환이 되어서 서버에 연결될 것이 아닌가?

그 쌍은 어디에 저장되어 있는가?

 

 

바로 DNS에 저장되어 있다.

system이라는 말을 자세히 생각해보면, 어디 한 군데에 모두 저장되어 있는 것이 아니고 분산 저장되어 있다는 것을 생각해볼 수 있다. 다층적으로 분산된 구조에 도메인 정보들이 저장되고 조회된다.

 

도메인으로 IP 찾는 과정

 

1. Local 요청

 

내 컴퓨터 wifi나 LAN선으로 인터넷에 접속하면, Local DNS server에 접속하게 된다.

KT, SKT, LGT만 있는 것이 아니라, HCN, Dlive 등 지역 통신사도 있다. 아무튼 통신사의 DNS 서버에 접속하게 되며, 여기에서 처음으로 내가 접속하고자 하는 도메인과 일치하는 IP가 있는지 찾아본다.

if(IP in DNS server){
	IP 주소를 받는다.
}else{
	Root DNS 서버에 물어본다.
}

++DNS는 해커들의 공격 대상이 되기도 한다. Local 서버 사이에서 ip 요청하는 것을 가로채서 피싱서버를 알려주기도 한다.

 

2. Root DNS Server에 요청

 

루트 DNS 서버는 전세계 13군데에 있다. 한국에는 없지만 미러 서버가 이를 대신한다.

만약 이 최상위 서버에도 ip 정보가 존재하지 않으면, root 서버는 이제 재귀적으로 자신 아래에 있는 도메인들에게 차례차례 ip 주소를 가지고 있는지 물어보게 된다.

그렇게 해서 만약에 찾아진다면, ip 주소를 클라이언트에게 반환하고, 만약 찾는 도메인이 없다면, ‘서버를 찾을 수 없음’을 보게된다.

 

3. 주소 반환, 서버 접속

ip 주소를 반환받았다면, 서비스를 제공하고 있는 서버로 브라우저가 연결을 시켜주게 된다.

 

캐싱

 

매번 이러한 소통 구조를 가지고 있다면, 특정 ip를 불러오는데 많은 시간이 걸린다.

DNS 서버도 마찬가지로 매번 연산을 통해서 ip를 찾기만 하면 힘들 것이다.

그래서 이전에 찾은 ip - 도메인 값들을 저장해서 그 요청이 들어오면 바로바로 응답을 해준다.

이것이 캐싱이다.

 

 

호스팅 업체

내 홈페이지를 다른 사람이 볼 수 있게 하고 싶다면? 쉽게 접근할 수 있도록 하고 싶으면?

 

도메인을 구매한다. 도메인을 소유한다.

 

그 도메인을 등록해 놓은 네임서버를 호스팅 업체 것을 쓸 수도 있고, 다른 업체의 것을 쓸 수도 있다.

예를 들면, 가비아에서 도메인을 구매하고, www.wix.com에서 제작한 홈페이지를 연결하려고 할 때,네임서버를 wix의 것을 쓰는 것을 들 수 있다. 이때 wix 서버에는 ip - 도메인 주소 값이 함께 저장되어 있는 것이다.

 

도메인, 네임서버를 연결할 때, A record, CNAME 라는 레코드 타입을 선택하라고 할 때가 있다.

 

A record는 도메인을 서버의 IP와 직통연결을 하는 것이다. 그럴 경우 빠른 속도를 가질 수 있는 장점이 있다.

CNAME은 IP가 유동적으로 바뀌는 서버의 경우, canonical Name을 적는 것이다. AWS나 Firebase 같은 것, 더 친숙한 것으로는 github pages의 호스팅에 개인 도메인을 사용한다고 하면, CNAME 방식을 써야 한다.

728x90

댓글