렌더링 엔진의 종류로는 아래와 같다.
- Gecko - 모질라, 파이어폭스
- 게코는 구형 넷스케이프 및 구형 인터넷 익스플로러용 문서를 바르게 볼 수 있도록 DOCTYPE 전환을 지원한다.
- SERVO - 모질라
- 모질라 재단의 차세대 엔진이다. 2013년 기준으로 개발 중이며, 안전한 브라우징과 병렬처리 특화를 목표로 한다. 프로그래밍 언어인 Rust를 먼저 개발 후 Rust기반으로 엔진을 제작 중.
- Blink - 구글, 오페라
UI를 실행하고 탭 및 플러그인 프로세스를 "브라우저 프로세스" 또는 "브라우저"로 관리하는 기본 프로세스를 참조한다. 마찬가지로, 탭에 관한 프로세스는 "렌더 프로세스" 또는 "렌더러"라고 부른다. 렌더러는 HTML을 해석하고 배치하기위해 Blink라는 오픈소스 레이아웃 엔진을 사용한다.
렌더 프로세스 관리
각 렌더 프로세스는 RenderProcess 라는 전역 객체를 가지고있다. 이것은 부모 브라우저 프로세스와의 통신을 관리하고 전역 상태를 유지 관리한다. 브라우저는 각각의 렌더 프로세스에 해당하는 RenderProcessHost를 유지 관리한다. 렌더 프로세스는 브라우저의 상태와 렌더러와의 커뮤니케이션을 관리한다. 브라우저와 렌더러는 크로미움의 IPC 시스템 을 사용해 통신한다.
뷰 관리
각 렌더 프로세스는 하나 이상의 RenderView 객체를 가지고있다. 이는 탭 내용에 해당하는 RenderProcess에 의해 관리된다. 해당 RenderProcessHost는 렌더러 내의 각 뷰에 해당하는 RenderViewHost를 유지한다. 각 뷰는 같은 렌더러 내의 여러 개의 뷰를 식별하기 위해 사용되는 뷰 ID를 할당받는다. 이 아이디는 렌더러 내에서는 유니크하지만 브라우저 내에서는 아니다. 그래서 뷰를 식별하기 위해서는 RenderProcessHost와 뷰 ID가 필요하다. 브라우저로부터 특정 탭까지의 통신은 RenderViewHost 객체를 통해 이루어진다. 이 객체는 RenderProcessHost를 통해서 RenderProcess와 RenderView로 메시지 보내는 방법을 알고있다.
컴포넌트와 인터페이스
렌더 프로세스에서 :
- 브라우저 내에서 RenderProcess 는 IPC와 연관된 RenderProcessHost 를 다룬다. 렌더 프로세스마다 정확히 하나의 RenderProcess 객체가 있다. 이것이 모든 브라우저 <-> 렌더러 통신이 이루어지는 방식이다.
- RenderView 객체는 브라우저 프로세스와 WebKit 임베딩 레이어에서 연관된 RenderViewHost 객체와 통신한다. (RenderProcess를 통해서) 이 객체는 탭이나 팝업창 내의 내용을 나타낸다.
브라우저 프로세스에서:
- Browser 객체는 최상위 레벨 브라우저 창을 나타낸다.
- RenderProcessHost 객체는 단일 브라우저 <-> 렌더러 IPC 연결의 브라우저 측면을 나타낸다. 브라우저 프로세스의 각 렌더 프로세스에는 하나의 RenderProcessHost가 있다.
- RenderViewHost 객체는 원격 RenderView 와의 통신을 캡슐화하고, RenderWidgetHost 는 입력 및 RenderWidget 을 위한 페인팅을 브라우저에서 처리한다.
- Presto - 오페라
- 엔진 특유의 가벼움과 낮은 CPU점유율 덕에 스마트폰과 같은 휴대용 기기와 게임용 콘솔 환경에서 많이 사용된다.
- Webkit - 사파리
- KHTML이라는 엔진에서 파생
- Gecko에 비해 빠른게 특징이다.
- 단점으로는 폼 요소의 디자인이 타 브라우저와 달라 css코딩을 하기 힘들다.
- 사파리, 크로미움 그리고 다른 웹킷 기반 브라우저들이 사용하는 렌더링 엔진이다. 포트(Port)는 웹킷의 한 부분으로 리소스 로딩이나 그래픽스와 같은 플랫폼에 종속적인 시스템 서비스와 통합되어 있다.
- 웹킷은 핵심 레이아웃 기능을 맡는 "웹코어"(WebCore), 자바스크립트를 실행하는 "자바스크립트코어"(JavaScriptCore)로 구성되어 있다.
사파리, 크로미움 그리고 다른 웹킷 기반 브라우저들이 사용하는 렌더링 엔진이다. 포트(Port)는 웹킷의 한 부분으로 리소스 로딩이나 그래픽스와 같은 플랫폼에 종속적인 시스템 서비스와 통합되어 있다.
- Trident - 익스플로러
- EdgeHTML - 마이크로소프트 엣지
- 트라이던트의 포크로 시작된 엔진으로 IE 하위호환을 완전히 포기
'CS > 네트워크 기초' 카테고리의 다른 글
RSET API 와 RESTful 이란? (0) | 2021.02.02 |
---|---|
웹 브라우저의 구성 요소와 요소별 특징 (0) | 2021.02.01 |
네트워크 통신 과정 (0) | 2021.02.01 |
TCP 패킷 분석 (0) | 2021.01.28 |
DNS 패킷 분석 (0) | 2021.01.28 |