본 문서는 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 제 주관대로 정리한 글입니다.


URI(Uniform Resource Identifier)

URI? URL? URN?

  • "URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있다.
  • URI는 URL과 URN을 포함하는 개념이라 할 수 있다.

URI

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

URL, URN

  • URL - Locator: 리소스가 있는 위치를 지정한다.
  • URN - Name: 리소스에 이름을 부여한다.
  • 위치는 변할 수 있지만, 이름은 변하지 않는다.
  • URN의 예시, urn:isgn:8960777331
  • URN만으로 실제 리소스를 찾는 방법은 보편화돼 있지 않아서 주로 URL을 사용한다.

URL 분석

scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com/search?q=hello&hl=ko`
  • 요약
    • 스키마(프로토콜): https
    • 호스트: wwww.google.com
    • 포트: 443
    • 패스: /search
    • 쿼리 파라미터: q=hello&hl=ko
  • scheme
    • 주로 프로토콜을 사용한다.
    • 프로토콜은 어떤 방식으로 자원에 접근할 것인가 하는 약속
      • E.g., https, https, ftp, etc.
  • userinfo
    • URL에 사용자 정보를 포함해서 인증
    • 거의 사용하지 않음
  • host
    • 호스트명: 도메인명 또는 IP 주소 직접 사용 가능
  • port
    • 일반적으로 생략, 생략시 http는 80, https는 443
  • path
    • 리소스 경로, 계층적 구조
    • E.g.
      • /home/file1.jpg
      • /members
      • /members/100, /items/iphone12
  • query
    • key=value 형태
    • ?로 시작하고, &로 추가 가능
      • E.g., ?keyA=valueA&keyB=valueB
    • query parameter, query string 등으로도 부름
  • fragment
    • html 내부 북마크 등에 사용
    • 서버로 전송되는 정보는 아님

웹 브라우저 요청 흐름

웹 브라우저가 https://www.google.com/search?q=hello&hl=ko로 요청을 보낸다 가정

  • www.google.com의 실제 IP 주소를 DNS를 통해 조회한다.
  • 포트 번호는 생략됐지만 https이기 때문에 기본적으로 443을 가진다.
  • 다음과 같은 HTTP 요청 메세지를 만든다.
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
  • 웹 브라우저가 생성한 HTTP 메시지를 여러 계층을 통해 TCP/IP 패킷으로 감싼 후, 인터넷을 통해 서버로 보낸다.
  • 요청을 받은 서버는 다음과 같이 그에 맞는 응답 메시지를 만들어 다시 클라이언트(웹 브라우저)로 보낸다.
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
 <body>...</body>
</html>
  • 서버의 응답을 받은 웹 브라우저는 메시지를 분석해 HTML을 렌더링 한다.
복사했습니다!