리루

How Browsers Work 본문

카테고리 없음

How Browsers Work

뚱보리루 2017. 4. 19. 20:29

---------------------------------------------------

참고

- http://d2.naver.com/helloworld/59361

- html5rocks.com

----------------------------------------------------



1. 브라우저의 주요 기능

 - 사용자가 선택한 자원을 서버에 요청하고 브라우저에 표시.

 - 자원은 보통 HTML 문서지만 PDF나 이미지 또는 다른 형태일 수 있다.

 - 자원의 주소는 URI(Uniform Resource Identifier)에 의해 정해진다.

 - HTML과 CSS 명세에 따라 HTML 파일을 해석해서 표시하는데 이 명세는 웹 표준화 기구인 W3C에서 장한다.

    • URI를 입력할 수 있는 주소표시줄
    • 이전, 다음 버튼
    • 북마크
    • 새로고침 버튼, 로드 중단 정지 버튼
    • 홈버튼
 

2. 브라우저의 기본 구조

2-1) 사용자 인터페이스

- 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 모든 부분.


2-2) 브러우저 엔진

- 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어.


2-3) 렌더링 엔진

- 요청한 콘텐츠를 표시. 예를 들어 HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시함.

* 크롬은 대부분의 브라우저와 달리 각 탭마다 별도의 랜더링 엔진 인스턴스를 유지하는 것이 주목할만하다.(각 탭은 독립된 프로세스로 처리된다.)


2-4) 통신

- HTTP 요청과 같은 네트워크 호출에 사용됨.

- 플렛폼 독립적인 인터페이스고 각 플랫폼 하부에서 실행됨.


2-5) UI 백엔드

- 콤보 박스와 창 같은 기본적인 장치를 그림.

- 플랫폼에서 명시하지 않은 일반적인 인터페이스로서, OS 사용자 인터페이스 체계를 사용.


2-6) 자바스크립트 해석기

- 자바스크립트 코드를 해석하고 실행


2-7) 자료 저장소

- 자료를 저장하는 계층

- 쿠키를 저장하는 것과 같이 모든 종류의 자원(?)을 하드디스크에 저장할 필요가 있다.

- HTML5 명세에는 브라우저가 지원하는 '웹 데이터 베이스'가 정의되어 있다.



 3. 렌더링 엔진

- 요청받은 내용을 브라우저 화면에 표시하는 역할을 한다.

- HTML 및 XML 문서와 이미지를 표시할 수 있다.

- 플러그인이나 브라우저 확장 기능을 이용해 PDF와 같은 다른 유형도 표시할 수 있다.


3-1) 종류

- 게코(Gecko) 엔진 : 모질라에서 개발( 파이어폭스 )

- 웹킷(Webkit) 엔진 : 사파리, 크롬에서 사용.


3-2) 동작과정

- 렌더링 엔진은 통신으로부터 요청한 문서의 내용을 얻는 것으로 시작한다. ( 문서내용은 보통 8KB단위로 전송)



- 렌더링 엔진은 HTML 문서를 파싱하고, "콘텐츠 트리" 내부에서 태그를 DOM 노드로 변환한다.

- 그 다음 외부 CSS파일과 함께 포함된 스타일 요소도 파싱한다.

- 스타일 정보와 HTML 표시 규칙은 "렌더 트리"라고 부르는 또다른 트리를 생성하다.(DOM 노드와 시각정보를 연결)

- 렌더 트리 생성이 끝나면 배치가 시작되는데 이것은 각 노드가 화면의 정확한 위치에 표시되는 것을 의미한다.

- 다음은 UI 백엔드에서 랜더 트리의 각 노드를 가로지르며 형상을 만들어 내는 그리기 과정이다.

* 일련의 과정들이 점진적으로 진행된다는 것을 아는 것이 중요하다.


- 렌더링 엔진은 좀 더 나은 UX를 위해 가능하면 빠르게 내용을 표시하는데 모든 HTML을 파싱할 때 까지 기다리지 않고 배치와 그리기 과정을 시작한다.

- 네트워크로부터 나머지 내용이 전송되기를 기다리는 동시에 받은 내용의 일부를 먼저 화면에 표시하는 것이다.





3-3) 파싱

 - 파싱은 렌더링 엔진에서 매우 중요한 과정이기 때문에 자세히 다뤄야 한다.

 - 파싱은 브라우저가 코드를 이해하고 사용할 수 있는 구조로 변환하는 것을 의미.

 - 파싱의 결과는 보통 문서 구조를 나타내는 노드 트리인데 파싱 트리 또는 Syntax tree라고 부른다.

 - 파싱은 어휘분석과 구문분석이라는 두 가지로 구분할 수 있다.

      • 어휘분석 : 자료를 토큰으로 분해하는 과정(토큰은 유효하게 구성된 단위의 집합체로 사전에 등장하는 모든 단어로 보면된다.)
      • 구문분석 : 언어의 구문 규칙을 적용하는 과정
- HTML 파서?


3-4) DOM( 문서 객체 모델, Document Object Model)
 - HTML 문서의 객체 표현이고 외부를 향하는 자바스크립트와 같은 HTML 요소의 연결지점이다.
 - 마크업과 1:1관계를 맺는다.
 - 트리가 DOM 노드를 포함한다고 말하는 것은 DOM 접점의 하나를 실행하는 요소를 구성한다는 의미이다.


스크립트와 스타일 시트의 진행 순서