본문 바로가기
Front-end (프론트엔드)/Browser (브라우저)

[프론트엔드] 브라우저 구조/ 브라우저 원리/ 브라우저 렌더링 과정

by dreamer10457 2023. 11. 25.
반응형

소개

오늘은 프론트엔드 개발자라면 꼭 알아야 할 브라우저의 구조, 브라우저의 원리, 브라우저의 렌더링 과정에 대해 알아보도록 하겠습니다.


목차

- 브라우저의 정의

- 프론트엔드 개발자가 브라우저를 알아야 하는 이유

- 브라우저의 구조

- 브라우저의 동작원리

- 브라우저 렌더링 정의 및 과정


1) 브라우저의 정의

Web에서 페이지를 찾아서 보여주고, 하이퍼링크를 통해 사용자가 다른 페이지로 이동할 수 있도록 도와주는 프로그램입니다.

크롬, 파이어폭스, 사파리, 인터넷 익스플로러(IE) 등이 있습니다. 


2) 프론트엔드 개발자가 브라우저를 알아야 하는 이유

프론트엔드 개발자는 브라우저에서 동작하는 어플리케이션을 만들기 때문입니다. 웹 어플리케이션 개발, 브라우저 호환성, 성능 최적화, 디버깅, 보안, 취약점 관리 등을 효과적으로 수행하기 위해 중요합니다.


3) 브라우저의 구조

브라우저의 구조

 

  1. 사용자 인터페이스 - 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등을 가리킵니다.
  2. 브라우저 엔진 - 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어합니다.
  3. 렌더링 엔진 - 요청한 콘텐츠를 표시합니다. 예를 들어 HTML을 요청하면 HTML을 파싱하여 화면에 표시합니다. 사파리와 크롬은 웹킷(Webkit) 엔진을 사용합니다. 
  4. 자바스크립트 해석기 - 자바스크립트 코드를 해석하고 실행합니다. 

4) 브라우저의 동작원리 (검색창에 www.google.com을 검색하면?)

  1. 사용자가 브라우저를 통해 URL 주소(www.google.com)를 입력합니다.
  2. DNS 서버가 DNS 쿼리로 IP 주소를 찾습니다.
  3. IP 주소와 URL 정보는 HTTP 프로토콜을 사용해 HTTP 요청 메시지를 생성합니다.
  4. 해당 서버와 TCP 연결을 통해 브라우저가 웹서버에 HTTP 요청을 보냅니다.
  5. 웹서버는 HTTP 응답 메시지를 생성해 사용자 컴퓨터로 전송합니다.
  6. HTTP 응답 메시지는 HTTP 프로토콜을 이용해 웹 페이지 데이터로 변환됩니다.

=> 즉, 브라우저는 사용자가 선택한 자원(Resource)을 서버에 요청(Request)하고, 서버로부터 받은 응답(Response)을 브라우저에 렌더링합니다.


5) 브라우저 렌더링 정의 및 과정

브라우저 랜더링 과정

 

렌더링이란 브라우저가 유저가 선택한 자원을 서버로부터 받아와 유저에게 받아와 보여주는 것을 말합니다. 브라우저의 렌더링 과정은 다음과 같습니다. 

 

  1. 브라우저가 서버에 필요한 리소스를 요청합니다.
  2. HTML, CSS 파일을 파싱해서 각각 tree 를 만듭니다.
  3. DOM tree 와 CSSOM tree를 결합하여 Render tree를 만듭니다.
  4. Render tree 에서 위치와 크기를 계산합니다. (Layout)
  5. Render tree 의 각 노드를 실제 픽셀로 변환해서 화면에 그려냅니다. (Paint)
  6. 그려진 layout을 합성하는 과정입니다. (Composite)

=> Layout과 Paint 수를 줄이고 Composite layer 작업만 수행하면 최대한 연산작업을 줄일 수 있습니다.


+ DOM  tree와 Render tree의 차이점

 

DOM tree는 뷰포트에 무엇을 랜더링할지 결정하기 위해 사용되는 것입니다. 반면에 Render tree는 DOM tree+CSSOM tree을 합친 것이며 뷰포트에 무엇을 랜더링할지 결정하는 최종적인 트리입니다. 실제로 브라우저에서 랜더링되는 내용과 레이아웃 정보를 포함하고 있습니다. (head 태그, meta 태그 display:none 같이 실질적으로 브라우저의 보이지 않는 영역은 제외됩니다. )

 

DOM, CSSOM, Render tree 의 구조

 


참고자료

브라우저는 어떻게 동작하는가?

https://d2.naver.com/helloworld/59361

자바스크립트 엔진과 렌더링 엔진

https://mygumi.tistory.com/173

How the browser renders a web page? — DOM, CSSOM, and Rendering

https://medium.com/jspoint/how-the-browser-renders-a-web-page-dom-cssom-and-rendering-df10531c9969

브라우저 렌더링에 대한 이해와 최적화

https://velog.io/@yrnana/브라우저-렌더링에-대한-이해와-최적화

 

반응형