Identifying resources on the Web
웹 에서의 리소스 식별
- HTTP 요청의 대상을 리소스(resource, 자원)라고 합니다.
- 리소스는 문서, 사진 또는 기타 어떤 것이든 될 수 있습니다.
- 각 리소스는 URI로 식별됩니다.
URI
URI
- Uniform Resource Identifier(통합 자원 식별자)
- 인터넷에서 하나의 리소스를 가리키는 문자열
- 가장 일반적인 URI는 웹 주소로 알려진 URL이 있습니다.
https://cord-yen.tistory.com
- 특정 이름 공간에서 이름으로 리소스를 식별하는 URI는 URN입니다.
#URN 예시
# 국제 표준 도서번호(ISBN)에서 식별되는 "로미오와 줄리엣" 도서
urn:isbn:9788937461736
URL
- Uniform Resource Locator(통합 자원 위치)
- 웹에서 주어진 리소스의 주소
- 네트워크 상에 리소스가 어디 있는지 (주소)를 알려주기 위한 약속
- 이러한 리소스는 HTML, CSS, 이미지 등이 될 수 있습니다.
- URL은 다음과 같이 여러 부분으로 구성되며 일부는 필수이고, 나머지는 선택사항
URL 구조
(1) Scheme (or protocol)
- 브라우저가 리소스를 요청하는 데 사용해야 하는 프로토콜
- URL의 첫 부분은 브라우저가 어떤 규약을 사용하는지를 나타냄
- 기본적으로 웹은 HTTP(S)를 요구하며, 메일을 열기 위한 mailto:, 파일을 전송하기 위한 ftp: 등 다른 프로토콜도 존재
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
(2) Authority
- Scheme 다음은 문자패턴 :// 으로 구분된 Authority(권한)이 작성됩니다.
- Autority는 domain과 port를 모두 포함하며 둘은 :(콜론)으로 구분됩니다.
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
(2-1) Domain Name
- 요청 중인 웹 서버를 나타냅니다.
- 어떤 웹 서버가 요구되는 지를 가리키며 직접 IP 주소를 사용하는 것도 가능합니다. 하지만 사람이 외우기 어렵기에 주로 Domain Name으로 사용합니다.
- 예를 들어 google.com의 IP주소는 142.251.42.142지만 google.com으로 씁니다.
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
(2-2) Fort
- 웹 서버의 리소스에 접근하는 데 사용되는 기술적인 문(Gate)
- HTTP 프로토콜의 표준 포트는 다음과 같고 생략이 가능합니다. ( 나머지는 생략이 불가능합니다.)
- HTTP - 80
- HTTPS - 443
- Django의 경우 8000(80+00)이 기본 포트로 설정되어 있습니다.
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
(3) Path
- 웹 서버의 리소스 경로
- 초기에는 실제 파일이 위치한 물리적인 위치를 나타냈지만, 최근에는 실제 위치가 아닌 추상화된 형태 구조를 표현합니다.
- 예를 들어 articles/create가 실제 articles 폴더 안 create 폴더 안을 나타내는 것은 아닙니다.
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
(4) Parameters
- 웹 서버에 제공하는 추가적인 데이터
- 파라미터는 '&' 기호로 구분되는 key-value 쌍 목록
- 서버는 리소스를 응답하기 전에 이러한 파라미터를 사용해 추가 작업을 수행할 수 있습니다.
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
(5) Anchor
- 리소스의 다른 부분에 대한 앵커
- 리소스 내부 일종의 "북마크"를 나타내며 브라우저에 해당 북마크 지점에 있는 콘텐츠를 표시합니다.
- 예를 들어 HTML 문서에서 브라우저는 앵커가 정의한 지접으로 스크롤 합니다
- fragment identifier(부분 식별자) 라고 부르는 '#' 이후 부분은 서버에 전송되지 않습니다.
- 예를 들어 #SomeWhereInTheDocument 는 서버에 전달되지 않고 브라우저에게 해당 지점으로 이동할 수 있도록 합니다.
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
웹 에서의 리소스 식별
자원의 식별자(URI)
- 자원의 위치로 자원을 식별(URL)
- 고유한 이름으로 자원을 식별(URN)