02. URL과 리소스

목표

  1. URL의 포맷과 URL이 가르키는 다양한 리소스 형식에 대해 알아보고,

  2. 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개지만, 중요한 컴포넌트는 스킴, 호스트, 경로 이다

  1. 스킴 : 리소스에 어떻게 접근하는지 알려주는 정보

    • 어떤 프로토콜을 사용하여 리소스를 요청해야 하는지 알려줌(대소문자 안가림)

  2. 호스트와 포트

    • 인터넷에 있는 리소스를 찾으려면, 리소스를 호스팅하고 있는 장비와

      그 장비내에서 리소스에 접근할 수 있는 서버가 어디에 있는지 알아야 한다.

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

      ex) 같은 리소스를 가르키는 예 http://www.abc.com:80/index.html : 호스트 명 http://161.53.229.42:80/index.html : IP 주소

  1. 사용자 이름과 비밀번호

    • 많은 서버가 자신이 가지고 있는 데이터게 접근하려면

      사용자명과 비밀번호를 요구한다

    • @로 사용자명,비밀번호 컴포넌트를 분리

    • : 로 사용자명과 비밀번호를 분리

      <스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>

  1. 경로

    • http://www.abc.com:80/aaa/index.html

      • /aaa/index.html이 경로

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

  2. 파라미터 (;로 구분) : 잘이해안감

    • 프로토콜 파라미터가 없으면, 다른 한편에 있는 서버는 그 요청을 잘못처리하거나 처리하지 않는다.

    • ex) 바이너리와 텍스트, 총 두개의 포맷을 지원하는 FTP에서

      바이너리 이미지가 텍스트로 전송되는 것을 원하지 않는다.

      그래서 애플리케이션이 서버에 정확한 요청을 하기 위해 사용

      ex) http://www.abc.com:80/aaa/index.html;type=d

  3. 질의 문자열 (? 로 구분)

    • 데이터베이스 같은 서비스들은 요청받을 리소스 형식의 범위를 좁히기 위해

      질문이나 질의를 받을 수 있다. http://www.abc.com:80/aaa/index.html?type=d

  1. 프래그먼트 (#으로 구분)

    • 리소스의 특정 부분을 가르킬 수 있다

    • 브라우저가 서버로부터 전체 리소스를 내려받은 후에 보고자 하는 리소스의 일부를 보여준다.

      http://www.abc.com:80/aaa/index.html#drills


3. 단축 URL

  1. 상대 URL

    • URL을 짧게 표기하는 방식

    • 상대 URL로 리소스에 접근하는데 필요한 모든 정보를 얻기 위해서는 기저(base) URL을 사용해야 함

      http://www.abc.com:80/test.html <- 절대URL http://www.abc.com:80/ <- 기저 url ./test.html <- 상대 url

    • 브라우저 같은 애플리케이션을 상대URL과 절대URL간의 상호 변환을 할 수 있어야 한다.

  1. URL확장

    • 어떤 브라우저들은 URL을 입력하고 있는 동안에 자동으로URL을 확장한다.

    • 브라우저는 이런 간단한 기능을 제공하여 사용자의 시간을 절약하고 혼란을 막아준다

    • 하지만, 프락시와 같은 다른 HTTP 애플리케이션에 문제를 발생시킬수도 있다. (6장에서 자세히)


4. 안전하지 않은 문자

어떤 인터넷 프로토콜을 통해서든 안전하게 데이터가 전송 될 수 있도록 URL을 설계하는 것은 중요했다.

따라서 출력이 되지 않거나, 보이지 않는 문자를 이메일 프로그램에서 사용하지 못하게 금지시켰다.

그러나 알파벳 외의 문자도 포함하려고 할 때가 있기때문에

이스케이프라는 기능을 추가하여 안전하지 않는 문자를 안전한 문자로 인코딩할 수 있게 하였다.

  1. URL 문자 집합

    • 이스케이프 문자열은 US-ASCII에서 사용이 금지된 문자들로

      특정 문자나 데이터를 인코딩할 수 있게 함으로써 이동성과 완성도를 높였다

  2. 인코딩 체계

    • URL에 있는 안전하지 않은 문자들을 표현할 수 있는 인코딩 방식이 고안됨

    • 인코딩은 안전하지 않은 문자를 (%) 기호로 시작해

      ASCII 코드로 표현되는 두 개의 16진수 숫자로 이루어진 '이스케이프' 문자로 바꾼다.

  3. 문자 제한

    • URL 내에서 특별한 의미로 예약되어 있는 문자들을 다른 용도로 사용하고자 할때

      반드시 인코딩을 해야한다.

    • 표 2-3 (42p)

  4. 좀 더 알아보기

    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

+ Recent posts