たまに見る日本語のドメイン
https://日本語.jp/
https://あなたの知らないドメインの.世界/
なにこれ。ドメインは『google.com』など英字しか使用できないはずでは……?
これはPunycode(ピュニコード) と呼ばれる変換方法で実現されています。
イラストにしてみました。
しかしここで諦めずに考えました。
ブラウザ上では日本語などで表示し、サーバに名前解決する際に英字だけに変換するようなデコード方式を開発すれば見かけ上は実現可能なのではないか?と…
そして遂に完成しました。
ドメインの入力は日本語で行います。
そしてエンターを押して『熟年.jp』にアクセスしようとした瞬間、ブラウザは『熟年』という文字列をドメインで認識できる文字列だけで構成された英字『xn--hwtp04b.jp』に変換して名前解決の送信します。
xn-- 以降が変換された文字です。『あ→a』のような対応表がある訳ではなく、この英字に意味はありません。
サーバは命名ルールに則ったドメインへのアクセスリクエストのため、対応せざるを得ません。
ブラウザがページの情報を受け取ると、このドメイン名をピュニコードの変換ルールに則り『熟年.jp』に表示を戻して表示します。
お爺さんには、ずっと『熟年.jp』でアクセスしているように見える訳です。
そんなドメイン存在しないのに。本当の姿は『xn--hwtp04b.jp』なのに……
『熟年.jp』はお爺さんだけがブラウザに見せられている幻のドメインなのに……
因みに『熟年.jp』は存在します。動作が気になる人は確認してみてね。(責任は負いかねます)
URLをコピーし、どこかに張り付けて見てください。
確かに『熟年.jp』という文字をコピーしたはずなのに、『hxxps://xn--hwtp04b[.]jp/』になっているはずです。
余談
ここで記号や特殊文字をASCIIコードの英字のみに変換することができます。
この変換こそがピュニコードであり、ブラウザはこの変換を内部で行いアクセスしているのですね。
https://www.punycoder.com/
そしてなんとピュニコードを利用すれば絵文字でもドメイン取得可能らしい
https://qiita.com/tappie/items/89ba75e2613c49720348