JS

[ JavaScript ] 웹 동작방식

람연 2021. 6. 7. 01:26

우리는 웹 브라우저를 통해 정보를 요청한다. 이를테면, 네이버에 접근하는 것 부터 로그인, 검색 등 웹 브라우저를 통해 통하는 행동은 웹 브라우저를 통해 정보를 요청하는 행위이다. 웹 브라우저는 요청을 받으면, 내부적으로 많은 단계를 거쳐 사용자에게 정보를 표현한다. 웹 브라우저는 어떻게 사용자의 요청을 처리하는지에 대해 정리한다.


URL

URL(Uniform Resource Locator)은 웹 페이지를 찾아갈 수 있는 주소이다. 인터넷 상에는 정말 방대한 양의 데이터가 있다. 미국 시장조사기관 IDC에 따르면 2018년 인터넷 상에 존재하는 데이터가 2조 기가바이트를 넘었다. 이와 같이 엄청나게 많은 인터넷 상의 데이터에 접근하기 위해 URL을 사용한다. URL은 고유한 값을 가지며, URL 자체로도 여러 정보를 내포하고 있다.

 

URL 구조

Scheme

특정 URL을 통한 웹 통신시에 사용할 프로토콜에 대한 정보를 갖고있는 영역이다. 대표적으로 http(HyperText Transfer Protocol)와 https(HyperText Transfer Protocol Secure)를 들 수 있다.

 

Domain name

Domain name은 www.tistory.com과 같이 사용자가 인지할 수 있는 문구를 의미한다. 최초 인터넷은 127.0.0.1과 같이 IP를 통해 웹 서버에 접근했다. 하지만, 이러한 방법은 사용자가 접근하기 불편하다는 점과 서버 이전 등의 이유로 IP가 변경되었을때 변경된 IP를 불특정 다수의 사용자들에게 공유하기 힘들다는 점 등의 여러가지 이슈로 탄생했다. 이러한 Domain name은 자체로도 여러가지 정보를 내포하고 있다. 

 

  • Sub Domain : Domain발급 시, 사용할 수 있는 서브 영역이다. 예를 들어, 하나의 tistory Domain에 여러 Sub Domain을 구성할 수 있다.
  • SLD(Second-Level Domain) : 2단계 Domain을 의미하며, 실제 DNS(Domain Name Server)에 등록되어 관리되고 있는 Domain명이다.
  • TLD(Top-Level Domain) : 최상위 Domain을 의미하며, 목적이나 종류 또는 소속되어 있는 국가 정보를 나타낸다. 

 

TLD 종류

Port

웹 서버에 접근하는 포트 정보이다. 웹 서버 접근 시 사용할 포트 정보를 갖는 영역이다. Port정보를 기입하지 않으면 Scheme기준으로 포트를 기본 세팅한다. http는 80포트 https는 443포트로 세팅된다.

 

Path

웹 서버 자원에 대한 경로정보를 갖는 영역이다. 이는 웹 서버에 물리적으로 존재하는 경로 또는 추상화된 경로를 가진다.

 

Query

URL을 통해 웹 서버에 정보를 요청할 때 추가로 제공할 수 있는 파라미터이다. Key-Value 구조를 갖는 리스트형태로 전달할 수 있다. 웹 서버에서 상황에 따라 GET, POST등 여러 방식으로 통신할 수 있는데 GET방식에서 사용하는 방식이다.

 

DNS

DNS(Domain Name Server)는 Domain을 관리하는 서버다. DNS는 Domain Name을 받아, ip를 포함한 해당 웹 서버의 정보를 반환하는 역할을 한다. 웹 서비스를 제공하기 위해 Domain을 생성하게 되면, Domain Name과 ip정보 등이 생성되어 DNS에 등록된다. 이와 같이 ip와 Domain Name정보를 매핑해 관리함으로 서버 이전 등의 이유로 ip가 변경되어도 DNS정보만 수정하면 사용자들은 Domain Name을 통해 접근하기 때문에 원활한 서비스를 제공할 수 있게 해준다.

 

웹 동작과정

사용자가 웹 브라우저를 통해 URL을 요청하면, DNS를 통해 웹 서버를 찾아가고 URL에 맞는 정보를 반환받는다. 아래는 그 과정을 그림으로 표현한 것이다.

웹 브라우저가 통신하는 순서도

  1. 웹 브라우저는 사용자에게 입력받은 url을 분석해 파싱한다. 
  2. DNS에 Domain name으로 서버 정보를 요청한다.
  3. DNS는 Domain name을 기준으로 매칭되는 서버 정보를 반환한다.
  4. HTTP 프로토콜을 통해 HTTP request형태로 변환되며 TCP 계층을 거쳐 전송한다. 이때, HTTP request는 입력받은 URL과 IP 정보를 포함하고있다.
  5. TCP 계층을 거쳐 HTTP request를 수신한다.
  6. HTTP request를 변환해 요청한 서비스에 접근한다.
  7. 요청한 서비스(url) 처리 후 결과를 반환한다. 이때, response에는 html을 구성하는 데이터가 포함되어있다.
  8. HTTP 프로토콜을 통해 다시 HTTP request형태로 변환되며 TCP 계층을 거쳐 사용자에게 전송한다.
  9. TCP 계층을 거쳐 HTTP response를 수신한다.
  10. response를 가공해 웹 페이지를 그린다.