SlideShare a Scribd company logo
1 of 26
Download to read offline
웹  브 라 우 저 는  
어 떻 게 동 작 하 나 ?

         허 준 회  
 http://opensoftware.kr
소 개

허 준 회 (joone@webkit.org, @joone_net)
WebKit Committer
WebKitGtk+, webkit-clutter 개 발




http://collabora.com
http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
주 요     내 용

•   웹 브 라 우   저     역 할 과 구 조
•   웹 엔 진 의      역 할 과 구 조
•   주 요 실 행       흐 름
•   로 딩 &     파 싱
•   DOM 트      리 & CSS 규 칙 트 리   생 성
•   스 크 립 트     와 CSS 처 리 순 서
•   렌 더 트 리      생 성
•   레 이 아 웃
•   그 리 기
웹 브 라 우 저 가                             주 로   하 는     일

•   URL     입 력     을     받 는       다
•   서 버 에      요    청 을        보    낸 다 .
•   웹 페 이    지     를 불       러     온 다
•   웹 페 이    지     에 속       한      이 미 지 , JS 파 일   , CSS 파 일   등 을   불 러 온 다
•   자 바 스    크     립 트     를       실 행 한 다
•   화 면 에      컨    텐 트      를      표 시 한 다
브 라 우 저   전 반 적 인   구 조
웹 엔 진 이      하 는    일

•   불 러 오 기 (Loading)
•   파 싱 (Parsing)
•   자 바 스 크 립 트 실 행
•   CSS 처 리
•   레 이 아 웃 (Layout) 작 업
•   그 리 기
•   이 벤 트 처 리
•   HTML 편 집
웹 엔 진   아 키 텍 처
주 요   실 행   흐 름
웹 킷   예
불 러 오 기       (Loading)




 웹 페 이 지 와   페 이 지 에   속 한   모 든   리 소 스 를   불 러 오 는   과 정
파 싱   (Parsing)
                  HTML 문 서   => DOM 트 리
HTML 파 싱       특 징

• 오 류 를 허 용
• 파 싱 도 중 에   문 서    수 정   가
  능
DOM 트 리
<html>
 <body>
  <p> Hello World </p>
  <div> <img src="example.png"/></div>
 </body>
</html>
CSS 규 칙   트 리   생 성
Firefox Style Context Tree
스 크 립 트 와                CSS 처 리                    순 서

• HTML 은 기 본 적            으 로 동 기 적 처 리
• 스 크 립 트 가 샐 행           될 때 , 보 통 파 싱         은   중 지
   o defer, async        속 성 지 원 으 로 동           시 처 리 가 능
• 파 싱 중 스 크 립 트            가 CSS 정 보 요            청 가 능  
   o CSS 처 리 중          일 때 , 관 련 스 크           립 트 실 행 중 지




참 고 : http://peter.sh/experiments/asynchronous-and-deferred-javascript-execution-
explained/
주 요   실 행   흐 름
렌 더    트 리    생 성




 • No render object for non visual DOM elements
 • Some elements has several render objects
    o <select>, text
 • CSS Position => float, fixed
렌 더 트 리   생 성




                      RenderView

       RenderObject(p)              RenderObject(div)
      RenderObject("Hello World")   RenderObject(img)
레 이 아 웃
• 렌 더   객 체 가 위 치 와 크 기 가 갖 게 되 는 과 정
• 트 리   탐 색 Left-to-right, top-to-bottom
비 동 기         및      동 기 식       레 이 아 웃

• Dirty bit system
• 비 동 기 및 동 기 식 레 이 아 웃
  o   비 동 기       : Incremental layout
  o   동 기 식       : Global layout, 스 크 립 트 에 서   layout 변 경 시
Layout Process
그 리 기     (Painting)

• 2D 벡 터 드 로 잉 필 요
   o Cairo, Direct2D, Skia
• 일 반 적 인 데 스 크 탑 브 라 우 저
   o expose 발 생 시 바 로 바 로 전 체 / 일 부   영 역   그 림
