Post

URI와 웹 브라우저 요청 흐름

URI와 웹 브라우저 요청 흐름

URI와 URL의 개념

URI, URL, URN의 개념과 그 차이에 대해 알아보았습니다.

URI는 리소스를 식별하는 통일된 방식이며,

URLURN을 포함하는 상위 개념입니다.

URL은 리소스의 위치를 나타내며, URN은 리소스의 이름을 지정합니다.

주요 개념 및 설명

  • URI (Uniform Resource Identifier): 인터넷 상에서 리소스를 식별하기 위한 통합된 방식입니다.
  • URL (Uniform Resource Locator): 리소스의 위치를 나타내는 방식으로,
    우리가 일반적으로 웹 주소를 입력할 때 사용하는 형태입니다.
  • URN (Uniform Resource Name): 리소스의 이름을 나타내는 방식으로,
    리소스의 위치와는 무관하게 동일한 이름으로 식별할 수 있습니다.
  • 리소스(Resource): URI로 식별할 수 있는 모든 것을 의미하며,
    웹 페이지, 이미지, 동영상, 실시간 정보 등 다양합니다.

예시 및 추가 설명

  • URL 예시:
    • https://www.google.com/search?q=hello&hl=ko
      • https: 프로토콜(스키마)
      • www.google.com: 호스트명
      • /search: 경로(패스)
      • q=hello&hl=ko: 쿼리
  • URN 예시:
    • urn:isbn:9783161484100
      • 특정 책의 ISBN 번호를 URN으로 표현한 것입니다.

확인 문제

  1. 다음 중 리소스의 위치를 나타내는 것은 무엇인가요?
    a) URI
    b) URL
    c) URN
  2. urn:isbn:9783161484100은 어떤 유형의 URI인가요?

URI의 구성 요소 및 문법

URI는 리소스의 위치나 식별에 필요한 여러 구성 요소로 이루어져 있습니다.
각 구성 요소는 리소스에 접근하거나 식별하는 데 필요한 정보를 제공합니다.

주요 개념 및 설명

  • 스키마(Scheme): 리소스에 접근하기 위한 프로토콜을 지정합니다. 예: http, https, ftp 등.
  • 사용자 정보(User Info): 리소스에 접근하기 위한 사용자 이름과 비밀번호를 포함하며, 거의 사용되지 않습니다.
  • 호스트명(Host): 리소스가 위치한 서버의 도메인 이름이나 IP 주소입니다.
  • 포트 번호(Port): 서버에서 사용하는 포트 번호로, 기본값이 있는 경우 생략 가능합니다.
    예: HTTP는 80, HTTPS는 443.
  • 경로(Path): 서버 내에서 리소스의 위치를 나타냅니다.
  • 쿼리(Query): 추가적인 파라미터 정보를 전달하며, ?로 시작하고 &로 구분합니다.
  • 프래그먼트(Fragment): 리소스 내의 특정 부분을 지정하며, 서버로 전송되지 않고 클라이언트 측에서 사용됩니다.

예시 및 추가 설명

  • URI의 일반적인 구조:
  • [스키마]://[사용자 정보]@[호스트명]:[포트 번호]/[경로]?[쿼리]#[프래그먼트]
  • 예시 분석:
    • https: 스키마
    • user:password: 사용자 정보
    • www.example.com: 호스트명
    • 8080: 포트 번호
    • /path/to/resource: 경로
    • query=example: 쿼리 파라미터
    • section1: 프래그먼트
  • https://user:password@www.example.com:8080/path/to/resource?query=example#section1

확인 문제

  1. 다음 URI에서 포트 번호는 무엇인가요?
    ftp://user:pass@ftp.example.com:21/files
  2. URI의 어느 부분이 리소스의 경로를 나타내나요?
    a) 스키마
    b) 호스트명
    c) 경로
  3. 다음 중 서버로 전달되지 않는 URI 구성 요소는 무엇인가요?
    답변: 프래그먼트(Fragment)

웹 브라우저 요청 흐름

웹 브라우저에서 URL을 입력하면, 해당 리소스를 가져오기 위해 여러 단계를 거칩니다.
이 과정에는 DNS 조회, TCP 연결 설정, HTTP 요청 메시지 생성 및 전송 등이 포함됩니다.

주요 개념 및 설명

  • DNS 조회: 도메인 이름을 IP 주소로 변환하기 위해 DNS 서버를 조회합니다.
  • TCP 연결 설정: 서버와의 통신을 위해 TCP 프로토콜을 사용하여 연결을 설정합니다.
  • HTTP 요청 메시지 생성: 원하는 리소스를 요청하기 위한 HTTP 메시지를 생성합니다.
  • HTTP 요청 전송: 생성된 메시지를 TCP/IP 계층을 통해 서버로 전송합니다.
  • 서버의 응답 처리: 서버는 요청을 처리하고 HTTP 응답 메시지를 생성하여 클라이언트에 전송합니다.
  • 브라우저의 응답 처리: 브라우저는 받은 응답 메시지를 해석하여 사용자에게 콘텐츠를 표시합니다.

예시 및 추가 설명

  1. URL 입력 및 DNS 조회:
    • 사용자가 https://www.google.com/search?q=hello&hl=ko를 입력합니다.
    • 브라우저는 www.google.com에 대한 IP 주소를 얻기 위해 DNS 서버를 조회합니다.
  2. TCP 연결 설정:
    • 얻은 IP 주소(예: 172.217.161.164)와 포트 번호(HTTPS의 기본 포트 443)를 사용하여
      TCP 연결을 설정합니다.
  3. HTTP 요청 메시지 생성 및 전송:
    • 요청 메시지 생성:
      GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com
    • 생성된 메시지를 TCP/IP 계층을 통해 서버로 전송합니다.
  4. 서버의 응답 처리 및 전송:
    • 서버는 요청을 받아 처리하고, 응답 메시지를 생성합니다.
      HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Content-Length: 1024 [HTML 콘텐츠]
    • 응답 메시지를 클라이언트로 전송합니다.
  5. 브라우저의 응답 처리 및 렌더링:
    • 브라우저는 응답 메시지를 해석하고, HTML 콘텐츠를 렌더링하여 사용자에게 표시합니다.

확인 문제

  1. 웹 브라우저가 도메인 이름을 IP 주소로 변환하기 위해 사용하는 서비스는 무엇인가요?
  2. TCP 연결을 설정하기 위한 과정은 무엇이라고 하나요?
  3. 다음 중 웹 브라우저가 서버로 전송하는 요청 메시지는 무엇인가요?
    a) HTTP 요청 메시지
    b) DNS 요청 메시지
    c) FTP 요청 메시지

관련 용어 정리

  • HTTP (HyperText Transfer Protocol): 웹 상에서 클라이언트와 서버 간에 데이터를 주고받기 위한 프로토콜입니다.
  • TCP/IP: 인터넷 프로토콜 스위트로, 데이터를 패킷으로 나누어 전송하고, 네트워크를 통해 목적지까지 전달하는 역할을 합니다.
  • DNS (Domain Name System): 도메인 이름과 IP 주소를 매핑하는 시스템으로, 사람이 읽기 쉬운 도메인 이름을 사용하여 서버에 접근할 수 있게 해줍니다.
This post is licensed under CC BY 4.0 by the author.