목표
URL의 포맷과 URL이 가르키는 다양한 리소스 형식에 대해 알아보고,
URN으로 발전하는 과정에 대해 간략히 알아본다
1. 인터넷 리소스 탐색하기
URI는 URL과 URN으로 구성된 종합적인 개념
URN은 리소스가 어디에 존재하든 이름으로 식별하는데 비해
URL은 리소스가 어디있는지를 설명해서 리소스를 식별한다.
스킴, 서버의 위치, 리소스의 경로
ex) http://www.abc.com/aaa/index.html
- http가 스킴 (어떻게)
- www.abc.com이 서버의 위치 (어디에)
- aaa/index.html 이 리소스 경로 (무엇을)
URL은 다른 프로토콜 사용가능
mailto : 메일주소를 가리키고
ftp : 서버에 올라가있는 파일을 가리키고
rtsp :는 스트리밍을 위해 비디오 서버에 호스팅하고 있는 영화를 가르키고
이와같이 URL은 인터넷에 필요한 어떤 리소스든지 가리킬 수 있다
URL은 정보 찾는데 필요한 모든것을 제공하며,
원하는 리소스가 어디에 있고 어떻게 가져오는지를 정의한다.
2. URL 문법
<스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
대부분의 URL 스킴의 문법은 9개지만, 중요한 컴포넌트는 스킴, 호스트, 경로 이다
스킴 : 리소스에 어떻게 접근하는지 알려주는 정보
어떤 프로토콜을 사용하여 리소스를 요청해야 하는지 알려줌(대소문자 안가림)
호스트와 포트
인터넷에 있는 리소스를 찾으려면, 리소스를 호스팅하고 있는 장비와
그 장비내에서 리소스에 접근할 수 있는 서버가 어디에 있는지 알아야 한다.
호스트 컴포넌트는 접근하고자 하는 리소스를 가지고 인터넷상의 호스트 장비를 가리킨다.
ex) 같은 리소스를 가르키는 예 http://www.abc.com:80/index.html : 호스트 명 http://161.53.229.42:80/index.html : IP 주소
사용자 이름과 비밀번호
많은 서버가 자신이 가지고 있는 데이터게 접근하려면
사용자명과 비밀번호를 요구한다
@로 사용자명,비밀번호 컴포넌트를 분리
: 로 사용자명과 비밀번호를 분리
<스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
경로
http://www.abc.com:80/aaa/index.html
/aaa/index.html이 경로
경로는 서버가 리소스의 위치를 찾는데 사용하는 정보
파라미터 (;로 구분) : 잘이해안감
프로토콜 파라미터가 없으면, 다른 한편에 있는 서버는 그 요청을 잘못처리하거나 처리하지 않는다.
ex) 바이너리와 텍스트, 총 두개의 포맷을 지원하는 FTP에서
바이너리 이미지가 텍스트로 전송되는 것을 원하지 않는다.
그래서 애플리케이션이 서버에 정확한 요청을 하기 위해 사용
ex) http://www.abc.com:80/aaa/index.html;type=d
질의 문자열 (? 로 구분)
데이터베이스 같은 서비스들은 요청받을 리소스 형식의 범위를 좁히기 위해
질문이나 질의를 받을 수 있다. http://www.abc.com:80/aaa/index.html?type=d
프래그먼트 (#으로 구분)
리소스의 특정 부분을 가르킬 수 있다
브라우저가 서버로부터 전체 리소스를 내려받은 후에 보고자 하는 리소스의 일부를 보여준다.
3. 단축 URL
상대 URL
URL을 짧게 표기하는 방식
상대 URL로 리소스에 접근하는데 필요한 모든 정보를 얻기 위해서는 기저(base) URL을 사용해야 함
http://www.abc.com:80/test.html <- 절대URL http://www.abc.com:80/ <- 기저 url ./test.html <- 상대 url
브라우저 같은 애플리케이션을 상대URL과 절대URL간의 상호 변환을 할 수 있어야 한다.
URL확장
어떤 브라우저들은 URL을 입력하고 있는 동안에 자동으로URL을 확장한다.
브라우저는 이런 간단한 기능을 제공하여 사용자의 시간을 절약하고 혼란을 막아준다
하지만, 프락시와 같은 다른 HTTP 애플리케이션에 문제를 발생시킬수도 있다. (6장에서 자세히)
4. 안전하지 않은 문자
어떤 인터넷 프로토콜을 통해서든 안전하게 데이터가 전송 될 수 있도록 URL을 설계하는 것은 중요했다.
따라서 출력이 되지 않거나, 보이지 않는 문자를 이메일 프로그램에서 사용하지 못하게 금지시켰다.
그러나 알파벳 외의 문자도 포함하려고 할 때가 있기때문에
이스케이프라는 기능을 추가하여 안전하지 않는 문자를 안전한 문자로 인코딩할 수 있게 하였다.
URL 문자 집합
이스케이프 문자열은 US-ASCII에서 사용이 금지된 문자들로
특정 문자나 데이터를 인코딩할 수 있게 함으로써 이동성과 완성도를 높였다
인코딩 체계
URL에 있는 안전하지 않은 문자들을 표현할 수 있는 인코딩 방식이 고안됨
인코딩은 안전하지 않은 문자를 (%) 기호로 시작해
ASCII 코드로 표현되는 두 개의 16진수 숫자로 이루어진 '이스케이프' 문자로 바꾼다.
문자 제한
URL 내에서 특별한 의미로 예약되어 있는 문자들을 다른 용도로 사용하고자 할때
반드시 인코딩을 해야한다.
표 2-3 (42p)
좀 더 알아보기
naver.com/~aaaa 식의 URL에 접근이 가능한 경우도 있는데
별문제가 없긴 하지만 개발자가 안전하지 않은 문자를 인코딩하지 않은 것이 실수.
5. 스킴의 바다
http
일단 URL 포맷을 지키는 하이퍼텍스트 전송 프로토콜
기본포트 80
https
HTTP의 양 끝단에서 암호화하기 위해 넷스케이프에서 개발한 보안 소켓 계층(SSL)을 사용
기본포트는 443
SSL : Secure Sockets Layer
mailto
이메일 주소
ftp
파일전송프로토콜
rtsp, rtspu
실시간 스트리밍 프로토콜 (Real Time Streaming Protocol)
rtspu 의 'u' 는 리소스를 읽기위해 UDP 프로토콜이 사용됨을 뜻함
file
주어진 호스트기기(로컬디스크,공유시스템 등) 에서 바로 접근할 수 있는 파일들
news
특정문서나 뉴스 그룹에 접근하는데 사용한다.
news URL은 리소스의 위치 정보를 충분히 포함하지 않는 특이한 속성이 있다
telnet
대화형 서비스에 접근하는데 사용
자체가 객체를 가리키지는 않지만,
리소스라고 할 수 있는 대화형 애플리케이션은 telnet프로토콜을 통해 접근 할 수 있다
6. 미래
URL 의 단점은 리소스가 옮겨지면 URL은 더이상 사용할 수 없다.
그래서 객체의 위치와 상관없이 이름으로 리소스를 찾고자 하는게 URN
URL에서 URN으로 바뀌는건 매우 큰 작업이라서 URL이 당분간 사용될 것이다.
'책 > HTTP 완벽가이드 (2020)' 카테고리의 다른 글
01. HTTP 개관 (0) | 2020.09.27 |
---|