• 모 바 일 / 크 롬 브 라 우 저
   o 비 트 맵 형 태 로 그 린 결 과 를 따 로 저 장
그 리 기    순 서

• 렌 더 트 리 를 탐 색 하 면 서 paint() 실 행
• Global and Incremental Painting
• 그 리 기 순 서 (CSS2.1)
   o background color
   o background image
   o border
   o children
   o outline
참 고

• How Browsers
  Work, http://www.html5rocks.com/en/tutorials/int
  ernals/howbrowserswork/
• Rendering in WebKit, http://www.youtube.com/watch?
  v=RVnARGhhs9w
• How WebKit Loads a Web
  Page, http://www.webkit.org/blog/1188/how-webkit-loads-a-
  web-page/

More Related Content

What's hot

HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSSdgmong
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음DataUs
 
HTML5 & CSS 살펴보기
HTML5 & CSS  살펴보기HTML5 & CSS  살펴보기
HTML5 & CSS 살펴보기Suan Lee
 
프론트엔드스터디 E02 css dom
프론트엔드스터디 E02 css dom프론트엔드스터디 E02 css dom
프론트엔드스터디 E02 css domYoung-Beom Rhee
 
비개발자를 위한 Javascript 알아가기 #2
비개발자를 위한 Javascript 알아가기 #2비개발자를 위한 Javascript 알아가기 #2
비개발자를 위한 Javascript 알아가기 #2민태 김
 
웹표준의 이해
웹표준의 이해웹표준의 이해
웹표준의 이해Leehooan
 
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9yamoo9
 
프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer ModelHan Lee
 
웹 개발 스터디 02 - javascript, bootstrap
웹 개발 스터디 02 - javascript, bootstrap웹 개발 스터디 02 - javascript, bootstrap
웹 개발 스터디 02 - javascript, bootstrapYu Yongwoo
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. restTerry Cho
 
3.web의역사와browser
3.web의역사와browser3.web의역사와browser
3.web의역사와browsercheonsu park
 
브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?Minseok Jang
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summaryHoChul Shin
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기SangJin Kang
 
처음부터 다시 배우는 HTML5 & CSS3 1일차
처음부터 다시 배우는 HTML5 & CSS3 1일차처음부터 다시 배우는 HTML5 & CSS3 1일차
처음부터 다시 배우는 HTML5 & CSS3 1일차Michael Yang
 
크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generatorJeongHwan Jang
 
HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안SangJin Kang
 

What's hot (20)

HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSS
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
 
HTML5 & CSS 살펴보기
HTML5 & CSS  살펴보기HTML5 & CSS  살펴보기
HTML5 & CSS 살펴보기
 
Jinyweb
JinywebJinyweb
Jinyweb
 
프론트엔드스터디 E02 css dom
프론트엔드스터디 E02 css dom프론트엔드스터디 E02 css dom
프론트엔드스터디 E02 css dom
 
Basic html
Basic htmlBasic html
Basic html
 
비개발자를 위한 Javascript 알아가기 #2
비개발자를 위한 Javascript 알아가기 #2비개발자를 위한 Javascript 알아가기 #2
비개발자를 위한 Javascript 알아가기 #2
 
웹표준의 이해
웹표준의 이해웹표준의 이해
웹표준의 이해
 
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
 
프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model
 
웹 개발 스터디 02 - javascript, bootstrap
웹 개발 스터디 02 - javascript, bootstrap웹 개발 스터디 02 - javascript, bootstrap
웹 개발 스터디 02 - javascript, bootstrap
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 
3.web의역사와browser
3.web의역사와browser3.web의역사와browser
3.web의역사와browser
 
브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?브라우저는 어떻게 동작하는가?
브라우저는 어떻게 동작하는가?
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
 
처음부터 다시 배우는 HTML5 & CSS3 1일차
처음부터 다시 배우는 HTML5 & CSS3 1일차처음부터 다시 배우는 HTML5 & CSS3 1일차
처음부터 다시 배우는 HTML5 & CSS3 1일차
 
