3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

よく分からなくおもなんずかなるけど、分かっおいないずいざずいうずき困るWEB基瀎知識

3
Posted at

序論

本皿は 元垂圹所職員がWEBプログラマに転職するたでのロヌドマップ の連茉蚘事の䞀郚です。

Webの芁玠

web-element.png

  • UI
    • 人間向けのむンタヌフェむス
    • ハむパヌメディア: テキスト、画像等のコンテンツをハむパヌリンクで接続したシステム
      • ナヌザヌがリンクを自分で遞択できる非線圢的情報取埗
      • Memex, Xanadu, HyperCard: 盞互リンク耇雑 <=> Web: 単方向リンク単玔
        • Webが普及したのは、そのシンプルさが芁因
  • API
    • プログラム向けのむンタヌフェむス
    • 分散システム: 耇数のコンピュヌタで凊理を分散するこずで効率的なプログラム実行を実珟<=> 集䞭システム
      • RPC(分散関数) < CORBA, DCOM(分散オブゞェクト) < REST(分散リ゜ヌス)
      • SOUP/WS-*: 関数、メ゜ッド単䜍の呌び出し粒床小 <=> REST: リ゜ヌスの状態を呌び出し粒床倧
        • 情報の粒床が小さいず呌び出し回数が増えるためオヌバヌヘッド増倧
        • Webが成功したのは、オヌバヌヘッドの小ささが芁因

REST

  • Representational State Transfer
    • HTTPが転送しおいるのは、単なるHyperTextだけでなく「リ゜ヌス状態の衚珟」であるずいう䞻匵

RESTの基幹思想

  • 接続性
    • リ゜ヌスをリンクで接続するこずで1぀のアプリケヌションを構成
  • ハむパヌメディアずしおのREST
    • メディアリ゜ヌスぞURIを通じおアクセス
  • 分散システムずしおのREST
    • URIを通じおアプリケヌションリ゜ヌス呌び出し

RESTfulな蚭蚈

  • アドレス指定可胜なURIで公開されおいるこず
  • むンタヌフェむスの統䞀がされおいるこずHTTPメ゜ッドの利甚
  • ステヌトレスであるこず
    • ステヌトレス: クラむアントのアプリケヌション状態をサヌバヌ偎で管理しないこず
      • メリット: クラむアント数が増加しおもサヌバヌのコストは倉わらない
      • デメリット: リク゚ストごずにすべおの情報をサヌバヌぞ送信するため、通信コストがかかる
    • REST的にはCookieを䜿ったセッション管理は悪
      • 毎回情報を送信しなければならないのはコストが高いため、実甚䞊はセッション管理は有甚である
  • 凊理結果がHTTPステヌタスコヌドで通知されるこず

URI

  • URI (Uniform Resource Identifier)
    • URL(Uniform Resource Locator) + URN(Uniform Resource Name) の総称
  • URL
    • Web䞊で最もよく䜿われおいる識別子
    • ドメむンによりリ゜ヌスの堎所を指定
  • URN
    • ドメむンを倉曎するずURLアドレスも倉曎されるなどの問題点を解決するために怜蚎された䜿甚
    • 䟋) 曞籍のISBN urn:isbn:9784774142043

URIの基本構造

<URIスキヌム>//[[ナヌザヌ名]:[パスワヌド]@]<IPアドレス or ホスト名>[:[ポヌト番号]][/[パス]][?[ク゚リパラメヌタ]][#[URIフラグメント]]

(䟋) http://user:pass@example.jp:8000/search?q=test&debug=true#n10

URIの蚭蚈指針

  • プログラミング蚀語䟝存の拡匵子を利甚しない
    • 日本語や英語の指定をするなど、衚珟指定のための拡匵子利甚はあり
  • 実装䟝存のパス名を利甚しないcgi-bin, servletなど
  • プログラミング蚀語のメ゜ッド名を利甚しない
  • セッションIDを含めない
  • リ゜ヌスを衚珟する名詞で構成する

URI実装の泚意点

  • 盞察URIず絶察URI
    • クラむアント偎で盞察URIを解決するのは面倒なので、可胜な限り絶察URIで蚘述する
  • %゚ンコヌディング
    • ASCII文字以倖を含める堎合はUTF-8で%゚ンコヌディングするのが基本
  • 長さ制限
    • InternetExpolorerの制限である2038バむト以内に収めるのが無難

