우리가 웹브라우저 주소창에 도메인 주소(ex. www.naver.com)를 입력하고 나면,
특정 사이트로 페이지를 이동하는 것을 확인할 수 있습니다.
하지만 개발을 하다 보면 도메인 주소 즉 사이트의 이름으로는 사이트가 인터넷이라는 바다의 어디에 있는지 알 수 있는 방법이 없습니다.
그렇다면 우리는 어떻게 해당 사이트를 찾아갈 수 있는 것일까요??
오늘은 사이트 이름을 가지고 해당 사이트의 주소를 찾아가는 이야기를 다뤄보려 합니다.
Domain과 IP의 개념
우선 우리가 왜 주소를 찾아야 하는지 알기 위해서는 Domain과 IP가 무엇을 의미하는지 아는 것부터 시작할 수 있습니다.
흔히 우리는 친구 집을 찾아간다 할 때 뭐라고 부르나요?
##네 집이라고 부르지 않나요??
이때 고민해봐야 하는 점은 왜 우리는 친구의 집을 서울특별시...라고 자세하게 말하지 않고 ##네 집이라고 부르는 것일까요?
여러 이유가 있겠지만 이미 어디인지 알기 때문에 간단하게 기억할 수 있는 이름으로 기억하는 것이 가장 크지 않을까요?
이처럼 우리는 이미 특정 위치를 말할 때는 부르기 쉬운 것으로 기억한다는 것을 알 수 있습니다.
그럼 다시 주제로 돌아와 IP는 어떤 것일까요?
IP는 인터넷에 특정 위치에 있는 사이트의 주소를 나타내게 됩니다.
그렇다면 Domain는 어떤 것일까요?
Domain는 사이트의 주소를 부르기 쉬운 명칭이라 볼 수 있습니다.
이로써 가벼운 개념은 정리가 된 것 같네요.
이 글에서 IP는 친구집 주소, Domain은 친구집 호칭으로 봐주시면 좋을 것 같습니다.
IP를 찾기 위한 모험
그렇다면 만약 전학생의 집에 놀러 가고 싶어 주소가 필요하다면 어떻게 해야 할까요?
우리는 이미 전학생네 집이라는 Domain을 가지고 있습니다.
만약 학교라면 선생님께 여쭤보고, 선생님이 모른다면 전산시스템에 들어갈 것이고, 이도 모른다면 못 찾아갈 것입니다.
또한, 만약 주소가 잘못되었다면 우리는 결국 찾아가지 못할 것입니다.
이러한 시스템은 인터넷에서도 동일한데요.
우리가 사용하는 컴퓨터에 hosts라는 파일은 우리가 Domain을 방문하고 싶을 때 해당 IP정보를 가지고 있는 파일입니다.
하지만, 여기에 존재하지 않을 때 우리 컴퓨터는 누구에게 물어볼 수 있을 까요?
1. Caching Resolver
캐싱 리졸버는 사용자의 로컬 네트워크에 있는 서버이며, 우리가 사이트에 한번 들어가게 되면 해당 IP와 Domain은 Caching Resolver에 저장되어 다음번 방문 때 훨씬 빠르게 도와주는 서버입니다.
즉 우리가 빠르게 접근할 수 있는 긴급연락망이 되겠네요!
2. Local DNS
해당 서버는 기지국 DNS라고도 부르며, 우리가 흔히 사용하는 통신사(SKT, KT, LG 등...)를 의미합니다.
로컬 PC에서 사이트 IP를 찾지 못한 경우 Local DNS에 IP를 요청하게 되며, 존재하지 않을 경우 다음 단계로 넘어가게 됩니다.
해당 서버는 교무실이라고 볼 수 있겠네요!
3. Root DNS
이런!! 교무실에 방문했더니 다른 학년이라 학생 정보가 없는 걸까요?!
그럼 우린 더 많은 정보를 접할 수 있게 교육청에 찾아가도록 하죠!
Root DNS는 ICANN이 관리하는 DNS시스템의 최상위 계층에 존재하는 서버입니다.
Root DNS에서 우리가 원하는 전학생네 집 주소가 있는지 확인합니다.
이때! 있으면 정말 다행이지만, 없다면 동사무소에 찾아가 보기로 합니다.
4. TLD( Top-Level-Domain ) DNS
여기서 동사무소는 "www.naver.com"에 접속한다 하면,
맨 뒤에 작성된 ". com"을 소유한 주소들을 관리하는 서버입니다.
즉, ". com"를 소유한 주소들을 가진 서버에서 확인한다는 의미입니다.
TLD DNS에서 Domain의 IP를 찾아보고 없다면 하위 Second Level Domain DNS로 넘겨 최종적으로 www.naver.com Domain DNS 즉 Authoritative DNS Server에 접근하여 IP를 얻어낼 수 있습니다.
그럼 우리는 모든 상황에서 전학생네 집을 찾았을까요??
아쉽게도 하나의 가정이 더 남아있네요...
만약, 동사무소도 주소를 모른다면 어떻게 할까요?
물론 이미 해당 레벨에서 한 번이라도 사람이 방문한 적 있다면 주소를 얻을 수 있겠지만,
만약 없다면 친구는 무인도에 살고 있을 확률이 높으므로 다음날 학교에서 물어보도록 합시다.
여행의 끝
우리는 위의 전학생 주소 찾기를 통해 어떻게 주소를 찾아야 할지를 비교적 간단하게 알아보았습니다.
추가적인 내용으로는 국가 코드, 일반 코드 등 상세하게 나눠지는 부분은 당연히 존재합니다.
하지만, 이 글의 목적은 어떤 흐름으로 Domain으로 IP를 가져오는지에 대한 니즈를 해결하기 위한 글이므로 다음 고급 편에서 더욱 세세하게 다뤄보도록 하겠습니다.
이렇게 IP를 가져왔다면 IP를 해석하며 서버를 찾아가는 과정도 존재하겠죠?
해당 내용은 "너에게 닿기를"이란 주제로 찾아뵙겠습니다.
Reference
https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/
https://aws.amazon.com/ko/route53/what-is-dns/
DNS 트래픽 쿼리 관련 논문: https://arxiv.org/pdf/2308.07966
https://namu.wiki/w/%EB%84%88%EC%9D%98%20%EC%9D%B4%EB%A6%84%EC%9D%80.
'Server' 카테고리의 다른 글
[Architecture] Clean Architecture VS Hexagonal Architecture (0) | 2025.01.14 |
---|---|
[ JPA ] OSIV가 뭐예요? (1) | 2024.11.12 |
URL로 어떻게 사이트를 접속할 수 있을까? (9) | 2024.10.23 |
WebServer와 WebApplicationServer가 뭔가요? (2) | 2024.10.23 |
[VM] MAC OS에서 VM으로 Ubuntu 설치 및 실행하기 (3) | 2024.10.13 |