본문 바로가기
Study

주소창에 google.com을 입력하면 일어나는 일

by 이매➰ 2024. 8. 31.

웹 브라우저는 여러 단계의 과정을 거쳐 Google의 홈페이지를 표시한다

 

1. 사용자 입력

  • 사용자가 브라우저의 주소창에 URL을 입력한다.

2. URL 해석

  • 브라우저는 입력된 URL을 해석하여 프로토콜(HTTP), 도메인 이름(google.com), 경로(/ 등)를 분리한다
    ex. https://www.google.com/search?q=frontend

3. 로컬 캐시 확인

  • 브라우저는 로컬 캐시를 확인하여 이전에 방문한 웹 페이지의 IP 주소가 저장되어 있는지 확인한다
    캐시가 있다면 해당 IP 주소를 사용하여 다음 단계로 진행한다

4. DNS 조회

  • 로컬 캐시에 해당 웹 페이지의 IP 주소가 저장되어 있지 않다면 브라우저는 DNS(Domain Name System) 서버에 도메인 이름(google.com)의 IP 주소를 요청한다
  • DNS 서버는 도메인 이름에 해당하는 IP 주소를 찾아 브라우저에 반환한다
    도메인 이름 외 다른 부분(프로토콜, 경로 등)은 필요하지 않다

5. TCP 연결 설정

  • TCP란? 데이터 전송을 안정적이고 신뢰성 있게 보장하는 전송 계층 통신 프로토콜이다
    네트워크에서 데이터를 전송할 때, 데이터를 세그먼트이라는 작은 조각들로 쪼개 전송한다
  • 브라우저는 받은 IP 주소를 사용하여 웹 서버(해당 IP 주소가 가리키는 곳)와 TCP(Transmission Control Protocol) 연결을 설정한다
  • TCP 핸드셰이크 과정이 이루어져 연결이 설정된다
  • 핸드셰이크란? 클라이언트와 서버 간에 연결을 설정하는 과정
    • SYN (Synchronize) 패킷 전송: 클라이언트가 서버에 연결을 요청하며 "SYN" 패킷을 보낸다
    • SYN-ACK (Synchronize-Acknowledge) 패킷 응답: 서버가 요청을 수락하며 "SYN-ACK" 패킷을 클라이언트에게 보낸다
    • ACK (Acknowledge) 패킷 전송: 클라이언트가 서버의 응답을 확인하며 "ACK" 패킷을 보낸다
    • 패킷이란? 네트워크 계층에서 사용하는 데이터 전송 단위. IP 헤더 + TCP 세그먼트 형식이다

6. HTTP 요청 생성

  • HTTP란?  웹 브라우저와 웹 서버 간에 데이터를 주고받는 규칙
  • 브라우저는 웹 서버에 보낼 HTTP 요청 메시지를 생성한다. 이 메시지에는 요청 메소드(GET), 요청 URL(/), 그리고 필요한 헤더가 포함된다

비유를 하자면

 

  • TCP: 도로 (데이터가 이동하는 기본 통신 경로)
  • HTTP: 고속도로 (웹 데이터를 주고받는 더 빠른 통신 경로)
  • 세그먼트: 데이터를 담고 있는 차량 (데이터를 나누어 실어나르는 단위)
  • 패킷: 차량에 탑승한 사람 (목적지를 포함해 차량이 이동할 도로의 정보를 알고 있다)
  • 핸드셰이크: 톨게이트에서의 검문 (데이터 전송 준비 확인 절차)

 

7. TCP를 통해 HTTP 요청 전송

  • 생성된 HTTP 요청 메시지는 TCP 연결을 통해 웹 서버로 전송된다
  • HTTP 요청 메시지는 TCP를 통해 세그먼트로 나누어 전송된다

8. 웹 서버에서 HTTP 요청 수신

  • 웹 서버는 TCP 세그먼트를 수신하고 이를 조합하여 전체 HTTP 요청 메시지를 복원한다
  • 웹 서버는 요청된 URL에 따라 적절한 웹 페이지 데이터 (리소스)를 찾는다

9. 웹 서버가 HTTP 응답 생성

  • 웹 서버는 요청에 대한 응답을 생성한다
  • 이 응답에는 상태 코드(예: 200 OK), 응답 헤더, 요청한 웹 페이지의 데이터(HTML, CSS, JavaScript 등)가 포함된다

10. TCP를 통해 HTTP 응답 전송

  • 생성한 HTTP 응답 메시지는 TCP 세그먼트로 나누어 브라우저에 전송된다

11. 브라우저에서 HTTP 응답 수신

  • 브라우저는 TCP 세그먼트를 수신하고 이를 조합하여 전체 HTTP 응답 메시지를 복원한다

12. 웹 페이지 렌더링

  • 브라우저는 수신한 HTML, CSS, JavaScript 데이터를 파싱하여 렌더 트리를 생성하고, 레이아웃을 결정하며, 최종적으로 페인팅하여 화면에 웹 페이지를 표시한다

13. 사용자 출력

  • 모든 과정이 완료되면 사용자는 브라우저를 통해 구글 웹 페이지를 볼 수 있다

'Study' 카테고리의 다른 글

CSS에서 margin과 padding의 차이  (0) 2024.10.08
HTTP, REST, REST API에 대해  (0) 2024.10.07
HTTP란?  (0) 2024.10.06
리플로우(Reflow)와 리페인트(Repaint)가 실행되는 시점  (0) 2024.08.30
브라우저의 렌더링 원리  (0) 2024.08.30