見出し画像

ネットワーク (3) PC 起動後、どうやってネットワークに参加しているのか? DHCP と DNS

前回の更新から間が空きました。
ちょっとやるコトが多いとこうなっちゃいますね。時間の作り方は本当に難しいです😅

PCやスマホなど起動した後、どのようにネットワークに参加しているのでしょうか?

実際にはまずは LAN (Local Area Network) に参加します。LAN の中で、他と自分の識別をする必要があります。そのために IP Address で、自分と他人を識別するわけです。IP Address については、前回触れましたね。

さて、ここでは、以下の図を例に動きをみていきます。

この図では、4 つのネットワーク に注目します。

(1) 192 . 168 . 0 / 24 のネットワーク

これは、自分がこれから参加するところです。いろいろ表示されていますが、細かいことはこれから解説しますね。

(2) 192 . 168 . 1 / 24 のネットワーク

これは、自分の隣のネットワークですね。

(3) IP Address も書いてない、 DNS Root のネットワーク

DNS の説明も後回しで。

(4) contoso.com のネットワーク

これだけ、よく見る xxx.com のネットワークですね。

IP の設定を取得 - DHCP

PCの電源を入れましょう。

この PC は自分自身の IP の設定を特にもっていません。ちょっと言葉に語弊があります。DHCP という仕組みで具体的な設定を取得してこようとしています。DHCP は Dynamic Host Configuration Protocol の略です。PC、ここでは Host ですね、の IP などの設定を、動的に、つまり、Dynamic に設定するための仕組みです。

PC起動後に、実は DHCP Server を探します。そのために、LANの中で「DHCP Serverは誰? 返事頂戴!」という情報を、LANの中に盛大に発行します。ブロードキャストといい、そのLANの中で直接接続できる人の全員に問い合わせています。
結構乱暴ですよね。

で、DHCP Server が「はい、私ですよー」と返答します。
その際に、DHCP Server から、以下の情報を使ってね、と IP Address などの設定情報を Host に返します。この場合の Host は PC、スマホなどであり、この場合は DHCP Client でもあります。役割が複数あるんです。

IP Address - 192 . 168 . 0 . 10から99 の中の使われていない番号。例えば 192 . 168 . 0 . 10
Subnet - 255 . 255 . 255 . 0

これで、自分の IP Address が決まりますね!

IP Address と Subnet mask は前回説明しましたね。自分がどのネットワークにいて、自分の IP Address が何なのか? という事でしたね。同じネットワークにいる Host とは直接通信が出来ます。

自分のPCのどこで DHCP の設定がされているのでしょうか?

Windows の場合は [ネットワークとインターネット] の中にあります。[IP 割り当て][DNS サーバーの割り当て](DHCP) の文字が見えますよね!

iPhone も実は同様なんです。スマホであっても、Raspi みたいなデバイスであっても、全て一緒。


前回、私の PC の ipconfig の結果を再掲します。
だんだん、言葉の意味がわかってきましたね!

DHCP Server からは、追加で以下も貰っています。

DNS Server - 192 . 168 . 0 . 1
Default Gateway - 192 . 168 . 0 . 2

これらは何に使うのでしょうか?

Default Gateway - 他のLANへの橋渡し役。出口

順番が逆ですが、Default Gateway から説明しますね。

Default Gateway とは、自分たちのネットワークから外部に出る際に必要な処理をしてくれる Host の事です。
よくルーターと呼ばれる Computer がこの役割を担います。他のネットワーク上にある Host と通信をする際に、その通信パケットがルーターに送られて、必要な処理を代理実行してくれます。Hostからみたら委任ですね。
ルーターは別のルーターに、その処理を委任することもあります。この様に、数珠つなぎで処理を委任していくので、ルーターは比較的軽量な処理を行います。ですが、各々の通信元に確実に通信パケットを返す必要がありますから、各々の処理を記録しておく必要があります。

DHCP Serverの設定をよくみてください。

192 . 168 . 0 . 2 の Host は、ルーターの絵をしたコンピューターですよね。このルーターのIP Address などは固定にします。同じネットワーク内で、他と重複することの無いようにしないといけません。重複したらネットワーク内に Default Gatwayの役割を持つコンピューターが複数台存在しますので、通信に失敗が多発します。

