www.youtube.com/watch?v=mpQZVYPuDGU
위의 영상을 기반으로 설명한다.
최초 2020.11.27
업데이트 2022.09.07
우선 DNS라는 것은 (Domain Name System)이라는 것이다.
엥? 그게 뭐냐고? 뭔지 알려면 사람과 컴퓨터의 차이를 알아봐야 한다.
컴퓨터는 이름이 없다. 아니 이름이 숫자다.
사람은 숫자가 아니라 문자를 이름으로 갖는다.
**사실 컴퓨터가 문자를 이름으로 갖는 것처럼 보이지만 사실 문자도 숫자로 해석해서 알아듣는다.
**해석하는 과정을 name resolution이라고 한다.
알았지?
??그래서 DNS가 뭐냐고??
DNS는 이름을 숫자로 매칭시켜주는 시스템이다.
정확하게 말하면 도메인 이름을 IP 주소로 바꿔준다.
**일반적으로 우리가 웹 브라우저나 FTP 클라이언트를 사용할 때는 URL을 이용한다.
그렇기에 URL을 resolution 하는 작업이 필요한 것이다.
** 의문이 들 수 있는데 그럼 처음부터 IP 주소를 이용하면 되는거 아냐?? 라고 생각할 수 있는데..
쉽게 말하자면 2^32개의 주소가 있는데 그걸 어떻게 외울까..
또한.. 사람을 숫자로 부르지 않듯이 사람은 문자에 익숙하다.
다시, 사람에게 숫자를 부여하자.
블랙핑크 제니는 32억 2443만 1023 번이라고 치자?
그럼 넌 블랙핑크 제니를 기억하기 쉬울 것 같나, 32억 2443만 1023번 사람이 외우기 쉽나..
그렇기에.. 우리는 도메인 이름을 쓰는거다..
그래서 DNS가 뭘 하는지 알겠어 어떤 방식으로 작동하는데??
DNS는 약간 전화번호부 같은 역할이다.
도메인을 IP 주소로 변환하려면 DNS 서버에 도메인 쿼리하는 과정이 필요하다
** DNS 서버없이 로컬에 도메인과 IP 주소를 직접 설정해 사용할 수 있다.
=> 실제로 저장은 111.222.111.222 never.com 이런 식으로 저장되어있다.(never라고 일부러 썼다)
** 하나의 IP가 아니라 2가지 이상의 IP를 한 도메인이 가질 수도 있다!!
하지만 로컬로 쓸 수 없게되는게.. 세상에 수많은 서버가 만들어져서 어쩔 수 없다.
오히려 로컬에 그 모든 서버에 대한 도메인, IP를 가지고 있는게 더 별로다.
그래서 서버에서 쿼리를 하고 정보를 받게된다.
이름과 주소가 나와있는 그래서 yahoo.com(도메인)을 받으면
DNS에서는 그에 해당하는 도메인의 IP 주소를 뱉는다.
**리눅스에서는 /etc/resolv.conf 파일에서 nameserver가 쿼리해야하는 서버가 어디인지 가리키고 있다.
=> 바꾸면 제대로 쿼리를 할 수 없다.
**근데.. 만약 IP를 이미 알고 있다면 사실 도메인으로 접근하지 않는다.
다시 말해서 DNS에 쿼리하지 않는다. 즉, 네트워크 문제라기 보다 그냥 몰라서 접근 못하는 거지 직접 IP로 접근하면 접속이 된다.
그리고 리눅스에서는 DNS 쿼리하기 전에 /etc/hosts 파일을 조사하여 미리 로컬에 도메인, IP 쌍이 저장되어 있는지 확인한다.
더 자세히 과정을 쪼개볼까??
우리가 yahoo를 들어간다고 해보자.
도메인을 쿼리하면 DNS 서버에 쿼리를 하기 전 로컬에 있는 DNS 캐시 정보를 먼저 확인한다.
근데 내 컴퓨터에서 못찾으면 ISP(Internet Service Provider), Resolver에게 묻는다.
나:너는 아니?
Resolver: 아니 나도 몰라 ㅎㅎ
그래서 Root Server에게 도움을 요청한다.
루트서버는
1. DNS 계층구조 중 맨 꼭대기를 말한다.
2. 13세트의 DNS서버가 전세계에 있단다.
3. 12개의 다른 기관에 의해 작동된단다.
4. 각 세트에는 고유의 IP 주소가 등록되어 있단다.
쉽게 말해서 그렇다.
DNS 서버는 사용자가 쿼리한 도메인에 대한 값을 직접 갖고 있거나 캐시에 저장된 정보를 이용해 응답한다.
만약 DNS 서버에 해당 도메인의 정보가 없으면 루트 도메인을 관리하는 루트 DNS에 쿼리한다.
엥?? 근데 Root Server도 모른대? 그러면 어떡해?
TLD Server에 연결해준다고 한다.
TLD란 Top Level Domain의 약자로
1. Top level의 도메인 정보들을 가지고 있다.
2. 닷컴(.com), 닷넷(.net) 등등
그니까 yahoo.com은 닷컴이겠네?? 근데 TLD도 몰라???
그럼 어떡해? 마지막으로 Name Server에 보낸다..
마지막 단계다.
모든 도메인에 대해 총책임자라고 볼 수 있다.
Resolver가 질의(query)를 보내면 Name Server에서 대답(respond)를 해준다.
결국 Resolver는 내 컴퓨터에게 IP 주소를 전달해주고
Resolver는 자신이 사용자에게 전해준 주소를 저장한다.
** 항상 Name Server까지 갈 필요 없잖아?? 그래서 캐시에 저장하는거다.
요약해서 DNS의 과정을 보자면 아래와 같다.
'컴퓨터(Computer Science) > 네트워크, Network' 카테고리의 다른 글
Connection-Oriented & Connectionless Protocol& Service, 연결형과 비연결형 서비스 (0) | 2020.11.25 |
---|---|
IPv4와 IPv6의 차이점 무엇일까? (0) | 2020.11.17 |
핑과 추적루트, PING and TRACERT(traceroute) (0) | 2020.11.16 |
물리적계층(Physical Layer) 개론 - 1 (0) | 2020.11.11 |
TCP/IP Model, OSI 모델과 차이는? (0) | 2020.11.08 |