서적 'HTTP 완벽 가이드 - 웹은 어떻게 동작하는가'를 요약 정리한 내용입니다.
2장 URL과 리소스
2.1 인터넷의 리소스 탐색하기
대부분의 URL은 ‘스킴://서버위치/경로’ 구조로 이루어져 있다. 스킴은 웹 클라이언트가 리소스에 어떻게 접근하는지 알려준다. 서버 위치는 웹 클라이언트가 리소스가 어디에 호스팅 되어 있는지 알려준다. 경로는 서버에 존재하는 로컬 리소스들 중에서 요청받은 리소스가 무엇인지 알려준다.
2.1.1 URL이 있기 전 암흑의 시대
2.2 URL 문법
URL의 형태는 일반적으로 다음과 같이 구성된다.
<스킴>://<사용자 이름>:<비밀번호>@호스트:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
꼭 이 모든 컴포넌트를 다 가지는 것은 아니며 가장 중요한 세 가지 컴포넌트는 스킴, 호스트, 경로이다.
2.2.1 스킴 : 사용할 프로토콜
스킴은 주어진 리소스에 어떻게 접근하는지 알려주는 정보이며 이는 URL을 해석하는 애플리케이션이 어떤 프로토콜을 사용하여 리소스를 요청해야 하는지 알려준다. ‘http’도 여기에 속한다.
2.2.2 호스트와 포트
호스트는 접근하려고 하는 리소스를 가지고 있는 인터넷상의 호스트 장비를 가리킨다. 호스트 명으로 나타내기도 하며 IP주소로 나타내기도 한다. 포트는 서버가 열어놓은 네트워크 포트를 가리키는데, TCP 프로토콜을 사용하는 HTTP는 기본 포트로 80을 사용한다.
2.2.3 사용자 이름과 프로토콜
많은 서버가 자신이 가지고 있는 데이터에 접근을 허용하기 전 사용자 이름과 비밀번호를 요구한다. 그 값들이 삽입되어 있지 않을 경우 기본 사용자 이름과 비밀번호 값을 넣어둔다.
2.2.4 경로
경로는 리소스가 서버의 어디에 있는지 알려준다. HTTP URL에서 경로 컴포넌트는 ‘/’ 문자를 기준으로 경로 조각으로 나뉘며, 각 경로 조각은 자체만의 파라미터 컴포넌트를 가질 수 있다.
2.2.5 파라미터
파라미터 컴포넌트는 프로토콜이 요구하는 더 많은 정보를 처리한다. 애플리케이션이 서버에 정확한 요청을 하기 위해 필요한 입력 파라미털르 받으며, 이름/값 쌍의 리스트로 URL 나머지 부분들로부터 ‘;’ 문자로 구분하여 URL에 기술한다.
2.2.6 질의 문자열
데이터베이스 같은 서비스들은 요청받을 리소스 형식의 범위를 좁히기 위해서 질문이나 질의를 받을 수 있다. 많은 게이트웨이가 ‘&’으로 나뉜 ‘이름=값’ 쌍 형식의 질의 문자열을 원한다.
예시) http;;//www.abcdefgh.com/inventory-check.cgi?item=12345&color=blue
2.2.7 프래그먼트
URL은 텍스트 문서 전체를 가리키겠지만, 이상적으로는 리소스 안에 있는 특정 절을 가리킬 수 있어야 한다. 리소스의 특정 부분을 가리킬 수 있도록, URL은 리소스 내의 조각을 가리킬 수 있는 프래그먼트 컴포넌트를 제공한다. 일반적으로 클라이언트는 서버에 프래그먼트를 전달하지 않으며, 브라우저가 서버로부터 전체 리소스를 내려받은 후 프래그먼틑를 사용하여 사용자가 보고자 하는 리소스의 일부를 보여준다.
2.3 단축 URL
2.3.1 상대 URL
2.3.2 URL 확장
어떤 브라우저들은 URL을 입력하는 동안 자동으로 URL을 확장하여 사용자가 URL을 빠르게 입력하게 도와준다. 확장에는 호스트명 확장과 히스토리 확장이 있다. 호스트명 확장은 휴리스틱을 사용하여 입력한 호스트명을 전체 호스트명으로 확장한다. 히스토리 확장은 과거에 사용자가 방문했던 URL의 기록을 저장해 놓는 방법이다. URL을 입력하면 입력된 앞 글자들을 포함하는 완결된 형태의 URL을 선택하게 해준다.
2.4 안전하지 않은 문자
서로 다른 장치에서 어떤 인터넷 프로토콜을 통해서든 안전하게 데이터가 전송될 수 있도록 URL을 설계해야 한다. 정보가 유실되지 않도록 URL은 상대적으로 작고 일반적으로 안전한 알파벳 문자만 포함하도록 허락하였다. 그러나 URL 설게자들이 알파벳 이외의 문자로 URL을 만드는 것을 수요하자 이스케이프라는 기능을 추가하여 안전하지 않은 문자를 안전한 문자로 인코딩 할 수 있게 하였다.
2.4.1 URL 문자 집합
역사적으로 많은 컴퓨터 애플리케이션들이 US-ASCII문자 집합을 사용해왔다. 이는 7비트를 사용하여 영문 자판의 키 대부분과 몇몇 제어 문자들을 표현한다. 그러나 URL에 다른 언어들과 특정 이진 데이터를 포함해야 하는 경우가 생기면서 URL 설게자들은 이스케이프 문자열을 쓸 수 있게 설계하였다.
2.4.2 인코딩 체계
인코딩은 안전하지 않은 문자를 퍼센티지 기호로 시작해 ASCII 코드로 표현되는 두 개의 16진수 문자로 이루어진 이스케이프 문자로 바꾼다.
2.4.3 문자 제한
US-ASCII에서 출력이 불가능한 문자, 몇몇 인터넷 게이트웨이와 프로토콜에서 혼동되는 문자들은 사용이 제한되며 반드시 사용하기 전 인코딩을 필요로 한다.
2.4.4 좀 더 알아보기
입력받은 URL에서 어떤 문자를 인코딩해야 하는지 결정하는 데는 브라우저와 같이 사용자로부터 최초로 URL을 입력받는 애플리케이션에서 하는 것이 가장 적절하다.
2.5 스킴의 바다
2.6 미래
URL은 리소스의 주소를 가리키지 실제 이름은 아니다. 따라서 리소스가 옮겨지면 URL을 더는 사용할 수 없다. 이러한 문제를 예방하기 위해서는 그 객체를 가리키는 실제 객체의 이름을 사용해야 하는데, 이러한 방식을 URN이라 한다.
'HTTP' 카테고리의 다른 글
[HTTP 완벽 가이드] 2-2. 커넥션 관리 (0) | 2022.07.09 |
---|---|
[HTTP 완벽 가이드] 2-1. HTTP 메시지 (0) | 2022.06.29 |
[HTTP 완벽 가이드] 1-1. HTTP 개관 (0) | 2022.06.16 |