DNS Server - IP Address じゃなく、名前で Host と通信できるように

DNS Server とは、いわゆる www.contoso.com など皆さん見慣れたであろうインターネットでのアドレスとして指定する名前を管理しているサーバーです。ドメイン名 (Domain Name)と言います。DNS とは Domain Name System の略です。Domain Name は、特定の Host つまり Computer にマッピングします。
ドメイン名を省略なく指定したものを FQDN (Fully Qualified Domain Name) と言います。

FQDN と Domain Name の違いは、殆どの場合、最後に「.」(ドット) をつけるかどうかです。

整理すると以下の様になります。いずれも、同じ Computer を表します。

IP Address = 192 . 168 . 0 . xxx
Host Name = www
Domain Name = www.contoso.com
Full Qualified Domain Name = www.contoso.com.

通常のアプリケーションの通信などでは、Domain Name で十分です。

さて、実際には Domain Name では通信は出来ません! これとっても大事です。通信をするためには IP Address に変換をする必要があります。
そのため、Domain Nameと IP Address の変換表を誰かがもって管理をする必要があります。それを行うのが DNS Server の役割です。
実はインターネットにおけるDNS Serverは、認定された管理業者で管理されています。ここを間違えると、それこそインターネットが大混乱です。
日本では JPNIC がその大本です。
日本ネットワークインフォメーションセンター - JPNIC

このDNSを、LANの中に限って利用するのが DNS Server というわけです。

実は、皆さんの PC / Mac には Hosts ファイルという、最小限の DNS の仕組みがあります。

PCの場合は管理者権限で以下のフォルダを開いてみてください。

C:\Windows\System32\drivers\etc


hosts ファイルがありますね!
私のコンピューターの場合は、内容は以下のようになっています。

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
# Added by Docker Desktop
192.168.3.12 host.docker.internal
192.168.3.12 gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section

# For example や、その下の #localhost name resolution is xxx を 参照してください。

<IP Address> <Host Name もしくは hostname>

の書式で記載します。スペースで区切っているだけです。
localhost で、よく自分のPCで動いている Web Serverや、Database Serverを参照することがあります。それは実は、hosts ファイルでは、コメントアウトされて無効化されています。ですが、host ファイルに記載しているのと同じ処理が TCP/IP の中で行われることによります。

DNS Server のIP Address も DHCP Server から取得することがわかりますね。


そして、DHCP Serverと DNS Server は実は連携して動く場合が殆どです。

DHCP Server は、DHCP Client からの通信情報をもとに Host と 配布した IP Address を DNS Server に登録を行います。
これによって下図のようにDNS Server に DNS Record として MyComputer-01 が登録されています。同じLANの中であれば、MyComputer-01 のHostと通信しようとDNS Serverに問い合わせれば、192 . 168 . 0 . 10 が取得できますね!
結果として、IP Address を知らなくても、Host 名さえわかれば、通信ができるようになります。

hostname はそのままコマンドでもあります。
以下に、私の Windows 11 での hostname コマンドの実行結果を提示しますね。実際には、OSのインストール時に指定したコンピューター名と一致します。

まとめ

今回は、DHCPとDNSについて取り上げました。殆どの Computer は DHCP Server から情報を取得して、毎回動的にネットワーク上の設定を行います。

なぜでしょうか?

そのHostは、ネットワーク上に24 x 365で存在していないこともあります。IP Address はネットワークの中で有限の資源、リソースです。この効率活用という側面があります。

また、Domain Name を維持したまま、IP Address の変更が出来ます。つまり、 www.contoso.com に IP Address の追加もできます。DNS Server に以下の様な DNS Recordの追加もできるわけです。

192 . 168 . 0 . 0 A www.contoso.com
192 . 168 . 0 . 1 A www.contoso.com

サービスとしての可用性があがりますよね。追加もできれば、複数台のうち1台が動いていれば対応できるわけですから。

IP Address に加えて、DNSの世界があります。
ちょっと面倒だな、と思うかもしれませんが。変更のしやすさと、リソースの有効活用という価値が得られるわけですね。

この記事が気に入ったらサポートをしてみませんか?