최신 브라우저의 내부 살펴보기 - (2) 브라우저가 페이지 렌더링을 준비하는 과정

wookhyung·2022년 12월 11일
0

💡 브라우저 프로세스에는 UI 스레드와 네트워크 스레드, 스토리지 스레드 등이 있다.

  • UI 스레드 → 브라우저의 버튼과 입력란을 그린다.
  • 네트워크 스레드 → 인터넷에서 데이터를 가져오기 위해 네트워크 스택을 다룬다.
  • 스토리지 스레드 → 파일에 대한 접근을 제어한다.

1단계: 입력 처리

  1. 사용자가 주소 표시줄에 타이핑을 한다.
  2. UI 스레드가 ‘입력되는 내용이 검색어(search query)인지, URL인지’ 확인한다.
  3. 입력되는 내용을 파싱해서 검색 엔진으로 이동할지, 요청한 사이트로 이동할지 결정한다.

2단계: 내비게이션 시작

  1. 사용자가 Enter 키를 누르면 UI 스레드가 네트워크 호출을 시작한다.
  2. 네트워크 스레드는 요청에 대한 DNS LookupTLS 연결 설정과 같은 적절한 프로토콜을 거쳐 요청을 처리한다.

3단계: 응답 읽기

  1. 응답 본문인 페이로드가 들어오기 시작하면 네트워크 스레드는 필요에 따라 스트림의 처음 몇 바이트를 확인한다.
  2. 페이로드가 어떤 형식의 데이터인지는 응답 헤더의 Content-Type 헤더 가 알려주지만, 정확하지 않은 정보일 수 있기 때문에 MIME 스니핑을 실행해 데이터의 실제 형식을 알아낸다.
  3. 응답이 HTML 파일을 데이터 렌더러 프로세스에 전달하는 단계로 넘어간다. 응답이 ZIP 형식 파일이나 다른 형식의 파일이라면, 다운로드 요청이므로 다운로드 매니저에 데이터를 전달한다.
  4. Safe Browsing 검사 → 도메인과 응답 데이터가 악성 사이트와 일치하면, 경고 메시지 표시

4단계: 렌더러 프로세스 찾기

  1. 모든 검사가 끝나면, 네트워크 스레드는 UI 스레드에 데이터가 준비되었음을 알린다.
  2. UI 스레드는 웹 페이지의 렌더링을 수행할 렌더러 프로세스를 찾는다.

5단계: 내비게이션 실행

  1. 데이터와 렌더러 프로세스가 준비되었으므로 내비게이션을 실행하도록 브라우저 프로세스에서 렌더러 프로세스로 IPC 메시지를 전송한다.
  2. 렌더러 프로세스가 HTML 데이터를 계속 수신할 수 있도록 브라우저 프로세스는 데이터 스트림을 전달한다.
  3. 렌더러 프로세스에서 내비게이션이 실행되었다는 것을 브라우저 프로세스가 확인하고 나면 내비게이션이 완료되고 문서 로딩 단계가 시작된다.
  4. 주소 표시줄이 업데이트되고 보안 표시와 사이트 설정 UI도 새 페이지의 사이트 정보를 반영해 갱신된다.

마지막 단계: 초기 로드 완료

  1. 내비게이션이 실행되면 렌더러 프로세스는 계속 리소스를 로딩하고 페이지를 렌더링한다.
  2. 렌더러 프로세스가 렌더링을 '끝내면' 브라우저 프로세스로 IPC 메시지를 보낸다.
  3. UI 스레드는 탭에서 로딩 스피너의 작동을 중지한다.

0개의 댓글