alt
Home HTTP 완벽가이드 2장 - URL과 리소스
Post
Cancel

HTTP 완벽가이드 2장 - URL과 리소스


URL(uniform resource locator)

: 인터넷 상에서의 리소스의 위치. 애플리케이션은 URL을 사용하여 정보에 쉽게 접근 가능.


  • URI(Uniform Resource Identifier)의 부분집합으로 본다.
  • 인터넷에 존재하는 어떤 리소스든지 가리킬 수 있다.
  • 대충 스킴://서버위치/리소스경로 구조. e.g ) https://www.github.com/hungry-jay?tab=repositories


URN : 리소스가 어디에 존재하든 상관없이 “이름만으로” 리소스 식별

  • 이걸 사용하면 리소스의 위치가 바뀌어도 계속 URN으로 접근 가능
    • 바꿔말하면 URL은 리소스의 위치가 바뀐다면 더이상 사용 불가
  • URN을 지원하려면 많은 변화가 필요하므로 부담


URL의 구조

1
2
<스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
http://joowon_son:1234@192.168.0.1:8080/index.html;page=1?key=value#abc
  • 스킴: 어떤 프로토콜을 사용할지(http, ftp, smtp 등)

  • 사용자 이름, 비밀번호: 몇몇 스킴에서는 이러한 credential을 사용

    • ssh -i ${key} ubuntu@${서버주소} 이러한 ssh cli를 생각해보면, key의 자리에 credential
  • 호스트: IP 혹은 호스트명(리소스가 어디에 호스팅 되어있는지)

  • 포트: 리소스를 호스팅하는 서버가 열어놓은 Port

  • 경로: 리소스가 서버 어디에 있는지 가리킨다.

  • 파라미터: 특정 스킴에서 입력 파라미터 기술 용도. key - value 쌍.

    • 애플리케이션이 리소스에 접근할때 필요한 추가 정보(어떤 포트를 열었는지, 사용자 이름을 명시하는지 등)

      e g) http://www.abc.com/hammers;sale=false/index.html;graphics=true

      • 여기서 두 경로조각(hammers, index.html)은 각 다른 파라미터를 가진다.
  • 질의: 요청받을 리소스 형식의 범위를 좁히기 위해 애플리케이션에 parameter 전달 용도

    • e.g) ?item = 1234&color=red
  • 프래그먼트: 리소스 일부분 가리키는 이름

    • .html 같은 리소스에서, 보다 특정된 일부분을 가리킬 때
    • 일반적으로 http는 객체 전체를 다루기 때문에 프래그먼트 전달 X이고, 브라우저가 리소스의 일부를 보여줌.


상대 URL

: 리소스 위치 전체를 사용하지 않음. 기저(Base) URL 필요

  • 상대 URL은 프래그먼트이거나 URL 일부
  • e.g) http://127.0.0.1:8000/index.html 에서 상대 URL./main.html을 가리키고 있다면, 절대 URL은 http://127.0.0.1:8000/main.html이 되는 것
  • 장점 : 리소스 집합 경로를 바꾸더라도, 새로운 기저(base) URL에 의해 해석되기 때문에 변경에 용이


URL 확장

: 브라우저에 입력하고 있는데 자동 완성시켜주는 것. 이는 Proxy와 같은 다른 HTTP 애플리케이션 사용 시 다른 문제가 있을 수 있다고 함.

  1. 호스트 명 확장: naver를 입력하면 자동으로 www. , .com을 붙여 전체 URL을 만들어준다.
  2. 히스토리 확장: URL 기록을 저장해 놓는 것. URL을 입력하면 그 입력된 URL 앞 글자들을 포함한 완결형태의 URL 선택하게 해줌.


URL 인코딩 규칙(안전하지 않은 문자)

  • URL에는 출력되지 않은 문자(공백 등)이 포함될 수 없다.
  • 영어와 이스케이프 문자(\n, \t 등) 포함
  • 안전하지 않은 문자를 표현할 수 있는 인코딩 방식: 기호 %로 시작해, 두개의 16진수 숫자인 이스케이프 문자로 바꾼다.
    • http://www.abc.com/%20tools.html
  • 문자 제한: %, /, ., ? 등 몇 문자들은 예약어이므로, 사용하기 위해서는 인코딩 되어야한다.
  • 이외에도 안전하지 않거나 제한된 문자는 변환(인코딩)해야한다.


스킴

  • http:하이퍼 텍스트 전송 프로토콜. 사용자 이름, 비밀번호가 없다
  • https: 양 끝(client, server)에서 암호화와 복호화를 위해 SSL(secure socket layer)을 사용
  • ftp: FTP 서버에 있는 파일을 내려받거나 올리기 위한 파일전송 프로토콜
  • rtsp, rtspu: 실시간 스트리밍 프로토콜
  • telnet: 대화형 서비스
  • smtp: 이메일



Reference)

HTTP 완벽가이드

This post is licensed under CC BY 4.0 by the author.