Web_01 HTML
Web_01 HTMLWeb_01 HTML
Web_01 HTML
 
크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator크롬 확장 프로그램 만들기 - Qr code generator
크롬 확장 프로그램 만들기 - Qr code generator
 
HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안
 

Viewers also liked

스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용Sungchul Park
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기Sungchul Park
 
Wpf study with charles fetzold 2
Wpf study with charles fetzold 2Wpf study with charles fetzold 2
Wpf study with charles fetzold 2phoooo
 
웹표준(XHTML+CSS)
웹표준(XHTML+CSS)웹표준(XHTML+CSS)
웹표준(XHTML+CSS)ymtech
 
장치 문맥을 이용한Direct2D
장치 문맥을 이용한Direct2D장치 문맥을 이용한Direct2D
장치 문맥을 이용한Direct2D희규 김
 
[0602 박민근] direct2 d
[0602 박민근] direct2 d[0602 박민근] direct2 d
[0602 박민근] direct2 dMinGeun Park
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)JiandSon
 
사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처trustinlee
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가Vong Sik Kong
 
Mobile App, Mobile Web : Introduction
Mobile App, Mobile Web : IntroductionMobile App, Mobile Web : Introduction
Mobile App, Mobile Web : IntroductionJonathan Jeon
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 Sungchul Park
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동Sungchul Park
 
클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건Marcetto Co., Ltd
 
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개Sungchul Park
 

Viewers also liked (20)

스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 
Lan architecture
Lan architectureLan architecture
Lan architecture
 
Wpf study with charles fetzold 2
Wpf study with charles fetzold 2Wpf study with charles fetzold 2
Wpf study with charles fetzold 2
 
X
XX
X
 
웹표준(XHTML+CSS)
웹표준(XHTML+CSS)웹표준(XHTML+CSS)
웹표준(XHTML+CSS)
 
Atom package part1
Atom package part1Atom package part1
Atom package part1
 
장치 문맥을 이용한Direct2D
장치 문맥을 이용한Direct2D장치 문맥을 이용한Direct2D
장치 문맥을 이용한Direct2D
 
[0602 박민근] direct2 d
[0602 박민근] direct2 d[0602 박민근] direct2 d
[0602 박민근] direct2 d
 
3-1. css
3-1. css3-1. css
3-1. css
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
 
사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가
 
Mobile App, Mobile Web : Introduction
Mobile App, Mobile Web : IntroductionMobile App, Mobile Web : Introduction
Mobile App, Mobile Web : Introduction
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
 
클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건클라우드 어플리케이션의 필수조건
클라우드 어플리케이션의 필수조건
 
클라우드 도입 전략과 프로세스(강연자료)
클라우드 도입 전략과 프로세스(강연자료)클라우드 도입 전략과 프로세스(강연자료)
클라우드 도입 전략과 프로세스(강연자료)
 
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
 

Similar to 웹브라우저는 어떻게 동작하나?

[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)NAVER D2
 
시나브로 CSS3
시나브로 CSS3시나브로 CSS3
시나브로 CSS3승환 오
 
Web server
Web serverWeb server
Web serverHerren
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴Terry Cho
 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Wonkyung Lyu
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼Kenu, GwangNam Heo
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 
웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)ymtech
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
Web Standards Seminar 2006
Web Standards Seminar 2006Web Standards Seminar 2006
Web Standards Seminar 2006Taeyoung Yoon
 
171105 웹프로그래밍 static web 몰빵 발표자료
171105 웹프로그래밍 static web 몰빵 발표자료171105 웹프로그래밍 static web 몰빵 발표자료
171105 웹프로그래밍 static web 몰빵 발표자료우진 신
 
[week14] Getting started with D3.js
[week14] Getting started with D3.js[week14] Getting started with D3.js
[week14] Getting started with D3.jsneuroassociates
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게Youngkwon Lee
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
[I/O Extended 2019 Incheon] What's new in the Web
[I/O Extended 2019 Incheon] What's new in the Web[I/O Extended 2019 Incheon] What's new in the Web
[I/O Extended 2019 Incheon] What's new in the WebHyunSeob Lee
 
