View
더보기
Basic Concept
숫자로 이루어진 IP Address를 사람이 인식하기 쉬운 문자열로 변환, 역변환하는데 도움을 주는 서비스이다.DNS 정보를 저장하는 단위를 '레코드'라고 하는데 추상적으로 도메인(문자열), 도메인에 해당하는 아이피로 이루어 진다.
정방향, 역방향
문자열을 조회해서 아이피를 찾는 것을 '정방향', 아이피를 조회해서 문자열을 찾는 것을 '역방향'이라고 한다.
정방향은 인터넷 페이지를 접속하거나 할 때 등 일반적으로 많이 쓰인다. 역방향은 예를들어 'IP 192.168.99.99는 어떤 도메인을 사용하고 있나요?'라고 확인할 때 많이 쓰인다.
역방향은 DNS 체계를 따르지 않고 자신의 로컬 데이터만을 베이스로 검색해서 알려준다. 그리고 DNS 사양에 필수는 아니라 DNS 구현 소프트웨어는 거의 구현하고 있지 않다.
예.
DNS 서버, Query, Delegation
도메인 해석 서비스를 제공하는 서버를 DNS 서버라고 하는데, 하나의 DNS 서버가 'www.naver.com.' 주소는 'x.x.x.x'라는 정보를 제공해 주는 것이 아니라 바로 아래 하위 계층의 dns 서버 주소를 알려주고 '그쪽으로 가서 물어봐'라는 식으로 각자 속해있는 DNS에 따라 그 역할을 계층형으로 나누어서 분업하게 되어있다. 여기서 '물어본다', '알려준다'라는 행위를 'Query(질의)'라고 표현하며 위 아래 계층에게 질의하라고 넘겨주는 것을 위임(Delegation)이라고 한다.
도메인은 점(dot)을 기준으로 나누는 계층형으로 이루어져있다. 'www.naver.com'의 경우 점을 기준으로 나누면 'www', 'naver', 'com'으로 나눌 수 있는데 사실 이 주소는 'www.naver.com.'으로 마지막에 점이 하나 더 붙어서 'www', 'naver', 'com', ''으로 나눌 수 있는데 이 빈공간('')의 의미가 루트 도메인을 의미한다.
루트 도메인은 TLD, Top Level Domain이라고 칭하기도하며 이 루트 도메인은 크게 3가지 방식으로 분류할 수 있는데arpa(infrastructure gTLD), gTLD(generic TLD), ccTLD(country code TLD)가 있다. arpa는 네트워크 인프라 관리를 위해 사용되는 특수한 목적에 의해 관리되는 특수 도메인 타입이며 gTLD는 기관 유형에 다른 분류로 우리가 흔히 아는 com, net, org등이 이에 속한다. ccTLD는 개별 국가 기관에서 관리되는 도메인 타입이며 kr, jp, us등이 있다. 루트 도메인 에서 관리되는 도메인은IANA Root Zone Database에서 볼 수 있다.
위에 보면 존(Zone)이라는 단어가 나오는데 존이란 하나의 DNS가 관리하는 영역이다. 존은 그 존을 담당하는 DNS 서버와 그 존에 대해서 관리하는 데이터를 칭하는 Zone Data File로 구성된다. 이 데이터에는 해당 존이 담당하는 모든 자원 레코드(Resource Record)가 포함되어있으며 이 자원은 해당 존에 속한 호스트 또는 서브도메인 정보를 가지고 있다.
우리가 www.naver.com을 입력해서 웹 페이지를 보기까지에는 간략하게 아래의 차례를 거치게 된다.
웹 브라우저에게 'www.naver.com' 웹 페이지 접속을 요청한다.
내 컴퓨터는 도메인을 해석하기 위해(도메인의 아이피를 알아내기 위해) 최상위 루트 DNS 서버에 'www.naver.com'의 아이피 주소를 요청한다.
루트 DNS 서버는 com의 DNS 서버 주소를 알려준다.
내 컴퓨터는 알아낸 com의 DNS 서버로 naver의 DNS 서버 주소를 알려준다.
내 컴퓨터는 알아낸 naver의 DNS 서버에 가서 www의 아이피 주소를 달라고 한다.
naver의 DNS 서버 주소가 가르쳐준 x.x.x.x로 접속해서 웹페이지를 받아온다.
여기서 주소는 마지막 최종 종착지 서버, 호스트를 의미하는 www 부분과 도메인 부분인 naver.com으로 이루어지는데 이렇게 호스트 부분과 도메인 부분이 합쳐진 전체 주소를 FQDN(Fully Qualified Domain Name)이라고 한다.
DNS 서버는 사실 도메인을 해석하기 위해서 두 가지 방식을 사용하는데 Recursive Query, 재귀적 질의 방식과 Iterative Query, 반복 질의 방식이 있다. 재귀적 방식은 클라이언트에서 DNS 쿼리를 요청하였을 때 서버가 직접 다른 DNS 서버에 질의해서 그 결과를 반환하는 방식이다.
반복 질의 방식은 클라이언트가 질의한 정보가 특정 DNS 서버 정보에 없을 경우 다른 연관된 DNS 서버 정보를 주고 클라이언트는 전달받은 새로운 DNS 서버 정보로 직접 조회하는 방식이다.
Caching
DNS 서버의 과부하를 막기 위해 최종 끝단 클라이언트와 각각의 계층을 담당하는 DNS 서버들은 굳이 자신의 윗 계층으로 질의하지 않아도 자기가 대답할 수 있게 이전에 사용했던(질의 당했던) 정보를 설정, 조건에 따라 저장하고 있다가 쿼리가 들어올 경우 다른 DNS 서버로 패스하는 것이 아니라 직접 응답을 해준다.
이렇게 저장하는 행위를 'Caching'이라고 하고 저장하는 공간을 'Cache'라고 한다. 이 캐시는 최종 끝단의 클라이언트, 즉 내 컴퓨터에도 있고 중간 DNS 서비스들도 저장하고 있는데 일반 사용자의 경우 아래의 공간에 저장된다.
Windows 10 : C:/Windows/System32/drivers/etc/hosts
Linux : /etc/hosts
Max OS : /private/etc/hosts
Refer to
'infrastructure' 카테고리의 다른 글
Unix Socket vs TCP Socket (0) | 2021.03.02 |
---|---|
Ubuntu iSCSI 연결 (0) | 2021.02.23 |