잘 정리되어 있는 MDN의 글을 짧막하게 정리해 보았습니다.
웹 페이지를 개발하는 입장에서 브라우저의 동작은 꽤나 당연한 것일지도 모릅니다. 당연하게 여겼던 것들을 자세히 살펴보면 생각보다 더 많은 과정들이 있는 것을 볼 수 있습니다. 사용자가 URL을 입력하고 웹 페이지를 이용하게 되기까지의 과정을 살펴보고자 합니다.
웹 페이지를 로딩해오기 위해서는 아래 이미지와 같은 12단계의 과정을 거쳐야합니다.
각 단계별로 설명을 해보면 다음과 같습니다.
URL 입력:
DNS 조회:
TCP 연결 설정:
HTTPS 핸드셰이크 (HTTPS 사용 시):
HTML 문서 요청 및 응답:
HTML 문서 파싱 및 DOM 트리 구축:
CSS 파싱 및 CSSOM 트리 구축:
렌더 트리 생성:
레이아웃 계산:
페인팅:
리소스 로딩 및 실행:
페이지 렌더링 완료:
간략하게 글을 쓰면서 평소에 생각하지 않던 네트워크 계층을 보며 기존에 배웠던 사실을 한번 더 상기 시킬 수 있는 시간이었던 것 같습니다. 실제로 용어는 들어봤지만 생소했던 것들은 한번 더 찾아보면서 공부할 수 있는 시간이었고 사용한다고 다 아는 내용이 아닌 것에 한번 더 경각심을 느끼며 이만 글을 줄입니다.
https://developer.mozilla.org/ko/docs/Glossary/TCP_handshake
https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/
https://www.cloudflare.com/ko-kr/learning/ssl/how-does-ssl-work/
https://www.cloudflare.com/ko-kr/learning/ssl/what-is-https/
https://web.dev/articles/preload-scanner?hl=ko
https://html.spec.whatwg.org/multipage/parsing.html#speculative-html-parsing