이 글을 시작하기 앞서 다양한 블로그 및 홈페이지에서 긁어서 정리한 글 입니다.
HTTP는 웹(WWW)상에서 정보를 주고 받을 수 있는 프로토콜입니다. HTML문서와 같은 리소스들을 가져와 주고 받는데에 쓰입니다. 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 프로토콜 입니다.
예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)이나 그림 정보를 요청(Request)하면, 서버는 이 요청에 응답(Response)하여 필요한 정보를 해당 사용자에게 전달하게 됩니다. 이 정보가 모니터와 같은 출력 장치를 통하여 사용자에게 나타납니다.
HTTP를 통해 전달되는 자료는 http: 로 시작하는 URL(인터넷 주소)로 조회 할 수 있다.
컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다.
이렇게 규칙을 정해두었기 때문에, 모든 프로그램이 규칙에 맞춰 개발하고 서로 정보를 교환 할 수 있게 됩니다.
통신 프로토콜
웹에서 브라우저와 서버 간에 데이터를 주고 받기 위한 방식으로 HTTP프로토콜을 사용하고 있습니다.
통신 프로토콜을 쉽게 이야기를 해보면 ‘나는 이렇게 줄 테니, 너는 이렇게 받고 난 너가 준거 그렇게 받을께’ 라고 생각하면 됩니다.
HTTP 프로토콜은 상태가 없는(stateless)프로토콜 입니다.
‘상태가 없다’라는 말은 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 의미입니다. 즉, 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다. 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생깁니다. HTTP프로토콜은 일반적으로 TCP/IP통신 위에서 동작하며 기본 포트는 80번이다.
HTTP 프로토콜로 데이터를 주고받기 위해서는 클라이언트인 브라우저가 요청을 보내고 서버가 응답 해준다.
URL을 이용하여 서버에 특정 데이터를 요청 할 수 있다.
서버에서 설정해주는 응답 정보이다.
URL요청을 보내고 나면 서버에서 응답으로 오는 상태가 크게 2가지로 나뉘는데, 200(성공) 과 404(실패) 이다. 따라서 이 HTTP 상태 코드로 추가적인 로직을 구현 할 수 있다.
자세한 상태코드 정리 -> 프런트엔드 개발자가 알아야하는 HTTP 프로토콜 Part 1
렌더링이란 HTML, CSS, 자바스크립트 등 개발자가 작성한 문서가 브라우저에서 출력되는 과정을 말합니다. 즉, 화면에 표시할 웹 페이지를 만드는 과정을 뜻합니다.
실시간으로 웹사이트가 그려지는 과정, 이 과정을 웹 브라우저의 렌더링 과정이라고 말합니다.
👉🏽 Request/Response → Loading → Scripting → Rendering → Layout → Printing
사용자가 브라우저를 통해 웹 사이트에 접속하면, 브라우저는 서버로부터 HTML파일을 요청해서, 서버에게 HTML파일을 응답을 받고, 렌더링 엔진은 HTML 문서를 파싱해서DOM(DOCUMENT OBJECT MODEL)을 만들고, CSS파일과 함께 포함된 스타일 요소를 파싱해서 CSSOM(CSS OBJECT MODEL)을 만듭니다. DOM방식을 거쳐 CSSOM으로 표현 된 후 RENDER TREE(최종적으로 브라우저에 표기될)가 생성됩니다. 각 요소들이 가지고 있는 스타일에 따라 브라우저 화면의 크기와 위치를 계산하여(Layout작업, Paint, Composite과정) 계산이 완료가 되면 각 요소들을 크기와 위치에 맞게 브라우저에 출력됩니다.
DOM 트리 상의 루트부터 시작해서 각 노드를 순회합니다.
보이지 않는 노드를 생략합니다.
표시되는 각 노드에 대해 적절하게 일치하는 CSSOM 규칙을 찾아 적용합니다.
계산된 스타일과 함께 보이는 노드를 내보냅니다.
마지막으로 화면에 계산된 스타일을 포함하는 렌더트리를 출력합니다.
CSSOM은 렌더 트리에 큰 영향을 미칠 수는 있지만, DOM 트리에는 영향을 주지 않습니다.
렌더링
성능
[Web] Rendering (DOM/CSSOM/Render Tree)
CSSOM(CSS Object Model)이란 무엇인가
브라우저는 어떻게 렌더링 될까? - devCecy : 뎁쎄씨