Developer`s Web Standard
Developer`s Web StandardDeveloper`s Web Standard
Developer`s Web StandardSangHoon Han
 
CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료Hyojin Song
 

Similar to 웹브라우저는 어떻게 동작하나? (20)

Deview2013 track1 session7
Deview2013 track1 session7Deview2013 track1 session7
Deview2013 track1 session7
 
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
 
시나브로 CSS3
시나브로 CSS3시나브로 CSS3
시나브로 CSS3
 
Web server
Web serverWeb server
Web server
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
Web Standards Seminar 2006
Web Standards Seminar 2006Web Standards Seminar 2006
Web Standards Seminar 2006
 
171105 웹프로그래밍 static web 몰빵 발표자료
171105 웹프로그래밍 static web 몰빵 발표자료171105 웹프로그래밍 static web 몰빵 발표자료
171105 웹프로그래밍 static web 몰빵 발표자료
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
[week14] Getting started with D3.js
[week14] Getting started with D3.js[week14] Getting started with D3.js
[week14] Getting started with D3.js
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
[I/O Extended 2019 Incheon] What's new in the Web
[I/O Extended 2019 Incheon] What's new in the Web[I/O Extended 2019 Incheon] What's new in the Web
[I/O Extended 2019 Incheon] What's new in the Web
 
Developer`s Web Standard
Developer`s Web StandardDeveloper`s Web Standard
Developer`s Web Standard
 
CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료
 

More from Joone Hur

Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Joone Hur
 
GNOME development on Tizen Mobile
GNOME development on Tizen MobileGNOME development on Tizen Mobile
GNOME development on Tizen MobileJoone Hur
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+Joone Hur
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ ProjectJoone Hur
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKitJoone Hur
 
GNOME3 & 그놈 한국 공동체
GNOME3 & 그놈 한국 공동체GNOME3 & 그놈 한국 공동체
GNOME3 & 그놈 한국 공동체Joone Hur
 
Web Standards Support in WebKit
Web Standards Support in WebKitWeb Standards Support in WebKit
Web Standards Support in WebKitJoone Hur
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010Joone Hur
 
Fennec의 현재와 미래
Fennec의 현재와 미래Fennec의 현재와 미래
Fennec의 현재와 미래Joone Hur
 

More from Joone Hur (9)

Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
Accelerate graphics performance with ozone-gbm on Intel based Linux desktop s...
 
GNOME development on Tizen Mobile
GNOME development on Tizen MobileGNOME development on Tizen Mobile
GNOME development on Tizen Mobile
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
 
GNOME3 & 그놈 한국 공동체
GNOME3 & 그놈 한국 공동체GNOME3 & 그놈 한국 공동체
GNOME3 & 그놈 한국 공동체
 
Web Standards Support in WebKit
Web Standards Support in WebKitWeb Standards Support in WebKit
Web Standards Support in WebKit
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010
 
