URI와 URL, URN에 대해 알아보겠습니다.
웹의 리소스 식별하기
리소스
- HTTP 요청 대상
- 리소스의 특성은 더 이상 정의되지 않음
- 문서, 사진 등으로 그 어떤 것이든 될 수 있음
- 각 리소스는 리소스 식별을 위해 HTTP 전체에서 사용되는 URI로 식별됨
URI
- Uniform Resource Identifier
URL과 URN
URL
- Uniform Resource Locator
- 가장 일반적인 URI 형식으로, 웹 주소로 알려짐
- 브라우저의 주소 표시줄에 입력하여 URL과 연결되는 페이지(리소스)를 로드할 수 있도록 지시
- 여러 부분으로 구성되는데 일부는 필수 사항이고 나머지는 선택 사항
URN
- Uniform Resource Name
- 특정 네임스페이스에서 이름으로 리소스를 식별하는 URI
1
2
urn:isbn:9780141036144
urn:ietf:rfc:7230
- George Orwell의 책, Nineteen Eighty-Four
- IETF 명세 7230, Hypertext Transfer Protocol (HTTP/1.1): 메시지 구문과 라우팅
URI 문법
스키마 또는 프로토콜
1
http://
- 브라우저가 사용해야 하는 프로토콜
- 일반적으로 HTTP이거나 보안 버전인 HTTPS
- 웹은 이 두 가지 중 하나를 사용하지만, 브라우저는 다른 프로토콜을 처리하는 방법도 알고 있음
- 메일 클라이언트를 여는
mailto:
, 파일 전송을 처리하는ftp:
- 메일 클라이언트를 여는
일반적인 스키마는 다음과 같음
스키마 | 설명 |
---|---|
data | Data URL |
file | 호스트별 파일 이름 |
ftp | 파일 전송 프로토콜 |
http/https | 하이퍼 텍스트 전송 프로토콜 (보안) |
javascript | URL 내 JavaScript 코드 |
mailto | 전자 메일 주소 |
ssh | 보안 쉘 |
tel | 전화 |
urn | 통합 자원 이름 |
view-source | 리소스의 소스코드 |
ws/wss | 웹 소켓 연결 (보안) |
인증
1
www.example.com
- 네임스페이스를 관리하는 도메인 이름(Domain Name) 또는 기관
- 도메인 이름은 요청중인 웹 서버를 나타냄
- IP 주소를 직접 사용할 수도 있으나 편의성이 떨어져 웹에서는 자주 사용되지 않음
포트
1
:80
- 포트는 웹 서버의 리소스에 접근하는 데 사용되는 기술적인 “게이트”를 나타냄
- 웹 서버가 HTTP 프로토콜의 표준 포트를 사용하여 리소스에 접근하는 경우, 일반적으로 포트가 생략됨
- HTTP의 경우 80, HTTPS의 경우 443
- 표준 포트를 사용하지 않는다면 필수로 입력해주어야 함
경로
1
/path/to/myfile.html
- 웹 서버의 리소스 경로
- 초기 웹에서는 이와 같은 경로가 웹 서버의 물리적 파일 위치를 나타냈음
- 하지만 요즘에는 물리적 파일을 나타내는 것이 아닌 웹 서버에서 처리를 추상화하는 것에 불과함
쿼리
1
?key1=value1&key2=value2
- 웹 서버에 제공되는 추가 매개변수
&
기호로 구분된 키/값 쌍의 목록- 웹 서버는 이러한 매개변수를 사용하여 리소스를 사용자에게 반환하기 전에 추가적인 작업을 수행할 수 있음
- 각 웹 서버에는 매개변수를 사용하는 고유한 규칙이 있음
- 특정 웹 서버가 매개변수를 처리하는 방법을 알 수 있는 신뢰할만한 유일한 방법은 웹 서버 소유자에게 문의하는 것임
프래그먼트
1
#SomewhereInTheDocument
- 리소스 자체의 다른 부분에 대한 앵커
- 앵커는 리소스 내부의 일종의 ‘북마크’를 나타냄
- 브라우저에서 해당 ‘북마크된’ 지점에 있는 콘텐츠를 표시하는 방향을 제공
- 예를 들어 HTML 문서에서 브라우저는 앵커가 정의된 지점으로 스크롤함
- 비디오나 오디오 문서에서 브라우저는 앵커가 나타내는 시간으로 이동하려고 시도
- 프래그먼트 식별자라고도 하는
#
뒤의 부분은 요청과 함께 서버로 전송되지 않음
사용 일람
HTML 콘텐츠에서 URL을 사용할 때, 일반적으로 URL 스키마 중의 일부만 사용해야 함
- 하위 리소스(더 큰 문서의 일부로 로드되는 파일)를 참조할 때는 HTTP 및 HTTPS 스키마만 사용해야 함