땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • ㅗ
  • E
  • D
  • 이것이 리눅스다 with Rocky Linux9
  • I

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

브라우저의 작동 원리
CS

브라우저의 작동 원리

2021. 12. 27. 21:30

   

웹브라우저가 웹서버에 웹페이지 요청을 하면 웹서버는 웹페이지 응답을 한다.

즉, 서버가 브라우저에게 HTML문서를 전달하고 브라우저는 이를 읽고 해석한 후 Client에게 보여준다.

HTML 및 CSS를 해석하는 구체적인 내용들은 모두 W3C(World Side Web Consortium)에 의해 관리된다.

 

지난 몇년간 브라우저들은 각자 이러한 구체적 규정들의 일부만 충족하며 각 브라우저별 확장 기능을 개발해 왔다. 브라우저별 호환성 이슈가 발생할 수 밖에 없는 구조.

 

웹 브라우저의 구조와 렌더링 엔진

User Interface : 주소창, 뒤로/앞으로 버튼 등을 포함한 화면

Browser Engine : UI와 Rendering Engine 사이에서 중간 매체 역할을 수행

Rendering Engine : 웹서버로부터 응답 받은 내용을 UI 상에 나타냄

Networking : 웹 서버와 통신이 가능하게 함

Javascript Interpreter : 자바스크립트 코드를 파싱하고 실행

UI Backend : UI 구동이 가능하게 함

Data Persistence(Data Storage) : 쿠키와 같은 로컬 데이터를 저장

 

렌더링 엔진

- 사용자가 요청해서 웹서버가 응답한 HTML 문서를 HTML과 CSS로 파싱해서 화면을 구성

** 파싱 : 어떤 페이지(문서, HTML 등)에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출해 가공하는 것

- 렌더링 엔진은 여러 개의 인스턴트를 한 번에 구동할 수 있다.

- IE(Internet Explorer) : Trident

  FireFox : Gecko

  Safari : Webkit

  chrome, opera : Webkit의 일종인 Blink

- Webkit은 오픈소스 렌더링 엔진으로 원래 리눅스 플랫폼에 사용되었다.

 

 

렌더링 엔진 동작 방식

렌더링 엔진은 웹서버로부터 전달받은 HTML 문서를 맨 처음 네트워크 레이어에서 불러온 후 아래와 같은 FLOW를 거친다.

1. HTML 파싱 후 DOM 트리 만들기

2. 렌더 트리(Render Tree) 만들기

3. 렌더 트리(Render Tree) 레이아웃 만들기

4. 렌더 트리 페인팅(Render Tree Painting)

 

HTML 파싱 후 DOM 트리 만들기

렌더링 엔진은 우선 네트워크 레이어를 통해 전달받은 HTML 문서를 파싱하여 각 요소들을 DOM Tree의

각 DOM 노드들로 전환한다. 

** DOM(Document Object Model) : 마크업 형태의 HTML 문서를 오브젝트 모델의 형태로 바꿔놓은 것

<html>
    <body>
        <p>Hello world</p>
        <div><img src="example.png"></div>
    </body>
</html>

HTML 코드를 DOM Tree로 전환

HTML, body 부모 태그 안에 단락을 나타내는 <p>, 한 요소를 나타내는 <div> 태그가 자식 태그로 존재

 

렌더 트리(Render Tree) 만들기

HTML 문서들을 파싱하여 DOM Tree를 구성한 후,

렌더링 엔진은 CSS/STYLE 데이터를 파싱하고 그 스타일 데이터들로 렌더 트리(Render Tree)를 만든다.

DOM Tree가 웹 상에 나타날 내용을 구성한다면 렌더 트리는 시각적 요소, 어떻게 나타날지 스타일 지정함

렌더 트리 각각의 정사각형에 해당하는 Renderer들은 DOM Tree 요소들에 적용되지만 1:1관계가 성립되는 것은 아니다. 또한 시각적이지 않은 DOM 요소들은 렌더 트리에 삽입될 수 없다(ex.<head>태그)

 

렌더 트리(Render Tree) 레이아웃 만들기

레이아웃을 만든다는 것은 각 노드들에게 스크린의 어느 공간에 위치해야 할지 각각의 값을 부여하는 것

 

 

렌더 트리 페인팅(Render Tree Painting)

렌더 트리가 만들어져 레이아웃이 구성되었다면, UI 백앤드가 동작하여 각 노드들을 정해진 스타일 및 위치값대로 화면에 배치한다.

 

더 나은 UX를 위해, 렌더링 엔진은 각 콘텐츠를 가능한한 빨리 스크린에 띄워야하기 때문에 모든 HTML 요소들을 렌더링 엔진으로 넣어서 한번에 출력하는 것이 아닌, 일부 콘턴츠는 먼저 트리 과정을 거쳐 스크린에 나타나고, 그 와중에 웹의 다른 요소들은 네트워크를 통해 렌더링 엔진으로 읽어들어 오는 순차적인 방식으로 입출력 진행

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 : https://it-ist.tistory.com/110

'CS' 카테고리의 다른 글

동시성(Concurrency)와 병렬성(Parallelism)  (0) 2021.12.28
호스팅이란 무엇인가  (0) 2021.12.28
DNS와 작동 원리  (0) 2021.12.28
웹의 동작 방식  (0) 2021.12.27
인터넷 작동의 원리(Network)  (0) 2021.12.27
    'CS' 카테고리의 다른 글
    • 호스팅이란 무엇인가
    • DNS와 작동 원리
    • 웹의 동작 방식
    • 인터넷 작동의 원리(Network)
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바