오늘날 인터넷을 사용하는 모든 디바이스에서 떼어낼 수 없는 것 중 하나인 브라우저는 HTML 문서와 그림, 멀티미디어 파일 등 월드 와이드 웹(WWW)을 기반으로 한 인터넷의 컨텐츠를 검색 및 열람하기 위한 응용 프로그램을 뜻한다. 쉽게 말해 사람들이 월드 와이드 웹에 접근할 수 있도록 해주는 소프트웨어 어플리케이션이라고 할 수 있다. 해당 글에서는 이러한 브라우저가 어떻게 작동되는 지에 대해 알아보도록 하겠습니다.
World Wide Web
인터넷에 연결된 컴퓨터를 이용해 사람들과 정보를 공유할 수 있는 공간을 뜩하는 용어. HTTP 프로토콜을 기반으로 HTML로 작성된 페이지를 웹 브라우저라는 특정한 프로그램으로 읽을 수 있게 하도록 구성되어 있다.
브라우저가 어떻게 작동되는 지 알기 전에 브라우저가 어떤 구성을 이루고 있는 지를 알아보겠습니다.
모든 웹 브라우저는 크게 프론트엔드(Front-end)와 백엔드(Back-end)로 나누어져 있다. 이를 다시 세분화하여 사용자인터페이스, 브라우저 엔진, 렌더링 엔진, 네트워킹, 자바스크립트 해석기, UI 벡엔드, 자료 저장소로 나뉜다.
인터페이스는 사용자와 브라우저가 소통하는 공간이다.주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등을 포함하여 웹 페이지가 표시되는 부분까지 사용자 인터페이스로 칭한다.
작업 표시줄, 이전/다음 버튼 등이 사용자 인터페이스인가 ?
이 글을 보게되는 누군가가 있다면 이에 대한 답글을 남겨주세요. 여기나 MDN 에서는 interface라고 말하지만 Naver에는 제외한 모든 부분을 유저 인터페이스라고 부르네요 하하
브라우저 엔진은 유저 인터페이스와 렌더링 엔진을 연결하여 유저 인터페이스로부터 넘어오는 인풋들을 바탕으로 렌더링 엔진을 관리, 조작한다.
렌더링 엔진은 요청받은 페이지를 브라우저 스크린 상에 보여주는 역할을 수행한다. 예를 들어 HTML를 요청하면 HTML과 CSS를 파싱하여 화면에 표시한다.
네트워킹은 인터넷 호출과 보안을 처리한다.
자바스크립트 코드를 해석하고 실행
셀레그 박스, 인풋, 윈도우, 체크박스 등과 같은 장치를 그리는 역할
쿠키, 로컬 저장소, 세션, 인덱스 데이터베이스, 웹 SQL, 파일시스템 등 모든 데이터를 저장하는 계층
웹 브라우저에 URL을 입력하여 엔터키를 누른 이후의 과정입니다.
웹 페이지 탐색의 첫 번째 단계는 해당 페이지의 위치를 찾는 것 입니다. 만약 방문한 적이 있는 사이트에로 이동을 하게 된다면 In Server안의 IP주소를 통해 이동합니다. 하지만 방문한 적이 없다면 DNS 조회를 통해 IP 주소를 찾고 이동합니다.
IP 주소가 알려지면 브라우저는 TCP HandShake 를 통해 서버에 대해 연결을 설정합니다. 이 과정을 통해 서버와 브라우저간 데이터 전송을 위한 설정을 할 수 있습니다.
만약 http가 아닌 https라면 TLS를 통해 새로운 암호를 설정하고 실제 데이터 전송을 시작하기 전에 보안 연결이 설정되어 있는 지를 확인ㅇ합니다.
웹 서버에 대한 연결이 설정되면 브라우저는 사용자를 대신하여 초기 HTTP GET 요청을 보냅니다. 이 경우 대부분 HTML 파일은 보냅니다.
파싱은 어떤 페이지에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출해 가공하는 것을 말한다. 브러우저가 네트워크를 통해 수신한 데이터를 DOM 및 CSSOM로 변환하기 위해 취하는 단계. 파싱 결과는 보통 문서 구조를 나타내는 DOM트리, 노드 트리, 파싱 트리, 문법 트리라고 부른다.
파싱으로 생성된 DOM과 CSSOM을 결합하여 렌더 트리를 형성합니다.
렌더링 트리가 생성될 때, 각 렌더 객체가 위치와 크기를 갖게 되는 과정을 레이아웃이라한다.
레이아웃이 계산된 트리를 화면에 그려집니다.
순서