사용자가 브라우저를 통해서 서버에 웹사이트를 요청을 하면 서버가 브라우저로 응답을 해주는 방식이다. 요청과 응답의 방식인 것이다.
사용자가 브라우저에 www.wecode.co.kr URL을 입력함으로서 해당하는 wecode 서버에 요청을 하게 된다. 이것은 마치 백엔드와 프론트 사이에서 API를 이용해서 요청하고 응답하는 통신을 하는 것처럼 하나의 HTTP 통신 요청인 것이다. 그래서 이 요청에 대해서 wecode 서버가 브라우저로 응답을 하면 컨텐츠가 나오게 되는 것이다.
인터넷에 띄운다는 것은 홈페이지의 구성파일들이(html, css, js) 인터넷에 항상 연결되고 절대 꺼지지 않는 호스트 컴퓨터*(웹서버)에 저장되어 있다가 사용자의 요청이 오면 언제든지 응답하는 것을 말한다.
즉, 서버 컴퓨터의 전체 또는 일정 공간을 이용할 수 있도록 임대해주는 서비스를 일컫는다.
예시) AWS ec2/S3, cafe24 호스팅센터 등
사용자가 URL을 입력했을 때 어떻게 브라우저는 어떤 컴퓨터가 우리가 원하는 파일을 갖고 있는 호스트 서버 컴퓨터인지 알고 파일을 응답받을 수 있을까? 수 많은 호스트 서버가 있을 텐데?
이때 사용하는 것이 바로 IP 주소이다.
IP 주소는 인터넷으로 통신하는 각 device(컴퓨터, 총신장비)에 부여된 고유한 값이다. 인터넷이 통신될 때 그 device의 고유한 IP 주소값이 할당되는 것이다. 각기 다른 장비에서도 인터넷이 연결되어 있다면, 각각의 고유한 IP 주소 값이 할당된다.
인터넷 상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신하며, 이러한 고유한 숫자 값을 IP 주소라고 한다.
컴퓨터가 읽을 수 있는 언어인 숫자 0과 1로 표시되어 있고, 약 43억개의 주소 조합이 나올 수 있다. (IPv4 방식이며, 지금은 거의 다 찼다고 한다.)
그렇다면, 홈페이지에 접속할 때마다 IP 주소를 입력해야 할까?
서버에 부여된 고유한 값인 IP 주소를 하나하나 외울 수 없기 때문에, 사용자가 쉽게 기억하고 사용할 수 있도록 문자(string)로 된 고유한 주소를 사용한다. 이것이 Domain 이다.
그렇다면, 사용자가 Domain 주소를 입력할 때 해당 IP 주소로 어떻게 연결될까? 바로 DNS를 통해서 연결된다.
DNS 또는 Domain Name Ststem 은 사람이 읽을 수 있는 Doamin Name(예: www.wecode.com)을 머신이 읽을 수 있는 IP주소(예: 192.0.2.44)로 매핑해서 변환해준다. 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 한다.
DNS 서버가 Domain 주소로 IP 주소를 찾으려고 요청하는 것을 쿼리라고 일컬으며, 즉 DNS 서버는 도메인과 서버를 연결해주는 중간 서버라고 할 수 있다.
웹이 동작하는 원리를 이해하기 위해서 먼 길을 돌아왔다!
그렇다면 배운 것을 토대로 다시 한번 정리해보자.
사용자가 브라우저에 URL을 입력했을 때 응답을 받는 과정은 다음과 같이 설명할 수 있을 것이다.
1. 사용자가 브라우저를 열고 URL을 입력하면 DNS 서버를 거쳐서 고유한 IP 주소를 받고
2. 사용자의 브라우저는 이 고유한 IP 주소를 가지고 있다가
3. 사용자가 URL 주소를 입력할 때마다 IP 주소를 가지고 타겟 서버로 호출을 한 뒤,
4. 살펴보고자 했던 웹사이트의 HTML/CSS/JS 파일을 응답으로 받을 것이다.
✔️ 이것이 사용자가 브라우저에 URL을 입력했을 때 어떻게 웹이 동작하는지에 대한 최소한의 설명이다.