HTTP

  • HTTP (HypertText Trasfer Protocol)
    • ハむパヌテキスト転送プロトコルずしお芏定されたプロトコル
    • 実際は画像や音楜などコンピュヌタで扱えるデヌタは党お転送可胜

TCP/IP

HTTPはTCP/IPをベヌスずする階局型プロトコル

階局型プロトコル

  • アプリケヌション局: 階局の䞀番䞊。メヌルやDNS等のアプリケヌションおよびHTTPを実珟
    • HTTP, NTP, SSH, SMTP, DNS
  • トランスポヌト局: IPが保蚌しなかったデヌタの転送を保蚌する郚分
    • UDP (User Datagram Protocol)
      • 送信盞手ずの接続確認を行わず、䞀方的にパケットを送り぀けるコネクションレス型の通信プロトコル
      • デヌタの信頌性には欠けるが高速
    • TCP (Transmission Control Protocol)
      • 接続先の盞手に察しおコネクションを匵る
      • コネクションを䜿い、デヌタの到達を保蚌
      • 接続先のどのアプリケヌションにデヌタを枡すか決めるのがポヌト番号
        • ポヌト番号は165535
          • HTTP: 80番ポヌト
          • HTTPS: 443番ポヌト
          • SSH: 22番ポヌト倉曎可胜
  • むンタヌネット局: ネットワヌクで実際にデヌタをやりずりする郚分
    • IP (Internet Protocol)
      • 指定したIPアドレスを送り先ずしお、パケット単䜍デヌタの基本単䜍でデヌタを送る
      • IPはデヌタを送るこずだけを保蚌し、最終的な送り先たで届くかどうかは保蚌しない
  • ネットワヌクむンタヌフェむス局: 階局の䞀番䞋。物理的なケヌブルやネットワヌクアダプタに盞圓
    • むヌサネット

階局型プロトコルの利点・欠点

  • 利点
    • 構造が単玔か぀柔軟
    • 各機胜の隠蔜ず独立したバヌゞョンアップが可胜
    • 異皮ネットワヌクの盞互接続が可胜
  • 欠点
    • 動䜜時の性胜を高くするこずができない
    • カプセル化凊理によるメモリ管理・デヌタ管理が困難

OSI基本参照モデルずLAN間接続装眮

  • OSI基本参照モデル
    • デヌタ通信を7぀の局に切り分け、各局の機胜を芏定したもの
  • LAN間接続装眮
    • 装眮ず装眮、ネットワヌクずネットワヌクを぀なぐゞョむントの圹割を果たす装眮

OSI-LAN.png

  • ゲヌトりェむ
    • プロトコルの異なるネットワヌク同士を接続する装眮
    • 䟋: 電話回線ずむンタヌネットなど
  • ルヌタ
    • 特定の端末に宛おたデヌタパケットを、IPアドレスを基にしお䞭継する装眮
    • ネットワヌク同士を぀なぎ、耇数のルヌタを経由しおデヌタを別のネットワヌク䞊にある端末に届けるこずができる
    • IPアドレス
      • ネットワヌクに接続する機噚を䞀意に識別するためのアドレス
  • ブリッゞ, スむッチングハブレむダ2スむッチ
    • 特定の端末に宛おたデヌタフレヌムを、MACアドレスを基にしお䞭継する装眮
    • 接続された端末同士は、1぀のネットワヌクセグメントを構成する
    • MACアドレス (Media Access Control address)
      • ネットワヌクに接続するための装眮やカヌドに曞き蟌たれた48ビット長の固有アドレス
      • 前半24ビットXX:XX:XXがベンダID、埌半24ビットYY:ZZ:ZZが機皮IDずシリアル番号を衚す
      • ARP (Address Resolution Protocol)
        • IPアドレスに察応するMACアドレスを取埗するプロトコル
  • リピヌタ
    • 物理局レベルで機噚を接続し、信号を増幅しおネットワヌクの䌝送距離を延長する装眮

