의도: 기본적인 브라우저 작동 방식에 대해 이해하고 있는지 확인하는 질문
팁: 순서대로 나누어 단계별로 설명한다.
나의 답안
사용자가 브라우저의 주소창에 URL을 입력하면, 브라우저는 입력된 URL을 파싱하여 URL의 구성 요소를 식별합니다.
브라우저는 URL에 포함된 도메인 이름을 IP 주소로 변환하기 위해 DNS, 즉 도메인 네임 시스템 서버에 요청을 보냅니다.
DNS 서버가 도메인 이름에 대한 IP 주소를 반환하면 브라우저는 이 IP 주소를 저장하여 이후의 요청에 사용합니다.그 후, 브라우저는 IP 주소를 사용하여 웹 서버와 TCP 연결을 설정한 후, 포트를 설정합니다.
참고로 HTTPS의 경우, TLS/SSL 핸드셰이크를 진행합니다.
브라우저는 서버의 SSL 인증서를 검증하고, 브라우저와 서버는 대칭 암호화 방식과 키를 설정하여 안전한 데이터 전송을 준비합니다.브라우저가 웹 서버에 HTTP 요청을 보낼 때, 요청 메서드, URL, 헤더, 바디 등을 포함시킵니다.
바디는 POST 요청 시 데이터를 담는 용도입니다.
서버는 요청을 처리한 후 HTTP 응답을 브라우저에 전송합니다.
응답에는 상태 코드, 헤더, 바디가 포함됩니다.
브라우저는 HTML, CSS, JavaScript 등이 들어 있는 응답 바디를 수신합니다.그 후, 브라우저는 HTML 문서를 파싱하여 DOM(Document Object Model) 트리를 생성하고, CSS 문서를 파싱하여 CSSOM(CSS Object Model) 트리를 생성합니다.
DOM과 CSSOM을 결합하여 렌더 트리를 생성하고, 이 트리를 기반으로 웹 페이지의 레이아웃을 계산합니다.
브라우저는 JavaScript를 파싱하고 실행하여 페이지의 동작을 정의합니다.
JavaScript는 동적으로 DOM을 수정하거나 사용자 입력, 네트워크 응답 등 다양한 이벤트를 처리합니다.
마지막으로 브라우저는 계산된 레이아웃과 스타일을 바탕으로 최종 페이지를 화면에 렌더링하게 됩니다.
제공된 답안 (모범 답안)
우리가 브라우저에 URL을 입력하면 일어나는 일을 단계별로 설명드리겠습니다.
네이버의 주소 naver.com을 주소창에 쳤다고 가정해 보겠습니다.
그러면 브라우저는 URL에서 프로토콜, 도메인 이름, 경로 등을 분석하게 됩니다.이후 브라우저는 도메인 이름을 IP 주소로 변환하고자 DNS, 즉 도메인 네임 서버에 요청을 보냅니다.
그럼 도메인 네임 서버는 도메인에 해당하는 IP 주소를 응답으로 보내줍니다.그리고 브라우저는 TCP 네트워크 연결을 구축하여 해당 IP 주소를 가진 웹 서버에 접근하여 데이터를 요청합니다.
그러면 웹 서버는 HTTP 응답을 브라우저에 보내고, 브라우저는 받아온 HTML, CSS, JS 코드를 화면에 렌더링하게 됩니다.
브라우저에 URL을 입력하면 여러 단계의 과정이 진행된다.
이 과정을 이해하면 웹 브라우저와 웹 페이지가 어떻게 작동하는지 명확히 알 수 있다.
다음은 URL을 입력한 후 브라우저가 웹 페이지를 로드하기까지의 단계별 과정이다.
(1) URL 입력
(2) URL 파싱
브라우저는 입력된 URL을 파싱하여 URL의 구성 요소를 식별한다.
URL은 보통 scheme://host:port/path?query#fragment과 같은 형식을 가진다.
예: https://www.example.com:443/path/to/resource?query=example#section
(1) DNS 요청
www.example.com)을 IP 주소로 변환하기 위해 DNS(Domain Name System) 서버에 요청을 보낸다.(2) DNS 응답
(1) TCP 핸드셰이크
브라우저는 IP 주소를 사용하여 웹 서버와 TCP 연결을 설정한다.
이 과정은 3-way 핸드셰이크로 이루어진다.
(2) 포트 설정
HTTP의 경우 기본적으로 80번 포트를 사용한다.
HTTPS의 경우 443번 포트를 사용한다.
(1) 서버 인증
(2) 암호화 설정
(1) 요청 헤더 전송
브라우저는 웹 서버에 HTTP 요청을 전송한다.
요청에는 요청 메서드(GET, POST 등), URL, 헤더(브라우저 정보, 쿠키 등), 바디(POST 요청 시 데이터)가 포함된다.
예: GET /path/to/resource HTTP/1.1
(2) 서버 처리
(1) 응답 헤더 수신
서버는 HTTP 응답을 브라우저에 전송한다.
응답에는 상태 코드(200 OK, 404 Not Found 등), 헤더(콘텐츠 유형, 길이 등), 바디(웹 페이지 내용)가 포함된다.
예: HTTP/1.1 200 OK
(2) 응답 바디 수신
(1) HTML 파싱
브라우저는 HTML 문서를 파싱하여 DOM(Document Object Model) 트리를 생성한다.
DOM 트리는 HTML 문서의 구조를 나타낸다.
(2) 리소스 요청
(1) CSS 파싱
브라우저는 CSS 파일을 파싱하여 CSSOM(CSS Object Model) 트리를 생성한다.
CSSOM 트리는 문서에 적용된 스타일을 정의한다.
(2) 스타일 적용
(1) JavaScript 파싱 및 실행
브라우저는 JavaScript를 파싱하고 실행하여 페이지의 동작을 정의한다.
JavaScript는 동적으로 DOM을 수정하거나 사용자와 상호작용한다.
(2) 이벤트 처리
(1) 레이아웃 계산
(2) 페인팅
(1) 화면 표시
(1) 자원 캐싱
(2) 작업 스케줄링