웹 브라우저가 웹 페이지를 로드하는 과정은 크게 다음과 같습니다. 이 과정은 사용자가 웹 브라우저 주소창에 naver.com
을 입력하는 상황을 가정한 것입니다.
-
URL 입력:
- 사용자가 웹 브라우저 주소창에 "naver.com"을 입력합니다.
-
DNS 조회:
- 브라우저는 입력된 도메인 이름 "naver.com"을 해석하기 위해 DNS 조회를 시작합니다.
- 먼저, 브라우저는 로컬의 호스트 파일을 확인합니다. 호스트 파일에 "naver.com"에 대한 IP 주소가 있다면 해당 IP 주소로 바로 이동합니다.
- 호스트 파일에 없으면 브라우저는 DNS 캐시를 확인하여 최근에 해결된 "naver.com"에 대한 IP 주소를 찾습니다.
- DNS 캐시에도 없으면, 브라우저는 운영체제에 설정된 DNS 서버(일반적으로 ISP의 DNS 서버)로 DNS 쿼리를 보내 도메인 이름을 IP 주소로 해석하려고 합니다.
DNS 조회 자세히 알아보기!
-
서버 연결:
- DNS 조회를 통해 얻은 IP 주소를 사용하여 웹 서버와 TCP 연결을 시도합니다.
-
HTTP 요청:
- 만약 TCP 연결에 성공하면 브라우저는 서버에게 HTTP 요청을 보냅니다. 이 요청은 주로 GET 메서드를 사용하며, 해당 서버에서 필요한 리소스(HTML 파일, CSS 파일, JavaScript 파일 등)를 요청합니다.
- HTTP 요청에는 사용자 에이전트, 쿠키, 세션 등의 정보도 포함될 수 있습니다.
-
서버 응답:
- 웹 서버는 브라우저의 요청을 받아들이고, 요청된 리소스에 대한 응답을 생성합니다.
- 응답에는 HTTP 상태 코드, 헤더, 본문 등이 포함됩니다.
-
웹 페이지 렌더링:
- 브라우저는 서버로부터 받은 응답을 해석하고, 웹 페이지를 렌더링합니다.
- HTML 문서를 파싱하고, CSS 스타일을 적용하며, JavaScript 코드를 실행하여 동적인 기능을 추가합니다.
- 이미지, 폰트 등의 외부 리소스도 필요에 따라 추가로 요청하고 로드합니다.
-
페이지 표시:
- 브라우저는 렌더링된 웹 페이지를 사용자에게 표시합니다.
- 사용자가 페이지와 상호작용하면, 이벤트 핸들링과 같은 동작이 발생하며 필요에 따라 추가적인 네트워크 요청이 발생할 수 있습니다.
이렇게 웹 브라우저는 사용자가 입력한 URL을 통해 웹 페이지를 로드하기 위해 DNS 조회, 서버 연결, HTTP 요청, 서버 응답, 웹 페이지 렌더링 등의 과정을 거치게 됩니다.