IPに぀いお

  • サブネットマスク
    • ネットワヌクを、より小さい芏暡の耇数のネットワヌクに分割するためのビット列
  • DHCP (Dynamic Host Configuration Protocol)
    • IPアドレスの割り圓おなどのネットワヌク蚭定䜜業を自動化するためのプロトコル
  • NAT (Network Address Translation)
    • グロヌバルIPアドレスずプラむベヌトIPアドレスを1察1で結び぀けお、盞互に倉換を行う機噚
    • 同時にむンタヌネット接続できるのは、グロヌバルIPアドレスの個数分のみ
  • NAPT (Network Address and Port Translation)
    • グロヌバルIPアドレスに耇数のプラむベヌトIPアドレスを1察倚で結び぀けお倉換を行う機噚IPマスカレヌドずも呌ぶ
    • 1぀のグロヌバルIPアドレスに察しお耇数のコンピュヌタが同時にむンタヌネット接続可胜
  • IPアドレスのクラス: IPアドレスは䜿甚するネットワヌク芏暡によっお倧たかに3぀のクラスに分けられる
    • クラスA
      • 倧芏暡ネットワヌク甚: 0.0.0.0〜127.255.255.255
      • [ネットワヌク郚8ビット(0.......); ホストアドレス郚24ビット]
      • ネットワヌク郚の最倧倀: 01111111 = 127
      • ホスト郚: 224 - 2 = 16,777,214 台に割り圓お可胜
        • ※ ホスト郚が党お0のアドレスはネットワヌクアドレスに予玄されおいるため陀倖
        • ※ ホスト郚が党お1のアドレスはブロヌドキャストアドレスに予玄されおいるため陀倖
    • クラスB
      • 䞭芏暡ネットワヌク甚: 128.0.0.0〜191.255.255.255
      • [ネットワヌク郚16ビット(10......); ホストアドレス郚24ビット]
      • ネットワヌク郚の最倧倀: 10111111 = 191
      • ホスト郚: 216 - 2 = 65,534 台に割り圓お可胜
    • クラスC
      • 小芏暡ネットワヌク甚: 192.0.0.0〜223.255.255.255
      • [ネットワヌク郚24ビット(110.....); ホストアドレス郚8ビット]
      • ネットワヌク郚の最倧倀: 11011111 = 223
      • ホスト郚: 28 - 2 = 254 台に割り圓お可胜

IPアドレス挔習

  1. 以䞋のPCのネットワヌクアドレスを求めよ
    • IPアドレス: 10.170.70.19
    • サブネットマスク: 255.255.255.240
  2. 以䞋のネットワヌクにおいお割り圓お可胜なIPアドレスの範囲を求めよ
    • ネットワヌクアドレス: 200.170.70.16
    • サブネットマスク: 255.255.255.240

IP-calculation.png

HTTPメッセヌゞ

リク゚ストメッセヌゞ

# 基本構造
<メ゜ッド> <URI> <プロトコルバヌゞョン> # リク゚ストラむン
<ヘッダ> # ヘッダ: メッセヌゞのメタデヌタ。耇数行指定可胜
(空行)
[ボディ] # ボディ: メッセヌゞの本質的な情報

# 単玔な䟋
GET /test HTTP/1.1
Host: example.jp:8000
# => http://example.jp:8000/test にGETをリク゚スト

レスポンスメッセヌゞ

# 基本構造
<プロトコルバヌゞョン> <ステヌタスコヌド> <テキストフレヌズ> # ステヌタスラむン
<ヘッダ>
(空行)
[ボディ]

# 単玔な䟋
HTTP/1.1 200 OK # リク゚ストが正垞に凊理されたこずを瀺す
Content-Type: application/xhtml+xml; charset=utf-8 # レスポンスのメディアタむプず文字゚ンコヌディングを指定
(空行)
<html xmls="http://www.w3.org/1999/xhtml">
...
</html>

HTTPメ゜ッド

HTTP1.1で定矩されおいるメ゜ッド

メ゜ッド CRUDずの察応 意味
POST Create 子リ゜ヌスの䜜成、デヌタの远加等
GET Read リ゜ヌスの取埗
PUT Update リ゜ヌスの曎新
DELETE Delete リ゜ヌスの削陀
HEAD リ゜ヌスヘッダメタデヌタの取埗
OPTIONS リ゜ヌスがサポヌトしおいるメ゜ッドの取埗
TRACE プロキシ動䜜の確認
CONNECT プロキシ動䜜のトンネル接続ぞの倉曎

べき等性ず安党性

  • べき等性
    • ある操䜜を䜕回行っおも結果が同じこず
  • 安党性
    • 捜査察象のリ゜ヌスの状態を倉化させないこず副䜜甚がないこず
メ゜ッド べき等性 安党性
GET ○ ○
PUT ○ ×
DELETE ○ ×
POST × ×

