はじめに
こんにちは。 株式会社iimonでバックエンドエンジニアをしている木暮です。
自身のキャリアを振り返るとコードを書くことは長年やってきたのですがインフラ周りやミドルウェア関連の知識がまだまだだなと感じていました。 CTOにオススメいただいたDNSについて勉強をしています。 今回の記事はドメイン名についてまとめました。
DNSとは
今回の趣旨から外れていますがそもそもDNSってなんですか?という人向けに簡単に説明させていただきます。
Domain Name Systemのことを指しています。
主にドメイン名に紐づくIPアドレスを取得する仕組みになります。
例えばiimon.co.jpのIPアドレスがxxx.xxx.xx.xだった場合に iimon.co.jpのIPアドレスってなんですか?とDNSに対して問い合わせるとxxx.xxx.xx.xという情報を取得することができます。 これを名前解決と呼びます。 DNSが存在することによってURLを元に特定のサーバにアクセスすることができます。
ドメイン名とは
URLの「https://」などのプロトコルから次の「/」の間に存在する文字列を指します。 https://iimon.co.jp/というURLを例に挙げると iimon.co.jpがドメイン名になります。
ドメイン名のラベル
ドメイン名の構造はラベルごとに分けられます。 ラベルの区切りは「.」単位です。 iimon.co.jpは「iimon」「co」「jp」という3つのラベルが存在します そしてそれぞれのラベルに呼び方があります
jp→トップレベルドメイン(TLD)
co→セカンドレベルドメイン(2LD)
iimon→サードレベルドメイン(3LD)
3LD以降にも「.」が存在する場合は 「.」が増えるたびに4LDのように数字が増えていきます。
基本的に省略されますがTLDの前には「.」が存在していて
これをルートと呼びます。
ルートは省略されているだけなのでルート有りのドメイン名でアクセスを行うことができます。
例えば以下のリンクはルートを省略していませんが、問題なく名前解決をしてアクセスができていることが確認できます。
https://iimon.co.jp./
上記を踏まえるとドメイン名は以下のような階層構造で表現されます。
. (ルート) └── jp (TLD) └── co (2LD) └── iimon (3LD)
ジェネリックトップドメイン
トップレベルドメインの中でも「.com」「.net」「.info」「.org」などのラベルはジェネリックトップレベルドメイン(gTLD)と呼ばれています。 前述のラベルの使用用途は以下のようになっています。
ラベル名 | 用途 |
---|---|
.com | 商業団体での使用を意図したラベル 例:amazon.com |
.info | 情報サイトでの使用を意図したラベル |
.net | インターネットサービスプロバイダなどでの使用を意図したラベル 例:5ch.net |
.org | コミュニティなどでの使用を意図したラベル 例:wikipedia.org |
用途はあくまで目安のようなものなので必ず用途とサイトの内容が一致するわけではありません。 これらのラベルは誰でも使用することができます。
限られた組織しか使用できないgLTDはスポンサー付きトップレベルドメイン(sTLD)と呼ばれています。 一例として以下のようなラベルが存在します。
ラベル名 | 用途 |
---|---|
.edu | アメリカの大学などでの使用するラベル 例:web.mit.edu |
.dev | ソフトウェア開発者が使用するラベル 例:slack.dev |
.gov | アメリカの行政機関が使用するラベル 例:georgia.gov |
その他のsTLDに属するラベルは以下のページの通りです
カントリーコードトップレベルドメイン
トップレベルドメインの中でも「.jp」「.us」などはラベルはカントリーコードトップレベルドメイン(ccTLD)に分けられます。 ccTLDのラベルにはISO3166-1で取り決められた2文字の国コードが使用されます。 gTLDは世界中のだれもが取得できるものが多いですがccTLDに関してはその国に存在する組織や個人でないと取得ができないことが多いです。
ラベルの規約
ラベルには以下のような決まりがあります。 ラベルの最大長は63文字。 使用できる文字列は英数字とハイフンに限られます。 国際化ドメイン名の場合は上記以外の文字列も使用可能です。 また、ラベルは大文字小文字を区別されません。
サブドメイン
サブドメインはドメイン名を階層構造で見たときに起点のラベルより下の階層に存在するラベルを指します。 iimon.co.jpを例に挙げると「.jp」のサブドメインは「iimon.co」となります。 「.co」のサブドメインは「iimon」となります。
ドメイン名の管理
ドメイン名の管理には「レジストリ・レジストラモデル」という形態が一般的に取られています。
それぞれドメイン名の管理を行う役割を「レジストリ」と言います。
ドメイン名の登録申請を行う役割を「レジストラ」と言います。
※ccTLDの中にはレジストラを介さずにドメイン名登録者がレジストリへ直接申請ができるケースもあるようです。その場合はレジストリ・レジストラモデルからは外れます
レジストリの主な役割
ICANNから認定を受けてドメインやDNSの情報を管理する組織です。 レジストリは登録申請を受け取ると申請内容を審査しドメイン名がすでに使用されていなければ申請を受理してレジストリデータベースへ追加します。
レジストリはTLD毎に一つ存在のみ存在しています。 例えば「.jp」のレジストリは株式会社日本レジストリサービスとなります。
レジストラの主な役割
ドメイン名を登録したい利用者はレジストラに対して登録申請を行い レジストラは利用者から登録手続きを取り次ぎます。
レジストリはTLDに対して一つのみでしたがレジストラは複数存在します。 ドメイン名を登録したい時はレジストラ毎に提供しているサービスや価格を比較してレジストラを選びドメイン名の登録を行います。 迷ったらGMOインターネットグループ株式会社や株式会社日本レジストリサービスなどのICANN(Internet Corporation for Assigned Names and Numbers)から公認されているレジストラを使うのが良さそうです。
Whoisとは、IPアドレスやドメイン名の登録者などに関する情報を、インターネットユーザーが誰でも参照できるサービスを指します。 また、レジストラの役割はTLD毎に異なります。jprsが提供しているwhoisは以下のリンクから確認ができます。例外はありますが、基本的にWhoisは登録したレジストラのWhoisサービスを使用しないと情報を参照できません。
Whoisは以下のコマンドで確認することも可能です。
whois -h <Whoisサービスのドメイン名> <確認したいドメイン名 or JPNICハンドル> 例:whois -h whois.jprs.jp google.co.jp
リセラ
リセラはレジストラとドメイン名登録者の間で取次を行う事業者のことを言います。 レジストラやレジストリはICANNから認定を受けたりICANNの定めているポリシーを厳格に準拠する必要がありますが リセラにはそういった要件がありません。なのでレジストラと比べ、リセラは自由度の高いサービスを提供しています。
おわりに
ドメイン名はDNSの勉強を行う上での前提知識となります。 次回はDNSについて本格的にまとめたいですね。
最後まで読んでくださりありがとうございます!
この記事を読んで興味を持って下さった方がいらっしゃればカジュアルにお話させていただきたく、是非ご応募をお願いいたします!!Wantedly / Green
参考資料
DNSがよくわかる教科書 株式会社日本レジストリサービス 渡邉結衣、佐藤新太、藤原和典:著者 / 株式会社日本レジストリサービス 森下泰宏:監修 www.sbcr.jp