<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <dfn>IDNA2003</dfn> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">国際化ドメイン名</anchor>) の利用について定めた仕様 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA</anchor> の2003年版です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> ははじめて標準化された版であり、
はじめは単に「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA</anchor>」と呼ばれていましたが、改訂版の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</anchor> の登場により区別のために
「2003」と付けられました。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <cite xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc5890#section-1.1">http://tools.ietf.org/html/rfc5890#section-1.1</anchor-external></comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</anchor> により <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> は置き換えられ廃止されていますが、非互換な変更を含むため、
実際にはまだ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> が使われています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> では、既存の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>や実働しているシステムへの変更無しで <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN</anchor>
を扱うために、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN</anchor> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>に転写し、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> 
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメイン名</anchor>との変換を末端の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション</anchor>内で行います。この <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>への転写法としては
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode</anchor> が採用されています。また、似た<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>の方法として
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Nameprep</anchor> が規定されています。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA</anchor> を実装するには、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Nameprep</anchor>
を実装しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3490</anchor> 1.3</src>。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">RFC 3490 - Internationalizing Domain Names in Applications (IDNA)</cite> 
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc3490">http://tools.ietf.org/html/rfc3490</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite>RFC Errata Report » RFC Editor</cite>, <time>2021-04-23T09:58:19.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.rfc-editor.org/errata_search.php?rfc=3490">https://www.rfc-editor.org/errata_search.php?rfc=3490</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">RFC 3491 - Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)</cite> 
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc3491">http://tools.ietf.org/html/rfc3491</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <cite xml:lang="en">RFC 3492 - Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)</cite> 
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc3492">http://tools.ietf.org/html/rfc3492</anchor-external></li></ul></refs></section><section><h1>IDNA2003 を構成するもの</h1><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Nameprep</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Stringprep</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロファイル</anchor>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Bootstring</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロファイル</anchor>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> これらを用いた処理モデル (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメイン名スロット</anchor>での <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN</anchor> に関する諸々の処理についての規定など)</li></ul></section><section><h1>演算</h1><section><h1>ドメイン名に対する演算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメイン名</anchor>は次のように処理します。</p><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> まず、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>されていない文字列なら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> に変換します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Stringprep</anchor> でいうところの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">蓄積文字列</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">照合文字列</anchor>のいずれかを決定します。<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">照合文字列</anchor>であるなら、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AllowUnassigned</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フラグ</anchor>を設定します。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラベル分離子</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメイン名</anchor>をそれぞれの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラベル</anchor>に分割します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラベル</anchor>に対して、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">STD 3</anchor> における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト名</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>に関する制限を適用するかどうかを決めます。<ul><li>これは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA</anchor> 以前から必要な作業であり、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA</anchor> 仕様はどちらにするか特に推奨するものではない、とされています。</li><li>この制限を適用するなら、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フラグ</anchor>を設定します。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor> のどちらか、適切な方を適用します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor> を適用したなら、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラベル分離子</anchor>をすべて <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+002E</anchor></code>
<code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FULL STOP</anchor></code> に置き換えます。</li></ol><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3490</anchor> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc3490#section-4">http://tools.ietf.org/html/rfc3490#section-4</anchor-external></comment-p></section><section><h1>ラベルに対する演算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラベル</anchor>に対して次の2つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor>が定義されています。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor></li></ul></section></section><section><h1>IDNA2008 との関係</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</anchor> により <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3490</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3491</anchor> は廃止され、全面的に改訂されています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3492</anchor> は改訂されずにそのまま <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</anchor> でも利用されています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <cite xml:lang="en">RFC 6797 - HTTP Strict Transport Security (HSTS)</cite>
( (<time>2014-06-02 05:16:10 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6797#section-8">http://tools.ietf.org/html/rfc6797#section-8</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <cite xml:lang="en">RFC 6797 - HTTP Strict Transport Security (HSTS)</cite>
( (<time>2014-06-02 05:16:10 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6797#section-8">http://tools.ietf.org/html/rfc6797#section-8</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <cite xml:lang="en">RFC 5731 - Extensible Provisioning Protocol (EPP) Domain Name Mapping</cite>
(<time>2015-03-22 17:40:40 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc5731#section-2.1">https://tools.ietf.org/html/rfc5731#section-2.1</anchor-external></figcaption><blockquote><p>The syntax for domain and host names described in this document MUST</p><p>conform to <strong>[</strong>RFC0952<strong>]</strong> and <strong>[</strong>RFC1123<strong>]</strong>.  At the time of this writing, RFC</p><p>3490 <strong>[</strong>RFC3490<strong>]</strong> describes a standard to use certain ASCII name labels</p><p>to represent non-ASCII name labels.</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <cite xml:lang="en">RFC 7622 - Extensible Messaging and Presence Protocol (XMPP): Address Format</cite>
(<time>2015-12-08 07:08:54 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7622#section-5">https://tools.ietf.org/html/rfc7622#section-5</anchor-external></figcaption><blockquote><p>Interoperability Note: For backward compatibility, many existing</p><p>XMPP implementations and deployments support IDNA2003 <strong>[</strong>RFC3490<strong>]</strong></p><p>for domainparts, and the stringprep <strong>[</strong>RFC3454<strong>]</strong> profiles Nodeprep</p><p>and Resourceprep <strong>[</strong>RFC3920<strong>]</strong> for localparts and resourceparts.</p></blockquote></figure></section></body></html>