[궁금해서 찾아본] URL을 입력하세요 - 1

Hoon Kang·2023년 3월 1일
7

궁금해서 찾아본

목록 보기
1/3
post-thumbnail

🤔 호기심의 시작

프론트엔드 스쿨 두 번째 날, 수업을 들으면서 웹 브라우저 검색창에 네이버를 검색할 경우 어떤 일이 벌어지는지 간략하게 배우게 되었다. 대략 이런 과정이었다.

www.naver.com ➡️ DNS ➡️ 223.130.195.200 ➡️ 서버 ➡️ 웹 브라우저에 표시

아하, 저런 과정이구나. 이해는 했지만 조금 더 알아보고 싶어졌다.

  • URL은 어떻게 구성되어 있을까?
  • 포트에 대해서 자세히 알고 싶다
  • IP는 종류가 두 개라던데, 왜 그럴까?
  • ...

수많은 질문들이 꼬리에 꼬리를 물었고, 저녁을 먹은 뒤 호기심에 시작된 구글링은 새벽이 되어서야 끝이 났다. 혹시 비슷한 궁금증을 가진 사람이 이 포스트를 보고 도움이 된다면 더할 나위 없이 기쁠 것 같다.

🔎 URL을 입력하면 벌어지는 일

요청과 응답

사실, URL을 브라우저에 입력할 경우 일어나는 일은 생각보다 매우 간단하다.

URL을 입력하면 일어나는 일은 마치 전화로 영화 예매를 하는 것과 같다. 전화로 영화를 예매해 본 적이 없다고? 놀라지 마시라. 그런 시절이 있었다. 영화관에 전화를 하면 영화 상영 시간표를 확인하고 예매를 하는 시스템이었는데, URL을 브라우저에 입력할 때 일어나는 일 역시 이와 유사하다.

내가 영화 시간표를 물어보면(요청), 영화관에서는 영화 상영 시간표를 알려준다(응답). 네트워크 통신에서는 요청을 보내는 쪽을 클라이언트(Client), 요청을 받고 처리해 응답을 보내는 쪽을 서버(Server)라고 부른다. 놀랍게도 매우 간단하다.

그러면 DNS, IP, 포트는 뭐야?

맞다. 사실 간단하지 않다. 최대한 간단해 보이게 비유를 통한 설명을 한 것일 뿐, 실제로는 우리 눈에 보이지 않는 더 복잡한 과정들이 일어난다. 조금만 깊게 들어가보자.

DNS: 도메인 이름을 IP로


갑자기 처음 보는 친구가 등장했다. 바로 DNS다. 이 친구가 하는 일은 다음과 같다:

DNS(Domain Name System; 도메인 네임 시스템) 은 사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환합니다.

그런데 왜 이런 과정이 필요할까? 당연히 IP주소는 사람이 이해하기 힘들기 때문이다.

😯 IP, 넌 뭐야?

IP(Internet Protocol)는 인터넷에서 컴퓨터나 기기들이 서로 통신하기 위해 사용하는 주소 체계이다. 마치 사람이 어떤 장소를 찾아갈 때 도로명주소를 검색하는 것 처럼, 컴퓨터 역시 특정 웹 페이지를 찾아가기 위해서는 IP주소를 알아야 한다. IP주소에는 두 가지가 존재하는데, IPv4IPv6이다.

  • IPv4: 네 개의 10진수로 표현한다. ex) 223.130.195.200
  • IPv6: 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주소로 바꿀 수 있을까?

💪 도메인 이름을 IP주소로 바꾸는 힘!


DNS에서는 이런 일이 일어나고 있다. 사실 우리가 웹 브라우저에 www.naver.com을 입력해도, 컴퓨터는 그것을 이해하지 못한다. 그렇기 때문에 브라우저는 먼저 이 www.naver.com을 DNS에서 찾아볼 수 있도록 하는 요청을 보낸다(DNS Lookup 요청). 요청을 받은 DNS 내부에는 도메인 이름을 IP주소로 변환할 수 있는 변환 테이블이 존재한다. DNS는 해당 도메인 이름과 쌍을 이루고 있는 IP주소를 찾은 다음, 해당 IP주소를 웹 브라우저에 보낸다(DNS 응답).

  • 브라우저에서 DNS로 도메인 이름에 대한 DNS lookup 요청을 보내면
  • DNS에서 도메인 이름에 대응하는 IP주소를 브라우저로 보낸다

이제 브라우저는 이 IP 주소를 가지고 원래 요청을 보내고자 했던 서버에 요청을 보내고, 서버는 해당 요청을 바탕으로 응답을 클라이언트에 전달한다. 우리는 드디어 네이버 홈페이지를 볼 수 있게 되었다!

정리하자면

  1. 우리가 원하는 URL을 웹 브라우저에 입력한다.
  2. 웹 브라우저(클라이언트)는 해당 URL을 바탕으로 DNS에 요청을 보낸다.
  3. DNS는 변환 테이블을 통해 도메인 이름을 IP주소로 변환한다.
  4. 변환된 IP주소는 DNS에서 응답의 형태로 웹 브라우저에 보내진다.
  5. 웹 브라우저는 이 IP주소를 바탕으로 서버에 요청을 보낸다.
  6. 서버는 해당 요청을 받아 처리한다.
  7. 처리된 결과물은 서버로부터 웹 브라우저에 응답의 형태로 전송된다.

그렇다면 URL에는 도대체 무엇이 들어있길래 우리를 우리가 원하는 곳으로 데려다 줄까?
URL이 어떻게 구성되어 있는지, 포트가 어떤 역할을 하는지는 다음 포스트에서 알아보자!

👀 TMI

  • IPv6IPv4의 주소가 부족해지자 등장했다. IPv4가 2^32개의 주소를 표현할 수 있다면, IPv6는 2^128개의 주소를 표현할 수 있다.

  • 도메인과 URL, 둘은 서로 같을까? 비슷하지만 완전히 같지는 않다. 다음 포스트에서 차이점을 알아보도록 하자.

profile
세상의 모든 것들이 궁금한 개발자

2개의 댓글

comment-user-thumbnail
2023년 3월 1일

유익한 글 잘 읽었습니다ㅎㅎ

1개의 답글