개발 공부/HTTP 공부

[HTTP] URL과 리소스

종범2 2020. 6. 22. 08:42

URI, URL, URN

 

URI(Uniform Resource Identifier, 통합 자원 식별자)는 서버에 존재하는 리소스의 위치를 가리키는 주소이다. URI에는 두 가지가 있다. URL(Uniform Resource Locator, 통합 자원 지시자)와 URN(Unifrom Resource Name, 통합 자원 이름)이다. 즉 URI는 URL과 URN을 포함한다. URL는 리소스의 정확한 위치를 가리키며 URN는 리소스의 이름을 가리킨다. URN은 URL을 보완하기 위해 나온 개념이다. URL을 사용하면 리소스의 위치가 바뀌었을 때 기존의 URL로 리소스를 찾을 수 없는 문제가 발생한다.

 

대표적으로 어떤 리소스에 www.tistory.com/123로 접근할 수 있었는데, www.tistory.com/1234으로 URL이 바뀌면 더 이상 이전의 URL은 유효하지 않다. URN은 리소스의 유일한 이름을 가리키기 때문에 위치가 바뀌어도 이러한 문제가 발생하지 않는다.

 

하지만 URN은 아직 실험 중인 상태이다. 따라서 웹에서는 통상적으로 URI는 URL을 의미한다고 봐도 무방하다.

 

URL 문법

URL의 문법은 9개의 부분으로 나뉜다.

 

<스킴>://<사용자 이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>

 

스킴 사용할 프로토콜
사용자 이름 사용자의 이름
비밀번호 사용자의 비밀번호
호스트 리소스를 가진 컴퓨터
포트 호스트의 서버가 열어놓은 네트워크 포트
경로 호스트의 서버 내에서 리소스의 위치
파라미터 서버에 더 정확한 요청을 하기 위해 필요한 정보
질의 ? 이후의 부분으로 리소스의 범위를 좁히기 위해 필요한 정보
프래그먼트 # 이후의 부분으로 서버에 전달하지 않고 클라이언트에서만 사용하는 리소스의 이름

 

URL 인코딩

URL을 인코딩해야 하는 경우는 두 가지이다. 첫 번째는 US_ASCII 문자가 아닌 문자를 사용해야 할 때이다. US_ASCII는 기본적으로 영어 문자열이므로 다른 언어를 사용하고 싶다면 %로 시작해서 표시를 하고 두 개의 16진수 숫자로 변환해야 한다. 예를 들어 ㅎ은 %e3%85%8e으로 인코딩을 해야 한다. 인코딩 규칙은 따로 있으며 여기에서는 설명하지 않겠다.

 

인코딩을 해야 하는 두 번째 경우는 특수문자를 사용해야 할 때이다. URL에서 특수문자는 의미와 용도가 정해져 있다. 대표적인 예로 스킴 다음에 나오는 ://나 질의 전에 나오는 ?가 있다. 이렇게 사용되는 특수문자들을 예약된 문자라고 한다. 예약된 문자의 용도로 사용하지 않는 특수문자는 모두 인코딩을 해야 특수 문자 그 자체로 사용할 수 있다.

 

URL을 직접 인코딩 하고 싶다면 여기를 이용하면 된다.

https://www.convertstring.com/ko/EncodeDecode/UrlEncode

 

URL 인코딩 - 온라인 URL 인코더

 

www.convertstring.com

예를 들어 https://tistory.com/인코딩~ 이라는 URL을 인코딩 하고 싶다고 하자. 예약된 문자인 :와 /는 그 용도를 그대로 사용해야 하기 때문에 인코딩하면 안 된다. 따라서 인코딩공부중~이라는 문자열만 인코딩해야 한다. 인코딩 된 URL은 https://tistory.com/%ec%9d%b8%ec%bd%94%eb%94%a9%7e이 된다. 

 

참고 자료

https://book.naver.com/bookdb/book_detail.nhn?bid=8509980

 

HTTP 완벽 가이드

성공적인 웹 트랜잭션 뒤의 숨은 핵심, HTTP의 모든 것『HTTP 완벽 가이드』는 HTTP 규약이 어떻게 작동하고 웹 기반 애플리케이션을 개발하는 데 어떻게 사용하는지 설명하고, HTTP가 효율적으로 동

book.naver.com

 

'개발 공부 > HTTP 공부' 카테고리의 다른 글

[HTTP] 커넥션 관리  (0) 2020.06.28
[HTTP] HTTP 메세지  (0) 2020.06.22