URL과 URI가 많이 혼용되는 편이고, 생김세도 비슷하거니와 I를 L의 소문자 오타로 보고 그냥 둘다 URL이라고 생각하는 경우도 더러 있다. 그래서인지 경력직도 그냥 구분 안하고 URL이라고 하는 경우가 있는데, 그래서 그 차이를 설명함.
URL은 Uniform Resource Locator.
URI는 Uniform Resource Identifier.
URL은 특정한 리소스의 '위치'를 특정하는 것이다. 이를테면 http://www.kerbalspaceport.com/ 라는 도메인이 있다고 쳤을 때, 이 도메인 루트상의 ship_images라는 폴더 내에 있는 skylon.png 라는 파일에 접근하고 싶다. 그러면 우리는 이렇게 쓸 것이다.
이것의 URL이다. 특정 리소스의 위치(Location)를 가리키는 지시자인것이다.
그럼 URI는 어떨까? URI는 좀더 추상화된 개념이다. URL은 특정 위치에 물리적으로 존재하는 리소스의 위치를 특정하지만, URI는 서비스의 설계 구조로부터 접근한다. 이를테면 우리 서비스에 가입한 Jebediah라는 유저가 보유한 탈것 아이템중 skylon이라는 것이 있는데 이 녀석의 사진을 가지고 오겠다. 이런 식인 것이다. 즉, 리소스를 식별(identify)하는 식별자인 것이다. 이런 접근 법에 의거해 리소스에 대한 URI를 작성한다면 다음과 같이 될 것이다.
다만 위의 주소는 skylon이라는 리소스를 식별하기는 했지만 어떤 포멧으로 리소스를 전달할지는 정의되지 않았다. 그래서 http 헤더의 Accept 인자를 통해 Content-Type을 전달하게 된다. 이 경우 image/png 라는 meme타입을 전달하게 될 것이다. 그러면 서버는 skylon의 리소스를 png라는 이미지파일로 제공해야 한다는 것을 인식하고, 최종적으로 서버에 등록되어 있는 데이터 모델을 통해서 위에 URL로 특정했던 리소스 http://www.kerbalspaceport.com/ship_images/skylon.png 을 요청자에게 제공하게 된다.
한가지 알아두어야 할 점이 있다면 URL 역시 특정한 리소스를 식별하는데 사용은 된다는 점이다. 위의 예는 두가지 개념의 접근법 차이를 강조하기 위해 의도적으로 선택된 것이다. 따라서 URL은 곧 URI이기도 하지만 URI가 URL인것은 아니다. URL은 URI의 부분집합, 혹은 하위호환이라고 보아야 한다.














