URI, URL, URN 차이
URI 이란?
위키피디아
통합 자원 식별자(Uniform Resource Identifier, URI)는 인터넷에 있는 자원을 나타내는 유일한 주소이다. URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어 다닌다.
URI의 하위개념으로 URL, URN이 있다.
역사
URI와 URL은 역사를 함께 공유한다. 1994년 팀 버너스 리가 하이퍼텍스트를 제안하면서 하이퍼링크의 대상이 되는 자원을 대표하는 짧은 문자열로 URL의 개념을 암묵적으로 도입하였다. 당시 사람들은 이를 "하이퍼텍스트 이름" 또는 "문서 이름"으로 불렀다.
- Uniform: 리소스를 식별하는 통일된 방식
- Resource: 자원, URI로 식별할 수 있는 모든 것
- Identifier: 다른 항목과 구분하는데 필요한 정보(ex. 주민등록번호)
URL 이란?
Uniform Resource Locator로 리소스(자원)이 있는 위치를 말한다.
그 주소에 접속하려면 해당 URL에 맞는 프로토콜을 알아야 하고, 그와 동일한 프로토콜로 접속해야 한다.
FTP 프로토콜인 경우에는 FTP 클라이언트를 이용해야 하고, HTTP인 경우에는 웹 브라우저를 이용해야 한다.
http:// ftp:// 등이 포함되면 URL이라 볼 수 있다.
URL은 기본적으로 '통신 규칙://인터넷 호스트 주소/경로 이름'으로 이루어진다.
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
https://www.google.com:443/search?q=안녕하세요&h=ko
- scheme: 통신 프로토콜(어떤 방식으로 자원에 접근할 것인가 하는 통신 규칙). ex) file://, https://, ftp://
- [user[:password]@]: URL에 사용자정보를 포함해서 인증하는건데 거의 사용하지 않는다.
- host: IP주소나 도메인명을 사용한다.
- [:port]: 접속포트를 말하는데 일반적으로 생략한다. http는 80포트, https는 443포트인데 생략.
- [/path]: 리소스의 경로, 보통 계층적 구조로 되어있다. ex) home/img.jpg, /members, /members/100
- [?query]: 웹서버에 보내는 추가적인 질문 내용이다. key=value형태이며, ?로 시작 &로 내용을 추가한다. 웹서버에 제공하는 쿼리 파라미터라 부른다.
- [#fragment]: html 내부 북마크 등에 사용, 서버에 전송하는 정보는 아니다. 프레그먼트 처리는 브라우저가 서버로부터 리소스를 다운받고나서 이루어진다.
URN 이란?
Uniform Resource Name으로 리소스에 고유한 이름을 부여한 것을 말한다.
URN은 독립적인 존재로 영속적이며, 리소스를 옮겨도 위치와 상관없이 이름으로 해당 자원을 찾을 수 있다.
예를 들어,
대한민국에 하나 밖에 없는 청와대가 지금은 종로구에 있지만 제주도로 이전하게 되면 URL(자원의 위치)는 바뀌지만,
청와대라는 고유 URN(자원의 이름)은 바뀌지 않으므로 URN만으로 자원을 찾을 수 있다.
위키피디아를 보면 URL은 URI와는 달리 #<fragment>를 포함하지 않으며, ?<query>까지만 포함한다. [RFC 1808 2.1. URL Syntactic Components 참고함] |
이런 차이점이 있고, 식별자(URI)와 위치(URL) 개념으로 차이를 구분하기도 한다.
https://www.example.com/index.html 은 URI이자 URL인 반면,
https://www.example.com/index 주소로 index.html파일을 가져올 때 URI는 맞지만 URL은 아니라는 것이다.
실제로 index라는 파일이 웹서버에 위치하지 않으므로 index식별자가 rewrite기술로 서버 내부처리를 통해 index.html을 보여주는 것이기 때문이다.
결론
URN 이름만으로 실제 리소스를 찾는 방법이 보편화되어 있지 않아서 잘 쓰지 않고,
URI을 URL과 거의 같은 의미로 보통 이야기하며 대신 URL은 URI의 하위 집합임을 명심하자.
URI는 규약, URL은 규약에 대한 형태