[HTTP] URL과 리소스 정리

2021. 9. 5. 02:00

02 URL과 리소스

[TOC]

  • URL 문법, 여러 URL 컴포넌트가 어떤 의미를 가지며 무엇을 수행하는지.
  • 여러 웹 클라이언트가 지원하는 상대 URL과 확장 URL 같은 단축 URL에 대하여
  • URL의 인코딩과 문자 규칙
  • 여러 인터넷 정보 시스템에 적용되는 공통 URL 스킴
  • 기존 이름은 유지하면서 객체들을 다른 장소로 옮기는 것을 가능하게 해주는 URN을 포함한 URL의 미래

 

2.1 인터넷의 리소스 탐색하기

  • URL은 브라우저가 정보를 찾는데 필요한 리소스의 위치를 가리킨다.
  • URL은 통합 자원 식별자 혹은 URI라고 불리는 더 일반화된 부류의 부분 집합이다.
  • URIURLURN으로 구성된 종합적인 개념
  • URN은 리소스가 어디에 존재하든 상관없이 그 이름만으로 리소스를 식별한다.
  • URLURN의 차이는 택시 기사님에게 '서울 종로구 사직로 161로 가주세요'(URL) 와 '경복궁'(URN)으로 가주세요의 차이이다.
  • 기본적으로 말하는 URIURL을 가리킨다.

다음의 URL을 호출한다고 해보자

https://www.youtube.com/feed/subscriptions
-----  ---------------  ------------------
 스킴       서버의 위치        리소스의 경로
  • 스킴 은 웹 클라이언트가 리소스에 어떻게 접근하는지 알려 준다. 이 경우엔 HTTP 프로토콜을 사용한다.
  • 서버의 위치는 리소스가 어디에 호스팅 되어 있는지 알려준다.
  • 리소스의 경로는 서버에 존재하는 로컬 리소스들 중에서 요청받은 리소스가 무엇인지 알려준다.

 

2.2 URL 문법

기본 문법

<스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
컴포넌트 설명 기본값
스킴 어떤 프로토콜을 사용하여 서버에 접근해야 하는지 가리킴  
사용자이름 몇몇 스킴은 리소스에 접근하기 위한 사용자 이름이 필요함 anonymous
비밀번호 사용자의 비밀번호, 콜론(:)으로 이어서 기술 <이메일주소>
호스트 리소스를 호스팅하는 서버의 호스트 명이나 IP주소  
포트 서버가 열어놓은 포트번호, HTTP 기본 포트는 80 스킴에 따라 다르다
경로 서버 내 리소스가 서버 어디에 있는지 가리킴  
파라미터 특정 스킴들에서 입력 파라미터를 기술하는 용도로 사용  
질의 스킴에서 어플리케이션에 파라미터를 전달하는데 쓰임, URL 끝에 ?로 구분  
프래그먼트 리소스의 조각이나 일부분을 가리키는 이름, URL 끝에 "#" 문자로 구분  

스킴

  • 주어진 리소스에 어떻게 접근하는지 알려주는 중요한 정보
  • URL을 해석하는 어플리케이션이 어떤 프로토콜을 사용해야 하는지 알려줌
  • 스킴 컴포넌트는 알파벳으로 시작해야하며 대소문자를 가리지 않음
  • 콜론(:)으로 다른 부분들과 구분됨

호스트와 포트

  • 리소스를 호스팅하고 있는 장비와 그 장비 내에서 리소스에 접근할수 있는 서버가 어디에 있는지에 대한 정보를 제공해줌
    • 호스트 : 접근하려고 하는 리소스를 가지고 있는 인터넷상의 호스트 장비
    • 포트 : 서버가 열어놓은 네트워크 포트 (기본 포트 80)

사용자 이름과 비밀번호

  • 데이터 접근 허용에 이용됨
ftp://ftp.prep.ai.mit.edu/pub/gnu -- 사용자 이름, 비밀번호 없음 -- 기본사용자 이름 : anonymous
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu -- 사용자 이름 : anonymous
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu -- 사용자 이름 : anonymous, 비밀번호 : my_passwd

