Multiple Resolution을 위한 메타데이타 처리

Download Report

Transcript Multiple Resolution을 위한 메타데이타 처리

URN Resolution System
이창열
2001. 7
목차
• URN
• URI Resolution Service
• NAPTR
• Trivial HTTP
URN
-Uniform Resource Name :
위치에 독립적인 정보의 단위나 자원 식별 이름
1995년 10월 Tennessee 대학의 Keith Moore에 의해 회의
가 개최 후 URN groups에서 보고됨
URN과 유사한 도메인 이름은 인터넷의 컴퓨터 식별
-RFC 1737
Global scope, Global Uniqueness, Persistence,
Scalability, Legacy support, Extensibility, Independence
구문
URN:<NID>:<NSS>, NID is the namespace identifier,
NSS is the namespace specific string.
샘플 : Urn:hdl:cnri.dlib/august95
Urn:lifn:some.domain.anything-goes-here
Urn:path:/A/B/C/doc.html
Urn:inet:library.bigstate.edu:aj17-mcc
Naming scheme : hdl, lifn, path, inet
Naming Authority : cnri.dlib, /A/B/C, library.bigstate.edu
URN Registries : URN Naming scheme, authority,
resolution 시스템 등에 관한 자료 서비스 네트워크
- URN에서 naming authority 발견
- 어떤 resolution 시스템이 주어진 URN을 변환하게 하는지 아는것
- 현재 NAPTR로 알려짐.
- 모든 URN 변환 시스템은 URN 레지스트리를 가지나, 모든
레지스트리는 모든 naming schemes을 알지 못한다.
- DNS을 변경하는 버전, handle system 사용.
구현
RCDS(Resource Cataloging and Distribution Service) : Tennessee 대학의
Keith Moore, Shirley Browne, Stan Green, Reed Wade
Handle System : CNRI의 David Ely, William Arms
X-dns-2 : Los Alamos National Lab.의 Ron Daniel : DNS에 기반
URN Services : OCLC의 Eric J. Miller외 다수, : URN 구문에 초첨
Path URN : DNS를 사용한 다른 스킴. National Center for Supercomputing
Applications에서 개발
Whois++ : Internet Directory Service로써 Whois++를 사용한 여러 그룹
URI Resolution Service
-인터넷 자원에 대하여,
이름, 위치, 서술, 접근, 자원 자체 등의
정보를 제공하는 기능 필요
- 서비스는 이러한 기능 중 하나 지원
- URI-WG : Ron Daniel Jr. , [email protected]
I2L
Name : URI to URL
Mnemonic : I2L
Number of Operands : 1
Type of Each Operand : First operand is a URI
Format of Each Operand : First operand is encoded as a URI
Algorithm : Opaque
Output : One and only one URL
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려지지 않았을 때
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
URL 리스타나 URC 이해가 필요없다. 사상은 URI 스킴에 의존
I2Ls
Name : URI to URLs
Mnemonic : I2LS
Number of Operands : 1
Type of Each Operand : First operand is a URI
Format of Each Operand : First operand is encoded as a URI
Algorithm : Opaque
Output : 0번 이상의 URL 리스트
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려지지 않았을 때
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
URL 리스트로 부터 소비자 기준에 의하여 선택
I2R
Name : URI to Resource
Mnemonic : I2R
Number of Operands : 1
Type of Each Operand : First operand is a URI
Format of Each Operand : First operand is encoded as a URI
Algorithm : Opaque
Output : URI에 의해 이름 붙여진 자원의 인스턴스
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려진바 없다.
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
URI에 의해 이름 붙여진 자원의 인스턴스를 돌려준다.
I2Rs
Name : URI to Resources
Mnemonic : I2RS
Number of Operands : 1
Type of Each Operand : First operand is a URI
Format of Each Operand : First operand is encoded as a URI
Algorithm : Opaque
Output : URI에 의해 이름 붙여진 0개 이상의 자원의 인스턴스들
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려진바 없다.
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
예를 들어 자원의 JPEG, GIF 버전. 같다는 것의 판단은 명명기관에서 판명된다.
I2C
Name : URI to URC
Mnemonic : I2C
Number of Operands : 1
Type of Each Operand : First operand is a URI
Format of Each Operand : First operand is encoded as a URI
Algorithm : Opaque
Output : 한 개 URC
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려진바 없다.
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
자원의 기술이다. 서지 정보, 전자서명, 갱신 기록 등 정보이다.
I2CS
Name : URI to URCs
Mnemonic : I2CS
Number of Operands : 1
Type of Each Operand : First operand is a URI
Format of Each Operand : First operand is encoded as a URI
Algorithm : Opaque
Output : 0개 이상의 URC들
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려진바 없다.
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
URC는 다른 형식, 유형이 될 수 있다.
I2N
Name : URI to URN
Mnemonic : I2N
Number of Operands : 1
Type of Each Operand : First operand is a URI
Format of Each Operand : First operand is encoded as a URI
Algorithm : Opaque
Output : 한 개 URN
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려진바 없다.
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
URN들은 한 개 자원과 동일하다고 간주하는 반면, 한 개의 자원이 한 개의 URN은 아니다.
매일 기상 변화 정보를 가르키는 것 처럼, 계속 다를 수 있다.
I2Ns
Name : URI to URNs
Mnemonic : I2NS
Number of Operands : 1
Type of Each Operand : First operand is a URI
Format of Each Operand : First operand is encoded as a URI
Algorithm : Opaque
Output : URN 리스트
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려진바 없다.
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
0개 이상의 URN을 돌려준다.
I=I
Name : URI = URI
Mnemonic : I=I
Number of Operands : 2
Type of Each Operand : Both operands are URIs
Format of Each Operand : Both operands are encoded as a URIs
Algorithm : Opaque
Output : TRUE 또는 FALSE
Error Conditions :
- 잘못된 URI
- URI가 구문적으로 유효한, 어떤 형태에 존재하지 않을 때
- URI가 존재하나, 연산 결과로 유용한 것이 없다.
- URI가 과거에 존재하였으나, 현재 알려진바 없다.
- 접근 부정
보안 고려 :
- 잘못된 변환
- 서비스 부정 : 해당 URL 제거하여, 자원 검색 능력 제거
두개의 주어진 URI가 같은가 결정하는데 사용한다.
NAPTR
- RFC 2168, 2000년 9월
- Naming Authority Pointer(NAPTR) DNS Resource Record
구문
샘플
duns.urn.net
;;
order pref flags service
IN NAPTR 100 10 "s" "dunslink+N2L+N2C ""
IN NAPTR 100 20 "s" "rcds+N2C"
""
IN NAPTR 100 30 "s" "http+N2L+N2C+N2R" ""
regexp replacement
dunslink.udp.isi.dandb.com
rcds.udp.isi.dandb.com
http.tcp.isi.dandb.com
NAPTR RR 형식은 다음과 같으며 NAPTR을 위한 DNS 유형 코드는 35이다.
Domain TTL Class Type Order Preference Flags Service Regexp Replacement
구문
Domain : 자원 레코드가 언급하는 도메인 이름. 규칙 DB에 엔트리의 키이다.
TTL : 표준 DNS 기능
Class : 표준 DNS 기능
Type : NAPTR을 위한 유형 코드로 35
Order : 16비트로, NAPTR 응답시 레코드 처리 순서
Preference : 같은 Order를 가질 때, 변환기가 접촉하는 순서
Flag : 필드의 해석과 다시쓰기 제어 정보. 단일 글자.
- “S”, “A”, “U”는 terminal lookup. NAPTR 레코드가 마지막으로 다음 단계 나타냄
- “S” : 다음 lookup이 SRV 레코드, “U” : DNS lookup이 아닌 regexp 결과가 URI
- “A” : 다음 lookup이 A, AAAA, 또는 A6 레코드
- “P” : 응용에 프로토콜 의존적. 새로운 규칙이 services 필드에 나타남.
Service : 서비스에 필요한 프로토콜과 변환 서비스를 나타낸다.
Regexp : substitution expression 포함
Replacement : NAPTR, SRV,에 질의를 위한 다음 이름이 이 필드에 의존적.
예제
urn:cid:[email protected]
- 첫 단계 : CID Namespace 발견
cid는 URN에서 추출되고 urn.arpa에 연계되어, cid.urn.arpa가 첫 키가 됨.
- 두 번째 : cid.urn.arph의 NAPTR 레코드가 찾아져 단일 레코드 돌려줌 :
cid.urn.arpa
;;
regexp
replacement
IN NAPTR 100 10 “” “” “/urn:cid:.+@([^\.]+/.)(.*)$/\2/I” .
- Regexp을 URN에 적용한다. \2는 metarights.com을 돌려준다.
Flag가 “s”, “a”가 아니므로 lookup은 종료가 아니며,DNS에 대한 다음 탐색은
많은 NAPTR 레코드이다(새 도메인은 metarights.com이며)
-metarights.com에서 질의 결과 레코드는 다음과 같다 :
IN NAPTR 100 50 “s” “Z3950+I2L+I2C”
“” _z3950._tcp.metarights.com
IN NAPTR 100 50 “s” “rcds+I2C”
“” _rcds._udp.metarights.com
IN NAPTR 100 50 “s” “http+I2L+I2C+I2R” “” _http._tcp.metarights.com
순서, 선호도가 전부 같으므로 소비자는 아무것이나 선택해도 된다. Z39.50 선택시
;;
pref. Weight port Target
_z3950._tcp.metarights.com. IN SRV 0
0
1000 z3950.metarights.com
IN SRV 0
0
1000 z3950.info.com
Trivial HTTP
- URN-WG는 Resolution Mechanism으로 NAPTR 제안
어떻게 소비자가 URN을 위한 변환기를 발견할 수 있을까?
- Resolver : URN에 의해 식별되는 자원의 DB
-THTTP resolution protocol
HTTP 1.0, 1.1에 의한 요구와 응답에 대한 프로토콜
존재하는 HTTP 서버가 쉽게 URN 변환을 하게하는 것
NAPTR 정보
새로운 DNS 자원 레코드
- URI를 위하여 변환기를 발견하는데 사용
- 서비스 프로토콜을 위한 service 필드와 변환 서비스 자체를 제공
- 서비스 프로토콜 : THTTP, RCDS, HDL, RWHOIS
- 변환 서비스 : N2L, N2R 등 제공
THTTP에서 변환 서비스 인코딩 요구
- GET /uri-res/<service>?<uri> HTTP 1.0
- 예 : URN이 urn:foo:12345-54321이고 URL원할 시
GET /uri-res/N2L?urn:foo:12345-54321 HTTP 1.0
결과 : 200(OK), 404(발견되지 않음)
- 다음은 동일한 결과를 돌려준다.
GET /uri-res/N2L?urn:cid:[email protected] HTTP/1.0
GET /uri-res/N2L?URN:CID:[email protected] HTTP/1.0
Resolution Service
N2L : 찾기가 성공 시, HTTP 1.1 -> 303
HTTP 1.0 -> 302(임시 이전), 301(영구 이전), 304(변경 안됨)
401(허가 안됨), 403(금지)
N2Ls : 결과
<UL>
<LI><A HREF=“…url 1…>…url 1…</A>
<LI><A HREF=“…url 2…>…url 2…</A>
…
</UL>
자원 표기
#이 첫 컬럼에 나타나면, 코멘트
한 URI는 한 라인
모든 형식은 CR LF 쌍으로 됨
#urn:cid:[email protected]
http://www.metarights.com/cid/lcy.txt
http://www.metarights.com/cid/lcy.pdf
N2L Script
#!/bin/perl
#N2L
$n2l_File=“…filename for DBM database …”
$urn=$ENV{‘QUERY_STRING’};
If(length($urn) < 7) { $error=1; }
If(!$error) {
$urn=~s/^urn:[^:]*):(.*)$/sprintf(“urn:%s:%s”, lc, $1, $2)/ie;
dbmopen(%lu, $n2l_File.0444);
if($lu($urn}) { $url=$lu($urn}; print STDOUT “Location: $url/n”; }
else { $error=2:}
dbmclose(%lu);
}
….