Resource는 모든 Contents의 원천이며, 정적 리소스와 동적 리소스로 나눠서 생각할 수 있다.
따라서, 모든 종류의 Contents Source는 Resource가 될 수 있다.
URI는 통합 자원 식별자(Uniform Resource Identifier)로, 인터넷 상에 모든 Resource를 고유하게 식별하고 위치를 지정하는 식별자이다. URI는 세부적으로 URL, URN 두 종류의 식별자로 구분된다.
URL은 통합 자원 지시자(Uniform Resource Locator)로, Resource의 구체적인 위치 정보를 나타낸다. URL를 통해 Resource가 어디에 있으며 어떻게 접근할 수 있는 지를 쉽게 알 수 있다. 또한 URL은 '스킴://서버위치/리소스경로' 구조로 이루어지며, 모든 사람이 같은 방식으로 리소스를 탐색할 수 있도록 일관된 방식을 제공한다.
역사적으로 이전의 많은 애플리케이션은 US-ASCII 문자 집합을 사용해왔다. US-ASCII는 영문자를 중심으로 설계되었고, 7bit 만을 사용하며 많은 제어 문자를 표현할 수 없었다. 따라서 URL 설계자들은 URL에 이스케이프 문자열을 쓸 수 있게끔 설계하였다.
이스케이프 문자열은 US-ASCII에서 사용이 금지된 문자들로, 특정 문자나 데이터를 인코딩할 수 있게 한다. 인코딩은 안전하지 않은 문자를 '%' 문자로 시작하여 ASCII 코드로 표현되는 두 개의 16진수 숫자로 이루어진 '이스케이프' 문자로 바꾼다.
%, : 같은 몇 가지 문자는 URL 내에서 특별한 의미로 예약되어 있다. URL에서 예약된 문자들을 본래의 목적과 다르게 사용하려면, 그 전에 반드시 인코딩을 해야한다. 아래는 예약된 주요 문자들이다.
%, /, ., .., #, ?, ;, :, @, &, =, $, +, ~
안전하지 않은 모든 문자를 인코딩하기만 하면, 다른 애플리케이션으로 부터 특별한 의미를 가지는 문자를 받았을 때 혼동할 걱정없이, 애플리케이션 간에 URL 원형을 유지하여 공유할 수 있다.
http://ra:[email protected]/dkdk
사용자는 하나의 Resource를 서로 다른 Scheme으로 접근할 수 있으며, URL 형식은 스킴에 따라 달라진다. 일반적인 URL의 전체적인 구조는 아래와 같다.