인터넷을 사용하다 보면 도메인, ip 주소, URL 등의 용어를 들어본 적이 많을 것이다.
이 용어들의 차이는 뭘까?
그리고 https://www.naver.com/ 를 검색창에 치면 어떤 과정을 거쳐서 네이버 홈페이지가 열리게 되는 걸까?
용어의 차이를 먼저 알면 그 동작 과정에 대해 이해하기 쉽다.
일단 도메인은 인터넷 주소라고 생각하면 된다.
네이버의 도메인은 https://www.naver.com/ 이며
구글 도메인은 https://www.google.com/ 이다.
그럼 ip 주소는 무엇을 뜻하는 걸까?
ip 주소는 도메인 정보를 컴퓨터가 알 수 있게끔 숫자로 변형된 것이라고 보면 된다.
종류는 ipv4, ipv6 가 있고 public ip, private ip 등 더 딥한 이론적인 내용이 있지만,,
이 내용은 다음에 다시 정리하도록 하겠다.
그럼 네이버의 ip주소는 어떻게 확인해볼 수 있을까
윈도우에서는 cmd를 통해 간단하게 확인해볼 수 있다.
명령어 : nslookup naver.com

Addresses로 나온 ip 주소들이 네이버의 ip 주소인 것이다.
해당 ip주소를 복사해서 검색창에 입력하면 네이버 홈페이지로 이동하는 것을 볼 수 있다.
그럼 도메인과 ip주소는 같은 것이라고 볼 수 있는 거 아닌가?
근데 왜 구분해놨을까?
그 이유는 ip주소로는 사람이 해당 홈페이지가 어떤 홈페이지인지 구분하기 어렵기 때문이다.
223.130.195.95 와 https://www.naver.com/ 중 어떤게 네이버 홈페이지인지 구분하기 쉬울까?
한마디로
도메인은 사람이 잘 알 수 있도록,
ip 주소는 컴퓨터가 잘 알 수 있도록 정의된 인터넷 주소
라고 생각하면 된다.
그리고 이런 것들을 통틀어서 URL 이라는 용어를 사용하는 것이다.
근데 https://www.naver.com/ 이라는 도메인이
ip주소로는 223.130.195.95 를 뜻하는 지
컴퓨터는 어떻게 알고 홈페이지가 열리게 되는 걸까
사람이 검색한 도메인 주소가 어떤 ip주소를 의미하는 것인지 컴퓨터가 알 수 있게끔 하는 시스템이 DNS
라고 보면 된다.
DNS 동작원리를 그림으로 설명하자면 이렇다.

과정을 설명하자면 도메인 주소를
Recursive Query(여러번의 질의를 통해 정보를 얻는 과정)를 통해 ip 주소를 얻어온다
고 생각하면 쉽다.
도메인 주소에서 확인할 수 있는 '.' 마다 네임서버에 해당 ip가 존재하는지 차례대로 질의하는 형식이다.
www.naver.com 을 예시로 들면 먼저 hosts 파일에 해당 도메인의 ip주소가 있는 지 먼저 체크하고
없는 경우 Local DNS 서버로 DNS Query 를 통해 요청된다.
(Local DNS 서버에서는 자신의 캐시 DB에도 존재하는 지 확인해본다. 캐시, 쿠키, 세션등의 내용은 다음에 또 다뤄볼 예정이다.)
Local DNS 서버에서 먼저 Root DNS 서버로 DNS Query를 보낸다.
www.naver.com에 해당하는 ip주소가 있는 지 확인 요청을 한다고 생각하면 된다.
만약 해당 정보가 없는 경우
Root DNS 서버에서는 도메인 주소의 가장 마지막의 com 도메인을 관리하는 네임서버와 ip 주소를 알려준다.
(com 도메인을 관리하는 네임서버와 ip주소는 Root 네임서버 안에서 가져온다고 생각하면 된다.)
그러면 Local DNS서버는 com DNS 서버로 DNS Query를 보낸다.
만약 해당 정보가 없는 경우
com DNS 서버에서는 도메인 주소의 그 다음 정보인 naver.com 도메인을 관리하는 네임서버와 ip 주소를 알려준다.
그리고 또 같은 방식으로 naver.com DNS 서버로 DNS Query를 보내게 되고
해당 네임서버에서 naver.com에 해당하는 ip주소를 최종적으로 얻게 되면
Local DNS 서버가 해당 ip 주소를 pc에 보내주고
우리의 컴퓨터는 해당 ip 주소에 해당하는 홈페이지를 띄우는 방식이라고 보면 된다.
용어가 복잡하긴 하지만 결론적으로는
도메인을 분리하여 지속적인 질의를 통해
해당 도메인의 ip주소가 저장되어 있는 네임서버를 알아내고
그에 맞는 ip 주소를 가져와서 웹 브라우저로 띄어주는 것
이다.
이 과정을 DNS가 동작할 수 있게 해주는 것이고
그 과정으로 가져온 ip주소로 컴퓨터가 접속하게 되는 것이다.
그리고 이런 시스템이 동작하기 위해선 도메인, ip 주소는 중복될 수 없음을 알 수 있다.
카페24나 가비아, 후이즈 등 도메인 관리 및 등록 업체를
이용해본 사람이면 어떤 의미인지 더 이해하기 쉬울 것이다.
해당 업체를 이용해 홈페이지를 오픈하고 싶은 경우
가장 먼저 내가 사용하려고 하는 도메인(URL)이 사용 중인가? 를 가장 먼저 확인하게 되는데,
그 이유가 이런 DNS 과정을 통해 ip주소를 가져오기 때문인 것이다.
개발을 하며 항상 하는 생각은
당연한 것은 없다
라는 생각을 가장 많이 하게 되는 것 같다.
이 블로그를 쓰기 위한 마우스 클릭 한 번도
시스템 내에선 굉장히 많은 작업이 필요로 하다.
어? 작동하네? 라는 생각으로 그쳐서는 안된다고 했다.
왜 작동하게 되는 거지? 를 먼저 생각해봐야 한다고 했다.
그래서 시스템 동작과정에 대한 이론적인 내용을 많이 다뤄볼 생각이다.
첫번째 정리 끄읏 ~!
'개발일기' 카테고리의 다른 글
로그인, 로그아웃의 동작원리? 쿠키와 세션, 웹 스토리지 이론 (0) | 2023.10.15 |
---|---|
이클립트(Eclipse) 다운로드 및 설치 방법 (0) | 2023.10.15 |
방화벽이란? ip주소, 포트번호에 대한 이론적 내용 정리 (1) | 2023.10.15 |
WEB 서버와 WAS(Web Application Server)의 차이 (1) | 2023.10.15 |
HTTP와 HTTPS 개념 및 차이점은 무엇일까? (1) | 2023.10.15 |