URN? URL? URI!

jjyung·2021년 9월 25일
0

JS

목록 보기
5/13

encodeURI 함수는 완전한 URI를 문자열로 전달받아 이스케이프 처리를 위해 인코딩한다. URI는 인테넷에 있는 자원을 나타내는 유일한 주소를 말한다. URI의 하위 개념으로 URL, URN이 있다.

비전공자로 프로그래밍 언어를 공부하다보면 이런 기초적인 CS 정보가 나올때마다 항상 머리속은 물음표로 가득찬다.

'아니 그래서 유일한 주소인건 알겠는데 왜 URL과 URN으로 나누는거야? 그래서 URI, URN, URL 차이가 뭔데? 이 주소에는 어떤 정보들이 들어가있을까?'

해당 챕터를 읽어도 이 궁금증이 해결되지않아 찾아 정리한것을 블로그에 기술해보고자한다.

URI란?

URI

  • URI는 Uniform Resource Identifier로 인터넷에 있는 자원을 나타내는 유일한 주소를 말한다. 즉, 주민등록번호처럼 다른 항목들과 구분하는데 필요한 정보를 가지고있다.
  • URI는 앞서 책에서 말한 것처럼 URN과 URL을 포함하고 있다.

URN/URL

URL은 Uniform Resource Locator로 리소스가 있는 위치를 지정한다. 반면, URN은 Uniform Resource Name으로 리소스에 이름을 부여하는 것을 뜻한다. 둘 다 다른 자원들과 구별할 수 있도록 유일한 이름이나 주소 정보를 가지고 있는데, 그럼 이 둘의 가장 큰 차이점은 무엇일까?

위치는 변할 수 있지만, 이름은 변하지 않는다.

즉, 이름은 한 번 정하면 변하지 않지만, 위치는 변경할 수 있다.

'엥? 이름처럼 변하지않으면 찾기 쉽지만, 위치는 달라지면 어떻게 알고 찾아가지?'

DNS

이 문제는 생각보다 간편하게 해결된다. DNS(Domain Name System)라는 마치 전화번호부 같은 시스템이 존재한다.

이 시스템에는 도메인 명과 IP 주소가 저장되어있어, 주소를 모른다고 하더라도 도메인 명으로만으로도 찾아갈 수 있다. 또한, 주소가 바뀌면 DNS의 IP 주소만 변경해주면 된다.

그래서 우리가 흔히 보는 주소는 URL에 해당된다. 그럼 URN은 어디서 사용이될까? 아무래도 이름만으로 찾기가 어렵다보니까 해당 방법이 보편화 되어있지않다. URN을 많이 사용하는 곳은 도서관이나 책방 같은 곳에 urn:isbn해서 책을 등록하는 것이다. 그래서 책 표지에 보면 isbn이 적혀있다.

URN은 거의 사용하지않다보니, 대부분 URL을 URI와 같은 의미로 사용하고있다. 이제 URL 정보에는 어떤 정보들로 구성되어있는지 한 번 파헤쳐보자.

URL 분석


이 주소를 함께 보며 분석해보자.

  1. https : 이 부분을 프로토콜이라고 사용한다. 프로토콜이란, 어떤 방식으로 자원에 접근할 것인가를 정한 약속 규칙이다. http와 https가 가장 많이 사용되는데 둘의 차이는 https가 더 보안이 강력하게 적용된 것이다.

  2. [userinfo@] : https://뒤에 나오는 정보이고, 사용자 정보를 담는 부분인데 생략해도된다 (주로 생략한다).

  3. www.google.com : 호스트명 (도메인명)

  4. [:port] : 443 같은 포트번호를 나타내는데 생략 가능하다.

  5. (/search) : 계층적 구조로 이루어진 리소스 경로이다. 이 또한 생략이 가능하다.

  6. (q=hello&hl=ko) : 쿼리 파라미터로, 키와 value의 형태로 이루어져있다. ?로 시작하고 &를 통해서 여러개의 key, value를 연결할 수 있다. 이 또한 생략이 가능하다.

  7. fragment : html 내부 북마크 등에서 사용되는데 생략이 가능하고 서버에 넘어가는 정보는 아니다. 이 부분이 URI와 URL의 차이이다. (URI는 존재, URL는 fragment 존재하지 않는다)

이렇게 주소 하나에도 많은 정보를 포함하고있어 정보를 전달하기 위해서는 이스케이프 처리, 즉 인코딩 단계가 필요하다.


URI와 URN, URL까지 알고나니 이제는 그래서 저 정보들로 웹 브라우저가 요청을 어떻게 처리하는지 흐름을 알고 싶어졌고, 리서치를 할 예정이다. 다음 글에서는 웹 브라우저의 요청 흐름에 대해 알아보자!

profile
🏃‍♀️movin' forward, developer

0개의 댓글