본문 바로가기
1주차

웹 브라우저의 작동 원리

by primav 2025. 4. 9.

웹 브라우저의 작동 원리

웹사이트를 방문하면 브라우저는 어떻게 HTML, CSS, JavaScript를 받아서 화면에 보여줄까?

이 과정은 파싱 → 렌더링 → 그리기의 흐름으로 이뤄진다.

 


 

📌 1.  리소스 요청 (Request)

브라우저 주소창에 URL을 입력하면, 다음과 같은 과정이 일어난다:

  1. DNS 조회 → 도메인(IP 주소) 확인
  2. HTTP 요청 → HTML 파일 요청
  3. HTML 파싱 중 CSS, JS, 이미지 등 추가 리소스 요청

HTML이 도착하면 즉시 파싱이 시작되며, 동시에 CSS/JS 파일도 비동기적으로 요청됨

 


📌 2. 렌더링 엔진(Rendering Engine)이란?

브라우저에서 웹 페이지를 그리는 역할을 하는 핵심 컴포넌트

 

브라우저 렌더링 엔진
Chrome, Edge, Brave Blink
Safari WebKit
Firefox Gecko

렌더링 엔진은 다음 작업을 수행한다.

  • HTML, CSS 파싱
  • DOM, CSSOM 생성
  • Render Tree 구성
  • Layout & Painting
  • 화면에 최종 출력

📌 3.  파싱(Parsing) 과정

3-1. HTML 파싱 → DOM 생성

HTML 문서를 토큰 단위로 분석하여 트리 구조의 DOM(Document Object Model) 생성

<body>
  <h1>Hello</h1>
  <p>World</p>
</body>

DOM 트리
└── <body>
    ├── <h1> → "Hello"
    └── <p> → "World"

 

3-2. CSS 파싱 → CSSOM 생성

CSS 파일(또는 <style> 태그)을 파싱하여 CSSOM(CSS Object Model) 생성

p {
  color: blue;
  font-size: 16px;
}
→ CSS 규칙을 트리 형태로 구성

📌 4.  Render Tree 생성

  • DOM + CSSOM 을 결합해 Render Tree(렌더 트리) 를 생성
  • 시각적으로 화면에 보여질 요소만 포함됨 (예: display: none은 포함되지 않음)

📌 5. Layout 단계 (Reflow)

  • 각 요소의 위치와 크기를 계산
  • 브라우저 창 크기, 폰트 크기, 박스 모델(box-sizing) 등에 따라 결정됨

📌 6.  Paint 단계

  • 요소들의 색상, 텍스트, 그림자, 테두리 등 스타일을 픽셀 단위로 변환
  • GPU 또는 CPU를 이용해 실제 화면에 그리기 위한 준비

📌 7.  Composite 단계 (합성)

  • 여러 레이어(layer)를 합성하여 최종 화면을 그리는 단계
  • 스크롤, 애니메이션 최적화 등에서 중요

📌 8.  자바스크립트의 역할

  • 브라우저는 JavaScript를 자바스크립트 엔진 (예: V8, SpiderMonkey)으로 실행
  • JS가 DOM을 조작하면 Reflow / Repaint가 다시 일어날 수 있음
document.querySelector('p').style.color = 'red';

→ DOM 조작 → Paint 다시 수행


📌 9.  전체 흐름 요약

HTML 요청
 ↓
HTML 파싱 → DOM
CSS 파싱 → CSSOM
 ↓
Render Tree 생성
 ↓
Layout (위치/크기 계산)
 ↓
Paint (스타일 적용)
 ↓
Composite (레이어 결합)
 ↓
화면에 출력!
 

 

📌 10. 최적화 관련 팁

  • CSS는 HTML 파싱을 막지 않지만, JS는 중단시킴
  • <script>는 defer 또는 async 사용 권장
  • 자주 변경되는 요소는 transform, opacity 사용 → GPU 처리 가능
  • 복잡한 DOM 변경은 requestAnimationFrame 활용

마무리

웹 페이지가 사용자 화면에 나타나기까지는 수많은 파싱, 계산, 렌더링, 합성 작업이 일어난다.
이 흐름을 이해하면 웹 성능 최적화는 물론, 디버깅이나 CSS/JS 작성 시에도 더 나은 판단을 할 수 있다!