PracticeEveryday

HTTP 완벽 가이드 본문

HTTP 완벽 가이드

kimddakki 2022. 8. 1. 10:54
2부 URL과 리소스

 - 도시의 리소스를 분류하기 위해서 모든 것이 그만의 표준화된 이름을 가지고 있다.

 Ex) 책은 ISBN 번호를, 버스는 노선 번호를, 은행 계좌는 계좌 번호를, 사람은 사회보장번호 ( 주민등록번호 )를 가진다.

 => 모두가 이렇게 각기 다른 이름들에 대한 작명 표준에 동의하기 때문에, 도시에 있는 소중한 리소스를 모두 쉽게 공유 할

      수 있다.

 

※ URL : 인터넷의 리소스를 가리키는 표준 이름이다.

 URL은 전자 정보 일부를 가리키고 그것이 어디에 있고 어떻게 접근 할 수 있는지 알려준다.

 

2.1 인터넷 리소스 탐색하기

 - URL은 브라우저가 정보를 찾는 데 필요한 리소스의 위치를 가리키며, URL을 이용해 사람과 애플리케이션이 인터넷 

   상의 수십억 개의 리소스를 찾고 공유 할 수 있다.

 

http://www.joes-hardware.com/seasonal/index-fall.html 이라는 URL을 불러 올 때

1. URL의 첫 부분인 http는 URL의 스킴이다. 스킴은 웹 클라이언트가 리소스에 어떻게 접근하는지 알려준다.
   이 경우에 URL이 HTTP 프로토콜을 사용한다.

2. URL의 두번째 부분인 www.joes-hardware.com은 서버의 위치다.
   이는 웹 클라이언트가 리소스가 어디에 호스팅 되어 있는 지 알려준다.
   
3. URL의 세 번째 부분인 /seasonal/index-fall.html은 리소스의 경로이다.
   경로는 서버에 존재하는 로컬 시소스들 중에서 요청받은 리소스가 무엇인지 알려준다.

 

 - URL은 HTTP 프로토콜이 아닌 다른 가용한 프로토콜을 사용할 수 있다.

  • mailto:president@whitehouse.gov : 이메일 주소를 가리킨다.
  • ftp://ftp.lots-o-books.com/pub/complete-price-list.xls : FTP (file Transfer Protocol ) 서버에 올라가 있는 파일을 가리킴
  • rtsp://www.joes-hardware.com/interview/cto_video : 스트리밍을 제공하기 위해 비디오 서버에 호스팅하고 있는 영화를 카리킨다.

 - URL을 사용하면 리소스를 일관된 방식으로 지칭할 수 있다. 대부분의 URL은 동일하게 ' 스킴://서버위치/경로 ' 구조로

   이루어져 있다. 

 => 인터넷상의 모든 리소스를 가리키고 가져오기 위해, 모든 사람들이 같은 방식으로 이름을 써서 리소스를 찾을 수 

       있도록, 단일 방식의 작명 규칙을 가진 것이다!

 

2.2 URL 문법

 - URL로 인터넷 상의 모든 리소스를 찾을 수 있다.

   이 리소스들은 다른 스킴 ( HTTP, FTP, SMTP )를 통해 접근 할 수 있으며 URL 문법은 스킴에 따라 달라 진다.

◎ 다른 스킴을 사용한다고 전혀 다른 문법을 사용하는 것이 아니라 대부분 URL은 일반 URL문법을 따르며 서로 다른 URL 스킴도 형태와 문법 면에서 매우 유사하다.

 

ULR 스킴의 문법
<스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
스킴 : 리소스를 가져오려면 어떤 프로토콜을 사용하여 서버에 접근해야 하는지 가리킨다.
사용자 이름 : 몇몇 스킴은 리소스에 접근을 하기 위해 사용자 이름을 필요로 한다.
비밀번호 : 사용자의 비밀번호를 가리키며, 사용자 이름에 콜론 (:)으로 이어서 기술한다.
호스트 : 리소스를 호스팅하는 서버의 호스트 명이나 IP 주소
포트 : 리소스를 호스팅하는 서버가 열어놓은 포트 번호. 많은 스킴이 기본 포트를 가지고 있다.
경로 : 이전 컴포넌트와 빗금으로 구분되어 있으며 서버 내 리소스가 서버 어디에 있는지 가리킨다.
파라미터 : 특정 스킴들에서 입력 파라미터를 기술하는 용도로 사용된다. 
파라미터는 이름/값을 쌍으로 가진다. 파라미너틑 다른 파라미터나 경로의 일부와 세미콜론으로 구분되며 여러개를 가질 수 있다.

질의 : 스킴에서 애플리케이션(데이터베이스, 게시판, 검색엔진, 기타 인터넷 게이트웨이)에 파라미터를
전달하는데 사용된다. 질의 컴포넌트를 작성하는데 쓰이는 공통 포맷은 없다. URL의 끝에 ?로 구분한다.

프래그먼트 : 리소스의 조각이나 일부를 가리키는 이름이다.

 

2.2.1 스킴 : 사용할 프로토콜

 - 스킴은 주어진 리소스에 어떻게 접근하는지 알려주는 중요한 정보다.

 - 이는 URL을 해석하는 애플리케이션이 어떤 프로토콜을 사용하여 리소스를 요청해야 하는 지 알려준다.

 - 스킴 컴포넌트는 알파벳으로 시작해야 하고 URL의 나머지 부분들과 첫 번째 ( : ) 문자로 구분한다. 

   스킴 명은 대소문자를 가리지 않으므로 HTTP:// http://는 동일하다.

 