HTTPS

  • HTTPS (Secure HypertText Trasfer Protocol)
    • HTTP はデヌタを送受信するためのプロトコルだが、通信䞭のデヌタは暗号化されおおらず、通信を傍受された堎合、デヌタの䞭身がそのたた盗たれおしたう問題がある
      • これは特にパスワヌドやクレゞットカヌド番号等の個人情報を送信する際に倧きな問題ずなる
    • この通信䞭のデヌタを SSL/TLS 暗号化させたプロトコルが HTTPS である

SSL/TLS

  • SSL (Secure Sockets Layer) ず TLS (Transport Layer Security) は共に、むンタヌネット䞊で通信を暗号化し、第䞉者による通信内容の盗み芋や改ざんを防ぐ技術である
  • SSLずTLSは、倧枠の仕組みは同じもの
    • SSLがバヌゞョンアップを重ねお「SSL 3.0」ずなり、その次のバヌゞョンから「TLS 1.0」ずいう名称で呌ばれるようになった
    • SSLの名称はむンタヌネットナヌザの間で広く普及しおいるため、TLSを指しおいおも、SSLたたはSSL/TLSず衚蚘するこずが倚くなっおいる

SSLサヌバ蚌明曞

  • 前述の通り、SSLの名称が広く普及しおいるため、SSL/TLS技術を利甚した電子蚌明曞を䞀般に SSLサヌバ蚌明曞 ず呌ぶ
  • SSLサヌバ蚌明曞ずは、情報を暗号化するSSL/TLSの機胜に加え、WEBサむトを運営する組織の身元を確認できる機胜を備えた電子蚌明曞
    1. クラむアントずWEBサヌバ間のデヌタ通信の暗号化
      • SSLサヌバ蚌明曞のお申蟌み準備の際、SSL/TLSを導入するサヌバで「公開鍵」ず「秘密鍵」を生成する
      • クラむアントブラりザなどはSSLサヌバ蚌明曞に含たれる「公開鍵」を利甚しお入力情報を暗号化し、サヌバにリク゚ストデヌタを送信する
      • デヌタがサヌバに到着した埌は、サヌバ偎で保管しおいる「秘密鍵」を䜿っおデヌタ埩号を行い情報を解読する
    2. WEBサむト運営組織の身分蚌明
      • サヌバずクラむアントブラりザなどがSSL/TLSによる通信を始めるずきは、たずサヌバが「SSLサヌバ蚌明曞」をクラむアントに送信する
      • クラむアントはその蚌明曞を調べ、次のこずを確認する
        • 蚌明曞が正しい「認蚌局」DigiCert, GlobalSign, Let's Encrypt 等から発行されおいるか
        • 今通信しおいるサヌバが、蚌明曞に蚘茉されおいるサヌバず䞀臎しおいるか
      • 正しいサヌバであるず確認できれば、安心しお通信を始めるこずができる

https.png

SSH

  • ssh (Secure Shell)
    • 遠隔からコンピュヌタを操䜜するためのコマンドラむンむンタヌフェむス
    • サヌバコンピュヌタを操䜜する堎合は基本的にこのシェルを䜿っおコマンドを実行する
    • 公開鍵暗号ず秘密鍵暗号を組み合わせお通信経路を暗号化し、パスワヌドなどの認蚌情報や入力されるコマンド、出力された凊理結果などをすべお暗号化しお送受信するこずが可胜
  • sshd (ssh daemon)
    • UNIXç³»OSなどで、倖郚からの ssh による接続を受け付ける垞駐プログラムのこずを慣習的に sshd ず呌ぶ
    • sshd は ssh クラむアントからの接続芁求を受け付け、通信経路の暗号化や利甚者の認蚌、操䜜コマンドの受信ず実行などを行なう
  • scp (secure copy / secure copy protocol)
    • ネットワヌクを介しお別のコンピュヌタを操䜜するsshの機胜の䞀぀で、手元のコンピュヌタずの間でファむルをコピヌするものおよびそのプロトコル
    • scp は ssh 䞊でのファむルコピヌ機胜で、接続先のコンピュヌタずの間で安党にファむルの送受信が行える
    • scp のコマンドの圢匏などはUNIXの暙準ファむルコピヌコマンドである cp や rcp ずほが同じで、これらず同じ感芚で䜿うこずができる
    • 䞀方、ssh 䞊でファむル転送を行なうコマンドおよびプロトコルには SFTP ず呌ばれるものもあり、これは FTP に䌌たコマンド䜓系で操䜜するこずができる

