Domain Name System
DNS(Domain Name System)은 사용자가 숫자로 된 인터넷 프로토콜 주소 대신 인터넷 도메인 이름과 검색 가능한 URL을 사용하여 웹사이트에 접속하는 것을 가능하게 합니다.
사용자는 93.184.216.34와 같은 IP 주소를 기억하는 대신 www.example.com을 검색할 수 있습니다.
내 컴퓨터에서 www.naver.com 에 접속하려고 합니다.
그런데, 현재 내 브라우저는 이 서버의 IP 를 알지 못합니다.
그래서 브라우저는 PC 에 설정된 로컬 DNS 서버에 해당 도메인과 호스트명의 IP 를 갖고 있는지 물어봅니다.
DNS 서버는 그냥 네임 서버라고 불리기도 합니다.
이 로컬 DNS 서버는 보통 통신사마다 지정된 곳이 있는데 사용자가 다른 곳으로 바꿀 수도 있습니다.
여튼 여기에는 이 주소(www.naver.com)의 정보가 이미 캐싱돼있을 수도 있고 없을 수도 있습니다.
있는 경우 바로 반환을 하며, 없을 경우 로컬 DNS 는 이 Root DNS 서버에다가 이 주소에 해당하는 IP를 어디서 찾을 수 있는지 물어봅니다.
이때 이 루트 DNS 서버 자체는 전 세계에 13군데가 있습니다.
여튼 이 Root DNS 서버는 .com 으로 끝나는 도메인들을 담당하는 서버의 IP 주소를 반환합니다.
그럼 로컬 DNS 서버는 이 주소를 받아서 다시 .com 을 담당하는 서버에 도착하면 .com 을 담당하는 서버는 다시 naver.com 의 도메인 정보를 가진 서버의 IP 주소를 반환합니다. 그러면 마지막으로 naver.com 의
도메인 정보를 가진 서버로 도착하게 되면 여러 호스트네임별 IP 주소들이 들어있습니다.
여기로 부터 www 에 해당하는 IP 주소를 얻어낸 다음 브라우저에게 반환하고 비로소 ww.naver.com 의 서버로 접속하게 됩니다.
DNS 스푸핑 - > IP 주소를 가로채서 자기들의 잘못된 IP 주소를 알려줘서 해킹하는 것을 말한다.
위에서 로컬 DNS 서버를 사용자가 다른 곳으로 바꿀 수 있다고 했는데 다른 곳으로 바꾸는 이유는
특정 사이트를 좀더 빠르게 이용하고 싶거나 정부가 막아놓은 사이트를 접속하고 싶을때 이용합니다.
하지만 다른 서비스들이 느려질 수가 있습니다.
A Record -> 도메인을 서버의 IP 로 직접 연결하는 겁니다. IP 로의 직통 연결이라 접속이 빠르다는 장점이 있습니다.
CNAME -> 도메인을 별명과 연결하는 거에요. IP가 유동적으로 변하는 서버의 경우 그 바뀌는 IP들에 일정하게 연결된 다른 도메인으로 연결하는 것을 뜻합니다. AWS 나 Firebase 같은거를 사용할 때 이용합니다.