네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약으로 위치 정보 문자열, 즉 웹 리소스에 대한 주소이다.
그냥 우리가 흔히 아는 웹 주소를 의미한다. 여러분이 오덕이라고 가정했을 때 야애니 피규어 사진을 다운로드한다 치자. 웹 서버는 입력된 URL을 통해 해당 사진을 찾아 당신의 브라우저로 보내줄 것이다. 이때 그 리소스에 대한 주소를 말한다.
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
scheme : 프로토콜 (http 또는 https)
user와 password : 리소스 접근시 로그인이 필요한 서비스의 경우 사용자 id / pw
host와 port : 접근 대상 도메인 또는 호스트와 포트 번호
path : 접근 대상 경로
query : 접근 대상에 전달하는 추가 정보 (파라미터)
fragment : 메인 리소스 내 서브 리소스에 접근할 때 이를 식별하기 위한 정보
인터넷에 존재하는 각종 정보들의 유일한 이름을 표시하는 식별자이다.
URL의 한계 때문에 착안된 형태인데 기존 URL은 리소스의 위치를 바꾸면 바꾸기 전 URL 주소로는 접근을 못한다. 사실 당연한 이치다. 리소스에 대한 위치가 바뀌었다면 이전 URL은 유효하지 않는 주소가 되는 것이 당연하다. 근데 이것도 한계라고 생각했는지 자원의 이름을 식별자로 유효한 URL로 구성하는 형태를 띈다. 한마디로 실제 자원에 접근하기 위해서는 그냥은 못쓰고 URL로 변환해서 사용해야하는 번거로운 놈이란 얘긴데.. 진심 얘를 알 필요가 있나? 개발자로 일하면서 입밖으로 뱉어본 적이 없는 단어다.
인터넷에 있는 자원을 나타내는 유일한 주소이다. URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어 다닌다. URI의 하위 개념으로 URL, URN 이 있다.
URI는 식별 정보가 포함된 주소라고 생각하면 쉽다. 예를 들어 여러분은 십덕이다. 십덕답게 십덕카페에 가입했는데 미카짱의 첫번째 게시글을 보고 싶다. 하지만 십덕카페엔 여러 캐릭터의 게시글이 있다. 이때 이런 형태의 주소를 날리게 된다.
! 실제 네이버가 이렇게 돈다는 얘기는 아니다. 예시예시
https://cafe.naver.com/shipduckcafe/list?char="미카쨩"&index=1
해당 주소로 이동하면 수많은 미카쨩의 게시글을 확인할 수 있다.
https://cafe.naver.com/shipduckcafe/list
에는 수많은 게시글이 있을 것이다. 하지만 그중에 여러분이 열광하는 미카쨩 게시글을 찾기 위해선 ?char="미카쨩"&index=1
다음과 같은 식별자를 추가해야 미카쨩의 첫번째 게시글만 확인할 수 있는 것처럼 웹 주소에 식별자 정보가 존재하는 경우가 URI 주소라고 말할 수 있겠다.
https://cafe.naver.com/shipduckcafe/list
자체도 URI다. 모든 URL은 URI라 할 수 있다. 웹 서버의 특정 자원에 대한 접근 경로라는 것은 결국 고유의 파일 또는 웹 리소스의 위치를 탐색하는 것이기 때문이다. 그냥 분리해서 이해하기 위함이라는 느낌이다.
결론을 먼저 말하면 특정 리소스에 대한 식별정보가 존재하느냐 없느냐의 차이다. 위 그림에서 확인할 수 있듯이 모든 URI는 URL을 포함하고 있다. URI는 더 넓은 개념이기 때문에 URL이라고 부를 수 없지만 모든 URL은 URI라 부를 수 있다. 이게 뭔 말장난인가 싶겠지만 통상적으로 URI라고 하면 다 맞말이란 얘기다.
오늘은 URL과 URI 그리고 찐따 URN에 대해 알아봤다. 자료조사를 하다보니 URL과 URI는 같다 아니다 이걸로 조금 의견이 갈리더라. 어차피 URL이던 URI던 어떤 한 리소스에 대한 주소 정보다. 개념적인 차이만 인지하고 그냥 쓰던대로 쓰자. URL이라고 해도 다 알아먹는다.
오늘 저녁은 상스치콤이다. 🥕
참조 : https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-URL-URI-%EC%B0%A8%EC%9D%B4
https://velog.io/@younoah/uri-url-urn
https://velog.io/@torang/URL%EA%B3%BC-URI%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90