본문 바로가기
FrontEnd/HTTP

[HTTP] URI와 웹 브라우저 요청 흐름

by 개발 Blog 2024. 10. 6.

공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.



URI

URI는 리소스를 식별하기 위한 통일된 방식이다. URI는 크게 두 가지로 나눌 수 있다: URL(Uniform Resource Locator)과 URN(Uniform Resource Name). URI는 리소스를 고유하게 식별할 수 있는 정보를 제공한다.

  • Uniform: 통일된 방식
  • Resource: 자원, URI로 식별할 수 있는 모든 것
  • Identifier: 다른 항목과 구분하는 정보

URL, URN

  1. URL(Locator): 리소스가 어디에 있는지를 알려준다. 즉, 리소스의 위치를 지정한다.
  2. URN(Name): 리소스에 고유한 이름을 부여한다. URN은 위치와 상관없이 리소스 자체를 식별하는 역할을 한다.
    • 예: urn:isbn:8960777331 (책의 ISBN을 나타내는 URN)

위치는 변할 수 있지만 이름은 변하지 않으며, URN만으로 리소스를 찾을 수 있는 방법은 보편화되지 않았다. 앞으로 URI를 URL과 같은 의미로 설명한다.

 

URL 분석

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

  • scheme: https (어떤 프로토콜을 사용할지 정의)
  • host: www.google.com (접속할 서버의 도메인명)
  • port: 생략됨, https는 443번 포트를 기본으로 사용
  • path: /search (리소스의 경로)
  • query: q=hello&hl=ko (서버로 전달할 파라미터)

URL 구성 요소

  • scheme: URL에서 주로 사용하는 프로토콜을 나타낸다. 예: http, https, ftp.
    • http: 80번 포트를 기본 사용
    • https: 443번 포트를 기본 사용
  • userinfo: 인증 정보로, user:password 형식이 들어간다. 하지만 보안 이슈로 잘 사용되지 않는다.
  • host: 리소스가 위치한 서버의 도메인명 또는 IP 주소를 의미한다. 예: www.google.com.
  • port: 접속 포트를 의미하며, 주로 생략된다. 생략될 경우 기본 포트를 사용한다.
  • path: 서버 내에서 자원의 위치를 나타낸다. 예: /search.
  • query: 서버에 전달하는 파라미터로, key=value 형식으로 사용된다. 여러 파라미터는 &로 구분된다.
  • fragment: 리소스 내 특정 위치를 나타내는 부분으로, 웹 페이지 내의 특정 섹션 등을 가리킬 때 사용한다. 서버로 전송되지 않는다.

웹 브라우저 요청 흐름

  • 사용자가 웹 브라우저에 URL을 입력하고 검색 버튼을 클릭하면, 웹 브라우저는 해당 URL로 HTTP 요청 메시지를 생성한다. 이 메시지에는 요청할 리소스에 대한 정보가 포함되어 있다.
  • 웹 브라우저는 DNS 서버에 도메인 이름을 조회하여 해당 도메인의 IP 주소를 받아온다. 이때, HTTPS는 기본적으로 443 포트를 사용한다.
  • 웹 브라우저는 GET 요청을 통해 서버에서 리소스를 요청하는데, 이 요청은 HTTP 메시지 형태로 전송된다. 메시지에는 요청할 리소스 경로와 함께 HTTP 버전 정보가 포함된다.

HTTP 메시지 전송 및 패킷 생성

  • HTTP 요청 메시지소켓 라이브러리를 통해 TCP/IP 계층으로 전달된다.
  • TCP/IP 계층에서는 출발지 IP와 포트, 목적지 IP와 포트를 포함한 TCP/IP 패킷을 생성하고, 여기에 HTTP 메시지를 포함하여 전송한다.
  • TCP/IP 패킷이 네트워크 인터페이스를 통해 전송되며, 인터넷을 통해 목적지 서버에 도달한다.
  • 서버는 클라이언트로부터 받은 HTTP 요청 메시지를 처리하고, 해당 리소스에 대한 응답을 HTTP 응답 메시지로 생성하여 클라이언트에게 다시 전송한다.

  • 클라이언트 웹 브라우저에서 구글 서버로 HTTP 요청 메시지를 포함한 TCP/IP 패킷이 전송된다. 이 패킷은 클라이언트의 출발지 IP 주소(100.100.100.1)와 구글 서버의 목적지 IP 주소(200.200.200.2)를 사용하여 인터넷을 통해 전달된다. 패킷은 TCP/IP 계층을 거쳐 전송되며, 해당 요청에는 클라이언트가 요청한 검색어 정보가 포함되어 있다.
  • 구글 서버에 요청 패킷이 도착하면 서버는 클라이언트로부터 받은 HTTP 요청 메시지를 확인하고, 그에 대한 응답을 준비하게 된다. 이 과정에서 서버는 요청된 정보를 처리하고, 클라이언트가 원하는 검색 결과 또는 웹 페이지를 반환할 준비를 한다.
  • 구글 서버는 클라이언트의 요청에 대한 HTTP 응답 메시지를 생성한다. 이 응답 메시지에는 상태 코드(예: HTTP/1.1 200 OK), 응답 데이터의 종류(예: text/html), 그리고 HTML 콘텐츠 등이 포함된다. 이 메시지가 클라이언트로 전달되면, 웹 브라우저는 해당 메시지를 해석하여 사용자가 볼 수 있는 웹 페이지를 렌더링 하게 된다.

 

  • 서버에서 응답 패킷을 생성하여 클라이언트에게 다시 전송한다. 이 응답 패킷에는 HTTP 응답 메시지가 포함되어 있으며, 클라이언트가 요청한 리소스에 대한 정보나 데이터가 담겨있다.
  • 클라이언트는 서버로부터 응답 패킷을 받아 처리한다. 이때 TCP/IP 계층에서 패킷을 해석하고, HTTP 응답 메시지를 애플리케이션 계층(웹 브라우저)으로 전달한다.
  • HTTP 응답 메시지가 클라이언트의 웹 브라우저로 전달된 후, 브라우저는 이 메시지를 기반으로 HTML을 렌더링하여 사용자가 화면에서 볼 수 있도록 웹 페이지를 표시한다.

이로써 전체 요청-응답 주기가 완료되며, 사용자는 구글 검색 결과를 화면에서 확인할 수 있게 된다.

'FrontEnd > HTTP' 카테고리의 다른 글

[HTTP] HTTP 상태코드  (0) 2024.10.08
[HTTP] HTTP 메서드 활용  (1) 2024.10.07
[HTTP] HTTP 메서드  (1) 2024.10.06
[HTTP] HTTP 기본  (3) 2024.10.06
[HTTP] 인터넷 네트워크  (1) 2024.10.06