본문 바로가기

Book Review/HTTP 완벽 가이드

[HTTP 완벽 가이드] 2장. URL과 리소스

''' HTTP 완벽 가이드 도서를 참고하여 배운 점을 기록한 포스트입니다. 혹시라도 오개념이 있다면 댓글 부탁드립니다. '''

 

1. URI

- URI 은 크게 URL(현재 표준), URN로 구분한다.

- URN 은 현재 리소스가 어디에 존재하든지 그 이름만으로 리소스를 식별한다. 객체가 옮겨지더라도(웹 서버 내에서나 웹 서버 간 모두) 항상 객체를 가리킬 수 있는 이름을 제공한다.

- URL 은 리소스 위치로 리소스를 식별한다. PURL을 사용하면 URL로 URN의 기능을 제공할 수 있다. PURL은 리소스의 실제 URL 목록을 관리하고 추적하는 리소스 위치 중개 서버를 두고, 해당 리소스를 우회적으로 제공한다.

 

2.URL 의 구조

출처 : https://i.stack.imgur.com/WmQJB.png

- 스킴://사용자이름:비밀번호@호스트:포트/경로;파라미터?질의#프래그먼트 위에 있는 모든 컴포넌트가 사용되는 것은 아니다.

- 스킴(어떻게) : 알파벳으로 시작해야 하고, ‘:’ 로 URL의 나머지 컴포넌트들과 분리된다. 대소문자를 가리지 않음

   ex. http, https, mailto, ftp, rtsp, file, news, telnet

 - 호스트(어디에) : 호스트 컴포넌트는 접근하려고 하는 리소스를 가지고 있는 인터넷상의 호스트 장비를 가리킨다.

   ex. www.joes-hardware.com

- 경로(무엇을) : ex. /seasonal/index-fall.html

 

- 포트 컴포넌트 : 서버가 열어놓은 네트워크 포트를 가리키고, 내부적으로 TCP 프로토콜을 사용하는 HTTP는 기본 포트로 80을 사용한다.

- 사용자 이름과 비밀번호 : 애플리케이션이 FTP와 같이 사용자 이름과 비밀번호를 요구하는 URL 스킴을 사용한다면, 그 값들이 삽입되어 있지 않을 경우 기본 사용자 이름과 비밀번호 값을 넣어 놓을 것이다. 사용자 이름은 anonymous, 비밀번호는 브라우저마다 가지고 있는 기본값을 사용한다.

 - 파라미터 : Matrix parameter 라는 명칭이 있고 웹 표준이 아니다.

- 프래그먼트: 리소스 내의 조각을 가리키는 컴포넌트이며 서버로 보내지 않고, 브라우저에서 표시한다.

 

3.URL 확장

- URL 일부를 입력하면 나머지 부분을 자동으로 입력해주는 브라우저 기능

- 호스트명 확장 : naver 입력하면, https://www.naver.com/. 프록시 또는 다른 HTTP 문제가 발생할 수 있다.

- 히스토리 확장 : 과거에 사용자가 방문했던 URL의 기록을 저장한다.

 

4.상대 URL, 절대 URL

- 절대 URL : 리소스 접근에 필요한 모든 정보 가짐

- 상대 URL :  모든 정보를 얻기 위해 base를 이용하여 새로운 절대 URL을 생성한다. (프래그먼트이거나 URL의 일부)

 

5.안전한 URL 설계

- 안전한 전송이란 정보가 유실될 위험 없이 URL을 전송할 수 있는 것이다.

- 일반적으로 안전한 알파벳 문자만 포함하도록 허용한다.

- URL에 있는 안전하지 않은 문자들을 표현할 수 있는 인코딩 방식이 고안되었다.

- 안전하지 않은 문자를 [% + ASCII 코드]로 표현되는 이스케이프 문자로 바꾼다.

- URL 예약어(%, /, ., .., #, ?, ;,:, $,+, @ & = 등)는 인코딩이 필요하다. (몇몇 게이트웨이와 프로토콜에서 혼동되기 때문)