[2장] URL과 리소스

Haeseo Lee·2023년 3월 2일
0

URL(Uniform Resource Locator)


  • 인터넷의 리소스를 가리키는 표준 이름
    • 리소스(resource): 웹에서 사용되는 식별이 가능한 모든 자원

URL 문법


기본형태
<scheme>://<user>:<pwd>@<host>:<port>/<route>;<param>?<query>#<fragment>

scheme

  • 사용할 프로토콜 (how)
  • 주어진 리소스에 접근하는 방법
  • 대소문자를 가리지 않음 (http = HTTP)

host, port

  • host: 접근하려고 하는 리소스를 가지고 있는 인터넷 상의 호스트 장비
  • port: 서버가 열어놓은 네트워크 포트 (HTTP는 기본 포트로 80 사용)

사용자 이름, 비밀번호

  • 대표적 예: FTP 서버
  • @’ 문자로 구분

경로

  • 서버 내 리소스 위치
  • HTTP URL에서 경로 컴포넌트는 ‘/’ 문자를 기준으로 경로 조각으로 나뉠 수 있음

parameter

  • 애플리케이션이 서버에 정확한 요청을 하기 위해 사용
  • ‘이름=값’ 쌍의 형식
  • ;’ 문자로 구분
    • ex) http://www.joes-hardware.com/hammers;sale=false

query string

  • 요청할 리소스 형식의 범위를 좁히기 위해 사용
  • 대표적 예: 데이터베이스 게이트웨이에 질의 요청
  • &’ 문자로 구분
  • ‘이름=값’ 쌍의 형식
    • ex) http://wsww.joes-hardware.com/inventory-check.cgi?item=12731

fragment

  • 리소스의 특정 부분(fragment)를 가리킬 수 있는 컴포넌트
    • ex) http://www.joes-hardware.com/tools.html#drills
    • /tools.html의 일부(’drills’)를 가리키는 셈
  • 일반적으로 HTTP 서버는 객체 단위로만 전송하기 때문에 브라우저가 서버로부터 전체 리소스를 내려받은 후, fragment를 사용하여 특정 리소스의 일부를 보여줌

상대 URL


  • 기저(base) URL 을 이용해 URL을 짧게 표기하는 방식
<HTML>
<HEAD>
	<TITLE> Joe's Tools </TITLE>
</HEAD>
<BODY>
	<H1> Tools Page </H1>
	<H2> Hammers <H2>
	<P> Joe's Hardware Online has the largest selection </P>
	<P> of <A href="./hammers.html">hammers</A> on earth. </P>
</BODY>
</HTML>
  • 위의 HTML 코드에서 ‘./hammers.html’ 가 상대 URL의 예시
  • URL에 scheme, host, 기타 컴포넌트를 모두 입력할 필요X
    • 컴포넌트가 포함된 리소스의 base URL에서 알아냄

URL 확장


호스트명 확장

  • 단순히 heuristic만을 사용해서 전체 호스트명으로 확장
    • ‘yahoo’‘www.yahoo.com’
  • 그러나 호스트명 확장은 proxy와 같은 다른 HTTP 애플리케이션에 문제를 발생시킬 수 있음

히스토리 확장

  • 과거에 사용자가 방문했던 URL의 기록을 저장
    • ‘http://www.joes’‘http://www.joes-hardware.com’

URL의 중요성


  • 서로 다른 장치에서 데이터를 전송할 때 어떤 프로토콜을 통해서도 안전히 전송될 수 있도록 URL 을 설계하는 것은 중요
  • 안전한 전송 ⇒ 정보가 유실될 위험 없이 URL을 전송할 수 있다는 것
  • 이스케이프: 알파벳 외의 안전하지 않은 문자를 안전한 문자로 인코딩하는 것

US-ASCII


  • 7-bit를 사용하여 영문 자판에 있는 키 대부분과 출력되지 않는 몇몇 제어 문자 표현

인코딩

  • 안전하지 않은 문자를
    • { ‘%’ + ASCII 코드로 표현되는 두 개의 16진수} 로 이루어진 ‘이스케이프’ 문자로 변환
  • 예시
    • ‘~’ → 126(0x7E) =⇒ (URL 상에서) “%7E”
    • ‘%’ → 37(0x25) =⇒ (URL 상에서) “%25”
  • URL에서 특정 용도로 예약된 문자(%, /, $, …)를 다른 용도로 쓰려면 반드시 인코딩

대표적인 Schemes


http

  • 기본 포트값 80
  • 기본형식
    • http://<host>:<port>/<route>?<query>#<fragment>
  • 예시
    • http://www.joes-hardware.com/index.html
    • http://www.joes-hardware.com:80/index.html

https

  • HTTP 커넥션의 양 끝단에서 SSL(Secure Sockets Layer) 사용해서 암호화가 일어남
  • 기본 포트값 443
  • 문법은 HTTP와 동일

ftp

  • 파일 전송 프로토콜(file transfer protocol)
  • FTP서버에 있는 파일을 올려/내려 받거나, 서버 디렉터리에 있는 콘텐츠 목록을 가져옴
  • 기본형식
    • ftp://<사용자명>:<비밀번호>@<host>:<port>/<route>:<param>
  • 예시
    • ftp://anonymous:joe%40joes-hardware.com@prep.ai.mit.edu:21/pub/gnu

rtsp, rtspu

  • 실시간 스트리밍 프로토콜(real time streaming protocol)
  • 오디오나 비디오 등의 미디어 리소스를 식별
  • rtspu는 rstp 프로토콜에 추가로 UDP 프로토콜이 사용됨
  • 기본형식
    • rtsp://<사용자명>:<비밀번호>@<host>:<port>/<route>
  • 예시
    • rtsp://www.joes-hardware.com:554/interview/cto_video

telnet

  • 대화형 서비스에 접근하는데 사용
  • telnet URL 자체가 객체를 가리키지는 않음
  • 대화형 애플리케이션 역시도 리소스이므로 telnet 프로토콜을 통해 접근 가능
  • 기본형식
    • telent://<사용자명>:<비밀번호>@<host>:<port>/
  • 예시
    • telnet://slurp:webhound@joes-hardware.com:23/
profile
잡생각 많은 인간

0개의 댓글