프론트엔드 스쿨 두 번째 날, 수업을 들으면서 웹 브라우저 검색창에 네이버를 검색할 경우 어떤 일이 벌어지는지 간략하게 배우게 되었다. 대략 이런 과정이었다.
www.naver.com ➡️ DNS ➡️ 223.130.195.200 ➡️ 서버 ➡️ 웹 브라우저에 표시
아하, 저런 과정이구나. 이해는 했지만 조금 더 알아보고 싶어졌다.
수많은 질문들이 꼬리에 꼬리를 물었고, 저녁을 먹은 뒤 호기심에 시작된 구글링은 새벽이 되어서야 끝이 났다. 혹시 비슷한 궁금증을 가진 사람이 이 포스트를 보고 도움이 된다면 더할 나위 없이 기쁠 것 같다.
사실, URL을 브라우저에 입력할 경우 일어나는 일은 생각보다 매우 간단하다.
URL을 입력하면 일어나는 일은 마치 전화로 영화 예매를 하는 것과 같다. 전화로 영화를 예매해 본 적이 없다고? 놀라지 마시라. 그런 시절이 있었다. 영화관에 전화를 하면 영화 상영 시간표를 확인하고 예매를 하는 시스템이었는데, URL을 브라우저에 입력할 때 일어나는 일 역시 이와 유사하다.
내가 영화 시간표를 물어보면(요청), 영화관에서는 영화 상영 시간표를 알려준다(응답). 네트워크 통신에서는 요청을 보내는 쪽을 클라이언트(Client)
, 요청을 받고 처리해 응답을 보내는 쪽을 서버(Server)
라고 부른다. 놀랍게도 매우 간단하다.
그러면 DNS, IP, 포트는 뭐야?
맞다. 사실 간단하지 않다. 최대한 간단해 보이게 비유를 통한 설명을 한 것일 뿐, 실제로는 우리 눈에 보이지 않는 더 복잡한 과정들이 일어난다. 조금만 깊게 들어가보자.
갑자기 처음 보는 친구가 등장했다. 바로 DNS다. 이 친구가 하는 일은 다음과 같다:
DNS(Domain Name System; 도메인 네임 시스템) 은 사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환합니다.
그런데 왜 이런 과정이 필요할까? 당연히 IP주소는 사람이 이해하기 힘들기 때문이다.
IP(Internet Protocol)
는 인터넷에서 컴퓨터나 기기들이 서로 통신하기 위해 사용하는 주소 체계이다. 마치 사람이 어떤 장소를 찾아갈 때 도로명주소를 검색하는 것 처럼, 컴퓨터 역시 특정 웹 페이지를 찾아가기 위해서는 IP주소를 알아야 한다. IP주소에는 두 가지가 존재하는데, IPv4
와 IPv6
이다.
IPv4
: 네 개의 10진수로 표현한다. ex) 223.130.195.200IPv6
: 16진수로 표현한다. ex) 2001:0db8:85a3:0000:0000:8a2e:0370:7334자 이제 우리가 DNS가 없는 세상에 산다고 해 보자. 우리의 대화 패턴은 이런식이 되었을 것이다.
A: 아 네이버 어떻게 들어가더라? 너 IP주소 기억해?
B: 잠시만, 223.130.1...기억이 안 난다. 폰에 적어뒀었는데...
C: 223.130.195.200. 이거 맞지?
물론 주소 한 두개 정도는 외울 수 있겠지만, 외워야 할 웹페이지의 주소가 10개만 넘어가도 인터넷은 원주율을 소수 쉰 여덟번째 자리까지 외울 수 있는 사람들만의 전유물이 되었을 것이다. 그렇기 때문에 사람이 읽을 수 있는 도메인 이름을 설정해 주게 되었고, 이를 컴퓨터가 이해할 수 있도록 IP주소로 변환할 수 있는 DNS가 등장하게 된 것이다. 그렇다면 DNS는 어떻게 도메인 이름을 IP주소로 바꿀 수 있을까?
DNS에서는 이런 일이 일어나고 있다. 사실 우리가 웹 브라우저에 www.naver.com을 입력해도, 컴퓨터는 그것을 이해하지 못한다. 그렇기 때문에 브라우저는 먼저 이 www.naver.com을 DNS에서 찾아볼 수 있도록 하는 요청을 보낸다(DNS Lookup 요청
). 요청을 받은 DNS 내부에는 도메인 이름을 IP주소로 변환할 수 있는 변환 테이블이 존재한다. DNS는 해당 도메인 이름과 쌍을 이루고 있는 IP주소를 찾은 다음, 해당 IP주소를 웹 브라우저에 보낸다(DNS 응답
).
이제 브라우저는 이 IP 주소를 가지고 원래 요청을 보내고자 했던 서버에 요청을 보내고, 서버는 해당 요청을 바탕으로 응답을 클라이언트에 전달한다. 우리는 드디어 네이버 홈페이지를 볼 수 있게 되었다!
그렇다면 URL에는 도대체 무엇이 들어있길래 우리를 우리가 원하는 곳으로 데려다 줄까?
URL이 어떻게 구성되어 있는지, 포트가 어떤 역할을 하는지는 다음 포스트에서 알아보자!
IPv6
는 IPv4
의 주소가 부족해지자 등장했다. IPv4
가 2^32개의 주소를 표현할 수 있다면, IPv6
는 2^128개의 주소를 표현할 수 있다.
도메인과 URL, 둘은 서로 같을까? 비슷하지만 완전히 같지는 않다. 다음 포스트에서 차이점을 알아보도록 하자.
유익한 글 잘 읽었습니다ㅎㅎ