브라우저의 핵심 기능은 사용자가 참조하고자 하는 웹페이지를 서버에 요청(Request)하고 응답(Response)을 받아 브라우저에 표시하는 것이다.
서버의 응답은 주소를 통해 요청하는데, 이 주소를 URI(Uniform Resource Identifier) 라고 한다.
User Interface - 브라우저의 주소창, 뒤로가기, 버튼 등의 UI.
Browser engine - User Interface와 Rendering Engine 사이의 동작을 제어한다.
Rendering engine - 서버로 부터 응답 받은 내용을 화면에 표시해주는 엔진. HTML/CSS를 파싱하여 결과를 보여준다.
Networking - HTTP 통신과 같은 네트워크 통신에 사용된다. 플랫폼과는 독립적인 인터페이스를 가진다.
JavaScript Interpreter - 자바스크립트를 파싱하고 실행하는 해석기.
UI Backend - 콤보박스와 같은 기본적인 위젯을 그린다.
Data Persistence - 쿠키와 같은 데이터를 저장하는 공간. Local Storage, Indexed DB, 쿠키 등 브라우저의 메모리, 로컬 메모리를 활용한다.
렌더링 엔진은 브라우저별로 차이가 있다. 파이어폭스는 Mozilla에서 직접 개발한 게코(Gecko) 엔진을 사용한다. 사파리, 크롬은 Apple이 오픈소스로 개발한 웹킷(Webkit) 엔진을 사용한다. (크롬은 28 버전부터 Webkit을 기반으로 한 블링크(Blink) 엔진을 사용한다.) 💡 웹킷과 게코의 동작 과정을 보면 약간의 용어 차이가 있으나 기본적인 동작 과정은 동일하다.