브라우저 동작 원리에 대한 공부
https://d2.naver.com/helloworld/59361
브라우저의 기본 구조
- 사용자 인터페이스 - 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분이다.
- 브라우저 엔진 - 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어
- 렌더링 엔진 - 요청한 콘테츠를 표시. 예를 들어 HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시함.
- 통신 - HTTP 요청과 같은 네트워크 호출에 사용됨. 이것은 플랫폼 독립적인 인터페이스이고 각 플랫폼 하부에서 실행됨
- UI 백엔드 - 콤보 박스와 창 같은 기본적인 장치를 그림. 플랫폼에서 명시하지 않은 일반적인 인터페이스로서, OS 사용자 인터페이스 체계를 사용.
- 자바스크립트 해석기 - 자바스크립드 코드를 해석하고 실행.
- 자료 저장소 - 이 부분은 자료를 저장하는 계층이다. 쿠키를 저장하는 것과 같이 모든 종류의 자원을 하드 디스크에 저장할 필요가 있다. HTML5 명세에는 브라우저가 지원하는 웹데이터 베이스가 정의되어 있다.
브라우저의 랜더링 과정에 대해서 상세하게 설명해보기
- 브라우저 주소창에 www.naver.com 입력
- 네이버 서버를 찾아간다.
- DNS(실제 서버가 어디에 있는지 알고 있는 서버)가 연결해줄 곳을 찾음
- 주소 앞에 https이라면 https 방식으로 통신
- 서버의 기본 설정이 대부분 index.html 되어 있어 서버에서 이 파일을 클라인트로 전송
- 브라우저는 텍스트로 이루어진 index.html 파일을 파싱
- 한줄한줄 읽으면서 DOM트리를 만들어나감
- CSS 파싱이 끝나면 중단된 html을 다시 읽고 DOM 트리를 완성
- 완성된 DOM 트리와 CSSOM 트리를 합쳐 Render Tree를 만들고 그림
- javascript는 중간에 HTML 파서는 Script 태그를 만나게 되면 javascript 코드를 실행하기 위해 파싱을 중단
- 제어 권한을 자바스크립트 엔진에게 넘기고, 자바스트립트 코드 또는 파일 로드하여 파싱하고 실행함
https://sunnykim91.tistory.com/m/121
'Front-end > Basic' 카테고리의 다른 글
Promise와 Callback의 차이점은 무엇이며 각각의 장단점은? (0) | 2021.10.24 |
---|---|
AJAX란 무엇인가? (0) | 2021.10.24 |
클로저는 무엇인가요? 원리와 왜 사용하는지 (0) | 2021.10.24 |
Http와 Https 통신 방식의 차이? (0) | 2021.10.24 |
호이스팅(Hoisting) 이란 ? (0) | 2021.10.14 |