💡 브라우저 프로세스에는 UI 스레드와 네트워크 스레드, 스토리지 스레드 등이 있다.
UI 스레드
→ 브라우저의 버튼과 입력란을 그린다.
네트워크 스레드
→ 인터넷에서 데이터를 가져오기 위해 네트워크 스택을 다룬다.
스토리지 스레드
→ 파일에 대한 접근을 제어한다.
1단계: 입력 처리
- 사용자가 주소 표시줄에
타이핑
을 한다.
- UI 스레드가 ‘입력되는 내용이
검색어
(search query)인지, URL
인지’ 확인한다.
- 입력되는 내용을 파싱해서
검색 엔진
으로 이동할지, 요청한 사이트
로 이동할지 결정한다.
2단계: 내비게이션 시작
- 사용자가 Enter 키를 누르면
UI 스레드
가 네트워크 호출을 시작한다.
- 네트워크 스레드는 요청에 대한
DNS Lookup
및 TLS 연결 설정
과 같은 적절한 프로토콜을 거쳐 요청을 처리한다.
3단계: 응답 읽기
- 응답 본문인 페이로드가 들어오기 시작하면
네트워크 스레드
는 필요에 따라 스트림의 처음 몇 바이트를 확인한다.
- 페이로드가 어떤 형식의 데이터인지는 응답 헤더의
Content-Type 헤더
가 알려주지만, 정확하지 않은 정보일 수 있기 때문에 MIME 스니핑을 실행해 데이터의 실제 형식을 알아낸다.
- 응답이
HTML
파일을 데이터 렌더러 프로세스
에 전달하는 단계로 넘어간다. 응답이 ZIP
형식 파일이나 다른 형식
의 파일이라면, 다운로드 요청이므로 다운로드 매니저에 데이터를 전달한다.
Safe Browsing
검사 → 도메인과 응답 데이터가 악성 사이트와 일치하면, 경고 메시지 표시
4단계: 렌더러 프로세스 찾기
- 모든 검사가 끝나면, 네트워크 스레드는 UI 스레드에 데이터가 준비되었음을 알린다.
- UI 스레드는 웹 페이지의 렌더링을 수행할
렌더러 프로세스
를 찾는다.
5단계: 내비게이션 실행
- 데이터와 렌더러 프로세스가 준비되었으므로 내비게이션을 실행하도록 브라우저 프로세스에서 렌더러 프로세스로 IPC 메시지를 전송한다.
- 렌더러 프로세스가 HTML 데이터를 계속 수신할 수 있도록 브라우저 프로세스는 데이터 스트림을 전달한다.
- 렌더러 프로세스에서 내비게이션이 실행되었다는 것을 브라우저 프로세스가 확인하고 나면 내비게이션이 완료되고 문서 로딩 단계가 시작된다.
- 주소 표시줄이 업데이트되고 보안 표시와 사이트 설정 UI도 새 페이지의 사이트 정보를 반영해 갱신된다.
마지막 단계: 초기 로드 완료
- 내비게이션이 실행되면 렌더러 프로세스는 계속 리소스를 로딩하고 페이지를
렌더링
한다.
- 렌더러 프로세스가 렌더링을 '끝내면' 브라우저 프로세스로 IPC 메시지를 보낸다.
- UI 스레드는 탭에서 로딩 스피너의 작동을 중지한다.