Restful API를 공부하거나 일상생활에서도 링크나 사이트의 주소 등을 나타낼 때 URL, URI라는 표현을 자주 사용한다.
보통 둘다 사이트 주소로 이해하고 있지만 URL, URI는 뜻이 다르다.
- Uniform Resource Identifier 말 그대로 정형화된 자원의 식별자
- velog.io 처럼 그 이름 자체를 URI라고 말할 수 있다.
- 프로토콜과 결합되어도 (https://velog.io) 역시 URI라고 말할 수 있지만, 동시에 URL이라고도 할 수 있다.
- 또한 모든 리소스를 식별하는 모든 수단이 URI라고 할 수 있다.
- 보통 인터넷 주소라고 하면 대부분은 URL이라고 할 수 있다.
- 프로토콜(http, sftp..)이 결합된 주소만이 URL이라고 할 수 있다. (ex. https://velog.io/)
즉 해당 자원의 위치와 접근방법(프로토콜)이 결합되어야 URL이라고 말할 수 있다.(경우에 따라서 port도 포함될 수 있다.)
- 즉 모든 URL은 URI일 수 있지만, 모든 URL이 URI일 수는 없다. (URI가 상위개념)
Example)
velog.io - URI
https://velog.io/ - URI, URL
2-1. URL의 구조
URL example
https://news.naver.com:443/main/main.naver?mode=LSD&mid=shm&sid1=105
Protocol
- 위 예시의 https 부분
- 통신규약을 의미하며 https말고도 많은 통신규약이 존재한다.
SLD (Second Level Domain)
- 위 예시의 news 부분
- 서브도메인이라고도 불리며, 하나의 도메인으로 여러 서비스를 제공할 수 있다.
'www' 말고도 'm', 'admin' 등 여러 임의의 문자열을 지정할 수 있다.
Domain
- 위 예시의 naver 부분
- URL의 중심이 되며 아이덴티티로 역할을 겸하기 때문에
대부분 해당 웹서비스의 이름이 들어간다.
TLD(Top Level Domain)
- 위 예시의 com 부분
- 위의 서브도메인과 도메인을 관리하는 기관이나 단체를 뜻한다.
- TLD는 해당 도메인을 소유한 기관이나 기업에 의해 관리된다.
- 운영주체에 따라 ccTLD, gTLD 2가지로 나뉜다
- ccTLD (country code Top Level Domain)
- kr, jp, io 등 국가기관 직접관리하는 최상위 도메인이다.
- 한국의 경우 kr로 KISA(한국 인터넷 진흥원)이 관리한다.
- gTLD (generic Top Level Domain)
- com, net, gov 등이 있으며 다양한 종류가 있으며 가장 흔하게 접할 수 있다.
- 정부기관 TLD인 gov는 ccTLD에 속하지 않는다.
Port
- 위 예시의 :443 부분
- 보통의 웹사이트의 경우 포트번호를 보기 힘든데 그 이유는 HTTPS 프로토콜의 기본 포트번호인 443인 경우 생략이 가능하기 때문이다.
프로토콜의 기본 포트번호를 사용하지 않는다면 생략이 불가능하기 때문에
대부분 기본포트번호를 사용한다.
Path
- 위 예시의 /main/main.naver 부분, 도메인의 하위 경로를 의미하며
/
로 구분한다.
Query String
- 위 예시의 ?mode=LSD&mid=shm&sid1=105 부분
- 해당 경로에 데이터를 전송할 때 사용된다.
?
로 시작하며 &
로 구분한다.
- 각각의 데이터는 파라미터라고 칭하며 key=value의 형태를 지니고 있다.
- 하지만 개발자가 해당 key의 대한 동작을 정의했을때만 의미를 가진다.
참조 : https://danielmiessler.com/study/difference-between-uri-url/
https://blog.itcode.dev/posts/2021/05/29/uri-url-urn