2.2 호스트와 포트

 - 애플리케이션이 인터넷에 있는 리소스를 찾으려면 리소스를 호스팅하고 있는 장비와 그 장비 내에서 리소스에 

   접근할 수 있는 서버가 어디에 있는지 알아야 한다. URL의 호스트와 포트 컴포넌트는 그 두 가지 정보를 제공한다.

 

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

 

http://www.joes-hardware.com:80/index.html : 호스트명
http://161.58.228.45:80/index.html : IP 주소

 

2.2.3 사용자 이름과 비밀번호

 - 많은 서버가 자신이 가지고 있는 데이터에 접근을 허용하기 전에 사용자 이름과 비밀번호를 요구한다.

ftp://ftp.prep.ai.mit.edu/pub/gnu
사용자 아이디 비밀번호를 요구하는 URL 스킴을 사용할 때 사용자 이름과 비밀번호를 기술하지 않으면
기본 사용자 이름 값으로 anonnymous + 비밀번호는 브라우저 마다의 기본 값을 사용한다.

ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
호스트 컴포넌트와 나란히 기술되어 있는 사용자 이름은 단순히 이메일 주소처럼 보이기도 하지만
'@' 문자는 URL로부터 사용자 이름과 비밀번호 컴포넌트를 분리한다.

ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
사용자 이름 ' anonymouse '와 비밀번호 ' my_passwd '를 : 문자로 분리하여 기술하였다!

http://joe:joespasswd@www.joes-hardware.com/sales_info.txt

 

2.2.4 경로

 - URL 경로 컴포넌트는 리소스가 서버의 어디에 있는지 알려준다. 

 => 해당 경로는 계층적 파일 시스템 경로와 유사한 구조를 가진다.

http://www.joes-hardware.com:80/seasonal/index-fall.html

 - 위 URL 경로는 '/seasonal/index-fall.html'로 유닉스 파일 시스템의 파일 경로와 유사하다.

 - 경로는 서버가 리소스의 위치를 찾는 데 사용하는 정보다.

 - HTTP URL 에서 경로는 ' / ' 문자를 기준으로 경로조각으로 나뉜다.

 

2.2.5 파라미터

 - 많은 스킴이 객체에 대한 호스트 및 경로 정보만으로는 리소스를 찾지 못한다. 서버가 어떤 포트를 열어놓고 있는지,

   리소스에 접근하기 위해 사용자 이름과 비밀번호를 명시했는지 여부 외에도 많은 프로토콜 정보를 요구하게 된다.

 

 - URL을 사용하는 애플리케이션에게 프로토콜 파라미터가 없으면 다른 한편에 있는 서버는 그 요청을 잘못 처리하거나

   처리하지 않을 수 있다.

 - FTP의 경우 바이너리와 텍스트 두 개의 포맷을 지원하는데 바이너리 이미지가 텍스트 형식으로 전송되길 원치 않는다!

 

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

ftp://prep.ai.mit.edu/pub/gnu;type=d

 - 위 경우 이른은 type이고 값은 'd'인 한 개의 파라미터를 전달한다.

http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true

 - 위 경우에 보다시피 경로 컴포넌트는 경로 조각으로 나눌 수 있는 데 각 조각은 자체 파라미터를 가질 수 있다.

 - hammers 경로는 sale=flase 파라미터를, index.html 경로는 graphics=true 파라미터를 가진다.

 

2.2.6 질의 문자열 

 - 데이터베이스같은 서비스들은 요청받을 리소스 형식의 범위를 좁히기 위해 질문이나 질의를 받을 수 있다.

http://www.joes-hardware.com/inventory-check.cgi?itme=12731

아이템 번호가 12731이고 재고가 있는지 확인 하기 위한 쿼리

 - 질의 컴포넌트는 물음표 ( ? ) 우측에 있는 값들이다!

- URL 질의 컴포넌트는 게이트웨이를 가리키는 URL의 경로 컴포넌트와 함께 전달된다. 

http://www.joes-hardware.com/inventory-check.cgi?item=12731&color=blue&size=large

제품번호가 12731이고 큰 치수에 파란색 물품의 제고가 있는지 물어보는 URL
편의상 많은 게이트웨이가 &로 나뉜 이름=값 쌍 형식의 질의 문자열을 원한다.

item=12731&color=blue&size=large => 재고 확인 게이트웨이!

 

2.2.7 프래그먼트

 - HTML 같은 리소스 형식들은 본래의 수준보다 더 작게 나뉠수 있다.

 - 절 ( paragraph )이 포함된 용량이 큰 테긋트 문서의 경우 리소스의 특정 부분을 가리킬 수 있도록, URL은 리소스 내의

   조각을 가리킬 수 있는 프래그먼트 컴포넌트를 제공한다.

http://www.joes-hardware.com/tools.html#driils

프래그먼트는 URL의 오른쪽 # 문자에 이어서 온다.
이를 통해 URL은 HTML문서에 있는 특정 이미지나 일부분을 가리킬 수 있다.

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

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

   보여준다.

 


 

 

HTTP 완벽 가이드 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

'' 카테고리의 다른 글

HTTP 완벽가이드  (0) 2022.08.09
HTTP 완벽 가이드  (0) 2022.08.06
HTTP 완벽 가이드  (0) 2022.07.25
그림으로 이해하는 SQL 서버의 구조  (0) 2022.07.17
그림으로 이해하는 SQL 서버의구조  (0) 2022.07.16
Comments