2.2. URL 문법

URL로 인터넷상의 모든 리소스를 찾을 수 있지만, 그 리소스들은 다른 스킴(예를 들어 HTTP, FTP, SMTP)을 통해 접근할 수 있으며, URL 문법은 스킴에 따라서 달라진다.

다른 URL 스킴을 사용한다는 것이 전혀 다른 문법을 사용한다는 뜻일까?
사실은 그렇지 않다.
대부분의 URL은 일반 URL 문법을 따르며, 서로 다른 URL 스킴도 형태와 문법 면에서 매우 유사하다.
대부분의 URL 스킴의 문법은 일반적으로 9개 부분으로 나뉜다.

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

이 모든 컴포넌트를 가지는 URL은 거의 없다.
URL의 가장 중요한 세가지 컴포넌트는 스킴, 호스트, 경로다.
다음 표는 URL 컴포넌트에 대한 설명이다.

컴포넌트설명기본값
스킴리소스를 가져오려면 어떤 프로토콜을 사용하여 서버에 접근해야 하는지 가리킨다.없음
사용자 이름몇몇 스킴은 리소스에 접근을 하기 위해 사용자 이름을 필요로 한다.anonymous
비밀번호사용자의 비밀번호를 가리키며, 사용자 이름에 콜론(:)으로 이어서 기술한다.<이메일 주소>
호스트리소스를 호스팅하는 서버의 호스트 명이나 IP 주소.없음
포트리소스를 호스팅하는 서버가 열어놓은 포트번호. 많은 스킴이 기본 포트를 가지고 있다.(HTTP의 기본 포트는 80이다.)스킴에 따라 다름
경로이전 컴포넌트와 빗금(/)으로 구분되어 있으며, 서버 내 리소스가 서버 어디에있는지 가리킨다. 경로 컴포넌트의 문법은 서버와 스킴에 따라 다르다.(이 장 뒤에서는 URL의 경로를 세그먼트로 나눌 수 있고, 각 세그먼트는 자체 컴포넌트를 가질 수 있다는 것을 알게 될 것이다.)없음
파라미터특정 스킴들에서 입력 파라미터를 기술하는 용도로 사용한다. 파라미터는 이름/값을 쌍으로 가진다. 파라미터는, 다른 파라미터나 경로의 일부와 세미콜론(;)으로 구분하여 기술하며, 여러 개를 가질 수 있다.없음
질의스킴에서 애플리케이션(데이터베이스, 게시판, 검색엔진, 기타 인터넷 게이트웨이)에 파라미터를 전달하는데 쓰인다. 질의 컴포넌트를 작성하는데 쓰이는 공통 포맷은 없다. 이는 URL의 끝에 "?"로 구분한다.없음
프래그먼트리소스의 조각이나 일부분을 가리키는 이름이다. URL이 특정 객체를 가리킬 경우에 프래그먼트 필드는 서버에 전달되지 않는다. 이는 클라이언트에서만 사용한다. URL의 끝에 '#' 문자로 구분한다.없음

예를 들어 http://www.test.com:80/index.html이라는 URL이 있다고 해보자.
스킴은 http, 호스트는 www.test.com, 포트는 80, 경로는 /index.html이 된다.