본문 바로가기
Days/IT

DNS

by TIS_Ha 2023. 12. 20.
반응형

URL과 도메인의 차이

URL(Uniform Resource Locator) : 사용자가 도메인 서버로 접속을 원할 때 "프로토콜 + 도메인 + 경로" 등을 통합적으로 나타내는 주소이다.

예를들어 URL : https://www.naver.com은 "프로토콜 https + 도메인 www.naver.com" 으로 분류할 수 있다.

URL은 보통 Protocol (http / https), 호스트명, 도메인명, 상위 도메인명으로 이루어진 Domain, Path, Parameter, Fragment로 이루어져 있다.

 

Protocol(http, https)

프로토콜은 컴퓨터끼리 네트워크 통신을 할 때 규격으로, 웹을 이용할 때 HTTP(Hyper Text Transfer Protocol) 프로토콜을 이용한다.

최근에는 HTTP에 보안을 더한 HTTPS(Hyper Text Transfer Protocol Secure)프로토콜이 많이 사용되고 있다.

HTTPS는 우리가 주고받는 정보를 암호화하여 보이지 않도록 보안 처리해 준다.

Host = Domain

호스트 주소는 도메인 네임 혹은 IP 주소로 컴퓨터의 주소를 표시하는 영역이다.

ex) www.naver.com 에서 -> www는 호스트명, naver는 도메인명, com은 상위 도메인명

Port(번호)

기본적으로 포트번호를 입력하지 않았을 때는 프로토콜이 가지고 있는 기본 포트 번호가 적용된다.(HTTP의 경우 80, HTTPS의 경우 443)

path (/)

파일의 경로를 가리키며, / (슬래시) 뒤에 나온다. 폴더 내에 파일과 폴더를 만드는 것처럼 컴퓨터의 폴더와 비슷한 개념이라고 할 수 있다.

ex) https://wiki.navercorp.com/display/TECHOPER/Development

parameter (?)

파라미터는 쿼리 스트링이라고도 부르며, key(파라미터의 이름)=value(파라미터의 값) 형태로 이루어진다.

?(물음표) 뒤에 나열되고, & 기호로 구분되어 여러 개가 존재할 수 있다.

ex) https://www.innisfree.com/kr/ko/ProductView.do?prdSeq=35223&NaPm=ct%3Dlqd73954%7Cci%3Dcheckout%7Ctr%3Dmyz%7Ctrx%3Dnull%7Chk%3D927fa0d389319970fcfa60b3831fc86c3277354e

fragment (#)

해시태그(Hashtag), 앵커(Ancher)라고도 부르며 특정 요소를 지시할 수 있다.

해시태그로 이동을 원하는 요소의 id를 링크로 연결하면, 스크롤 이동없이 바로 해당 위치로 이동할 수 있고, 파일 디렉토리 및 파일이름과 유사한 역할로 쓰이는 경우도 있다.
ex) https://piquenique.kr/#none

 

DNS(Domain Name Syetem)란?

도메인은 웹 브라우저를 통해 특정 사이트에 진입할 때 IP 주소를 대신하여 사용하는 주소이다.

도메인 이름을 IP주소로 변환하거나, IP주소를 도메인 이름으로 변환하는 일을 수행할 수 있도록 개발된 시스템이 DNS이다.

DNS는 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같이, DNS 서버에서 도메인 <> IP 주소를 변환하여, 도메인을 웹 브라우저에 입력했을 때 사용자를 어떤 서버에 연결할 것인지 제어한다.

 

DNS 구성 요소

DNS는 도메인 네임 공간(Domain name space), 네임 서버(Name server), 해석기(Resolver)로 구성되어있다.

도메인 네임 스페이스(Domain Name Space)

우리가 사용하는 도메인 주소의 구조는 아래와 같이 트리 구조로 만들 수 있다.

 

- root 도메인 : 네임 스페이스 상 최상위 도메인, 출발지 역할.

- 최상위 도메인 (Top Level Domain, TLD):   국가 혹은 일반 최상위 도메인 ( kr, com 등 )

