엘리
1. 브라우저 주소창에 URL(https://www.google.com)을 입력하고 Enter 키를 누른다.
2. 브라우저는 DNS 캐시를 조회해 도메인(www.google.com)에 매핑되는 IP 주소를 찾는다.
- 브라우저 DNS 캐시
- OS DNS 캐시 (hosts 파일)
- 라우터 DNS 서버
- 클라이언트와 가장 가까운 DNS 서버에 IP 주소 찾기를 요청한다.
- 가장 가까운 DNS 서버(DNS Recursor)는 Recursive Query를 진행해 IP 주소를 찾아온다.
- Root Name Server -> .com Name Server -> google.com Name Server
- TCP 통신을 위해 클라이언트와 서버간의 소켓을 연결하고, TCP Three-way Handshake 과정을 거친다.
- www.google.com 웹 페이지에 대한 HTTP 요청 메시지를 만들고 GET 요청을 보낸다.
- HTTP 메시지 -> Socket 라이브러리 -> TCP/IP 프로토콜 스택 -> 패킷 -> LAN 어뎁터 -> 전기신호
- 요청이 LAN에 도착하면 해당 요청을 검사해 서버로 보낼지 결정한다.
- 웹 서버 앞에 캐시 서버가 있는 경우 캐시 서버가 요청을 처리한다.
- 캐시 서버에서 요청을 처리하지 못한 경우 웹 서버에서 요청을 처리한다.
- HTTP 응답 메시지를 만들고 클라이언트에게 다시 전송한다.
- 응답 헤더의 content-type을 확인해 렌더링 방식을 결정한다.
- HTML 구조를 먼저 렌더링하고, HTML Tag를 확인하면서 추가적으로 필요한 웹 패이지 요소들(Image, CSS, JS 파일 등)을 요청해 불러온다.
- 웹 페이지 요소 중 정적 컨텐츠들의 경우 브라우저에 캐싱된다.
- https://aws.amazon.com/ko/blogs/korea/what-happens-when-you-type-a-url-into-your-browser/
- https://medium.com/@maneesha.wijesinghe1/what-happens-when-you-type-an-url-in-the-browser-and-press-enter-bb0aa2449c1a
- https://siahn95.tistory.com/entry/Network-%EC%9B%B9-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90-wwwgooglecom-wwwnavercom-%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%96%88%EC%9D%84-%EB%95%8C-%EB%B2%8C%EC%96%B4%EC%A7%80%EB%8A%94-%EC%9D%BC%EB%93%A4%EC%97%90-%EB%8C%80%ED%95%B4
- https://prolog.techcourse.co.kr/studylogs/2406
- 특정 리소스를 식별하는 통합 자원 식별자를 의미한다.
- 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스이다.
- 웹 주소를 말한다.
- 컴퓨터 네트워크 상에서 리소스가 어디에 있는지 알려주기 위한 규약이다.
- URI의 서브셋이다.
브라우저, OS 단에서는 DNS 서버에 질의를 할 때마다 캐시를 수행합니다.
캐시에서 찾으면 이를 사용하고, 캐시에 없다면 DNS 서버에 질의 후 이를 캐시에 저장하는 방식입니다.
DNS가 캐싱되는 시간은 TTL(Time-to-Live)에 의존합니다.
터미널에서 dig
명령어로 TTL을 확인할 수 있습니다.
naver.com의 경우 300초 동안 캐싱됩니다.
(라우터 단에서의 자료는 아직 찾지 못했지만 비슷하게 동작하지 않을까 싶습니다.)