웹개발/개념

URL과 URI의 차이점

Kang_hobin 2022. 10. 11. 21:52

1. URI(Uniform Resource Identifier)는 인터넷 상에서 특정 자원을 나타내는 유일한 주소

ex) 아래 캡처가 URI임 리소스 자원(받고 싶은 html 페이지, 그림 등 서버에 저장되어 있는 '것')의 주소임

 

기본 구조는 다음과 같다.

scheme ://host[:port][/path][?query]
ex) 앞에 ftp를 쓰면 ftp 통신이, http를 쓰면 http통신이 되는 것임. 앞은 7계층 프로토콜 형식을 지정하는 것임
ftp://IP주소:포트/파일이름
http://IP주소:포트/폴더이름/파일이름

http 통신은 IP주소:포트 대신 도메인 주소를 씀. 그걸 해주는 역할을 하는 것이 DNS 서버임.

보통 https면 443포트(ssl 통신) 등 포트를 자동으로 지정해서 연결해줌.

 

URL(Uniform Resource Locator)은 폴더이름과 파일이름까지, 즉 경로까지만(요즘은 정확한 개념은 아님 조금 복잡해짐) 나타내는 것이고, URI는 리소스의 논리적 또는 물리적 위치를 식별하는 고유한 문자열 시퀀스임.

 

URL은 URI의 서브셋이며, 가장 큰 차이점은 URI는 식별하고 URL은 위치를 가르킨다는 것임.

결론, URI는 URL을 포함하는 개념이다.

 

정확한 이해를 위해 하나 예시를 가져와 봤다.

1. https://www.hobin.com/index.html 

2. https://www.hobin.com/index 

 

두 주소는 모두 index.html을 가리키고 있다.

다만 첫번째 주소는 웹 서버의 실제 파일 위치를 나타내는 주소이므로 URI 이면서 URL 이지만,

두번째 주소는 실제로 index라는 파일이 웹서버에 존재하지 않으므로 URL은 아니다.

다만 서버내부에서 처리하는 과정을 거쳐 index.html을 가리키기 때문에 URI 라고 할 수 있다.

 

좀 더 찾아보다가 위의 예시가 잘못된 듯 하여 새로운 예시를 가져와 보았다.

먼저 Path Variable 방식과 Query Parameter 방식 두 가지가 있다.

Path Variable 방식은 다음과 같다. 이는 어떤 특정한 자원을 보여줘야할때 사용된다.

/user/1
/user/2
/user/3

Query Parameter 방식은 다음과 같다. 이는 자원들을 필터링해서 보여줄때 사용된다.

/user?job=student
/user?job=student&age=10

이제 본론으로 돌아와 URL과 URI의 차이점에 대한 몇가지 예시를 들어보자.

1) http://torang.co.kr/index

위의 예시에서는 torang.co.kr 에서 index라는 경로를 나타내고 있다.
서버에서는 해당 라우팅에대한 알맞은 자원을 전송해줄 것이며 이는 자원의 실제 위치이므로 URL이다.

2) http://torang.co.kr/user/107

위의 예시에서는 torang.co.kr 에서 107의 ID값을 가지고있는 자원을 식별하고있다. 따라서, http://torang.co.kr/user/ 까지는 자원의 실제 위치이기 때문에 URI임과 동시에 URL이며 끝의 /107 부분은 식별자이므로 http://torang.co.kr/user/107은 URL(http://torang.co.kr/user/)을 포함한 URI라고 볼 수 있다.

3) http://torang.co.kr/user?id=107

위의 예시에서 마찬가지로 http://torang.co.kr/user 까지는 자원의 실제 위치를 나타내기 때문에 URL이라고 할 수 있으며, 뒤의 쿼리스트링 식별자(?id=107)를 포함하여 URI라고 볼 수 있다.

 

참고 : https://velog.io/@torang/URL%EA%B3%BC-URI%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90