작성 시작 : 10월 9일 (토)
지금까지 네트워크에 대해 기본적인 내용을 정리하면서 IP 에 관련한 이야기를 많이 다뤘습니다. 하지만 인터넷의 사용자는 정작 IP 에 대해서 잘 몰라도 인터넷을 자유자재로 사용할 수 있습니다. 실제로 우리는 구글에 접속하고 싶다면 구글 웹 페이지를 호스팅하는 서버의 IP 를 검색창에 넣지 않고 www.google.com 을 입력합니다. 이러한 일이 가능한 이유는 DNS 가 www.google.com 을 구글 서버의 IP 로 변경해주기 때문입니다.
📖 DNS ( Domain Name System )
DNS 는 기본적으로 IP 주소와 Domain Name 을 매핑해주는 역할을 수행합니다. DNS 는 이런 기본적인 작업 이외에도 여러가지 역할을 수행할 수 있는데, 서버에 연동하는 상황을 예로 DNS 를 사용하지 않고 Client 측에서 Server Gateway IP 인 22.22.22.22 로 연동했다고 가정합니다.
만약 Client 가 APP 이라면 22.22.22.22 을 Gateway 로 지정하여 이미 스토어에 배포가 되어있는 상황입니다. 그런데 이 상황에서 Server 를 이전해야 한다면 Server IP 가 변경이 됩니다. Server IP 가 변경될 때 마다 APP 을 다시 배포해야 하는 번거로운 상황이 발생하는 겁니다.
DNS 를 사용하여 22.22.22.22 을 api.app.com 으로 매핑하였다면 APP 에서는 Gateway Server 를 api.app.com 으로 작성하여 배포하면 됩니다.
Server IP 가 22.22.22.22 에서 11.11.11.11 로 변경되더라도 DNS 매핑 정보만 수정하면 APP 을 다시 배포해야 할 필요가 없습니다.
DNS 구조
| Third-Level Domain | Second-Level Domain | Top-Level Domain (TLD) | Root |
|---|---|---|---|
| www | naver | com | . |
DNS 는 Root 부터 Third-Level Domain 까지 작성순서와는 반대로 찾아갑니다.
DNS 작동방식
Recursive Query and Iterative Query
DNS의 작동에는Recursive Query와Iterative Query가 사용됩니다.
우리가 브라우저 검색창에 처음 www.google.com 을 검색했을 때 일어나는 과정입니다.
1️⃣ Query hosts
윈도우 컴퓨터에는 hosts 파일이 존재합니다. hosts 파일은 컴퓨터의 DNS 전화번호부라고 생각하면 됩니다. 이전에 매칭되었던 기록이 Cache 로 존재합니다.
처음 www.google.com 을 검색한 것이기 때문에 hosts 파일에서는 Google IP 를 찾을 수 없습니다.
2️⃣ DNS Server
Local Cache 에서 IP 정보를 확인할 수 없었기 때문에 사용자 컴퓨터에 지정된 DNS Server IP로 요청을 보내게 됩니다.
3️⃣ Root NS
Local DNS 에서 찾을 수 없었기 때문에 사용자 컴퓨터에 지정되어있는 Root NS IP 로 www.google.com 의 IP를 알려달라는 쿼리를 보내게됩니다. 처음 요청을 받은 Root NS 는
Google 에 대한 정보는 없지만 .com 에 대한 TLD Server IP 는 알고 있기 때문에 com 의
TLD Server IP 를 다시 사용자에게 반환합니다.
4️⃣ TLD Server
TLD Server IP 를 반환받은 DNS Server 는 TLD Server 에게 다시 한번 www.google 에 대해서 요청합니다. com TLD Server 는 요청을 확인하고 Google NS IP 를 반환합니다.
5️⃣ Second-Level Domain
Google NS IP 를 반환받은 DNS Server 는 Google NS 에게 IP 를 요청하고 Google NS 는 DNS Server 에게 Google Gateway Server IP 를 응답해주게 됩니다. IP 를 받은 DNS Server 는 요청을 한 Host 에게 IP 를 전달합니다.
6️⃣ Host ( User )
IP 를 전달받은 Host 는 해당 IP 로 요청을 날리게 되고 비로소 Google 의 웹 페이지를 반환받아 웹 브라우저에 띄울 수 있게됩니다.
💿 DNS Record
Domain 에는 IP 매핑을 포함한 다양한 추가 매핑 레코드가 존재합니다.
-
A Record
가장 기본적인 일을 수행하는 레코드입니다.Domain의A Record에는 매핑하고자 하는IP가 들어갑니다. -
AAAA Record ( IPv6 )
역할은A Record와 똑같지만IPv6를 매핑하기 위한 레코드입니다. -
CNAME
CNAME은IP와Domain을 매핑하지않고Domain과Domain을 매핑합니다.
그 예시로www.google.com은google.com으로 매핑이 되어있습니다.CNAME을 사용하면
DNS Record를 관리하기 편해집니다.www.google.com과google.com을 모두IP에 매핑하게 된다면IP가 변경될 때 이 2개를 모두 수정해야하지만www.google.com은google.com에 매핑시켜두고google.com만A Record를 작성해둔다면IP가 변경되더라도A Record하나만 수정한다면www.google.com을 건드릴 필요가 없어집니다. -
TXT ( TeXT Record )
간단한 텍스트를 입력할 수 있는 레코드입니다. 보통Domain에 대한 소유를 확인하는 과정에서 사용되거나 메일의 발신자를 입증하는SPF (Sender Policy Framework)에 이용됩니다.
댓글