HTTP 완벽 가이드 - URL과 리소스
URL(Uniform Resource Locator)은 인터넷의 리소스를 가리키는 표준이름이다. URL은 전자정보 일부를 가리키고 그것이 어디에 있고 어떻게 접근할 수 있는지 알려준다.
인터넷의 리소스 탐색하기
URL은 브라우저가 정보를 찾는데 필요한 리소스의 위치를 가리키며, URL을 이용해 사람과 애플리케이션이 인터넷상의 수십억 개의 리소스를 찾고 사용하며 공유할 수 있다. 그리고 URL을 통해 사람이 HTTP 및 다른 프로토콜을 통해 접근할 수 있다. 사용자는 브라우저에 URL을 입력하고 브라우저는 화면 뒤에서 사용자가 원하는 리소스를 얻기 위해 적잘한 프로토콜을 사용하여 메시지를 전달한다.
예를들어
http://www.joes-hardware.com/seasonal/index-fall.html 이라는 URL을 불러오고 싶다고 가정해보자.
- URL의 첫 부분인 http는 URL의 스킴이다. 스킴은 웹 클라이언트가 리소스에 어떻게 접근하는지 알려준다. 이 경우에, URL이 HTTP프로토콜을 사용한다.
- URL의 두 번째 부분인 www.joes-hardware.com은 서버의 위치이다. 이는 웹 클라이언트가 리소스가 어디에 호스팅 되어 있는지 알려준다.
- URL의 세 번째 부분인 /seasonal/index-fall.html은 리소스의 경로이다. 경로는 서버에 존재하는 로컬 리소스들 중에서 요청받은 리소스가 무엇인지 알려준다.
URL은 HTTP 프로토콜이 아닌 다른 가용한 프로토콜을 사용할 수도 있다.
- mailto:president@withehouse.gov
는 이메일 주소를 가리키며,
- ftp://ftp.lots-o-books.com/pub/complete-price-list.xls
는 FTP(File Transfer Protocol) 서버에 올라가 있는 파일을 가리키고
- rstp://www.joes-hardware.com:554/interview/cto_video
는 스트리밍을 제공하기 위해 비디오 서버에 호스팅하고 있는 영화를 가리킨다. 이렇게 URL은 인터넷에 있는 어떤 리소스든지 가리킬 수 있다.
URL 문법
URL로 인터넷상의 모든 리소스를 찾을 수 있지만, 그 리소스들은 다른 스킴(예들들어 HTTP, FTP, SMTP)을 통해 접근할 수 있으며, URL문법은 스킴에 따라서 달라진다.
다른 URL 스킴을 사용한다는 것이 전혀 다른 문법을 사용한다는 뜻일까? 사실을 그렇지 않다.
대부분의 URL 스킴의 문법은 일반적으로 9개의 부분으로 나뉜다.
이 모든 컴포넌트를 가지는 URL은 거의 없다. URL의 가장 중요한 세 가지 컴포넌트는 스킴, 호스트, 경로다.
예들 들어 http://www.joes-hardware.com:80/index.html 이라는 URL이 있다고 가정했을때
스킴은 'http'
호스트는 'www.joes-hardware.com'
포트는 '80'
경로는 'index.html'
이 된다.
스킴 : 사용할 프로토콜
스킴은 주어진 리소스에 어떻게 접근하는지 알려주는 중요한 정보다. 이는 URL을 해석하는 애플리케이션이 어떤 프로콜을 사용하여 리소스를 요청해야 하는지 알려준다. 위에서 예로 사용한 URL의 스킴은 'http' 이다.
스킴 컴포넌트는 알파벳으로 시작해야 하고 URL의 나머지 부분들과 첫 번째 ':' 문자로 구분한다. 스킴 명은 대소문자를 가리지 않기 때문에
'http://www.joes-hardware.com'와 HTTP://www.joes-hardware.com' 는 같다.
호스트와 포트
애플리케이션이 인터넷에 있는 리소스를 찾으려면, 리소스를 호스팅하고 있는 장비와 그 장비 내에서 리소스에 접근할 수 있는 서버가 어디에 있는지 알아야 한다.
URL의 호스트와 포트 컴포넌트는 그 두 가지 정보를 제공해준다.
호스트 컴포넌트는 접근하려고 하는 리소스를 가지고 있는 인터넷상의 호스트 장비를 가리킨다. 해당 값은 위에서와 같이 ('www.joes-hardware.com') 호스트 명이나 IP주소로 제공한다.
- http://www.joes-hardware.com:80/index.html
- http://125.92.228.48:80/index.html
포트 컴포넌트는 서버가 열어놓은 네트워크 포트를 가리킨다. 내부적으로 TCP 프로토콜을 사용하는 HTTP는 기본 포트로 80을 사용한다.
경로
URL의 경로 컴포넌트는 리소스가 서버의 어디에 있는지 알려준다. 해당 경로는 아래 예와 같이 계층적 파일 시스템 경로와 유사한 구조를 가진다.
- http://www.joes-hardware.com:80/seasonal/index-fall.html
이 URL의 경로는 '/seasonal/index-fall.html'로 유닉스 파일 시스템의 파일 경로와 유사하다. 경로는 서버가 리소스의 위치를 찾는데 사용하는 정보다. HTTP URL에서 경로 컴포넌트는 '/' 문자를 기준으로 경로조각으로 나눈다.
웹에서 쓰이는 일번 스킴들의 포맷