브라우저를 켰을 때 바로 확인할 수 있는 주소표시줄과 새로고침, 뒤로가기 등의 버튼들, 요청한 페이지를 보여주는 창외에 사용자가 컨트롤 할 수 있는 부분을 말한다.
사용자가 주소창에 입력한 URI 값을 렌더링 엔진에게 전달해주는 역할 및 각종 버튼들을 눌렀을 때 그 명령 또한 렌더링 엔진에게 전달 하는 역할을 한다.
사용자가 URI를 입력했을 때, URI에 해당하는 데이터를 네트워크 레이어에 전달해 주고, 응답으로 받은 리소스 또는 스토리지에 캐싱된 리소스를 가져와 인터프리터, UI 백엔드에 전달 해주며 HTML, CSS 코드를 파싱해서 렌더 트리를 구성해 전달해주는 총괄적인 역할을 한다.
렌더링 엔진으로부터 HTTP 요청을 받아서, 서버에게 요청하고 응답 리소스를 받아 렌더링 엔진에게 돌려준다.
렌더링 엔진으로부터 받아온 리소스 중에서 자바스크립트를 파싱하는 역할을 한다.
렌더링 엔진에서 생성된 렌더 트리를 브라우저에 그리는 역할을 한다.
브라우저의 렌더링 과정은 크게 Parsing → Style → Layout → Paint → Composite 순으로 진행된다.
브라우저가 받아온 HTML 파일을 해석하여 DOM Tree를 구성하는 단꼐이며 파싱 중에 HTML 파일안에 CSS가 포함되어 있다면 CSSOM Tree 구성도 함께 진행한다.
파싱 단계에서 생성된 DOM tree와 CSSOM Tree를 매칭시켜서 Render Tree를 구성하는 단계이다. Render Tree는 실제로 화면에 그려질 Tree이다.
Render Tree를 화면에 어떻게 배치할 것인지 노드에 정확한 위치와 크기를 계산하는 단꼐이다. 루트부터 노드를 순회하면서 노드의 정확한 크기와 위치를 계산하고 Render Tree에 반영한다.(만약 크기가 %라면 현 단계에서 %값을 픽셀 단위로 변환한다.)
레이아웃 단계에서 계산된 값을 이용해 Render Tree의 각 노드를 화면상에 실제 픽셀로 변환하는 단계이다. 이 때 픽셀로 변환된 결과는 하나의 레이어가 아니라 여러 개의 레이어로 관리된다. (스타일이 복잡할수록 페인트에 걸리는 시간이 늘어난다.)
페인트 단계에서 생성된 레이어를 합성하여 실제 화면에 나타내는 단계이다.