흔한 면접 질문이라고 해서 "브라우저에 google.com 치고 엔터하면 무슨 일이 일어나나"를 정리해보려는데, 알면 알수록 단계가 많아서 머리가 복잡해지네요. 제가 지금까지 얼기설기 엮은 흐름은 이래요.


1. 도메인 -> IP로 바꾸려고 DNS 조회
2. 그 IP로 TCP 연결(3-way handshake)
3. HTTPS면 TLS 핸드셰이크
4. HTTP 요청 보냄
5. 서버가 HTML 응답
6. 브라우저가 파싱해서 렌더링


큰 줄기는 이게 맞나 싶은데, 세부에서 막히는 게 몇 개 있어요.


1) DNS 조회할 때 브라우저 캐시, OS 캐시, 이런 게 먼저 확인된다고 들었는데 순서가 정확히 어떻게 되나요? 매번 DNS 서버까지 물어보는 건 아니라는 거죠?


2) TCP 연결하고 나서 TLS 핸드셰이크가 또 따로 있다는 게, 그럼 실제로 데이터 받기 전에 왕복(round trip)이 여러 번 도는 건가요? 이게 느려지는 원인이 되기도 하나요?


3) 서버가 HTML을 주면 그 안에 CSS나 JS, 이미지 링크가 또 있잖아요. 그건 브라우저가 파싱하다가 또 요청을 새로 보내는 건가요?


면접용으로 통째로 외우기보다 각 단계가 왜 필요한지 이해하고 싶어서요. 초보 눈높이로 흐름 잡아주시면 정말 감사하겠습니다.