브라우저의 동작 원리

mtak·2021년 4월 19일
0

#1.학습 주제

  • 브라우저는 어떻게 동작하나
  • HTML파일이 올 때 브라우저가 어떻게 렌더링과정을 거쳐서 화면에 보이게 되는지
  • HTML 요청 이후 브라우저에서 해석되는 웹페이지(HTML) 안의 내용구성과 소스코드를 어떻게 위치시키면 되는지
  • 웹서버의 기능과 종류

#2.학습 내용

1. 브라우저

브라우저는 월드와이드웹(WWW)에서 정보를 검색, 표현하기 위한 소프트웨어입니다.

인터넷에서 특정 정보로 이동할 수 있는 주소 입력창이 있고 서버와 HTTP로 정보를 주고 받을 수 있는 네트워크 모듈도 포함하고 있습니다.
그리고 서버에서 받은 문서(HTML, CSS, Javascript)를 해석하고 실행하여 화면에 표현하기 위한 해석기(Parser)들을 가지고 있습니다.

브라우저의 기본 구조

  • 사용자 인터페이스
    요청한 페이지를 보여주는 창을 제외모든 부분

  • 브라우저 엔진
    사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어

  • 렌더링 엔진
    요청 받은 내용을 브라우저 화면에 표시
    브라우저마다 서로 다른 엔진을 포함하고 있습니다.

    [사파리 브라우저에서 처리되는 webkit렌더링엔진의 처리과정]

    • 파싱
      브라우저가 코드를 이해하고 사용할 수 있는 구조로 변환하는 것. 그 결과는 보통 노드 트리(문서 구조를 나타냄)
      예) 2+3-1 를 노드 트리로 나타내면
  • 통신
    HTTP 요청과 같은 네트워크 호출에 사용됨(플랫폼 독립적임)

  • ui backend
    기본적인 장치를 그림.

  • 자바스크립트 해석기
    js를 해석하고 실행함.

  • 자료 저장소
    자료를 저장하는 계층

HTML을 해석해서 DOM Tree를 만들고, CSS를 해석해서 역시 CSS Tree(CSS Object Model)을 만듭니다.

이 과정에서 Parsing 과정이 필요하며 토큰 단위로 해석되는 방식은 일반적인 소스코드의 컴파일 과정이라고 보시면 됩니다.

DOM Tree와 CSS Tree, 이 두 개는 연관되어 있으므로 Render Tree로 다시 조합됩니다.

이렇게 조합된 결과는 화면에 어떻게 배치할지 크기와 위치 정보를 담고 있습니다.

이후에 이렇게 구성된 Render Tree정보를 통해서 화면에 어떤 부분에 어떻게 색칠을 할지 Painting과정을 거치게 됩니다.

학습자료 1
학습자료 2

2.HTML파일이 올 때 브라우저가 어떻게 렌더링과정을 거쳐서 화면에 보이게 되는지

위에서 설명한 렌더링 엔진의 처리과정과 같다.

3.HTML 요청 이후 브라우저에서 해석되는 웹페이지(HTML) 안의 내용구성과 소스코드를 어떻게 위치시키면 되는지

스크립트와 css 태그의 위치를 <html></html> 안 어디서든 위치시킬 수 있는데, 이 태그 바로 안쪽에 위치하면 브라우저가 html을 해석하는 동안 js코드를 다운로드 하고 해석하느라고 html해석이 좀 느려질 수 있다.
렇게 js태그는 head나 body 안에다 둘 수 있는데 위체에 따라 실행 순서가 달라진다. 왜냐하면 브라우저는 한 줄 씩 해석하기 때문이다.
여튼 js를 해석하다가 바로 실행해줘야 하는 코드가 있으면 그걸 먼저 실행해주고 마저 해석하고 스크립트를 빠져 나온다.

4. 웹서버의 기능과 종류

클라이언트(보통 웹 브라우저, 그 외에 웹 크롤러)는
URL 주소에 해당하는 웹서버(Web Server)에
연결 + http에 맞도록 리소스를 요청하고,
해당 주소에서 볼 수 있는 리소스를 읽어 들여 보여주게 됩니다.
없으면 리소스가 아닌 에러메시지를 받는다.

리소스는 다음 둘 중 하나가 될 수 있다.

  • 정적인 데이터
    이미지, .html, .css, .js (컴퓨터에 저장되어 있는 파일)
  • 동적인 결과

웹 서버 기능
웹 브라우저의 요청을 받아 HTML 문서나 오브젝트를 반환

웹서버는 보통 소프트웨어를 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터를 말할 때도 있다.

웹 서버 종류
Apache, Nginx, Microsoft, Google web server

profile
노는게 젤 조아. 친구들 모여라!!

0개의 댓글