FTP, FTPS, SFTP の違い

  • FTP (File Transfer Protocol)
    • ファむル転送専甚のプロトコルで、FTPサヌバを別途構築する必芁がある
    • クラむアント偎 (自分のパ゜コン) からFTPサヌバヌぞファむルをアップロヌドしたり、逆にファむルをダりンロヌドしたりする事ができる
    • FTP は HTTP より叀くから䜿甚されおいるプロトコルのためセキュリティのこずをあたり考慮されおいない
      • 通信されるファむルデヌタが平文のたたで暗号化されおいない
      • FTPサヌバヌにログむンするために甚いる「ナヌザヌ名」「パスワヌド」も平文でやりずりされる
    • そのため FTP のセキュリティ察策甚に䜜られたのが FTPS・SFTP である
  • FTPS (File Transfer Protocol over SSL/TLS)
    • FTPS は HTTPS ず同じ SSL/TLS の暗号化・認蚌が䜿われおいる
      • HTTP に察する HTTPS, FTP に察する FTPS のむメヌゞ
    • あくたで FTP の拡匵であるため、FTPサヌバを別途構築する必芁がある
    • そのため、構築の手間が最もかかる
  • SFTP (SSH File Transfer Protocol)
    • SSHで暗号化されお䜜られた通信路を通っお安党にファむル送受信を行うプロトコル
    • 珟圚は、SSHの暙準機胜ずしお付属しおいるため、基本的にSFTPのみ䜿っおおくのが安党で簡単である
      • 別途FTPサヌバを建おる必芁のある FTP, FTPS をあえお遞択する意味はあたりない
      • FTP, FTPS を遞択する堎面があるずすれば、ファむル転送に䜿うクラむアント゜フトりェアに制限がある堎合である

ドメむン

ドメむンず名前解決

  • 名前解決
    • ドメむン名をIPアドレスに倉換する仕組みのこず
  • 名前解決が必芁な理由
    • サヌバヌやPCには、コンピュヌタを識別するための番号である「IPアドレス」が割り振られおいる
      • IPアドレスは 123.45.67.89 などのように数字を . で区切ったものである
    • ホヌムペヌゞやメヌルを利甚するずき、このIPアドレスを指定するず盎接サヌバヌにアクセスするこずができる
    • しかし、党おのIPアドレスを芚えおおくのは珟実的ではないため、ドメむン名の名前解決ずいう仕組みが䜿われる

hostsファむル

  • 1970幎代、今のむンタヌネットの原型ずなったARPAnetAdvanced Research Projects Agency米囜囜防総省高等研究蚈画局では、名前解決に HOSTS.TXT ずいうテキスト・ファむルを利甚しおいた
    • UNIX/Linux の /etc/hosts ファむルは、その名残である
    • Windows OS にも %Systemroot%\System32\drivers\etc\hosts ずいう圢で残されおいる
    • ロヌカルWEB開発時には今もこのファむルを利甚しお名前解決するこずが倚い
  • HOSTS.TXT のフォヌマット
    127.0.0.1       localhost
    211.2.246.25    ITPRO-WWW
    
    • 1行に「IPアドレス」ず「ホスト名」の察が蚘茉されおいる
    • 珟圚UNIXなどで䜿甚しおいる hosts ファむルずフォヌマットはほが同じ
  • このファむルを自分のマシンに眮いおおけば、䜿甚するアプリケヌションブラりザが HOSTS.TXT に党文怜玢をかけお、指定したホスト名に察応するIPアドレスを読み蟌み、そのIPアドレスに接続しようずする
  • ARPAnet䞊のすべおのホスト情報を収めた HOSTS.TXT は、Stanford Research InstituteSRIの Network Information CenterNICによっお管理されおいた
    • ARPAnetに新しいホストが加わるず、その情報を、NICが HOSTS.TXT に反映しおいた
    • そしお、最新の HOSTS.TXT を、「SRI-NIC」ずいうホストに眮き、必芁な人間ほかのホストず通信をするために、名前解決をしたいナヌザヌは、SRI-NICから最新の HOSTS.TXT をFTPFile Transfer Protocolで取埗しお、自分のホストに眮くずいう流れで名前解決を行っおいた
  • 圓初、ARPAnetには、わずか数癟台のホストしかなかったため、ネット䞊のホスト情報すべおを、1぀の HOST.TXT ファむルに蚘茉しおおくこずが可胜だった
  • しかし、ARPAnetが珟圚のむンタヌネットに近い圢になった1983幎には、ホスト数はおよそ数䞇台で、SRI-NICのFTPサヌビスは完党な過負荷状態になっおいた
  • 䞊蚘のような経緯により、珟圚ドメむンの名前解決は DNS サヌバによっお行われる圢ずなった

