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
'웹개발 > 개념' 카테고리의 다른 글
멀티쓰레드 (0) | 2022.10.12 |
---|---|
[JAVA] String, Stringbuilder, Stringbuffer 차이점 (0) | 2022.10.12 |
[JAVA] 상속과 오버라이딩 (0) | 2022.10.12 |
웹 개발 개념 정리 (0) | 2022.10.11 |
면접 대비 - 웹 브라우저에 도메인 입력하면 일어나는 일? (0) | 2022.10.11 |