URL(Uniform Resource Locator)은 인터넷 리소스를 가르키는 표준 이름이다.
URL
URL
은 브라우저가 정보를 찾는데 필요한 리소스의 위치를 가리키며, URL을 이용해 사람과 애플리케이션이 수십억개의 리소스를 찾고 사용하며 공유 할 수 있다.
또 URL은 HTTP프로토콜이 아닌 다른 가용한 프로토콜을 사용할 수도 있다.
URL 문법
URL로 인터넷상의 모든 리소스를 찾을 수 있지만, 그 리소스들은 다른 스킴을 통해 접근 할 수 있으며, URL문법은 스킴에 따라서 달라진다.
대부분의 URL스킴의 문법은 일반적으로 9개의 부분으로 나뉜다.
<스킴:>//<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
컴포넌트 | 설명 | 기본값 |
---|---|---|
스킴 | 리소스를 가져오려면 어떤 프로토콜을 사용하여 서버에 접근해야하는지 가리킨다. ex) http, ftp, mailto | 없음 |
사용자 이름 | 몇몇 스킴은 리소스에 접근을 하기 위해 사용자 이름을 필요로 한다. | anoymous |
비밀번호 | 사용자의 비밀번호를 가리키며, 사용자 이름에 콜론(:)으로 이어 기술함 | <이메일 주소> |
호스트 | 리소스를 호스팅하는 서버의 호스트 명이나 IP주소 | 없음 |
포트 | 리소스를 호스팅하는 서버가 열어놓은 포트번호이다. (HTTP 기본 포트는 80) | 스킴마다 다름 |
경로 | 컴포넌트와 빗금(/)으로 구분되어 있으며, 서버 내 리소스가 서버 어디에 있는지 가리킨다. | 없음 |
파라미터 | 특정 스킴들에게 입력 파라미터를 기술하는 용도로 사용한다. | 없음 |
질의 | 스킴에서애 플리케이션에 파라미터를 전달하는데 쓰임 | 없음 |
프래그먼트 | 리소스의 조각이나 일부분을 가리키는 이름. URL이 특정 객체를 가릴킬 경우에 프래그먼트는 서버에 전달되지않음 | 없음 |
http://www.joes-hardware.com:80/index.html
이라는 URL은 아래 표 처럼 나눌 수 있다.
스킴 | http |
---|---|
호스트 | www.joes-hardware.com |
포트 | 80 |
경로 | /index |
스킴
스킴
은 주어진 리소스에 어떻게 접근해야하는지 알려주는 중요한 정보이다.
URL을 해석하는 어플리케이션이 어떤 프로토콜을 사용하여 리소스를 요청해야하는지 알려준다.
호스트와 포트
애플리케이션이 인터넷에 있는 리소스를 찾으려면, 리소스를 호스팅하고 있는 장비와 그장비 내에서 리소스에 접근할 수 있는 서버가 어디에있는지 알아야 한다.
호스트 컴포넌트
는 접근하려고 하는 리소스를 가지고 있는 인터넷상의 호스트 장비를 가리킨다.
포트
는 컴포넌트 서버가 열어놓은 네트워크 포트를 가리며 HTTP프로토콜의 기본 포트는 80이다.
사용자 이름과 비밀번호
몇몇의 스킴들은 리소스에 접근하기위해 사용자 이름
, 비밀번호
를 요구한다.
URL에 해당값을 넣을때 생략하게되면 기본값이 들어가게된다.
FTP 서버로 예시를 들면.
첫번째 에로는 사용자 이름이나 비밀번호가 없이 표준 스킴, 호스트, 경로로만 있다.
위처럼 사용자이름, 비밀번호를 기술하지않고 URL에 접근하였을때는 기본값이 채워지게되는데
사용자 이름은 ‘anonymous’ 비밀번호는 브라우저마다 가지고있는 기본값으로 채워진다.
경로
URL의 경로 컴포넌트는 리소스가 서버의 어디에 위치치 하는지 알려준다.
http://ww.joes-hardware.com:80/seasonal/index-fall.html
이 URL의 경로는 /seasonal/index-fall.html
가 되며 유닉스 파일 시스템의 파일경로와 유사하다.
HTTP URL에서 경로 컴포넌트는 /
문자를 기준으로 경로조각을 나눈다.
파라미터
URL을 사용하는 애플리케이션이 리소스에 접근하려면 프로토콜 파라미터가 필요 할때도 있다.
프로토콜 파라미터가 필요한데 적지않고 요청을 보내면 서버는 그 요청을 잘못 처리하거나 처리하지않을 수 있다.
파라미터 컴포넌트는 이름/값
쌍의 리스트로 URL의 나머지 부분들로부터 ;
문자로 구분하여 URL에 기술함.
질의 문자열
서버에서 요청받은 리소스 형식의 범위를 좁히기위해 질의문이나 질의를 받을 수 있다.
URL의 질의 컴포넌트는 게이트웨이를 가리키는 URL의 경로 컴포넌트와 함께 전달한다.
질의 값들은 이름=값
쌍으로 되어있으며 ?
문자 옆에 위치하며 질의 값이 하나 이상일시에는 &
문자로 나뉜다
http://www.joes-hardware.com/inventory-check.cgi?item=123&color=blue
서버에서 item, color 에대한 변수 값들을 사용할 수 있다.
프래그먼트
리소스의 특정 부분을 가리킬 수 있도록, URL은 리소스 내의 조각을 가리킬 수 있는 프래그먼트 컴포넌트를 제공한다.
프래그먼트는 URL의 오른쪽 #
문자에 이어서 온다.
http://w[ww.joes-hardware.com/](http://www.joes-hardware.com/i)tools.html#drills
위 URL에서는 drills라는 프래그먼트를 주었으며 /tools.html 웹페이지의 일부분을 가리키는데 그 부분을 drills로 주었다.
또 프래그먼트 값은 서버에 전달되지않는다.
상대 URL, 절대 URL
URL은 상대 URL과 절대 URL 두가지로 나뉜다.
절대 URL
http://www.joes-hardware.com/tools.html
위처럼 절대 URL은 리소스에 접근하는데 필요한 모든 정보를 가지고있다. (스킴, 호스트 , 경로 등)
상대URL
절대 URL와 반대로 상대 URL은 모든 정보를 담고 있지않으며 잛게 표기하는 방식이다.
위 사진은 http://www.joes-hardware.com/tools.html
가 가리키는 리소스인 HTML 문서 내용이다.
문서에서 A태그의 href를 확인해보면 미완성 URL처럼 보이지만 이는 올바른 상대 URL이다.
상대 URL 문법에 따르면, HTML 작성자는 상대 URL에 스킴과 호스트 그리고 다른 컴포넌트들을 입력하지 않아도 된다.
입력하지 않은 정보들은 컴포넌트가 포함된 리소스의 기저 URL
에서 알아낼 수 있다.
여기서 기저 URL은 http://www.joes-hardware.com/tools.html
가 된다.
상대 참조 해석하기
상대 URL을 절대 URL을 변환하기 위한 다음 단계는 상대 URL과 기저 URL을 각각 컴포넌트 조각으로 나누며 아래 과정을 실행함.
안전하지 않은 문자
URL은 잘 호환되도록 설계되었으며 인터넷에 있는 모든 리소스가 여러 프로토콜을 통해서 전달될 수 있도록, 각 리소스에 융리한 이름을 지을 수 있게 설계되었으며
어떤 인터넷 프로토콜을 통해서든 안전하게 전송될 수 있도록 URL을 설계하는것은 매우 중요했다.
여기서 안전한 전송이란 정보가 유실될 위혐 없이 URL을 전송할 수 있다는것을 의미한다.
이스케이프 문자열
URL설계자는 사람들이 URL에 이진데이터나 일반적으로 안전한 알파벳을 제외의 문자도 포함하려고 할때가 있다는 것을 알게되어 이스케이프
라는 기능을 추가하여
안전하지 않은 문자를 안전한 문자로 인코딩 할 수 있게 하였다.
이스케이프 문자열은 US-ASCII에서 사용이 금지된 문자들로, 특정 문자나 데이터를 인코딩 할 수 있게 함으로써 이동성과 완성도를 높였다.
인코딩 체계
인코딩은 안전하지 않은 문자를 퍼센티지 기호 %
로 시작해 ASCII코드로 표현되는 두개의 16진수 숫자로 이루어진 이스케이프 문자로 바꾼다.
문자 제한
몇몇 문자는 URL내에서 특별한 의미로 예약되어있고 어떤 문자는 US-ASCII의 출력 가능한 문자 집합에 포함되있지않다.
이러한 문자를 전달하려할떄는 반드시 인코딩해야한다.
어떤 애플리케이션에 어떤 URL을 보내든지 그전에 클라이언트 애플리케이션에서 안전하지 않거나 제한된 문자를 변환시키는것이 좋으며,
안전하지 않은 모든 문자를 인코딩만 하면 다른 애플레키에션으로부터 특별한 의미를 가지는 문자를 받았을때 혼동할 걱정 없이
애플리케이션 간에 공유를 할 수 있는 URL의 원형을 유지할 수 있다.
스킴의 바다
웹에서 쓰이는 일반 스킴들의 포맷에 대해 알아보자.
스킴 | 설명 |
---|---|
http | 사용자 이름이나 비밀번호가 없다는것을 제외하고는, 일반 URL포맷을 지키는 HTTP스킴이다. 포트 값이 생략되있으면 기본값은 80이다 |
https | http스킴과 거의 비슷하지만 https는 http의 커넥션의 양끝단에서 암호화 하기대문에 넷스케이프에서 개발한 보안 소켓 계층을 사용하며 기본 포트값은 443이다. |
mailto | 이메일 주소를 가르킨다. |
ftp | FTP 서버에 있는 파일을 내려 받거나 올리고 FTP서버의 디렉토리에 있는 콘텐츠 목록을 가져오는데 사용 가능 |
rtsp, rtspu | 실시간 스트리밍 프로토콜을 통해서 읽을 수 있는 오디오 및 비디오와 같은 미디어 리소스 식별자다. |
file | 주어진 호스트 기기에서 바로 접근 할 수 있는 파일들을 나타냄 |
news | RFC 1036에 정의된 바와 같이 특정 문서나 뉴스 그룹에 접근하는데 사용 |
telnet | 대화형 서비스에 접근하는데 사용 |
'book review > HTTP 완벽 가이드' 카테고리의 다른 글
[HTTP 완벽 가이드] 7장 캐시 (0) | 2024.05.12 |
---|---|
[HTTP 완벽가이드] 5장 웹 서버 (0) | 2024.05.12 |
[HTTP 완벽 가이드] 4장 HTTP 커넥션 (0) | 2024.05.12 |
[HTTP 완벽 가이드] 3장 HTTP 메세지 (0) | 2024.05.12 |