[네트워크] URL과 리소스

유선·2024년 6월 3일
0

CS

목록 보기
24/25
post-thumbnail

✔️ 본 포스팅은 HTTP 완벽 가이드 2장 내용입니다.

2장에서 다루는 내용

URL(Uniform Resource Location)은 인터넷의 리소스를 가리키는 표준 이름이다. URL은 전자정보 일부를 가리키고 그것이 어디에 있고 어떻게 접근할 수 있는지 알려준다.

  • URL 문법, 여러 URL 컴포넌트가 어떤 의미를 가지며 무엇을 수행하는지.
  • 여러 웹 클라이언트가 지원하는 상대 URL과 확장 URL 같은 단축 URL에 대해서.
  • URL의 인코딩과 문자 규칙.
  • 여러 인터넷 정보 시스템에 적용되는 공통 URL 스킴.
  • 기존 이름은 유지하면서 객체들을 다른 장소로 옮기는 것을 가능하게 해주는 URN(Uniform Resource Name)을 포함한 URL의 미래.

2.1 인터넷의 리소스 탐색하기

  • URL은 브라우저 정보를 찾는데 필요한 리소스의 위치를 가리킨다.
  • URI는 URL + URN이다.
  • URN은 현재 그 리소스가 어디에 존재하든 상관없이 그 이름만으로 리소스를 식별하는데 비해서, URL은 리소스가 어디있는지 설명해서 리소스를 식별한다.

여기서는 URL기준으로 설명한다.

  1. URL의 첫부분 스킴은 http는 웹 클라이언트가 리소스테 어떻게 접근하는지 알려준다. (http 프로토콜을 이용하라)
  2. URL의 두번째 부분인 호스트 네임은 서버의 위치이며, 웹 클라이언트의 리소스가 어디에 호스팅되어있는지 알려준다.
  3. URL 세번째부분인 path는 리소스의 경로다. 경로는 서버에 존재하는 로컬 리소스들 중에서 요청받은 리소스가 뭔지 알려준다.

2.1.1 URL이 있기 전 암흑의 시대

웹, URL있기 전에는 네트워크 상에 산재해있는 데이터에 접근하기 위해서 애플리케이션마다 다른 분류 방식을 사용했다.

2.2 URL 문법

URL의 문법은 크게 9개로 나뉜다.
<스킴>:://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>

 컴포넌트설명
스킴리소스를 가져오려면 어떤 프로토콜을 사용하여 서버에 접근해야 하는지 가리킨다.없음
사용자 이름몇몇 스킴은 리소스에 접근을 하기 위해 사용자 이름을 필요로 한다.anonymous
비밀번호사용자의 비밀번호를 가리키며, 사용자 이름에 콜론(:)으로 이어서 기술한다<이메일 주소>
호스트리소스를 호스팅하는 서버의 호스트 명이나 IP 주소없음
포트리소스를 호스팅하는 서버가 열어놓은 포트번호. 많은 스킴이 기본 포트를 가지고 있다. (HTTP 기본 포트 : 80)스킴에 따라 다름
경로이전 컴포넌트와 빗금(/)으로 구분되어 있으며, 서버 내 리소스가 서버 어디에 있는지 가리킨다. 경로 컴포넌트의 문법은 서버와 스킴에 따라 다르다.없음
파라미터특정 스킴들에서 입력 파라미터를 기술하는 용도로 사용한다. 파라미터는 이름/값을 쌍으로 가진다. 파라미터는 다른 파라미터나 경로의 일부와 세미콜론(;)으로 구분하고, 여러 개를 가질 수 있다.없음
질의스킴에서 애플리케이션에 파라미터를 전달하는데 쓰인다. 질의 컴포넌트를 작성하는데 쓰이는 공통 포맷은 없다. URL의 끝에 "?"로 구분한다.없음
프래그먼트리소스의 조각이나 일부분을 가리키는 이름이다. URL이 특정 객체를 가리킬 경우에 프래그먼트 필드는 서버에 전달되지 않는다. 이는 클라이언트에서만 사용한다. URL의 끝에서 "#"문자로 구분한다.없음

2.3 단축 URL

웹 클라이언트는 몇몇 단축 URL을 인식하고 사용한다. 상대 URL은 리소스 안에 있는 리소스를 간결하게 기술하는데 사용할 수 있다. 많은 브라우저가 사용자가 기억하고 있는 URL 일부를 입력하면 나머지 부분을 자동으로 입력해주는 URL '자동 확장'을 지원한다.

2.3.1 상대 URL

  • 상대 URL와 절대 URL가 있다.
  • 일반적으로 보이는 것은 절대 URL이다.
  • 절대 URL은 리소스에 접근하는데 필요한 모든 정보를 가지고 있기 때문이다.

상대 URL은 html 문서내에서 보이는 "./modal.html" 같은 것들이다.

2.3.2 URL 확장

URL을 입력한 다음이나 입력하고 있는 동안에 자동으로 URL을 확장한다.
자동으로 URL이 확장되기 때문에 전체 URL을 쓰지 않아도 된다.

확장기능은 다음과 같다.
1. 호스트명 확장
주소창에 yahoo치면 자동으로 www.와 .com을 붙인다.

  1. 히스토리 확장
    과거에 사용자가 방문한 URL 기록을 저장해 놓는 것이다.
    URL을 입력하면 완결된 형태의 URL들을 선택하게 해준다.

2.4 안전하지 않은 문자.

URL은 잘 호환되도록 설계되었다.
모든 프로토콜이 데이터를 전송하기 위해서 서로다른 장치를 가지고 있기 때문에, 어떤 인터넷 프로토콜이든 안전하게 전송될 수 있도록 해야했다.
URL은 상대적으로 작고 일반적으로 안전한 알파벳 문자마나 포함하도록 한다.

그래서 출력이 되지 않거나 보이지 않는 문자를 이메일 프로그램에서 쓸 수 있다고해서 URL에서 쓰는것은 금지시켰다.
이스케이프 기능도 추가하여 안전하지 않은 문자를 안전하게 인코딩하는 기능까지 넣었다.

2.4.1 URL 문자 집합

컴퓨터 시스템 자체가 영어중심으로 설정되어 있다.
US-ASCII를 사용해왔는데 글로벌로 쓰이기에는 역부족이다.

2.4.2 인코딩 체계

안전하지 않은 문자를 %로 시작해 hex 문자열로 이스케이프하게 바꾼다.

2.4.3 문자 제한

어떤 문자는 URL내에서 특별한 의미라서 인코딩되어야한다.
% / . .. # ? : ; $ + @ <> " 0x00 0x7F등등

2.5 스킴의 바다

스킴은 많다!
http
https
file
telnet
ftp

2.6 미래

URL은 완벽하지 않다. 사실 주소이지 실제 이름은 아니다.
이러면 리소스가 옮겨지면 그 URL을 더이상 사용할 수 없다는 뜻이다.

이런문제를 해결하려면 객체의 위치와 상관없이 그 객체를 가리키는 실제 객체의 이름을 사용하는 것이다. 
이게 바로 URN이다.

URN이 아직 널리퍼지지 않은이유는 주소체계를 바꾸는 것 자체가 매우 큰 작업이고 합의도 필요하기 때문에 아직도 오래걸릴것이다.

profile
Sunny Day!

0개의 댓글