Web Browser

웹 브라우저는 인터넷 상의 정보를 검색하고 표시하는 소프트웨어 애플리케이션이다.
사용자가 URL(Uniform Resource Locator)을 입력하거나 하이퍼링크를 클릭하면, 웹 브라우저는 해당 리소스를 가져와 화면에 표시한다. 웹 브라우저는 HTML, CSS, JavaScript와 같은 웹 기술을 해석하여 사용자에게 대화형 웹 페이지를 제공한다.

웹 브라우저의 역사적 발전

웹 브라우저의 역사는 인터넷과 함께 발전해왔다:

  1. 초기 브라우저 (1990년대 초반)
    • 월드와이드웹(WWW)의 창시자인 팀 버너스-리가 개발한 WorldWideWeb(후에 Nexus로 개명)이 최초의 웹 브라우저였다.
    • Mosaic(1993)는 그래픽 인터페이스를 갖춘 최초의 대중적 브라우저로 인터넷의 대중화에 기여했다.
  2. 브라우저 전쟁의 시대 (1990년대 중반~2000년대 초반)
    • Netscape Navigator와 Microsoft의 Internet Explorer 간의 경쟁이 시작되었다.
    • Microsoft는 Windows 운영체제에 Internet Explorer를 번들로 제공하며 시장 지배력을 확보했다.
  3. 현대 브라우저의 등장 (2000년대 중반~현재)
    • Mozilla Firefox(2004)가 오픈 소스 브라우저로 등장하여 대안을 제시했다.
    • Apple의 Safari(2003)와 Google Chrome(2008)이 출시되며 브라우저 시장의 다양성이 증가했다.
    • 모바일 기기의 보급으로 모바일 브라우저의 중요성이 커졌다.

웹 브라우저의 작동 원리

웹 브라우저는. 다음과 같은 단계로 작동한다:

  1. URL 처리: 사용자가 입력한 URL을 분석하여 프로토콜, 도메인, 경로 등을 식별한다.
  2. DNS 조회: 도메인 이름을 IP 주소로 변환하는 DNS(Domain Name System) 조회를 수행한다.
  3. 서버 연결: 식별된 IP 주소로 TCP 연결을 설정한다.
  4. HTTP 요청: 서버에 HTTP(Hypertext Transfer Protocol) 요청을 보낸다.
  5. 응답 처리: 서버로부터 받은 HTTP 응답을 처리한다.
  6. 렌더링 엔진: HTML, CSS를 파싱하고 렌더링하여 시각적인 페이지를 구성한다.
    1. HTML 파싱(Parsing)
      렌더링 엔진이 HTML을 파싱하여 DOM(Document Object Model)을 구축한다.
    2. CSS 파싱
      렌더링 엔진이 CSS를 파싱하여 CSSOM(CSS Object Model)을 생성한다.
    3. 렌더 트리 구축
      DOM(Document Object Model)과 CSSOM(CSS Object Model)을 생성한다.
    4. 레이아웃
      렌더링 엔진이 각 요소의 크기와 위치를 계산한다.
    5. 페인팅
      UI 백엔드가 계산된 레이아웃을 기반으로 렌더 트리의 각 노드를 화면에 픽셀을 그려 웹 페이지를 표시한다.
  7. JavaScript 실행: 웹 페이지에 포함된 JavaScript 코드를 실행한다.
  8. 페이지 표시: 최종적으로 처리된 웹 페이지를 사용자에게 표시한다.

주요 기능

  1. 웹 페이지 렌더링: HTML, CSS, JavaScript 파일을 해석하고 처리하여 사용자가 볼 수 있는 웹 페이지를 구성한다.
  2. 인터넷 탐색: 주소 표시줄을 통해 직접 URL을 입력하거나 하이퍼링크를 클릭하여 웹 페이지 간 이동을 가능하게 한다.
  3. 다중 탭 지원: 여러 웹 페이지를 동시에 열어 빠르게 전환할 수 있다.
  4. 북마크 및 즐겨찾기: 자주 방문하는 웹사이트를 저장하고 쉽게 접근할 수 있다.
  5. 브라우징 기록 관리: 최근 방문한 웹사이트를 기록하고 쉽게 접근할 수 있게 한다.
  6. 다운로드 관리: 웹에서 파일을 다운로드하고 진행 상황을 추적한다.
  7. 검색 기능: 통합된 검색 바를 통해 웹 검색을 할 수 있다.
  8. 보안 기능: 안전한 온라인 브라우징을 위한 보안 조치를 구현한다.
  9. 개인화: 사용자 선호도에 따라 외관과 기능을 조정할 수 있다.
  10. 네트워크 통신: 웹 서버와의 통신을 처리하고 필요한 리소스를 가져온다.
  11. 캐싱: 자주 접근하는 데이터를 저장하여 로딩 속도 향상
  12. 확장 프로그램 지원: 부가 기능 설치 및 실행

