[HTTP] URL과 리소스 정리
2021. 9. 5. 02:00
02 URL과 리소스
[TOC]
- URL 문법, 여러 URL 컴포넌트가 어떤 의미를 가지며 무엇을 수행하는지.
- 여러 웹 클라이언트가 지원하는 상대 URL과 확장 URL 같은 단축 URL에 대하여
- URL의 인코딩과 문자 규칙
- 여러 인터넷 정보 시스템에 적용되는 공통 URL 스킴
- 기존 이름은 유지하면서 객체들을 다른 장소로 옮기는 것을 가능하게 해주는 URN을 포함한 URL의 미래
2.1 인터넷의 리소스 탐색하기
URL
은 브라우저가 정보를 찾는데 필요한 리소스의 위치를 가리킨다.URL
은 통합 자원 식별자 혹은URI
라고 불리는 더 일반화된 부류의 부분 집합이다.URI
는URL
과URN
으로 구성된 종합적인 개념URN
은 리소스가 어디에 존재하든 상관없이 그 이름만으로 리소스를 식별한다.
URL
과URN
의 차이는 택시 기사님에게 '서울 종로구 사직로 161로 가주세요'(URL) 와 '경복궁'(URN)으로 가주세요의 차이이다.
- 기본적으로 말하는
URI
는URL
을 가리킨다.
다음의 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 |