TIL - 『HTTP 완벽 가이드』 2장 URL과 리소스

MinWoo Park·2021년 5월 11일
0

TIL

목록 보기
42/49
post-thumbnail

Today I Learned

매일 배운 것을 정리하며 기록합니다.
『HTTP 완벽 가이드』를 통해 공부했던 내용들을 복습하고 정리하려고 합니다.


I. HTTP: 웹의 기초

02. URL과 리소스

URL 문법

"https://velog.io/@qmasem/TIL-HTTP-완벽-가이드-시리즈-2장" 이라는 URL을 불러오고 싶다고 가정해 보겠습니다.

URL의 첫 부분은 스킴(Scheme)입니다.
스킴은 웹 클라이언트가 리소스에 어떻게 접근하는지 알려줍니다.
위의 주소는 HTTPS 프로토콜을 사용합니다.

두 번째 부분인 "velog.io"는 서버의 위치입니다.
이는 소스가 어디에 호스팅 되어 있는지 알려줍니다.

세 번째 부분인 "/@qmasem/TIL-HTTP-완벽-가이드-시리즈-2장"은 리소스의 경로입니다.
경로는 서버에 존재하는 로컬 리소스들 중에서 요청받은 리소스가 무엇인지 알려줍니다.

URL을 사용하면 리소스를 일관된 방식으로 지정할 수 있습니다.
대부분의 URL은 예시와 동일한 구조로 이루어져 있습니다.

스킴://서버위치/경로

조금 더 자세한 URL 스킴의 문법은 일반적으로 9개 부분으로 나뉩니다.

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

위의 모든 컴포넌트를 가지는 URL은 거의 없습니다.
URL에서 가장 중요한 세 가지 컴포넌트는 스킴, 호스트, 경로입니다.

스킴(Scheme)

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

스킴 컴포넌트는 알파벳으로 시작해야 하고 URL의 나머지 부분들과 첫 번째 ':' 문자로 구분합니다.
스킴 명은 대소문자를 가리지 않습니다.


사용자 이름과 비밀번호

많은 서버가 자신이 가지고 있는 데이터에 접근을 허용하기 전에 사용자 이름과 비밀번호를 요구합니다.
FTP와 같이 사용자 이름과 비밀번호를 요구하는 URL 스킴을 사용한다면, 그 값들이 삽입되어 있지 않을 경우 기본 값을 넣어놓습니다.

기본 사용자 이름 값은 'anonymous', 비밀번호는 브라우저마다 가지고 있는 기본값을 사용합니다.
예로 크롬은 'chrome@example.com'을 기본값으로 가지고 있습니다.

사용자 이름과 비밀번호 컴포넌트는 '@' 또는 ':'문자를 통해 분리합니다.


경로

URL의 경로 컴포넌트는 리소스가 서버의 어디에 있는지 알려줍니다.
HTTP URL에서 경로 컴포넌트는 '/'문자를 기준으로 경로조각으로 나뉩니다.
각 경로조각은 자체만으리 파라미터 컴포넌트를 가질 수 있습니다.


파라미터

많은 스킴이 객체에 대한 호스트 및 경로 정보만으로 리소스를 찾지 못합니다.

서버가 어떤 포트를 열어놓고 있는지, 리소스에 접근하기 위해 사용자 이름과 비밀번호를 명시했는지 여부 외에도 많은 프로토콜이 더 많은 정보를 요구합니다.

파라미터 컴포넌트는 이름/값 쌍의 리스트로 URL의 나머지 부분들로부터 ';'문자로 구분하여 URL에 기술합니다.

이를 통해 어플리케이션이 리소스에 접근하는데 필요한 추가 정보를 전달할 수 있습니다.


질의 문자열(Query string)

쿼리스트링이라고 많이 불리는 질의 문자열은 데이터베이스 같은 서비스들이 요청을 받을 때 리소스 형식의 범위를 좁히기 위해서 사용됩니다.

URL에서 물음표(?)의 우측의 값들이 쿼리스트링입니다.

쿼리스트링은 게이트웨이를 가리키는 URL의 경로 컴포넌트와 함께 전달합니다.

쿼리스트링의 특정 문자들을 제외하고 자유로운 포멧을 가지고 있는데, 편의상 많은 게이트웨이가 '&'로 나뉜 '이름=값' 쌍 형식의 쿼리 스트링을 원합니다.


프래그먼트(Fregment)

프래그먼트는 URL의 오른쪽에 # 문자에 이어서 옵니다.

일반적으로 HTTP 서버는 객체 일부가 아닌 전체만 다루기 때문에 클라이언트는 서버에 프래그먼트를 전달하지 않습니다.

브라우저가 서버로부터 전체 리소스를 내려받은 후, 프래그먼트를 사용하여 유저가 보고자 하는 리소스의 일부를 보여줍니다.


Reference : 데이빗 고을리, 브라이언 토티, 마조리 세이어, 세일루 레디, 안슈 아가왈, 『HTTP 완벽 가이드』, 프로그래밍 인사이트 (2014), p27-36.

profile
물음표를 느낌표로 바꾸는 순간을 사랑하는 개발자입니다.

0개의 댓글