면접 단골 질문 google.com을 입력했을 때 생기는 과정과 DNS에 대해 알아봅시다.
(질문 의도: 개발자는 페이지가 뜨지 않을 때 문제를 파악하기 위해 역추적을 할 줄 알아야 한다.)
“브라우저는 먼저 리다이렉트와 캐시를 확인하고, 필요하면 DNS 조회를 통해 IP를 찾습니다. 이후 TCP 연결을 통해 서버와 통신하고 요청을 보냅니다. 서버로부터 응답을 받으면 콘텐츠를 다운받은 후, 렌더링 과정을 거쳐 구글 화면을 표시합니다.”
그럼 과정을 따라가며 하나씩 알아봅시다.
리다이렉트란, 사용자가 처음 요청한 URL이 아닌 다른 URL로 보내는 것을 의미합니다.
<aside>
(참고) HTTP 리다이렉트는 서버에서 3XX 응답할 때 일어납니다.
3XX 코드를 받은 클라이언트는 응답에 함께 제공된 URL로 이동합니다.
| 코드 | 메시지 | 리다이렉트 종류 | 설명 |
|---|---|---|---|
| 301 | Moved Permanently | 영구적인 리다이렉션 | 요청이 GET 메서드로 변할 수 있고 메시지 본문이 제거돼요. |
| 308 | Permanent Redirect | 영구적인 리다이렉션 | 최초 요청과 메서드 및 메시지 본문은 변하지 않아요. |
| 302 | Found | 일시적인 리다이렉션 | 301과 원리는 같지만 검색 엔진이 링크를 갱신하지 않아요. |
| 303 | See Other | 일시적인 리다이렉션 | 요청이 GET 메서드로 바뀌고 본문이 제거돼요. |
| 307 | Temporary Redirect | 일시적인 리다이렉션 | 요청 메서드와 본문이 유지되지만 검색 엔진이 링크를 갱신하지 않아요. |
| 300 | Multiple Choice | 특수 리다이렉션 | 요청에 2개 이상의 응답이 가능할 때 사용돼요. |
| 304 | Not Modified | 특수 리다이렉션 | 업데이트되지 않은 리소스라서 캐시를 사용할 수 있다는 것을 뜻헤요. |
| </aside> |
캐싱이란, 요청된 값의 결과값을 저장하고 재요청 시 저장된 결과값을 다시 제공하는 기술입니다.
해당 요청이 캐싱이 가능한지 여부를 확인하여