본문 바로가기

HTTP

[HTTP] URL과 리소스

#1. URI(Uniform Resource Identifier)

URI는 인터넷의 주소로, 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있다. URI에는 URL과 URN 2가지 종류가 있다. 

URL은 특정 서버의 한 리소스에 대한 구체적인 위치를 기술한다.

URN은 리소스의 위치에 영향을 받지 않는 유일무이한 이름 역할을 한다. 리소스가 이름을 변하지 않게 유지하는 한 여러 종류의 네트워크 접속 프로토콜로 접근해도 문제없다.

오늘날 대부분의 URI는 URL이다.


#2. URL(Uniform Resource Location)

URL은 인터넷의 리소스(텍스트, 이미지, 동영상...)를 가르키는 표준이름이다. 브라우저가 정보를 찾는데 필요한 리소스의 위치를 가르키며, URL을 통해 사람과 애플리케이션이 인터넷상의 수십억 개의 리소스를 찾고 사용하며 공유할 수 있게된다.

 

URL

  • URL의 첫 부분인 https는 스킴(scheme)이다. 웹 클라이언트가 리소스에 어떻게 접근하는지 알려준다.

  • URL의 두 번째 부분 chaengstory.tistory.com은 서버의 위치이다. 웹 클라이언트가 리소스가 어디에 호스팅 되어 있는지 알려준다.

  • URL의 세 번째 부분 4?category=934911는 리소스의 경로이다. 서버에 있는 로컬 리소스들 중 요청받은 리소스가 무엇인지 알려준다.

URL은 "스킴://서버위치/경로" 구조로 이루어져 있다. 


# 3. URL구조

대부분의 URL 스킴의 문법은 일반적으로 9개의 부분으로 나뉜다.

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

URL 구조

  • 스킴 : 주어진 리소스에 어떻게 접근하는지 알려주는 중요한 정보이다. URL을 해석하는 애플리케이션이 어떤 프로토콜을 사용하여 리소스를 요청해야 하는지 알려준다.

  • 호스트와 포트 : 호스트 컴포넌트는 리소스에 접근할 수 있는 서버가 어디에 있는지 정보를 제공해 주는 역할을 한다. 호스트명이나 IP주소로 제공한다.  포트 컴포넌트는 서버가 열어놓은 네트워크 포트를 가르킨다. 내부적으로 TCP 프로토콜을 사용하는 HTTP는 기본 포트로 80을 사용한다.

  • 사용자 이름과 비밀번호 : 애플리케이션이 FTP(File Transfer Protocol)와 같은 URL스킴을 사용한다면. 사용자 이름과 비밀번호를 요구한다.  기본 사용자 이름 값은 'anonymous' 비밀번호 값은 브라우저마다 가지고 있는 기본값을 사용한다.

  • 경로 : 경로 컴포넌트는 리소스가 서버 어디에 있는지 알려준다. HTTP URL에서 컴포넌트 경로는 '/'문자를 사용하여 경로조각으로 나뉜다.

  • 파라미터 : 파라미터 컴포넌트는 애플리케이션이 서버에 정확한 요청을 하기 위해 필요한 입력 파라미터를 받는데 사용한다. 이름/값 쌍의 리스트로 URL 나머지 부분들로부터 ';' 문자로 구분하여 URL에 기술한다.

  • 질의 문자열 : 쿼리 스트링(Query String)이라고도 하며 물음표(?)의 우측에 있는 값들을 질의 컴포넌트라고 부른다. 리소스 형식의 범위를 좁히기 위해 사용된다.

  • 프래그먼트 : 프래그먼트 컴포넌트는 #문자 우측에 위치하며 리소스의 특정부분을 가리킬 경우에 사용된다. 일반적으로 HTTP서버는 객체 일부가 아닌 전체만 다루기 때문에 클라이언트는 서버에 프래그먼트를 전달하지 않는다. 브라우저가 서버로부터 전체 리소스를 내려받은 후 프래그먼트를 사용하여 보고자 하는 리소스의 일부를 보여준다.


# 4. URL 문자 집합

사람들은 URL에 이진데이터나 일반적으로 안전한 알파벳 외의 문자도 포함하려고 할 경우가 있고 이를 위해 이스케이프라는 기능을 추가하여 안전하지 않은 문자를 안전한 문자로 인코딩할 수 있게 하였다.

인코딩은 안전하지 않은 문자를 퍼센티지(%) 기호로 시작해 ASCII 코드로 표현되는 두 개의 16진수 숫자로 이루어진 '이스케이프'문자로 바꾼다.

인코딩된 문자의 예

 

 

참고 자료

 

HTTP

하이퍼텍스트 전송 프로토콜(HTTP)은 HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜입니다. 웹 브라우저와 웹 서버간의 커뮤니케이션을위해 디자인되었지만, 다

developer.mozilla.org

  • HTTP완벽 가이드, 인사이트

'HTTP' 카테고리의 다른 글

[HTTP] 캐시(Cache)  (0) 2020.05.03
[HTTP] 프락시(Proxy)  (0) 2020.05.02
[HTTP] 웹 서버  (0) 2020.05.02
[HTTP] 커넥션 관리  (0) 2020.05.01
[HTTP] HTTP메시지  (0) 2020.04.30