2008年10月09日

XRIのトレースを見る

はてなブックマークに登録

XRI と XRDS

XRIはDNSとよく比較されます。XRIはリソースを指し示す識別子で、XRDS文書をたどって最終的なリソースにたどり着きます。

  • XRI: Extensible Resource Identifier
  • XRDS: Extensible Resource Descriptor Sequence

トレースを見る

XRIの仕組みを理解するため、どのように名前を解決していくかトレースしてくれるツールがあるのでやってみました。
http://www.freexri.com/tools/XRITraceroute/ でi-nameを入力してトレースしてみます。 トレースを単純にするため、使用したi-nameは有料で取得した簡単なものを使っています。 登録はLinkSafeで行っています。

結果です
1: 0ms (=) https://equal.xri.net/
2: 128ms ([登録した名前]) https://equal.xri.net/*[登録した名前] ref=null
3: 144ms http://linksafe-contact.ezibroker.net/contact/=[登録した名前]

最初にhttps://equal.xri.net/ にアクセスいます。https://equal.xri.net/にブラウザでアクセスするとXRDSが取得できます。
i-nameの先頭の文字が'@'だとhttps://at.xri.net/にアクセスします。

https://equal.xri.net/にアクセスすると次のXRDS文書が得られます。

<XRDS ref="xri://=">
  <XRD version="2.0">
    <Query/>
    <Status code="100"/>
    <Expires>2008-08-07T08:28:39Z</Expires>

    <ProviderID>xri://=</ProviderID>
    <LocalID priority="10">!910C.4759.EEF5.FAC5</LocalID>
    <CanonicalID priority="10">=!910C.4759.EEF5.FAC5</CanonicalID>
  </XRD>

</XRDS>
次のトレース結果にあるように、i-nameをつけてアクセスして見ます。
https://equal.xri.net/*[登録した名前]
<XRDS ref="xri://=[登録した名前]">
  <XRD version="2.0">
    <Query>*[登録した名前]</Query>

    <Status code="100" />
    <Expires>2008-08-07T08:31:38Z</Expires>
    <ProviderID>xri://=</ProviderID>
    <LocalID>![登録されているi-number]</LocalID>

    <CanonicalID>=![登録されているi-number]</CanonicalID>
    <Service>
      <ProviderID>xri://!!1003!103</ProviderID>
      <Type select="true">http://openid.net/signon/1.0</Type>

      <URI priority="1" append="none">https://linksafe.ezibroker.net/server/</URI>
    </Service>
    <Service priority="1">
      <ProviderID>xri://!!1003!103</ProviderID>
      <Type select="true">xri://+i-service*(+forwarding)*($v*1.0)</Type>

      <Type match="null" />
      <Path select="true">(+forwarding)</Path>
      <Path match="non-null" />
      <MediaType match="default" />
      <URI priority="1" append="qxri">http://linksafe-forward.ezibroker.net/forwarding/</URI>

    </Service>
    <Service>
      <ProviderID>xri://!!1003!103</ProviderID>
      <Type select="true">xri://$res*auth*($v*2.0)</Type>
      <MediaType>application/xrds+xml;trust=none</MediaType>

      <URI>http://resolve.ezibroker.net/resolve/=[登録した名前]/</URI>
    </Service>
    <Service>
      <ProviderID>xri://!!1003!103</ProviderID>
      <Type match="null" />

      <Type select="true">xri://+i-service*(+contact)*($v*1.0)</Type>
      <Path select="true">(+contact)</Path>
      <Path match="null" />
      <MediaType match="default" />
      <URI priority="1" append="authority">http://linksafe-contact.ezibroker.net/contact/</URI>

    </Service>
  </XRD>
</XRDS>
i-nameが見つかり、対応しているサービスの一覧が記述されています。
次のサービスが見つかります。
  • http://openid.net/signon/1.0
  • xri://+i-service*(+forwarding)*($v*1.0)
  • xri://$res*auth*($v*2.0)
  • xri://+i-service*(+contact)*($v*1.0)

ちなみに[登録した名前]が存在しない場合は
<XRDS ref="xri://=[登録した名前]">
  <XRD version="2.0">

    <Query>*[登録した名前]</Query>
    <Status code="222">The subsegment does not exist</Status>
    <Expires>2008-08-07T08:36:39Z</Expires>
    <ProviderID>xri://=</ProviderID>

  </XRD>
</XRDS>
になります。

各サービスのURIにアクセスすることで、それぞれのサービスが受けられることが記述されています。 たとえば、contactのサービスのURIである、http://linksafe-contact.ezibroker.net/contact/=[登録した名前] にアクセスするとコンタクト用のhtmlのページが表示されます。
ほかに
http://resolve.ezibroker.net/resolve/=[登録した名前]/ では
<XRDS ref="xri://">
  <XRD>

    <Query/>
    <Status code="210">
      INVALID_INPUT: Expected URI path (ABNF): "/" comm-name "/" (*comm-iname-subseg / *comm-inum-subseg)
    </Status>
    <ServerStatus code="210">
      INVALID_INPUT: Expected URI path (ABNF): "/" comm-name "/" (*comm-iname-subseg / *comm-inum-subseg)
    </ServerStatus>

  </XRD>
</XRDS>
https://linksafe.ezibroker.net/server/ では"This is an OpenID server endpoint."が表示されます。ここは、OpenIDのプロバイダのサーバになっています。

終わりに

トレースすることで、XRIがXRDSを使ってサービスを検索する方法を理解する助けになると思います。
この例では、登録先のLinkSafeはサービスのプロバイダとしてだけ記述されていて、XRIのリゾルバとしては出てきません。
ここで、前回取得したフリーのi-nameでトレースすると、登録先がXRIのリゾルバとして記述されたXRDSが取得できます。興味のある方は試してみて下さい。
(セ)
klab_gijutsu2 at 19:59│Comments(0)TrackBack(0)

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント