본문 바로가기

Development/HTTP

2. URL과 리소스 - URL 단축과 확장, 설계

절대 URL - 리소스에 접근하는 필요한 모든 정보를 가지고 있음

상대 URL - 상대 URL로 리소스에 접근하기 위해 필요한 모든 정보를 얻기 위해서는 base URL을 사용함.


URL 단축


www.asdf.com/shop.html이 가리키는 리소스 내용 중 다음과 같은 엘리먼트가 있을 때, <a href="./tools.html> </a>

shop.html 의 리소스기준으로 상대경로가 명시됨. 따라서 baseURL 은   www.asdf.com/shop.html 가 됨.


따라서 ./shop.html 로 앞에 스킴과 호스트 등이 생략되어 있으면, base URL로 부터 정보를 추측함.


파싱된 URL이 모든 컴포넌트가 비어있는지 / 스킴이 비어있는지 / 스킴이 비어있지 않은지 에 따라서 base URL로 부터 어떤 정보까지 불러올 지 정해진다  


URL 확장


호스트 명 확장을 지원하는 브라우저는 단순히 휴리스틱만을 사용해서 또는 히스토리를 참조하여 입력한 호스트 명을 전체로 확장 가능. 


이를테면 브라우저 표시줄에 naver만 치더라도 www.naver.com 이 자동완성됨


URL 설계


URL은 인터넷의 어떤 프로토콜을 통해서든 안전하게 전송될수 있도록 설계되어야 한다. (특서정 프로토콜은 특정 문자를 제거하고 전송할 수도 있기 때문)

따라서 URL은 작고 안전한 알파벳문자만 포함해야 함.tel

안전한 문자집합을 이용하는 경우 그 한계를 넘기위해, URL에 있는 안전하지 않은 문자들은 인코딩을 한다.

안전하지 않은 문자들은 %와  아스키코드로 표현되는 두개의 16진수 숫자로 이루어진 '이스케이프 문자'로 바꿈


http://asdf.com/~call   -> http://asdf.com/%7Ecall



URL에 사용하기 위해 반드시 인코딩 해야하는 문자들의 예, 선점되어 있는 문자


% / . .. # ? ; : $ + @ & = { } | \ ~ [ ] ` < > "        .... 등 


URL 스킴


스킴 

설명 

예 

http 

 사용자 이름이나 비밀번호가 없이, 일반 url 포맷을 지키는 하이퍼텍스트 전송 프로토콜 

기본포트 : 80


http://asdf.com/index.html

 https

http 스킴과 거의 같으나, http의 커넥션의 양 끝단에서 암호화하기위해 보안 소켓 계층(ssl)을 사용함.

기본포트 : 443


https://asdf.com/index.html

 malito

이메일을 주소를 가리킴, 표준 url과 다른 포맷을 가짐,

malito: exam@exam-task.com

 ftp

 파일 전송 프로토콜 url. ftp 서버에 있는 파일을 내려 받거나 올리고, ftp 서버의 콘텐츠 목록을 가져오는 데 사용. 웹과 url 출현 이전부터 ftp는 존재하였으며, 웹 애플리케이션은 데이타에 접근하는 용도의 스킴으로 이를 사용.

 ftp://anonymous%40asdf.com@pre.as.df.co:21/pub/gnu

 rtsp, rtspu

 실시간 스트리밍 프로토콜. 

rtspu은 udp 프로토콜을 사용.

rtsp://www.asdf.com:554/interview/cto_interview 

 file

주어진 호스트기기에서 바로 접근할 수 있는 파일들을 나타냄

 file://desktop/my/photo/asdf.png

 news

 특정 문서나 뉴스 그룹에 접근하는데 사용.

 news:rec.arts.startrek

 telnet

 대화형 서비스에 접근, telnet url 자체가 객체를 가리키는것은 아니고, 리소스라고 할 수 있는 대화형 애플리케이션은 이 텔넷 프로토콜을 통해 접근

telent://asdf:webhound@sdfasf.com:23/ 


'Development > HTTP' 카테고리의 다른 글

HTTP 메시지 헤더에 대해 조금 더 . . .  (1) 2016.07.21
HTTP 메시지 - 메서드  (0) 2016.07.20
3. HTTP 메시지 - 기본 구조  (0) 2016.07.20
2. URL과 리소스 - URL 문법  (0) 2016.07.15
1. HTTP 개관  (0) 2016.07.14