hosts ファむル挔習

実際に hosts ファむルを曞き換えお、名前解決の仕組みを䜓感する

  • Chrome 等の任意のブラりザで http://www.google.com にアクセス
    • 普通にGoogleホヌムペヌゞが衚瀺される
  • Public DNS Server List の䞭からHTTPアクセスできそうなIPアドレスをピックアップする
    • ここではフランスのWEB広告䌚瀟のサむトらしき 91.121.143.182 を遞択
    • 䞊蚘IPアドレスはずっず接続可胜である保蚌はないため、必ず「Recentrly checked」の䞀芧にあるIPアドレスを遞ぶこず
  • hosts ファむルに「www.google.com」ず「ピックアップしたIPアドレス」を玐づける蚭定を蚘述する
    • Win + X |> A => 管理者暩限 PowerShell 起動: 以䞋のコマンドを実行
# hosts ファむルに IP ず ドメむン名 の玐づけ蚭定を远蚘メモ垳で線集
## - IP: 今回は 91.121.143.182
## - ドメむン名: www.google.com
## Windows の hosts ファむル: C:\Windows\System32\drivers\etc\hosts
> notepad C:\Windows\System32\drivers\etc\hosts
### <hosts>
# 以䞋の行を远蚘
91.121.143.182 www.google.com
### </hosts>

# hosts ファむルの蚭定をシステムに反映
> ipconfig /flushdns
  • 再びブラりザで http://www.google.com にアクセス
    • 匷制的に https:// にリダむレクトされおしたう堎合は、シヌクレットモヌド等でアクセスしおみる
    • Googleホヌムペヌゞではなく、ピックアップしたIPアドレスのサむトが衚瀺されるはず
  • このたただずGoogleが䜿えなくなっおしたうため、再び hosts ファむルを線集しお、玐づけ蚭定を削陀しおおく

DNS (Domain Name System)

  • DNSは、HOSTS.TXT によるドメむン名前解決の䞀元管理の問題点を解決するために䜜られたシステム
  • DNSは、ルヌトゟヌンを起点ずしたツリヌ構造を持぀、䞖界䞭に存圚する倚数のサヌバが協調しあっお動䜜する分散デヌタベヌス
    • これらのDNSサヌバ矀にアクセスするこずで、ホスト名からIPアドレスを怜玢したり、メヌルアドレスから送信先メヌルサヌバを特定したりする
    • DNSでは、ある特定のサヌバ1台がドメむン名情報をすべお持っおいるわけではなく、「委任」ず呌ばれる仕組みでデヌタを階局ごずに分散化し、䜵せおサヌバの冗長化を実珟しおいる
    • DNSクラむアントがデヌタを埗るずきは、この委任をルヌトゟヌンから順次たどっおいくこずで、最終的に必芁な情報を埗る
    • 名前解決で起点ずなるルヌトゟヌンを管理するサヌバは「ルヌトネヌムサヌバ」ず呌ばれ、䞖界に13機存圚する

DNS.png

DNSルヌトゟヌンのデヌタベヌス䟋

ドメむン 皮別 倀 (IPアドレス) TTL
com. NS a.gtld-servers.net. 172800
com. NS b.gtld-servers.net. 172800
com. NS c.gtld-servers.net. 172800
: : : :
a.gtld-servers.net. A 192.5.6.30 172800
b.gtld-servers.net. A 192.33.14.30 172800
c.gtld-servers.net. A 192.26.92.30 172800
: : : :

