월드 와이드 웹을 기반으로 한 인터넷의 컨텐츠(HTML, 그림, 멀티미디어 파일 등)를 검색 및 열람하기 위한 응용 프로그램의 총칭.
출처 - 나무위키
웹 브라우저 또는 웹 탐색기는 웹 서버에서 이동하며 쌍방향으로 통신하고 HTML 문서나 파일을 출력하는 그래픽 사용자 인터페이스 기반의 응용 소프트웨어이다. 웹 브라우저는 대표적인 HTTP 사용자 에이전트의 하나이기도 하다.
출처 - 위키피디아
웹 브라우저에 대해서는 위와 같이 소개되어 있으며, 사용하는 엔진 종류에 따라 아래와 같이 구분된다.
- Blink 기반
Chrome, Edge, 네이버 웨일, 오페라, ...- Gecko 기반
Firefox, ...- Webkit 기반
Safari, ...
이 밖에도 다른 엔진 및 멀티엔진 등이 있으며 iOS / iPadOS용으로 개발된 모든 웹 브라우저는 정책상 브라우저에서 WebKit만 사용할 수 있어 크롬, 파이어폭스 등의 iOS 버전 역시 Blink나 Gecko 기반이 아닌 Webkit 기반이다.
이와 같이, 웹 브라우저란 웹 페이지를 가져오기 위해서 HTTP(HyperText Transder Protocol)라고 하는 통신규약을 이용해 웹 서버와 통신을 하는 하나의 어플리케이션이다.
브라우저의 대표적인 기능은 사용자가 원하는 자원(리소스)을 서버에 요청하고 브라우저에 표시하는 것이다.
이 외에도 북마크 관리자, 다운로드 관리자, 웹 구성물 캐시, 플러그인을 통한 다양한 매체 지원 등이 브라우저의 주요 기능이라고 할 수 있다.
브라우저는 HTML과 CSS 명세에 따라 HTML 파일을 해석해서 표시하는데, 이러한 명세는 웹 표준화 기구인 W3C에서 정해지는데, 과거에는 브라우저들이 일부만 이 명세에 따라 구현했다.
브라우저 전쟁이라 불리던 시절에는 각 브라우저들이 독자적인 방법으로 확장하여, 웹 제작자가 심각한 호환성 문제를 겪었지만, 수 년간 서로의 장점을 모방하며 진화한 끝에 최근에는 대부분의 브라우저가 표준 명세를 따르게 된 상태이다.
아래는 표준 명세에서 제시하는 기능들이다.
위 예시 말고도 사용성과 접근성을 위해 URL과 폼 데이터의 자동 완성 및 탭 브라우징과 같은 기능을 제공한다.
물론, 여전히 브라우저간 차이와 특화된 기능도 존재하는데, 유즈넷 뉴스나 IRC(Internet relay chat), 이메일 등을 지원하는 브라우저가 있는가 하면, 파이어폭스의 다운로드 관리자와 같이 브라우저에 특화된 기능도 있다.
이처럼 브라우저 간의 차이는 그들이 지원하는 기능에 따라 구별되며, 때로 크로스 브라우징(Cross Browsing) 이슈와 같은 심각한 호환 문제를 일으키기도 한다. 크로스 브라우징 이슈 / CORS에 대해서는 추후 별도의 포스트에서 자세히 다룰 예정이다.
브라우저의 주요 구성 요소는 다음과 같다.
사용자 인터페이스 - 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등의 요소이다.
요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분이다.
브라우저 엔진 - 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어한다.
렌더링 엔진 - 요청한 콘텐츠를 표시한다.
예를 들어 HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시한다.
통신 - HTTP 요청과 같은 네트워크 호출에 사용된다.
이것은 플랫폼 독립적인 인터페이스이고 각 플랫폼 하부에서 실행된다.
UI 백엔드 - 콤보 박스와 창 같은 기본적인 장치를 그린다.
플랫폼에서 명시하지 않은 일반적인 인터페이스로서, OS 사용자 인터페이스 체계를 사용한다.
자바스크립트 해석기 - 자바스크립트 코드를 해석하고 실행한다.
자료 저장소 - 이 부분은 자료를 저장하는 계층이다.
쿠키를 저장하는 것과 같이 모든 종류의 자원을 하드 디스크에 저장할 필요가 있다. HTML5 명세에는 브라우저가 지원하는 '웹 데이터 베이스'가 정의되어 있다.
크롬의 경우, 대부분의 브라우저와 다르게 각 탭마다 별도의 렌더링 엔진 인스턴스를 유지하는 것이 주목할만하다. 각 탭은 독립된 프로세스로 처리된다.