경로

  • 리소스가 서버의 어디에 있는지 알려줌
  • HTTP URL에서 경로 컴포넌트는 '/' 문자를 기준으로 경로 조각으로 나뉜다.

파라미터

  • 어플리케이션이 서버에 정확한 요청을 하기 위해 필요한 입력 파라미터를 사용
  • 이름/값 쌍의 리스트로 URL 나머지 부분들로부터 ';' 문자로 구분
http://www.joeshardware.com/hammers;sale=false/index.html;graphics=true

hammers와 index.html 두개의 경로조각
hammers의 경우 sale 파라미터
index.html은 graphics 파라미터

질의 문자열

  • 데이터베이스 같은 서비스들에서 요청받을 시소스 형식을 좁히기 위해 사용함
  • 물음표를 통해 전달

@@ 파라미터와 질의문자열의 정확한 구분

프래그먼트

  • HTML같은 리소스 형식들은 본래의 수준보다 더 작게 나뉠 수 있음
  • "#" 으로 특정 조각을 특정지을 수 있음
http://www.joes-hardware.com/tools.html#drills

drills로 시작하는 HTML 부분을 보여줌

 

2.3 단축 URL

상대 URL

  • 상대 URL은 기저 URL을 사용해 URL을 짧게 표시한다.

URL 확장

  • URL을 입력한 다음이나 입력하고 있는 동안에 자동으로 URL을 확장
    • 호스트 명 확장
      • naver를 주소 입력란에 입력하면 브라우저는 자동으로 www와 com을 붙인다.
    • 히스토리 확장
      • 앞부분만 자동으로 적으면 브라우저가 자동으로 이전에 방문했던 페이지를 알려줌

2.4 안전하지 않은 문자

  • URL 설계자들은 사람들이 URL에 이진 데이터가 일반적으로 안전한 알파벳 외의 문자도 포함하려고 하는 것을 알고 있기 때문에 이스케이프 기능을 추가했다.

문자 집합

  • 컴퓨터 시스템은 기본적으로 영어로 설계됨
  • 그러나 특정 이진 데이터를 포함해야하는 경우도 있어서 이스케이프 문자열을 쓸 수 있게끔 설계함

인코딩 체계

  • URL에 있는 안전하지 않은 문자들을 표현할 수 있는 인코딩 방식
  • 인코딩은 안전하지 않은 문자를 퍼센티지 기호(%)로 시작해, ASCII코드로 표현되는 두 개의 16진수 숫자로 이루어진 이스케이프 문자로 바꾼다.
문자 ASCII 코드 URL의 예
~ 126 (0x7E) http://github.yurimkoo.io/%7Eyur
빈 문자 32 (0x20) http://github.yurimkoo.io/more%20about.html
% 37 (0x25) http://github.yurimkoo.io/100%25happy.html

문자 제한

문자 선점 및 제한
% 이스케이프 토큰
/ 경로 세그먼트 분리
? 질의 문자열 구획 문자
; 파라미터 구획 문자
: 스킴, 이름/비밀번호, 호스트/포트 구획 문자
@&= 특정 스킴에서 의미가 있기 때문에 선점
[]~ 게이트웨이 등 여러 전송 에이전트에서 불안전하게 다루기 때문에 제한됨

2.5 스킴의 바다

  • 다양한 스킴들이 있지만 일단은 http와 https정도만 알아두면 될 것 같다.
    • https는 HTTP의 커넥션의 양 끝단에서 암호화하기 위해 넷스케이프에서 개발한 SSL을 사용한다.
    • https의 기본 포트값은 443이다

2.6 미래

  • URN은 왜 쓰이지 않는가?
    • 이미 URL이 많이 쓰이고 있고 변화하는 작업은 시간이 걸린다.

 

 

reference : HTTP 완벽 가이드

'CS > 네트워크' 카테고리의 다른 글

[HTTP] 커넥션 관리  (0) 2021.09.17
[HTTP] HTTP 메시지 (메소드, 상태코드, 헤더)  (0) 2021.09.12
[HTTP] 웹 기초  (0) 2021.09.03
[HTTP] GET,POST 정리 및 차이점  (0) 2021.07.13
[네트워크] OAuth 2.0이란?  (0) 2021.04.17

+ Recent posts