웹 브라우저의 주요 구성 요소

  1. 사용자 인터페이스: 주소 표시줄, 뒤로/앞으로 버튼, 북마크 메뉴 등 사용자가 직접 상호작용하는 부분.
  2. 브라우저 엔진: 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어한다.
  3. 렌더링 엔진: HTML과 CSS를 파싱하여 화면에 표시한다.
    주요 렌더링 엔진으로는:
    • Blink (Chrome, Edge, Opera)
    • WebKit (Safari)
    • Gecko (Firefox)
  4. 네트워킹: HTTP 요청과 같은 네트워크 호출을 처리한다.
  5. JavaScript 엔진: JavaScript 코드를 해석하고 실행한다.
    주요 JavaScript 엔진으로는:
    • V8 (Chrome, Edge)
    • SpiderMonkey (Firefox)
    • JavaScriptCore (Safari)
  6. UI 백엔드: 기본적인 위젯을 그리는 인터페이스이다.
  7. 데이터 저장소: 쿠키, 로컬 스토리지 등 브라우저 메모리를 활용하여 데이터를 저장하는 영역이다.

the Components of a browser
https://www.browserstack.com/guide/what-is-browser

사용자 인터페이스

  1. 주소 표시줄: 사용자가 URL을 입력하거나 현재 페이지의 주소를 보여줍니다.
  2. 이전/다음 버튼: 방문한 페이지 간 이동을 가능하게 합니다.
  3. 북마크 메뉴: 자주 방문하는 웹사이트를 저장하고 관리할 수 있습니다.
  4. 새로 고침 버튼: 현재 페이지를 다시 로드합니다.
  5. 정지 버튼: 현재 진행 중인 페이지 로딩을 중단합니다.
  6. 홈 버튼: 사용자가 지정한 홈페이지로 이동합니다.
  7. 탭: 여러 웹페이지를 동시에 열어볼 수 있게 합니다.
  8. 메뉴 버튼: 브라우저의 추가 설정이나 기능에 접근할 수 있습니다.
개발자 도구

웹 브라우저의 사용자 인터페이스 구성 요소에 속하면서, 동시에 다른 구성 요소들(예: 렌더링 엔진, 자바스크립트 엔진, 네트워킹 등)과 상호작용하여 개발자에게 웹 페이지의 다양한 측면을 분석하고 디버깅할 수 있는 기능을 제공

기능설명주요 사용 사례
Elements 패널HTML과 CSS를 실시간으로 검사하고 수정할 수 있는 기능을 제공합니다.웹 페이지의 레이아웃 및 스타일 문제 해결, DOM 구조 이해
Console 패널JavaScript 코드를 실행하고 디버깅할 수 있는 환경을 제공합니다.JavaScript 오류 디버깅, 로그 확인 및 코드 테스트
Network 패널웹 페이지의 모든 네트워크 요청을 모니터링하고 분석할 수 있습니다.네트워크 성능 최적화, API 요청 및 응답 분석
Performance 패널웹 애플리케이션의 런타임 성능 데이터를 기록하고 분석합니다.성능 병목 현상 식별, 코드 최적화
Application 패널브라우저 저장소(쿠키, 로컬 스토리지 등)를 관리할 수 있습니다.클라이언트 측 데이터 저장소 상태 확인 및 관리

데이터 저장소

특성쿠키 (Cookie)로컬 스토리지 (Local Storage)세션 스토리지 (Session Storage)
용도사용자 인증, 상태 유지장기 데이터 저장임시 데이터 저장
저장 용량약 4KB5-10MB5-10MB
만료 기간설정 가능영구적탭/창 종료 시
서버 전송자동 전송전송되지 않음전송되지 않음
접근 범위도메인별도메인별탭/창별
보안HttpOnly 옵션으로 XSS 방지 가능JavaScript로 접근 가능 (XSS 취약)JavaScript로 접근 가능 (XSS 취약)
사용 사례로그인 정보, 사용자 추적사용자 설정, 캐시 데이터장바구니, 폼 입력 값
APIdocument.cookielocalStoragesessionStorage

