

브라우저 렌더링을 하기 위해서는 렌더링할 리소스가 필요하다. 렌더링할 리소스들은 서버에 있기 때문에 브라우저는 서버에 요청을 보내고 서버는 브라우저에게 요청에 대한 응답을 보낸다.
이에 브라우저는 주소창을 통해 서버에게 요청을 보낼 수 있다.
브라우저 url 주소창에 https://www.naver.com/ 을 입력하면 naver.com 서버로 요청을 보낸다. 이 경우 루트 요청(/) 을 보낸다. 서버는 루트 요청에 대해 암묵적으로 index.html 을 설정한다. 즉, https://www.naver.com/ 는 https://www.naver.com/index.html 을 같은 요청이다. )

https://www.naver.com/index.html 을 요청하면 index.html 뿐만 아니라 js파일, css파일, 이미지 파일도 요청한 것을 볼 수 있다. 이것은 HTML 문서를 해석면서 script 태그, link 태그, img 태그를 만나면 HTML 코드 해석을 중단하고 각 리소스를 요청하기 떄문이다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="sytle.css"> // 📌 HTML 파싱 중단, css 파일 로드
<title>Document</title>
</head>
<body>
<ul>
<li>apple</li>
<li>banana</li>
</ul>
<script src="main.js" /> // 📌 HTML 파싱 중단, JS 코드 파싱
</body>
</html>

HTML 파싱 과정
<meta charset="UTF-8"> 에 의해 문자열 형식으로 변환된다. link 태그나 style 태그를 만나면 HTML 파싱을 중단하고 CSS 코드를 파싱한다.
meta 태그, script 태그, css display:none 노드 포함 X)script 태그를 만나면 HTML 파싱을 중단하고 제어권을 자바스크립트 엔진에 넘긴다.