Fennec의 현재와 미래
Fennec의 현재와 미래Fennec의 현재와 미래
Fennec의 현재와 미래
 

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

  • 1. 웹 브 라 우 저 는   어 떻 게 동 작 하 나 ? 허 준 회   http://opensoftware.kr
  • 2. 소 개 허 준 회 (joone@webkit.org, @joone_net) WebKit Committer WebKitGtk+, webkit-clutter 개 발 http://collabora.com
  • 4. 주 요 내 용 • 웹 브 라 우 저 역 할 과 구 조 • 웹 엔 진 의 역 할 과 구 조 • 주 요 실 행 흐 름 • 로 딩 & 파 싱 • DOM 트 리 & CSS 규 칙 트 리 생 성 • 스 크 립 트 와 CSS 처 리 순 서 • 렌 더 트 리 생 성 • 레 이 아 웃 • 그 리 기
  • 5. 웹 브 라 우 저 가 주 로 하 는 일 • URL 입 력 을 받 는 다 • 서 버 에 요 청 을 보 낸 다 . • 웹 페 이 지 를 불 러 온 다 • 웹 페 이 지 에 속 한 이 미 지 , JS 파 일 , CSS 파 일 등 을 불 러 온 다 • 자 바 스 크 립 트 를 실 행 한 다 • 화 면 에 컨 텐 트 를 표 시 한 다
  • 6. 브 라 우 저 전 반 적 인 구 조
  • 7. 웹 엔 진 이 하 는 일 • 불 러 오 기 (Loading) • 파 싱 (Parsing) • 자 바 스 크 립 트 실 행 • CSS 처 리 • 레 이 아 웃 (Layout) 작 업 • 그 리 기 • 이 벤 트 처 리 • HTML 편 집
  • 8. 웹 엔 진 아 키 텍 처
  • 9. 주 요 실 행 흐 름
  • 10. 웹 킷
  • 11. 불 러 오 기 (Loading) 웹 페 이 지 와 페 이 지 에 속 한 모 든 리 소 스 를 불 러 오 는 과 정
  • 12. 파 싱 (Parsing) HTML 문 서 => DOM 트 리
  • 13. HTML 파 싱 특 징 • 오 류 를 허 용 • 파 싱 도 중 에 문 서 수 정 가 능
  • 14. DOM 트 리 <html> <body> <p> Hello World </p> <div> <img src="example.png"/></div> </body> </html>
  • 15. CSS 규 칙 트 리 생 성
  • 17. 스 크 립 트 와 CSS 처 리 순 서 • HTML 은 기 본 적 으 로 동 기 적 처 리 • 스 크 립 트 가 샐 행 될 때 , 보 통 파 싱 은 중 지 o defer, async 속 성 지 원 으 로 동 시 처 리 가 능 • 파 싱 중 스 크 립 트 가 CSS 정 보 요 청 가 능   o CSS 처 리 중 일 때 , 관 련 스 크 립 트 실 행 중 지 참 고 : http://peter.sh/experiments/asynchronous-and-deferred-javascript-execution- explained/
  • 18. 주 요 실 행 흐 름
  • 19. 렌 더 트 리 생 성 • No render object for non visual DOM elements • Some elements has several render objects o <select>, text • CSS Position => float, fixed
  • 20. 렌 더 트 리 생 성 RenderView RenderObject(p) RenderObject(div) RenderObject("Hello World") RenderObject(img)
  • 21. 레 이 아 웃 • 렌 더 객 체 가 위 치 와 크 기 가 갖 게 되 는 과 정 • 트 리 탐 색 Left-to-right, top-to-bottom
  • 22. 비 동 기 및 동 기 식 레 이 아 웃 • Dirty bit system • 비 동 기 및 동 기 식 레 이 아 웃 o 비 동 기 : Incremental layout o 동 기 식 : Global layout, 스 크 립 트 에 서 layout 변 경 시
  • 24. 그 리 기 (Painting) • 2D 벡 터 드 로 잉 필 요 o Cairo, Direct2D, Skia • 일 반 적 인 데 스 크 탑 브 라 우 저 o expose 발 생 시 바 로 바 로 전 체 / 일 부 영 역 그 림 • 모 바 일 / 크 롬 브 라 우 저 o 비 트 맵 형 태 로 그 린 결 과 를 따 로 저 장
  • 25. 그 리 기 순 서 • 렌 더 트 리 를 탐 색 하 면 서 paint() 실 행 • Global and Incremental Painting • 그 리 기 순 서 (CSS2.1) o background color o background image o border o children o outline
  • 26. 참 고 • How Browsers Work, http://www.html5rocks.com/en/tutorials/int ernals/howbrowserswork/ • Rendering in WebKit, http://www.youtube.com/watch? v=RVnARGhhs9w • How WebKit Loads a Web Page, http://www.webkit.org/blog/1188/how-webkit-loads-a- web-page/