주요 Web Browser와 특징

  1. Google Chrome
    • 시장 점유율이 가장 높다(2024년 3월 기준 약 65%).
    • V8 JavaScript 엔진으로 빠른 성능을 제공한다.
    • 확장 프로그램 생태계가 풍부하다.
    • 리소스 사용량이 높다는 단점이 있다.
  2. Mozilla Firefox
    • 오픈 소스 브라우저로 개인 정보 보호에 중점을 둔다.
    • Gecko 렌더링 엔진을 사용한다.
    • 사용자 정의 가능성이 높다.
  3. Safari
    • Apple 기기에 기본 브라우저로 탑재되어 있다.
    • WebKit 렌더링 엔진을 사용한다.
    • 에너지 효율성이 높고 배터리 수명을 절약한다.
  4. Microsoft Edge
    • Windows의 기본 브라우저이다.
    • 2020년부터 Chromium 기반으로 전환했다.
    • Microsoft 서비스와의 통합이 강점이다.
  5. Opera
    • 내장 VPN과 광고 차단 기능을 제공한다.
    • 현재는 Chromium 기반으로 운영된다.
구성 요소/특징ChromeFirefoxSafariEdge
브라우저 엔진ChromiumFirefoxWebKitChromium
렌더링 엔진BlinkGeckoWebKitBlink
JavaScript 엔진V8
JIT 컴파일러
- 인라인 캐싱
- 가비지 컬렉션
SpiderMonkey
JägerMonkey JIT
IonMonkey 컴파일러
- 최적화된 가비지 컬렉션
JavaScriptCore
FTL JIT
B3 JIT 컴파일러
eden 가비지 컬렉션
V8
(Chrome과 동일)
프로세스 모델멀티 프로세스
- 탭당 독립 프로세스
- 사이트 격리
- 유틸리티 프로세스
멀티 프로세스
Electrolysis (e10s)
- 컨텐츠 프로세스
- 웹 렌더링 프로세스
하이브리드
- 웹 콘텐츠 프로세스
- 네트워킹 프로세스
멀티 프로세스
(Chrome 기반)
하드웨어 가속- WebGL
GPU 가속
Direct3D 11
OpenGL
Vulkan
- WebGL
GPU 가속
Direct3D 11
OpenGL
WebRender
- Metal
WebGL
GPU 가속
Core Animation
- WebGL
GPU 가속
Direct3D 11
DirectX 12
성능 최적화- Fast Start
- 예측 프리페칭
- 지연 로딩
- 메모리 압축
- Quantum 엔진
- 병렬 스트리밍
- 선택적 차단
- 메모리 관리
- Nitro 엔진
- 지능형 추적 방지
- 리소스 절약
- Sleeping Tabs
- 시작 부스트
- 메모리 절약
확장성- Chrome Web Store
Manifest V3
- 풍부한 API 지원
PWA 지원
- Firefox Add-ons
WebExtensions API
- 사용자 정의 테마
PWA 지원
- App Extensions
- 제한된 확장 지원
Safari App Extensions
- Chrome 확장 지원
Edge Add-ons
PWA 지원
호환성- 웹 표준 준수
EME 지원
WebAssembly
WebRTC
- 웹 표준 준수
EME 지원
WebAssembly
WebRTC
- 웹 표준 준수
- 제한적 WebRTC
WebKit 전용 기능
- IE 호환 모드
- 크로미엄 호환
WebView2
보안 기능- 사이트 격리
- 안전 검색
HTTPS 우선
XSS 보호
- Enhanced Tracking Protection
HTTPS-Only
- 샌드박스
DNS over HTTPS
- 지능형 추적 방지
Private Relay
- 샌드박스
XSS 보호
- SmartScreen
- 추적 방지
- 암호 모니터
HTTPS 우선
네트워크 최적화- QUIC/HTTP3
- 프리로딩
- 리소스 힌팅
Brotli 압축
- QUIC/HTTP3
- 프리로딩
- 리소스 힌팅
Brotli 압축
- HTTP/2
- 리소스 힌팅
- 캐시 최적화
- QUIC/HTTP3
- 프리로딩
- 리소스 힌팅
Brotli 압축

렌더링 엔진 비교

