02·개념·10분

도메인과 DNS

지난 레슨은 "이름이 주소로 변환된다"로 시작했습니다. 이번 레슨은 그 단계를 열어 봅니다. 도메인이 실제로 무엇이고, 이름 하나가 어떻게 앱 하나를 찾아가는지.

이름을 소유한다는 것은 임대다

각 끝자리(.com, .kr, .app)는 그 아래 이름의 원본 목록을 관리하는 레지스트리가 운영합니다. 레지스트리와 직접 거래할 일은 없습니다. 이름은 그 끝자리를 팔 수 있도록 인가된 **등록기관(레지스트라)**을 통해 1년 단위로 빌립니다. 결제를 멈추면 이름이 만료되고, 유예 기간이 지나면 레지스트리가 이름을 풀어 누구나 등록할 수 있게 됩니다.

네임서버: 누가 응답하나

이름을 등록할 때 그 이름에 대한 질문에 답할 네임서버도 정합니다. 네임서버에는 그 이름의 레코드가 있습니다. 네임서버를 운영하는 쪽이 이름이 어디를 가리킬지 결정합니다.

레코드

레코드는 한 줄입니다. 호스트, 타입, 값.

  • A: 이름을 IPv4 주소로. AAAA는 IPv6용입니다.
  • CNAME: 이름을 다른 이름으로("www.shop.com은 shop-app.host.net과 같다").
  • TXT: 자유 텍스트. 주로 어떤 서비스에 이름을 내가 관리한다고 증명할 때 씁니다.
  • MX: 그 이름으로 오는 이메일을 받을 서버.

끝자리 바로 앞의 이름(shop.com, 에이펙스)은 CNAME이 될 수 없습니다. 이미 다른 레코드를 갖고 있는데, 표준상 CNAME은 혼자 있어야 하기 때문입니다. 그래서 호스팅 업체는 보통 에이펙스에는 A 레코드를, www에는 CNAME을 요구합니다.

캐시와 TTL

리졸버는 모든 답을 그 TTL(유효 시간, 초 단위) 동안 캐시합니다. 레코드를 바꿔도 예전 답을 캐시한 리졸버는 TTL이 끝날 때까지 그 답을 계속 줍니다. 이것이 "전파"입니다. 무언가 퍼지는 것이 아니라, 네트워크마다 예전 답이 서로 다른 시각에 만료되는 것입니다.

이름이 내 것임을 증명하기

호스팅 업체가 그 이름으로 앱을 서비스하기 전에, 그리고 인증 기관이 그 이름의 https 인증서에 서명하기 전에, 둘 다 여러분이 이름을 관리한다는 증거를 원합니다. 보통의 증거는 레코드 자체입니다. 이름이 이미 그 호스트를 가리키거나, 호스트가 준 토큰을 TXT 레코드에 넣는 것. 이름이 올바른 곳을 가리키기 전에는 인증서를 발급할 수 없으므로, 자물쇠는 레코드보다 조금 늦게 나타납니다.

DontCode에서는

  • DontCode에서 구매: DontCode의 등록기관이 네임서버도 운영하므로 레코드가 대신 작성됩니다. 주문이 완료되고 약 1분이면 프로젝트에서 공개되고, 붙여 넣을 것은 없습니다.
  • 다른 곳에서 구매: 네임서버는 여전히 그 등록기관이 운영합니다. 도메인 관리가 거기에 추가할 레코드(에이펙스에는 A 레코드, 서브도메인에는 CNAME)를 보여 주고, 확인한 뒤 인증서를 발급합니다.

DontCode에서 산 이름은 계정 메뉴의 도메인 페이지에 모이고 크레딧으로 결제됩니다. 등록기관은 만료 약 30일 전에 갱신하므로 DontCode는 45일 전에 이메일을 보내고 35일 전에 결제합니다. 이름이 만료되면 DontCode가 프로젝트에서 연결을 해제하고, 앱은 무료 dontcode.cafe 주소에서 계속 작동합니다.

더 알아보기

이해도 확인

  1. 1.도메인이 어디를 가리킬지 결정하는 쪽은?

  2. 2.호스팅 업체는 왜 shop.com에는 A 레코드를, www.shop.com에는 CNAME을 요구할까요?

  3. 3.TTL이 3600인 레코드를 바꿨습니다. 일부 방문자는 아직 예전 서버로 갑니다. 왜일까요?

  4. 4.앱이 쓰던 도메인이 만료되면 왜 보안 위험일까요?