수박한암살자 2021. 10. 7. 00:14

인프런 김영한 님 강의(모든 개발자를 위한 HTTP 웹 기본 지식)를

기반으로 필기했던 내용 위주로 정리해봤습니다.

 

그리고 뒷부분에 (제 중심으로ㅡㅡ;) 이해하기 편하게

정리해보는 것이 가벼운 목표입니다.


URI?

URL은 많이 들어봤는데 URI는 뭘까? 

 

Unifor : 리소스 식별하는 통일된 방식

Resource : 자원, URI를 식별할 수 있는 모든 것

Identifier : 다른 항목과 구별하는데 필요한 정보

 

위 세 단어의 앞글자를 딴 것이 URI다. 즉, 리소스를 구분하기 위한 표준 규칙(규약)이라고 생각하면 된다.

 

그래서 URL은 뭔데?

URL은 Uniform Resource Locator의 약자다. 리소스가 있는 위치를 지정한다.

URN이라는 녀석도 있다. URName으로써 리소스에 이름을 부여한다.

 

URI는 URL과 URN의 상위 개념이다.

그래서 모든 URL은 URI다 라고 할 수 있지만 모든 URI는 URL이다 라고 할 수는 없다.

다만 URL을 가져와서 어디까지가 URI고 이걸 복잡하게 구분하는 건 얻는게 크게 없는 듯 하다.

(구글링하면 뜯어본 사람들이 있으니 참고하면 좋다)

 

URN은 전반적으로 잘 쓰지 않는다. 이를 통해서 리소스를 얻는 걸 지원하는 곳도 없다고 봐도 된다.

 

모든 URI는 URL이라고 할 수 있다 보니 혼용되기도 하는데

혼돈을 좋아하는 사람이 아니라면 그냥 URL을 쓰자.

다만, 엄격하게 URI라고 하는 사람이 있다면 뭔가 이유가 있을 테니 유연하게 이야기하자.

 

URL을 분석해보자

  • scheme://[userInfo@]host[:port][/path][?query][#fragment]

URL의 구조는 위와 같다.

 

  • scheme : 주로 프로토콜이 들어간다. 우리가 잘 아는 http(s), ftp.
  • userInfo : 사용자 정보를 넣는다. 잘 쓰지 않는다. 
  • host : domain이나 ip address가 들어간다.
  • port : 생략하면 http일 경우 80, https이면 443이 들어간다.
  • path : 리소스의 경로를 나타내며, 계층 구조이다.
  • query : key=value의 구조로 입력되고 ?로 시작한다. &로 추가 데이터를 넣을 수 있다. query string 이라고도 하고 query parameter라고도 한다.
  • fragment : html 내부 북마크 같은 곳에 쓰인다. (ex: https://en.wikipedia.org/wiki/Wiki#Editing 에서 #Editing)

(내맘대로 비유해보기 시간)

 

URI와 URL, URN은 헷갈리는 것이 사실이다.

특히 URI와 URL은 더욱 그렇다.

김영한님 강의에서는 URI를 URL과 같은 의미로 이야기하겠다고 나오기도 한다.

 

개인적으로는 스택오버플로우에서 본 설명이 맘에 들었다.

 

김철수라는 사람이 있다고 가정하자.

그리고 이 사람이 지금 있는 위치가 서울특별시 서초구 방배동이라고 하자.

 

김철수라는 사람을 만나려면 서울특별시 서초구 방배동으로 가야 한다.

이때 그 위치가 URL이다. URL은 변할 수 있다.

(사람은 계속 이동할 테니)

 

이 사람의 이름인 김철수가 URN이다. 변하지 않는다.

하지만 URN만으로 김철수라는 사람을 만날 수는 없다.

(이러니 안 쓴다)

 

URI는 이 사람에 대해 식별하기 위한 규약이다.

서울특별시 서초구 방배동에 있는 사람도 저 사람이고

김철수라는 사람도 저 사람이다. 물론 김철수가 고유한 이름이어야겠지만.

 

URI는 다소 느슨한 느낌이니 URL을 쓰도록 하자.

반응형