본문 바로가기

Http

URI와 URL

URI보다 URL(Uniform Resource Locator)이 익숙하다.

웹 브라우저 웹 페이지를 표시하기 위해 입력하는 주소가 바로 URL이다.

 

URI는 리소스 식별자

URI는 Uniform Resource Identifiers의 약자이지만, RFC2396에거는 각각의 단어가 다음과 같이 정의되어 있다.

 

Uniform

통일된 서식을 결정하는 것으로, 여러 가지 종류의 리소스 지정 방벙을 같은 맥락에서 구별없이 취급할 수 있게 한다. 또한, 새로운 스키마(http:와 ftp등) 도입을 용이하게 한다.

 

Resource

리소스는 '식별 가능한 모든 것'이라고 정의되어 있다. 도큐먼트 파일뿐만 아니라 이미지와 서비스(일기예보 등) 등 다른 것과 구별할 수 있는 것은 모두 리소스이다. 또한 리소스는 단일한 부분만 아니라 복수의 집합도 리소스로 파악할 수 있다.

 

Identifier

식별 가능한 것을 참조하는 오브젝트이며 식별자로 불린다. 결국 URI는 스키마를 나타내는 리소스를 식별하기 위한 식별자이다. 스키마는 리소스를 얻기 위한 수단에 이름을 붙이는 방법이다.

 

HTTP의 경우, 'http'를 사용한다. 그 외에도 'ftp'와 'mailto' ,'telnet', 'file'등이 있다. 공식 URI 스키마는 인터넷 상의 자원 관리 등을 하는 비영리 법인 ICANN 산하 조직인 IANA에 등록되어 있으며 30개 정도 있다.

 

URI는 리소스를 식별하기 위해 문자열 전반을 나타내는데 비해, URL은 리소스의 장소(네트워크 상의 위치)를 나타낸다. URL은 URI의 서브셋이다.

RFC3986: Uniform Resource Identifier(URI) : Generic Syntax에 적혀있는 URI의 예로서 다음과 같은 것이 있다.

ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
idap://[2001:db8::7]c=GB?objectClass?one
mailto:john.Doe@example.com
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2

이후에는 URI라는 말이 자주 나오지만 이해하기 편하게 URL로 변경하여도 아무런 지장이 없다.

 

 

URL포맷

 

URI는 필요한 정보 전체를 지정하는 완선 수식 절대 URI혹은 완전 수식 절대 URL과 브라우저 중의 기준 URI에서 상대적 위치를 */images/log.gif와 같이 지정하는 상대 URL이 있다.

 

http://user:pass@www.example.kr:80/dir/index.htm?uid=1#ch1

http:// 스키마
user:pass : 자격정보(크리덴셜)
www.example.kr : 서버주소
:80 : 서버포트
/dir/index.htm : 계층적 파일패스
?uid=1 : 쿼리 문자열
#ch1 : 프래그먼트 식별자

http: 와  https: 같은 스키마를 사용하여 리소스를 얻기 위해 사용하는 프로토콜을 지시한다. 대문자와 소문자는 무시되고 마지막에 콜론(:)이 하나 붙는다.

"data:"와 "javascript:" 같이 데이터와 프로그램을 지정할 수도 있다.

 

자격정보(크리덴셜)

서버로부터 리소스를 취득하려면 자격정보가 필요하다. 유저명과 패스워드를 지정할 수 있다. 이것은 옵션이다.

 

서버 주소

완전 수식 형식인 URI에서는 서버 주소를 지정할 필요가 있다. 주소는 www.hackr.kr와 같은 DNS이름이나 192.168.1.1과 같은 IPv4주소나 [0:0:0:0:0:0:0:1]과 같은 IPv6 주소를 대괄호로 묶어서 지정한다.

 

서버 포트

서버의 접속 대상이 되는 네트워크 포트 번호를 지정한다. 이것은 옵션이고 생략하면 디폴트 포트가 사용된다.

 

계층적 파일 패스

특정 리소르를 식별하기 위해서 서버 상의 파일 패스를 지정한다. UNIX디렉토리 지정 방법과 비슷하다.

 

쿼리 문자열

파일 패스로 지정된 리소스에 임의의 파라미터를 넘겨주기 위해 쿼리 문자열을 사용한다. 옵션이다.

 

프래그멘트 식별자

주로 취득한 리소스에서 서브 리소스(도큐먼트 중간에 위치)를 가리키기 위해서 프래그멘트 식별자가 사용된다. 옵션이다.

 

 

'Http' 카테고리의 다른 글

서버에 임무를 부여하는 HTTP메소드  (0) 2023.05.23
간단한 프로토콜 HTTP - 1  (0) 2023.05.17
TCP/IP 통신의 흐름  (0) 2023.05.12
네트워크의 기본은 TCP/IP  (0) 2023.05.11
HTTP  (1) 2023.05.10