웹서핑하면서, 브라우저가 어떻게 동작하는 지 한 번도 생각해본 적이 없습니다. 부끄럽네요. 그런데 직접 웹을 개발하면서 브라우저가 어떻게 동작하길래 html, css, js 파일이 화면에 그려지는 걸까? 라는 물음이 생겨났어요. 사람은 역시 직접 해봐야 깨닫고 궁금한게 생기고 그러나봅니당.
그래서 검색해보니 네이버d2에서 브라우저는 어떻게 동작하는가에 대한 2012년도 글을 볼 수 있었습니다. 굉장히 이해하는 데 어려웠고, 다 이해못했습니당. 일단 내용도 엄청 많았어요ㅎㅎㅎ;
다 이해할 때까지, 여러번 읽어볼 생각이구요. 글의 내용을 덧붙혀가면서 그 기록을 여기에 남길 생각입니다.
브라우저는 사용자가 선택한 자원을 서버에 요청하고, 그걸 받아서 브라우저에 표시합니다.
자원은 html문서, pdf,img 등 다양한 형태이며 자원의 주소는 URI에 의해 정해집니다.
브라우저는 웹 표준화 기구인 W3C(world wide web Consortium)에서 정한 명세에 따라 html파일을 해석하여 표시합니다.
사용자 인터페이스 : 주소표시줄, 이전다음버튼 등 사용자가 활용하는 서비스들 (요청한 페이지를 보여주는 창을 제외한 나머지)
브라우저 엔진 : 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어합니다.
렌더링 엔진 : 요청한 콘텐츠를 표시 (html 요청이 들어오면 html,css 파싱해서 화면에 표시 ! )
통신 : http 요청과 같은 네트워크 호출에 사용
UI백엔드 : 플랫폼에서 명시하지 않은 일반적 인터페이스 ( 콤보박스 창같은 기본적인 장치)
자바스크립트 해석기 : 자바스크립트 코드를 해석하고 실행
자료저장소 : 쿠키 등 모든 종류의 자원을 하드디스크에 저장하는 계층
브라우저가 어떤것인지는 알겠습니다. 그래서 어떻게 브라우저에 나오는건가요???
렌더링엔진
을 통해 W3C 명세에 따라 해당 자원이 담긴 html과 스타일이 담긴 css를 해석할겁니다.DOM트리
를 구축합니다. ( 이러한 행동을 파싱
이라고 합니다)렌더트리
를 만듭니다. 오... 모르는 단어가 너무 많네요.. 하나하나 다시 공부해볼게요
서버로부터 요청받은 자원을 브라우저 화면에 표시해준다.
크롬,사파리 : 웹킷 webkit엔진
파이어폭스 : 게코 Gecko엔진
attachment : 웹킷이 렌더 트리를 생성하기 위해 DOM 노드와 스타일 정보를 연결하는 과정
문서파싱은 브라우저가 코드를 이해하고 사용할 수 있는 구조로 변환하는 것.
파싱 결과 파싱 트리가 만들어집니다. 근데 이게 끝이 아닙니다. 컴파일 과정일 뿐, 다시 기계코드 문서로 변화시키는 과정까지 완료되었을 떄 최종 결과물이 나오게 도빈디ㅏ.