- sub domain : 2차 이상 도메인, 최상위 도메인이 관리하는 하위 도메인(naver, google 등)

위와 같이 도메인에 대한 데이터는 계층적 구조로 저장되어 관리되며, 도메인에 대한 정보와 주소를 관리하고, 유지하는 책임과 권한을 영역으로 나눠 분리한다.

이러한 분리 체계를 도메인 네임 스페이스라고 하며, 도메인이 요청되면 이 체계에 따라 해당 도메인 정보에 해당하는 영역으로 가서 주소를 찾는다.

 

네임 서버(Name Server)

네임 서버는 해당 도메인 이름에 매핑되는 IP 주소를 찾아 변환해주는 서버이다.

문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP 주소로 변환시키기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요한데 이러한 정보를 가지고 있는 서버를 네임 서버라고 한다.

Root DNS 서버

ICANN이 직접 관리하는 서버로, TLD DNS 서버 IP 주소를 저장하고 안내하는 역할을 한다.

Top-Level Domain(TLD) DNS 서버

도메인 등록 기관이 관리하는 서버로, Authoritative DNS 서버의 주소를 저장하고 안내하는 역할을 한다.

Top Level Domain(최상위 도메인)은 대표적으로 국가 코드 최상위 도메인(kr, jp, us)과 일반 최상위 도메인(.com, .net, .org)이 존재한다.

Authoritative DNS 서버(Second-Level Domain(SLD) DNS 서버)

실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버이다.

일반적으로 도메인/호스팅 업체의 네임서버를 말하지만 개인 DNS 서버 구축을 한 경우에도 여기에 해당한다.

 

해석기(Resolver)

리졸버는 DNS 클라이언트의 요청을 네임 서버로 전달하고, 네임 서버로부터 정보(도메인 이름과 IP 주소)를 받아 클라이언트에게 제공하는 기능을 수행한다.

대표적인 것으로 KT/LG/SK와 같은 ISP(통신사) DNS, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있다.

리졸버는 하나의 네임 서버에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받아온다.

이렇듯 리졸버는 수많은 네임서버에 접근하여 사용자로부터 요청 받은 도메인의 IP 정보를 조회하는 기능을 수행한다.

일반적으로 도메인에 대한 질의를 받은 리졸버는 설정된 DNS 서버로 DNS Query(질의)를 전달하고, DNS 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달하는 인터페이스 기능만을 수행한다.

 

DNS 동작 과정

만약 URL에 도메인 이름 주소 naver.com를 입력하면 DNS Lookup이라고 불리는 과정이 발생한다.

  1. 브라우저는 리졸버에게 IP 주소 요청, 리졸버는 요청받은 도메인의 IP 주소를 찾기 위해 여러 네임 서버에 반복적 질의.
  2. 리졸버는 기존에 찾아본 도메인 정보가 담긴 캐시 파일을 먼저 살펴본 후 해당되는 도메인 정보가 있다면 즉시 IP 주소를 반환한다.
  3. 만약 해당되는 도메인 정보가 캐시에 담겨있지 않으면, DNS 리졸버는 IP 주소를 얻기 위해 네임 서버들에게 재귀적인 쿼리를 진행한다. 루트, 탑 레벨, 권한 있는 도메인 서버에 차례대로 쿼리를 진행하며 IP주소를 알아낸다. 이때 리졸버는 쿼리 수를 줄일 목적으로 기록되지 않은 도메인 네임 서버들의 주소를 저장하기도 한다.
  4. 마지막으로 리졸버는 전달받은 naver.com의 IP 주소를 기록하고 브라우저에게 전달한다.

 

반응형

'Days > IT' 카테고리의 다른 글

git 병합하기 (merge)  (0) 2024.02.26
깃헙 소스트리 사용해보기  (0) 2024.02.23
파이썬 웹 프레임워크(Flask, Django, FastAPI)  (1) 2023.12.05
GET / POST  (1) 2023.12.04
데이터 크롤링과 BeautifulSoup  (1) 2023.12.01

댓글