이 포스팅을 읽기 전에 아래 포스팅도 확인해보세요!!
IP 주소를 알아야 DNS를 이해하기 쉬워집니다!! :)
https://dev-coderkim.tistory.com/45
<목차>
1.도메인이란?
2.우리가 웹사이트에 접속하는 과정
3.만약 DNS 서버에 문제가 생긴다면 어떻게 될까?
4.로컬 DNS를 변경하는 것의 의미
5.도메인을 얻는 방법
6.도메인과 서버의 IP 주소를 연결하는 방식
1.도메인이란?
그럼 본격적으로 이전 포스팅인 IP주소에 이어서 오늘은 DNS에 대해 알아보겠습니다.
DNS(Domain Name System)은 이름에서 알 수 있듯이 도메인에 관련된 시스템입니다.
우리가 알고 있는 도메인은 주소같은 역할입니다.
www.google.com 과 같은 주소입니다.
사실은 위의 주소에서의 도메인은 아래와 같습니다.
도메인이 존재하는 이유는 무엇일까요?
우리가 특정한 웹사이트에 접속하려고 하면
내 컴퓨터에 있는 브라우저가 그 사이트를 제공하는 서버에 요청을 해서 데이터를 받아와야 합니다.
그런데 다른사람에게 연락하려면 전화번호를 알아야 하듯이 데이터를 요청하려면 해당 서버의 IP 주소를 알아야 합니다.
그런데 우리는 사용하는 사이트의 모든 IP주소를 외우지 않습니다... (당연한 소리...)
그래서 외우기 쉬운 도메인주소를 활용해서 사이트에 접속을 하게 됩니다.
그렇다면 여기서 "전화번호부"에 해당하는 IP주소는 어디에 있을까요?이런 정보들이 저장되는 곳이 바로 DNS입니다.
2.우리가 웹사이트에 접속하는 과정
아래 그림처럼 다층적으로 구성된 네트워크에 분산되어서 도메인 정보들이 저장되고 조회됩니다.
[우리가 웹사이트에 접속하는 과정]
<Local>1)내 컴퓨터에서 www.naver.com에 접속하려고 합니다. 그런데 현재 내 브라우저는 이 서버의 IP를 모릅니다.2)브라우저는 PC에 설정된 로컬 DNS 서버에 해당 도메인과 호스트명의 IP를 갖고 있는지 물어봅니다.DNS 서버는 네임서버라고 부르기도 하고, 보통 통신사마다 지정된 곳이 있습니다. 하지만 사용자가 다른 곳으로 바꿀 수도 있습니다.이 DNS 서버에는 해당 주소의 정보가 캐싱되어 있을 수도 있고, 없을 수도 있습니다.
<Local DNS>2-1)정보가 있다면 바로 반환해서 접속을 하게 됩니다.2-2)정보가 없다면 로컬 DNS는 Root DNS서버에 이 주소에 해당하는 IP를 어디서 찾을 수 있는지 물어봅니다.(Root DNS 서버는 전세계에 13군데에 위치해 있답니다.)
3)Root DNS 서버는 응답으로 .com으로 끝나는 도메인들을 담당하는 서버의 IP주소를 반환합니다.4)로컬 DNS 서버는 이 IP주소로 찾아갑니다.5).com 담당 서버는 이번에 naver.com의 도메인 정보를 가진 아래 DNS 서버의 IP 주소를 반환합니다.6)로컬 DNS 서버는 해당 주소로 찾아갑니다.그러면 naver.com의 여러 호스트 네임별 IP 주소들이 있습니다.7)여기로부터 www에 해당하는 IP 주소를 받은 다음8)브라우저에게 반환합니다.
<Local>9)비로소 www.naver.com의 서버에 접속하게 됩니다.
3.만약 DNS 서버에 문제가 생긴다면 어떻게 될까?
**만약 DNS 서버에 문제가 생기면 어떻게 될까요?DNS 서버에 문제가 생기면 특정 웹사이트의 IP주소를 사용할 수 없어서 도메인을 사용한 접속만 불가능해지는 것이고 IP주소로 직접 접속하는 것은 가능합니다.(하지만 IP주소로 직접 접속하는 것을 막아놓은 사이트들은 아예 접속이 안되겠죠?)
그리고 이 DNS 라는 시스템은 해커들의 공격 대상이 되기도 합니다.위 그림의 2)번 과정에서 사용자 컴퓨터가 DNS에 IP 주소를 물어볼때 요청을 가로채서 자기들이 만들어둔 가짜 사이트의 IP주소를 알려주고 해당 주소로 접속하게끔 유도하는 방식입니다.(이런 방식을 DNS 스푸핑 이라고 합니다.)
4.로컬 DNS를 변경하는 것의 의미
그리고 위의 그림 2)에서 로컬 DNS 서버를 사용자가 다른 곳으로 변경할 수 있다고 말씀드렸는데요.
로컬 DNS 서버는 일반적으로 통신사의 것으로 설정이 되어있는데 이걸 수정하는 건,
정부에서 막아놓은 사이트에 접속하거나 국가검열 받은 IP 주소 대신에 외국 것을 사용한다는 것을 의미합니다.
그리고 특정 서비스를 보다 빠르게 이용하기 위함이기도 합니다.
예를 들어 윈도우에서 이처럼 기본 DNS를 구글 DNS 서버 주소인 8.8.8.8로 설정하면
유튜브나 G메일등 구글에서 제공하는 서비스를 보다 빠르고 쾌적하게 이용할 수 있습니다.
(대신 다른 서비스는 느려질 수 있으니 주의해야 해요!)
위의 사진에서 기본 설정 DNS 서버가 내가 쓰는 IP의 주소가 되는 것이기 때문에
엉뚱한 값을 넣으면 도메인으로는 인터넷을 사용할 수 없게 됩니다.
5.도메인을 얻는 방법
만약 우리가 웹사이트를 구현하면 도메인이라는 것을 확보해야 합니다.
이런 도메인은 쉽게 구입할 수 있습니다.
국내 사이트로는 후이즈/ 가비아 같은 곳에서 구매할 수 있고,
해외 사이트로는 GoDaddy 같은 곳에서 구매할 수 있습니다.
도메인을 구입하면 아래의 레벨에 해당하는 네임서버에 운영하는 서버의 IP를 호스트 네임별로 등록해서 사용이 가능합니다.
6.도메인과 서버의 IP 주소를 연결하는 방식
그런데 이 과정에서 도메인을 내 서버의 IP 주소에 연결하려면 '레코드 타입'을 설정해 줘야합니다.
타입에는 A Record 와 CNAME 의 방식이 있습니다.
먼저 A Record는 도메인을 서버의 IP로 직접 연결하는 것입니다.
이 방식은 IP로의 직통 연결이라서 접속이 빠르다는 장점이 있습니다.
CNAME은 도메인을 별명과 연결하는 것입니다.
IP가 유동적으로 변하는 서버의 경우, 바뀌는 IP들에 일정하게 연결된 다른 도메인
즉, Canonical Name을 적어준다는 의미입니다.
aws 나 firebase에서 서비스나 인스턴스를 만들면 'ec2-0-0-0-0.ap-northeast.amazonaws.com' 과 같은 주소를
사용하라고 나오는데요.
이 주소가 서버 IP가 수시로 바뀌어서 그랬던 것입니다.
이 주소를 도메인과 연결하는 방식이 CNAME 방식입니다.
IP가 유동적인 서버를 사용하는데 도움은 되지만 대신에 한군데를 더 거친다는 단점이 있습니다.
이렇게 도메인과 DNS에 대해 정리해보았습니다.
궁금하신 점이나 지적사항은 댓글로 환영합니다 :)
오늘도 즐코하세요!!! :)
출처
https://www.youtube.com/watch?v=6fc9NAQkcv0
https://ko.wikipedia.org/wiki/도메인_네임_시스템
'Web' 카테고리의 다른 글
hosting 호스팅이란? 호스팅 개념 정리 (0) | 2022.04.07 |
---|---|
javaScript Coupling Decoupling 디자인 패턴 / 객체간 의존성 결합도 (0) | 2022.04.03 |
IP에 대한 총정리! IP주소란? [ IPv4 / 공인IP 와 사설IP / 고정IP 와 유동IP ] (0) | 2022.03.30 |
REST API / RESTful API 간단 요약 정리 (0) | 2022.03.16 |
JWT(Json Web Token)란? (0) | 2022.03.13 |