구분ChromeFirefoxSafariEdge
브라우저 엔진Chromium
- 오픈소스 기반
- 높은 성능
- 빠른 업데이트
- 풍부한 확장성
- 높은 메모리 사용
Gecko
- 독자 엔진
- 웹 표준 준수
- 개인정보 보호
- 높은 안정성
- 커스터마이징 용이
WebKit
Apple 최적화
- 높은 보안성
- 전력 효율성
- 제한된 확장성
- 느린 업데이트
Chromium
(Chrome과 동일)
+ IE 호환성
+ Windows 최적화
렌더링 엔진Blink
- 빠른 렌더링
- 하드웨어 가속
- 멀티프로세스
CSS Grid 최적화
Web Components
Gecko
Quantum 엔진
WebRender
- 메모리 효율성
CSS Grid 레이아웃
SVG 최적화
WebKit
Metal 가속
- 효율적 렌더링
- 그래픽 처리
CSS 애니메이션
- 터치 최적화
Blink
(Chrome과 동일)
+ DirectX 12
+ Windows GPU 최적화
JavaScript 엔진V8
TurboFan JIT
Ignition 인터프리터
- 인라인 캐싱
- 최적화된 가비지 컬렉션
- 강력한 성능
WebAssembly
SpiderMonkey
IonMonkey JIT
Baseline JIT
Warp 업데이트
- 보안 강화
- 메모리 효율성
- 안정적 성능
JavaScriptCore
FTL JIT
DFG JIT
B3 JIT
- 전력 효율성
- 보안 강화
Apple 최적화
V8
(Chrome과 동일)
+ Windows 최적화
+ IE 호환성 지원
성능 특징- 최고 실행 속도
- 빠른 페이지 로딩
- 높은 메모리 사용
- 확장 프로그램 영향
- 탭 격리
- 균형잡힌 성능
- 낮은 메모리 사용
- 안정적 실행
- 높은 보안성
- 커스텀 최적화
- 하드웨어 최적화
- 배터리 효율성
- 안정적 성능
- 제한된 확장성
- 통합 보안
- Chrome 수준 성능
IE 호환성
Windows 최적화
- 절전 기능
- 탭 효율화
최적화 기술- 코드 캐싱
- 예측 컴파일
- 병렬 처리
- 메모리 압축
- 지연 로딩
- 병렬 파싱
- 선택적 차단
- 스트리밍 컴파일
- 컨테이너 분리
- 메모리 관리
- LLVM 최적화
- 네이티브 API
- 그래픽 가속
- 전력 관리
- 프로세스 격리
- Chrome 최적화
Sleeping Tabs
- 시작 부스트
- 메모리 절약
- 수직 탭

웹 브라우저의 표준 준수

웹 브라우저는 다음과 같은 표준을 준수한다:

  1. W3C(World Wide Web Consortium): HTML, CSS, XML 등의 웹 표준을 정의한다.
  2. WHATWG(Web Hypertext Application Technology Working Group): HTML Living Standard를 유지 관리한다.
  3. Ecma International: JavaScript 언어 표준인 ECMAScript를 정의한다.

브라우저 간 호환성 문제를 해결하기 위해 표준화가 중요하다. 개발자들은 모든 브라우저에서 일관되게 작동하는 웹사이트를 만들기 위해 이러한 표준을 따른다.

웹 브라우저 기술의 발전

  1. HTML5와 관련 기술
    • HTML5는 비디오, 오디오, 캔버스 등 풍부한 미디어 요소를 지원한다.
    • CSS3는 애니메이션, 변환, 그리드 레이아웃 등 고급 스타일링 기능을 제공한다.
    • WebGL은 브라우저에서 3D 그래픽을 렌더링할 수 있게 한다.
  2. 프로그레시브 웹 앱(PWA)
    • 웹 앱에 네이티브 앱과 유사한 경험을 제공한다.
    • 오프라인 작동, 푸시 알림, 홈 화면 설치 등의 기능을 지원한다.
  3. 웹어셈블리(WebAssembly)
    • 브라우저에서 거의 네이티브 속도로 실행되는 코드를 허용한다.
    • C, C++, Rust 등의 언어로 작성된 코드를 웹에서 실행할 수 있게 한다.

웹 브라우저의 보안 고려사항

  1. 동일 출처 정책(Same-Origin Policy)
    • 웹 브라우저는 한 출처의 스크립트가 다른 출처의 데이터에 접근하는 것을 제한한다.
  2. 콘텐츠 보안 정책(Content Security Policy, CSP)
    • 웹사이트가 허용된 콘텐츠 소스를 지정할 수 있게 하여 XSS 공격을 방지한다.
  3. HTTPS와 TLS
    • 브라우저는 안전한 연결을 위해 HTTPS 채택을 장려한다.
    • 최신 브라우저는 안전하지 않은 HTTP 사이트에 경고를 표시한다.
  4. 샌드박싱
    • 탭과 확장 프로그램이 격리된 환경에서 실행되어 보안을 강화한다.

용어 정리

용어설명

참고 및 출처

Web Browser Engineering