HTTP

[HTTP 완전 정복 시리즈] 3편 - 웹 브라우저 요청은 어떻게 흘러가는가?

dev-nadan 2025. 7. 21. 13:52

이전 글에서는 IP, TCP, DNS 같은 네트워크 구조를 살펴봤다.
이번엔 실제로 브라우저에서 URL을 입력했을 때,
HTTP 요청이 어떻게 흘러가고, 서버는 어떻게 응답을 주는지 전체 과정을 정리해본다.


브라우저 요청 흐름 정리

브라우저 주소창에 www.example.com을 입력하고 엔터를 누르면 아래 단계들이 수행된다.

 

1. URL 입력 → DNS 조회

브라우저는 먼저 입력한 도메인을 IP 주소로 변환해야 한다.
이를 위해 DNS 서버에 요청을 보내고 해당 도메인에 대응되는 IP 주소를 얻는다.

예: www.example.com → 93.184.216.34

2. IP + Port로 TCP 연결 시도

DNS를 통해 IP 주소를 얻으면, 브라우저는 해당 서버와 TCP 연결을 맺는다.
기본 포트는 80 (HTTP) 또는 443 (HTTPS) 이다.

TCP 연결 과정에서는 3-Way Handshake가 수행되어
클라이언트와 서버 간에 신뢰할 수 있는 통신 경로가 형성된다.

3. HTTP 요청 메시지 생성

브라우저는 TCP 연결이 완료되면,
서버로 보낼 **HTTP 요청 메시지(Request Message)**를 생성한다.

이 메시지에는 다음 정보가 포함된다.

  • 요청 라인 (GET / HTTP/1.1)
  • 헤더 (Host, User-Agent 등)
  • 공백 줄
  • 바디 (POST 요청 등일 경우에만)

4. 인터넷 망을 통해 요청 전송

생성된 HTTP 메시지는 TCP/IP 패킷에 담겨
네트워크 망을 통해 목적지 서버까지 전달된다.

이 과정은 라우터, 게이트웨이 등을 거치며 최종 서버까지 도달하게 된다.

5. 서버가 HTTP 요청 수신 → 응답 생성

서버는 전달받은 HTTP 요청 메시지를 파싱하고,
요청에 맞는 응답 데이터를 준비한다.

  • 정적 리소스인 경우: HTML, CSS, 이미지 등 파일을 반환
  • 동적 요청인 경우: DB 조회 결과, JSON 응답 등 동적으로 생성

6. HTTP 응답 메시지 전송

서버는 응답 메시지(Response Message)를 클라이언트로 전송한다.

구성은 아래와 같다.

  • 상태 라인 (HTTP/1.1 200 OK)
  • 헤더 (Content-Type, Content-Length 등)
  • 공백 줄
  • 바디 (HTML, JSON 등 응답 데이터)

7. 브라우저가 HTML 렌더링

응답 메시지가 도착하면 브라우저는 HTML을 파싱하고,
필요한 자바스크립트, 이미지, CSS 등을 추가 요청하여 화면을 그리게 된다.

이후 사용자는 화면을 통해 웹 페이지를 보게 된다.


정리

  • URL 입력 → DNS 조회 → TCP 연결 → HTTP 요청 전송
  • 서버는 요청을 처리하고 → HTTP 응답을 클라이언트로 전달
  • 클라이언트는 응답 메시지를 파싱하고 화면을 렌더링

이 흐름은 모든 웹 요청의 기본 구조로,
프론트엔드와 백엔드 모두에게 꼭 필요한 개념이다.