DNS는 어떻게 작동할까

최정환·2022년 12월 1일
0

통신과 브라우저

목록 보기
6/8

DNS란

우리가 사는 세계에서 네트워크를 할때 컴퓨터는 사람이 하는 것과 같이 이름을 부르며 작동하지 않고 숫자로 한다.

네트워크를 통해 컴퓨터와 비슷한 기기들이 서로 이야기를 하거나 확인을 하는것과 같이 통신을 할 때 IP와 같은 숫자를 이용하기 때문이다.

따라서 사람과 컴퓨터가 서로 의사소통을 훨씬 쉽게하기 위한 다리(bridge)가 필요하기 때문에 네트워크 엔지니어들이 DNS(Domain Name System)를 만들었다.

DNS는 이름을 숫자로 풀어주고 더 특유하게 만들어 주는데 도메인 이름을 IP주소로 만들어준다.

따라서 만약 내가 컴퓨터의 브라우저에서 웹 주소를 친다면 DNS는 이름을 숫자로 만들어 줄 것이다. 왜냐하면 컴퓨터들은 숫자밖에 모르기 때문이다.

예를 들어 만약 내가 특정 사이트에 가기 위해선 그 웹주소가 아니라 그 웹 자원이 존재하는 IP주소를 타이핑해도 연결이 된다.
하지만 우리는 숫자를 외우거나 다루는데 익숙하지 않다. 인터넷에는 몇십만개의 웹사이트가 존재하기 때문이기도 하다.
그렇기 때문에 DNS를 이용해 도메인 이름을 사용하고 IP주소로 바꾸는게 인간에게 더 편하다.

작동 순서

이름으로 검색하고 숫자(IP주소)를 찾는 것이 전화번호책을 검색하는 것과 똑같다.

1. 도메인이름을 입력(yahoo.com)

2. DNS 서버가 DB에서 도메인 이름과 맞는 IP주소를 찾는다.

3. 이제 내 컴퓨터는 해당하는 IP주소를 가진 서버와 통신이 가능해지고 웹페이지를 찾을 수 있다.

좀 더 자세하게

yahoo.com에 대한 검색을 시작하는데 만약 브라우저나 OS가 자신이 가지고 있는 캐시 메모리에서 IP주소를 찾지 못한다면 resolver server라고 불리는 다음 단계로 쿼리를 보낸다.

resolver server는 기본적으로 ISP나 인터넷 제공기(공유기)다.
resolver server가 쿼리를 받는다면 캐시 메모리(resolver의)를 확인해본다.

만약 여기서도 찾지 못한다면 다음 단계인 root server로 넘어간다.

root server는 DNS 계층에서 가장 높거나 뿌리가 된다.
전세계에 전략적으로 배치된 13 sets의 root server가 존재한다.
12개의 구성으로 운영되고 있고 각 set은 자신만의 고유한 IP주소가 존재한다.

따라서 root server가 도메인에 대한 쿼리를 받았을 때 root server는 그 도메인의 IP주소를 알지 못할것이다. 하지만 root server는 resolver가 IP주소를 찾기 위해 도와줄 수 있다.

도와주기 위해 root server는 .com 도메인의 TLD or TLD 서버에게 resolver를 연결시킨다.

이제 resolver는 TLD 서버에게 yahoo.com의 IP주소를 물어본다.

TLD 서버는 top level 도메인(.com, .net, .org ...)에 대한 주소 정보를 저장한다.

이 특정한 TLD 서버는 .com 도메인을 관리한다. yahoo.com도 속해있다.

따라서 TLD 서버가 yahoo.com의 IP주소를 위한 쿼리를 받았을 때 TLD 서버는 yahoo.com의 IP주소가 뭔지 모를 것이다.

이제 TLD는 resolver를 다음 단계이자 마지막 단계인 권한이 있는 네임서버에 연결해 줄 것이다.

resolver는 이제 네임서버에 yahoo.com의 IP주소를 물어볼 것이다.

네임 서버나 서버는 모든 도메인(IP주소를 포함한)을 아는 것에 대한 의무가 있다. 이것들이 최종 권한이기 때문이다.

권한이 있는 네임서버가 resolver에게 쿼리를 받았을 때 네임서버는 yahoo.com에 대한 IP 주소를 반환할 것이다.

마침내 resolver는 내 컴퓨터에게 yahoo.com에 대한 IP주소를 전달해 줄것이다. 그리고 컴퓨터는 이제 yahoo.com 페이지를 검색할 수 있을 것이다.

⭐️ 중요한점 !!

resolver가 한번 IP주소를 받았다면 캐시 메모리에 저장해 만약 yahoo.com에 대한 요청이 다시 온다면 위와 같은 단계들을 다시 하지 않을 것이다.



참고

https://www.youtube.com/watch?v=mpQZVYPuDGU&list=PL5dxOI_eUTWJF5lHOgWQKZp1DvHKi_jiC&index=20

0개의 댓글