1. 브라우저는 www.google.com의 해당 IP 주소를 찾기 위해 DNS 캐시를 탐색.
DNS 기록을 찾기 위해 브라우저는 다음과 같은 과정을 거친다.
1) 브라우저 캐시를 확인합니다. 브라우저는 이전에 방문한 웹사이트에 대해 일정기간 동안의 DNS 정보들을 저장해놓는다.
2) 브라우저 캐시에 없으면 브라우저는 OS에 systemcall을 통해 DNS 기록을 가져옵니다. OS도 DNS 기록들을 캐시에 기록하기 때문.
3) 라우터 캐시를 확인합니다. 컴퓨터에 없는 경우 브라우저는 자체 DNS 레코드 캐시를 유지 관리하는 라우터와 통신한다.
4) 모든 단계에 실패하면 브라우저는 ISP로 이동합니다. ISP는 DNS 캐시를 포함하는 자체 DNS 서버를 유지 관리한다.
2. 캐시에 없으면 ISP의 DNS 서버를 통해 google.com을 호스팅하는 서버의 IP 주소를 찾는다.
DNS(Domain Name System)는 웹사이트의 도메인 주소(URL)와 IP 주소를 이어주는 시스템이다. 인터넷의 모든 단일 URL에는 고유한 IP 주소가 할당되어 있다. IP 주소는 액세스를 요청한 웹사이트의 서버를 호스팅하는 컴퓨터에 속한다.
예를 들어 www.google.com의 IP 주소는 209.85.227.104입니다. 따라서 원하는 경우 브라우저에 http://209.85.227.104를 입력하여 www.google.com에 연결할 수 있다.
3. 브라우저가 서버와 TCP 연결을 시작.
브라우저가 올바른 IP 주소를 받으면 해당 IP 주소와 일치하는 서버와 연결하여 정보를 전송한다. 브라우저는 인터넷 프로토콜을 사용하여 이러한 연결을 구축한다.
HTTP 요청의 경우 일반적으로 TCP를 사용한다.
클라이언트와 서버 간에 데이터 패킷을 전송하려면 TCP 연결을 설정하는 것이 중요하다. 이 연결은 TCP/IP three-way handshake라는 프로세스를 사용하여 설정됩니다. 이것은 클라이언트와 서버가 SYN(동기화) 및 ACK(승인) 메시지를 교환하여 연결을 설정하는 3단계 프로세스이다.
- 클라이언트 시스템은 인터넷을 통해 서버에 SYN 패킷을 전송하여 연결을 요청한다.
- 서버에 새 연결을 수락하고 시작할 수 있는 열린 포트가 있는 경우 SYN/ACK 패킷을 사용하여 SYN 패킷의 ACKnowledgement로 응답한다.
- 클라이언트는 서버로부터 SYN/ACK 패킷을 수신하고 ACK 패킷을 전송하여 승인한다.
=> 그런 다음 데이터 전송을 위해 TCP 연결이 설정.
4. 브라우저가 웹서버에 HTTP 요청을 보낸다.
브라우저는 GET 요청을 통해 서버에 www.google.com 웹페이지를 요구한다.
5. 서버는 요청을 처리하고 응답을 다시 보낸다.
서버는 브라우저의 요청을 받아서 처리한다.
받아온 다양한 헤더,쿠키 등의 정보를 읽어서 요청내용을 확인 및 처리하고 응답을 생성한다. (특정한 포멧 (JSON,XML,HTML 등)으로 생성됨)
6. 서버는 HTTP 응답을 보낸다.
응답에는 요청한 웹페이지와 상태 코드, 압축 유형(Content-Encoding), 페이지를 캐시하는 방법(Cache-Control), 설정할 쿠키, 개인 정보 등이 포함된다.
7. 브라우저에 HTML 콘텐츠가 표시된다.
브라우저는 html content를 단계적으로 렌더링 하여 노출한다.
해당 contents 들은 브라우저에 의해 캐싱되어 나중에 해당 페이지 재방문시 서버에 재요청하지 않도록 한다.그 이후, 'www.google.com' 웹 페이지가 노출된다.
응답 받은 HTML을 실제 클라이언트쪽에서 어떻게 렌더링 되는지 다음에 알아보자.
'CS > Network' 카테고리의 다른 글
Web Socket vs HTTP Long Polling (2) | 2023.11.13 |
---|---|
TCP와 UDP는 무엇일까? (2) | 2023.06.18 |
브라우저의 기본 구조 (0) | 2023.04.05 |