• 목록
  • 아래로
  • 위로
  • 3
  • abnoeh
  • 조회 수 3166

일단 보통 사용자가 사용할때는 자신이 접속한 DNS 서버에 주소를 물어보고 그 결과를 받아서 사용하지요.

예를 들면 studyforsu.com 의 ip주소를 알고 싶다고 하면 이렇게 될 겁니다. 

C:\>nslookup studyforus.com
서버:    google-public-dns-a.google.com
Address:  8.8.8.8

권한 없는 응답:
이름:    studyforus.com
Address:  222.113.212.162

그런데 여기서 "권한 없는 응답"은 무슨 뜻일까요?

일단 모든 DNS은 권한 있는 DNS(authoritative)와 cached DNS로 나누어 집니다. 

어떤 사이트의 Authoritative DNS는 여러분이 도메인에 레코드를 설정하신 그 DNS가 되실 거고(여기의 경우는 dnszi., cached DNS (여기서는 8.8.8.8)은 authoritiave DNS에서 응답을 받아서 그 응답을 cached 한 뒤에 요청자에게 보내주는 역활을 하게 되죠.

결국 '권한 없는 응답'의 뜻은 우리가 물어본 8.8.8.8이 이 주소에 대한 Authoritative DNS가 아니란 뜻입니다.

그럼 cached DNS 서버는 처음 들어보는 도메인이 어디에 있는지 어떻게 알아볼까요? 

일단 모든 도메인은 zone으로 구성되어 있습니다. studyforus.com도 하나의 zone이고, .net 이나 .kr, .co.kr 등도 각각 하나의 zone을 형성하게 됩니다. 이 zone 자체의 정의는 SOA(Start of Authority) 레코드에서 관리합니다. 한번 불러 봅시다.

C:\>nslookup -type=soa studyforus.com
서버:    google-public-dns-a.google.com
Address:  8.8.8.8

권한 없는 응답:
studyforus.com
        primary name server = ns11.dnszi.com
        responsible mail addr = root.dnszi.com
        serial  = 2018021307
        refresh = 43200 (12 hours)
        retry   = 3600 (1 hour)
        expire  = 1209600 (14 days)
        default TTL = 7200 (2 hours)

이 zone의 주된 nameserver는 누구인지, 이 zone의 관리자의 메일 주소, 그리고 레코드의 효력 기간은 얼마나 되는지 (1시간마다 갱신하고, 14일 이상 지나면 이 결과는 효력이 없고, 따로 설정하지 않으면 이 zone 내의 레코드의 TTL은 2시간입니다. ) 등을 나타내고 있군요.

그리고 모든 zone은 가지 자신에 대한 NS레코드들을 가지고 있어서 자신의 주소가 어딘지 알 수 있도록 합니다.

도메인 주소의 해석은 가장 뒤에서부터 시작합니다. 먼저 .com을 관리하는 DNS 서버를 찾아보고, 그 뒤에 studyforus.com을 관리하는 DNS 서버를 찾은 뒤에,그 서버에다 studyforus.com의 ip 주소를 물어보게 되겠죠.

어떤 도메인이 자신의 하위도메인을 관리하는 주소는 NS 레코드에 의해서 관리됩니다.

그러면 .com을 관리하는 DNS 주소는 어디서 찾을까요? 그건 바로 루트 DNS에게 물어보게 됩니다 모든 도메인의 상위에 있기 때문에 딱히 이름이 없고 .이라 부릅니다.

한번 직접 해 보죠. 

C:\>nslookup -type=soa .
서버:    UnKnown
Address:  192.168.0.1

권한 없는 응답:
(root)
        primary name server = a.root-servers.net
        responsible mail addr = nstld.verisign-grs.com
        serial  = 2018032601
        refresh = 1800 (30 mins)
        retry   = 900 (15 mins)
        expire  = 604800 (7 days)
        default TTL = 86400 (1 day)

//원래는 이 아래 nslookup이 자동적으로 각 주소에 대한 ip 주소를 조회해서 출력하지만 원칙적으로는 이것만 SOA 레코드 입니다. 

//이하 모든 레코드들에 대해서 동일

이 서버들은 일반적인 주소에서의 DNS 질의를 거부하기 때문에 직접 물어볼 수는 없겠네요. 하지만 물어본다면 이런 결과일 겁니다.

C:\>nslookup -type=NS com. a.root-servers.net
서버:    UnKnown
Address:  198.41.0.4

com     nameserver = e.gtld-servers.net
com     nameserver = h.gtld-servers.net

....... 13개 씩이나 있더라고요
com     nameserver = g.gtld-servers.net
com     nameserver = d.gtld-servers.net

그 다음에 .com 의 13개의 네임서버 (a~m).gtld-servers.net중 하나에 studyforus.com의 네임서버를 물어보죠.


C:\>nslookup -type=NS studyforus.com. d.gtld-servers.net
서버:    UnKnown
Address:  192.31.80.30


studyforus.com  nameserver = ns11.dnszi.com
studyforus.com  nameserver = ns22.dnszi.com
studyforus.com  nameserver = ns37.dnszi.com
studyforus.com  nameserver = ns53.dnszi.com
studyforus.com  nameserver = ns77.dnszi.com

이제 studyforus.com을 관리하는 주소를 알았네요. 이제 여기다가 studyforus.com의 A레코드를 물어보면 됩니다. 

C:\>nslookup -type=A studyforus.com ns11.dnszi.com
서버:    UnKnown
Address:  115.71.243.9

이름:    studyforus.com
Address:  222.113.212.162

이제 studyforus.com의 authoritative한 결과를 얻었습니다. 

이걸 매번 하기에는 트레픽도 많이 들고 상위 DNS의 부담이 막중해지니 각 DNS 서버는 아는 주소들 studyforus.com  이라던가, 일반적인 TLD들의 네임서버 전체라던가 등을 cache 해 둬서 질의를 생략하는 방식으로 동작합니다.

맛스타님 맛스타 포함 1명이 추천

추천인 1

댓글 3

title: 생일 케이크 (1년권)맛스타
profile image
좋은 글 잘 읽었습니다~
근데 닉네임은 어떻게 읽어야할까요? 앱노에?
comment menu
2018.03.27. 21:48

신고

"맛스타님의 댓글"

이 댓글을 신고 하시겠습니까?

abnoeh 작성자 → 맛스타
profile image

일단 제 머리속에서는 어브노에 정도로 읽고 있네요. 사실 제대로 읽을 생각 안 하고 지은 닉네임이긴 하지만

comment menu
2018.03.28. 00:19

신고

"abnoeh님의 댓글"

이 댓글을 신고 하시겠습니까?

title: 생일 케이크 (1년권)맛스타 → abnoeh
profile image
좀 독특해서 거꾸로 읽어야 하나 했습니다.

henoba
comment menu
2018.03.28. 01:17

신고

"맛스타님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 http2 설정이 간편하게 적용 됩니다. 5 image 슬레이브 슬레이브 1일 전23:16 75
공지 스포어 행복 로또의 설정이 일부 변경되었습니다. 5 슬레이브 슬레이브 20.06.25.17:50 163
245 27. 멘델의 유전법칙이였츄 (부제: 파란 장미는 어떻게 교배해야 나오나요) 1 image 왕뚠뚠돈까스라이츄 title: 인스타그램왕뚠뚠돈까스.. 20.05.31.03:29 5667
244 26. Next generation sequencing이었츄 2 image 왕뚠뚠돈까스라이츄 title: 인스타그램왕뚠뚠돈까스.. 20.05.17.02:01 209
243 [Requests-HTML] Requests와 비교할 때의 장점! (네이버 뉴스 등 크롤링) 7 image 이니스프리 이니스프리 20.05.14.19:08 410
242 [생화학] 세포호흡 Part I (에너지 투자기) 1 image sweetenpotato sweetenpotato 20.04.10.01:24 303
241 ['Till Shutter Die] Chapter I. 카메라의 종류 9 image 협스 title: 포토샵협스 20.04.02.11:22 263
240 [샷투샷] 오티 2 image 협스 title: 포토샵협스 20.04.01.16:04 274
239 [XE] 관리자 권한을 보유한 경우에만 애드온 작동하도록 하기 2 네모 네모 20.03.23.16:08 394
238 [XE] 회원가입 시 사용자 IP를 설명란에 기록하기 2 네모 네모 20.03.23.16:08 304
237 [mod_rewrite] Apache2 의 mod_rewrite 사용 시 index~ 만 Rewrite가 되지 않을 경우 네모 네모 20.03.23.16:07 270
236 [jQuery] jQuery로 Checkbox 제어하기 네모 네모 20.03.23.16:06 274
235 22. [OpenPyXL] 엑셀 문서 저장하기 / 시트 추가하기 / 셀에 입력하기 14 image 이니스프리 이니스프리 20.02.02.00:46 923
234 21. [OpenPyXL] 엑셀 문서를 열고 시트에서 셀의 값을 얻기 2 image 이니스프리 이니스프리 20.02.01.23:46 529
233 특별편-보건용 마스크란 2 image 왕뚠뚠돈까스라이츄 title: 인스타그램왕뚠뚠돈까스.. 20.01.30.00:14 647
232 [Java] 아무튼 대충 알아보는 NPE 예방법! 네모 네모 20.01.21.11:50 436
231 [BeautifulSoup] 자식태그를 제거하기 - .decompose() & .extract() 10 image 이니스프리 이니스프리 20.01.16.00:07 916
230 25. GHS였츄 3 image 왕뚠뚠돈까스라이츄 title: 인스타그램왕뚠뚠돈까스.. 20.01.15.02:02 497
229 [python-telegram-bot] 4096자 글자수 제한을 우회하는 방법 image 이니스프리 이니스프리 20.01.12.11:25 496
228 [Requests] Selenium을 이용한 Cloudflare의 우회 3 image 이니스프리 이니스프리 20.01.08.19:51 810
227 9. [정리] 파이써닉한 파이썬 문법 팁 for COS Pro image 이니스프리 이니스프리 20.01.04.23:47 440
226 [번외편] 네이버 동영상에서 자막을 파일로 추출하는 방법 2 image 이니스프리 이니스프리 19.12.25.22:34 835