[HTTP] 2. URI, 웹 브라우저 요청 흐름

임정규·2025년 9월 14일

Infra

목록 보기
4/10
post-thumbnail

HTTP 개념에 들어가기 직전, HTTP 프로토콜을 활용하여 데이터를 주고 받을 때, 요청하는 방식과 그 흐름에 대해서 짚고 넘어간다.

1. URI (Uniform Resource Identifier)

URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류 될 수 있다.

Uniform: 리소스 식별하는 통일된 방식
Resource: 자원, URI로 식별할 수 있는 모든 것 (제한 없음)
Identifier: 다른 항목과 구분하는 데 필요한 정보


큰 개념으로 URI(리소스를 식별), 그안에 작은 개념으로 URL(리소스 위치), URN(리소스 이름)이 있다.

URL - Uniform Resource Locator
foo://example.com:8042/over/there?name=ferret#nose

URN - Uniform Resource Name
urn:example:animal:ferret:nose
!! 이름만 부여한 것, 실제 리소스의 위치를 잡아주려면 별도의 맵핑 과정이 필요함.

URN 특징

  1. 위치는 변할 수 있지만, 이름은 변하지 않는다.
  2. urn:isbn:8960777331 (어떤 책의 isbn URN)
  3. URN 이름만으로 실제 리소스를 찾을 수 있는 방법은 보편화 되지 않음
  4. URI 와 URL을 같은 의미로 보고 서술

전체문법

https://www.google.com/search?q=hello&hl=ko

  • 프로토콜: https
  • 호스트명: www.google.com
  • 포트번호: 443
  • 패스: /search
  • 쿼리 파라미터(q=hello&hl=ko)

scheme://[userinfo@]host[:port][/path][?query][#fragment]

scheme

  1. 주로 프로토콜 사용
  2. 어떤 방식으로 자원에 접근 할 것인가 하는 약속 규칙
  3. http, https, ftp 등
  4. http - 80, https - 443 포트를 주로 사용, 포트는 생략 가능
  5. https는 http에 보안 추가 (HTTP Secure)

userinfo@

  1. URL에 사용자정보를 포함해서 인증
  2. 거의 사용하지 않음

host

  1. 호스트명
  2. 도메인명 또는 IP 주소를 직접 입력

PORT

  1. 접속 포트
  2. 일반적으로 생략, 생략시 http는 80, https는 443

/path

  1. 리소스 경로(path), 계층적 구조

    /home/file1.jpg
    /members
    /members/100, /items/iphone12

?query

  1. key=value 형태
  2. ?로 시작, &로 추가 가능 ?keyA=valueA&keyB=valueB
  3. query parameter, query string 등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태

#fragment

  1. 잘 사용하진 않음
  2. html 내부 북마크 등에 사용 <- 써본 기억이 있다....
  3. 서버에 전송되는 정보는 아님

2. 웹 브라우저 요청 흐름

1. 데이터 생성 (클라이언트)

  • DNS 서버 조회, PORT 정보 조회 -> HTTP 요청 메시지 생성
  • SOCKET 라이브러리를 통해 전달
  • TCP/IP 패킷 생성, HTTP 메시지 포함

2. 서버에 전송

3. HTTP 응답 메시지 생성 (서버)

  • 1번 데이터 생성 과정과 동일
  • HTTP 메시지가 응답 메시지로 바뀐 것일 뿐....

4. 클라이언에 전송

5. 웹 브라우저 HTML 렌더링 (우리가 보는 화면)

위에 그림처럼 클라이언트에서 HTTP 메시지를 생성해서 패킷을 서버로 전송하고, 위의 단계와 같이 HTML 정보를 수신하여 렌더링을 하면, 우리가 보는 화면이 나오게 된다.

HTTP 메시지에는 어떤 것들이 포함되어 있는 지, 어떻게 다뤄야하는 지 다음 글부터 정리하겠다.


이 링크를 통해 구매하시면 제가 수익을 받을 수 있어요. 🤗

https://inf.run/YZxop

profile
아키텍처 설계부터 고민하는 개발자

0개의 댓글