[새싹] 웹을 지탱하는 기술 Chapter04

채상엽·2022년 5월 10일
0

Sproutt 2nd - Spring Study

목록 보기
16/32

layout: post
title: "웹을 지탱하는 기술 스터디 - Chapter4"
date: 2022-03-12T00:00:00-00:00
author: sangyeop
categories: Sproutt-2nd


새싹 개발 서적 스터디 - 웹을 지탱하는 기술 Chapter04

Chapter 04. URI의 스펙

URI의 중요성

URI(Uniform Resource Identifier)란? : 유니폼 리소스 식별자. 리소스를 통일적으로 식별하는 ID를 의미한다

즉, URI만 있으면 모든 리소스에 간단하게 접속할 수 있게 된다.

URI의 구문

간단한 URI의 예

http://blog.example.com/entries/1
  • URI 스키마 : http
    • URI의 시작 부분
    • 리소스에 HTTP로 접근 할 수 있다는 것을 의미
  • 호스트명 : blog.examples.com
    • DNS에서 이름을 해석할 수 있는 도메인명이나 IP 주소
  • 경로 : /entries/1
    • 호스트 안에서 오로지 하나의 리소스를 가리킨다.

인터넷 상 유일한 호스트명 + 호스트 내 유일한 계층적 경로 -> 전 세계 다른 리소스들과 중복 가능성 X

복잡한 URI의 예

http://yohei:pass@blog.example.com:8000/search?q=test&debug=true#n10
  • URI 스키마 : http
  • 사용자 정보 : yohei:pass
  • 호스트명 : blog.example.com
  • 포트번호 : 8000
  • 경로 : /search
  • 쿼리 파라미터 : q=test&debug=true
  • URI 프래그먼트 : #n10

절대 URI와 상대 URI

절대 경로란? : 루트('/')에서부터 전체 경로를 기술한 것

상대 경로란? : 현재 디렉토리의 위치에서 어떤 경로를 기술한 것

  • 상대경로에서 절대 경로로의 변환(시작점은 /foo/bar/)
상대 경로절대 경로
hoge/foo/bar/hoge
hoge/fuge/foo/bar/hoge/fuga
./hoge/foo/bar/hoge
../hoge/foo/hoge
../hoge/fuga/foo/hoge/fuga
../../hoge/hoge
  • 절대 URI 예

    http://example.com/foo/bar
  • 상대 URI 예

    /foo/bar

Base URI

Base URI란? : 상대 URI의 기준이 되는 URI를 지정 하는 것

상대 URI절대 URI
/foo/barhttp://example.com/foo/bar

상대 URI만 가지고는 클라이언트가 바르게 해석할 수 없으므로 절대 URI로 변환해주어야 한다.

상대 URI를 절대 URI로 변경하기 위해서 Base URI가 필요하다.

리소스의 URI를 Base URI로 하는 방법

상대 URI가 들어오면, 그 리소스 URI를 Base URI로 하고 상대 URI를 해석

  • Base URI가 되는 리소스의 URI를 클라이언트 측에서 가지고 있어야 하는 문제
    • 원래의 URI를 알 수 없다

Base URI 명시적으로 지정하는 방법

HTML과 XML 안에서 명시적으로 Base URI를 지정하는 방법

  • HTML
    • <base> 요소
  • XML
    • xml:base 속성

URI와 문자

URI에서 사용할 수 있는 문자

ASCII 문자들만 가능하다. %16진수를 사용하여 URI에 넣을 수 없는 문자를 입력하는 %인코딩 이라는 방식을 이용한다.

%인코딩

어드레스에 보이는 URI
http://ko.wikipedia.org/wiki/가 

실제 URI
http://ko.wikipedia.org/%EA%B0%80

URI의 길이 제한

스펙상으로 제한이 없다. 그러나 브라우저간 구현상 제한은 존재할 수 있다.

다양한 스키마

공식적인 목록은 IANA에 약 70여개가 등록되어있다. 역사적으로는 HTTP에 대응한 http 스키마가 먼저 탄생하였고, 뒤를 이어 여러가지가 등록되었다.

URI 구현에서 주의할 점들

  • URI의 해석

    • 가능한 절대 URI를 사용하는 것이 클라이언트에게 도움이 된다.
  • %인코딩

    • 가능한 인코딩은 UTF-8 방식을 사용한다.

URI, URL, URN

  • URI
    • URL + URN 을 총칭하는 이름
  • URL
    • 네트워크 상에서 페이지, 이미지, 동영상 등 파일이 위치한 정보를 나타낸다.
    • 어떻게 리소스를 얻을 것이고 어디에서 가져와야 하는지 명시하는 URI
  • URN
    • 리소스를 영구적이고 유일하게 식별할 수 있는 URI
    • 리소스에 어떻게 접근할 것인지를 명시하지 않고, 경로와 리소스 자체를 특정하는 것을 목표로하는 URI
    • 아직 채택되지 않아 접할 기회가 거의 없음

URL은 충분히 영속적이 되었다

웹의 가치가 향상되고, 리소스와 URL은 가능한 한 영속적으로 액세스 할 수 있도록 해야 한다는 사고가 확산되었기 때문에, URN을 사용할 필요가 없어진 경우가 많아졌다.

profile
프로게이머 연습생 출신 주니어 서버 개발자 채상엽입니다.

0개의 댓글