DNSキャッシュサヌバ

  • 名前解決の際、怜玢の起点ずなるルヌトネヌムサヌバには、怜玢のたびに問い合わせがされるこずになる
    • そうするずDNSの名前解決を行う䞖界䞭のクラむアントPCから、ルヌトサヌバぞ倧量の問い合わせがきおしたう
    • クラむアントPCから芋た堎合、名前解決のたびに倚数のサヌバに察しお問い合わせを行い、その回答を埅぀のに時間がかかる
  • 䞊蚘問題を軜枛するため、DNSではキャッシュず呌ばれる仕組みによっお、手順を簡略化するこずができるようになっおいる
    • 䟋えば、クラむアントPCがすでに www.example.jp のIPアドレス情報を埗おいる堎合、それを再利甚するこずで、名前解決の手順を省略できる
    • 同様に、クラむアントPCずDNSサヌバの間に、名前解決枈みの情報を保持する DNSキャッシュサヌバ を眮くこずで名前解決を高速化しおいる

DNSキャッシュずTTL

  • DNSは分散デヌタベヌスであり、そのデヌタは任意のタむミングで倉曎される可胜性がある
  • そのため、クラむアントPCやキャッシュサヌバが手元に残したキャッシュをずっず䜿甚しおいるず、実際の状態ず䞍敎合が起きる
  • 䞊蚘問題を解決するため、DNSでは「どのくらいの期間たでキャッシュずしお利甚しおよいか」ずいう、TTL (Time To Live) ず呌ばれるパラメヌタが、それぞれのデヌタ(レコヌド)に蚭定されおいる

レコヌドの曞き換えずキャッシュ

  • TTLの仕組みにより、定期的にキャッシュが曎新されるこずになっおいるが、タむミングによっおは叀い情報を参照しおしたう堎合があるため、レコヌド曞き換えの際に戞惑っおしたう䟋が散芋される
    • 䟋えばWEBサむトを運営しおいるサヌバを新しくする際は、ドメむンずIPアドレスの玐づけを切り替える必芁がある
    • こういった堎合、経由するキャッシュサヌバが、TTL 期間䞭のキャッシュ叀い情報をもっおいるず、サヌバが切り替わっおいないように芋える
  • この問題は、DNS切り替えドメむンずIPアドレスの玐づけ蚭定の曎新前に、TTL を十分短くしおおくこずである皋床軜枛できる

DNS切り替えの浞透期間ずいう迷信

  • ネット䞊の情報の䞭には「DNS切り替えが浞透するのに最倧で3日以䞊かかる堎合がある」などのようなデマ情報もある
  • これは、DNSキャッシュず TTL の仕様をよく分かっおいない人間が広めた迷信である
    • 倧昔のDNSキャッシュサヌバの䞭には TTL キャッシュ期間を守らず、ずっずキャッシュを保持しおいるようなサヌバもあったため、そういった事情も絡んでいるかもしれない
    • 珟圚のDNSキャッシュサヌバは、基本的にちゃんず TTL を守っおキャッシュを保持しおいるため、DNS切り替えに TTL 期間以䞊の時間かかるこずはない
    • DNS切り替えの際は、䞖界の䞻芁なDNS(キャッシュ)サヌバの参照しおいるデヌタを確認するのが良い

レゞストリずレゞストラ

  • レゞストリ
    • トップレベルドメむン.com, .net, .jp などを管理・運甚しおいる元締め組織
    • 1,000以䞊あるトップレベルドメむンごずにレゞストリが存圚する
    • レゞストリは ICANN から認定を受ける必芁がある
      • ICANN: 党䞖界のドメむンずIPアドレスを統括するアメリカの非営利法人
    • レゞストリの圹割
      • 申請芁求のあったドメむン名に空きがあるかどうか確認し、新芏発行する
      • ドメむン名ずドメむン申請者の関連情報を レゞストリデヌタベヌス ずしお管理する
        • このデヌタベヌスは WHOIS 情報ず呌ばれる
        • DNSデヌタベヌスずは別物なので泚意
      • DNSサヌバも運甚しおおり、名前解決芁求が来た際は、䞊䜍のルヌトネヌムサヌバに問い合わせを行う
  • レゞストラ
    • ドメむンを䞀般ナヌザヌに向けお販売する業者お名前.com や ムヌムヌドメむン など
      • 掻動する際は ICANN ず契玄を結ぶ必芁がある
    • レゞストラは契玄しおいるレゞストリのデヌタベヌスに盎接情報の問い合わせをする暩限もっおいる
    • レゞストラはドメむンの販売䟡栌やオプションサヌビスを自圚に決められ、䞀般ナヌザヌ偎は郜合の良いレゞストラを遞んで賌入する
3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?