2024/09/25 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/netcomp/2024/#10-1
- DHCP (Dynamic Host Configuration Protocol) とは何かを他人に説明できるようになる。
- DHCP におけるメッセージ交換の手順を理解し、他人に説明できるようになる。
- NAT (Network Address Translation) とは何かを他人に説明できるようになる。
- 自身が使用している端末のネットワーク設定を調べられるようになる。
Dynamic Host Configuration Protocol
https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
RFC 2131: Dynamic Host Configuration Protocol
https://datatracker.ietf.org/doc/html/rfc2131
Network address translation
https://en.wikipedia.org/wiki/Network_address_translation
以下は DHCP クライアントとサーバ間のメッセージ交換の流れを表した図である (RFC 2131 より)。
(1) 空欄 [ a ]〜[ d ] に入るメッセージ名を答えよ。
Server Client Server
(not selected) (selected)
v v v
| | |
| Begins initialization |
| | |
| _____________/|\____________ |
|/ [ a ] | [ a ] \|
| | |
Determines | Determines
configuration | configuration
| | |
|\ | ____________/ |
| \________ | / [ b ] |
| [ b ] \ |/ |
| \ | |
| Collects replies |
| \| |
| Selects configuration |
| | |
| _____________/|\____________ |
|/ [ c ] | [ c ] \ |
| | |
| | Commits configuration
| | |
| | _____________/|
| |/ [ d ] |
| | |
| Initialization complete |
| | |
. . .
. . .
| | |
| Graceful shutdown |
| | |
| |\ ____________ |
| | DHCPRELEASE \|
| | |
| | Discards lease
| | |
v v v
Figure 3: Timeline diagram of messages exchanged between DHCP
client and servers when allocating a new network address
(2) 図中において、 DHCP クライアントが割り当てられた IP アドレスを使用できるのはどの時点からどの時点までか。
(1) 通常、 DHCP のメッセージ伝送にはユニキャストではななくブロードキャストが用いられる。 その理由を説明せよ。
(2) DHCP クライアントへの IP アドレス割り当てには、 DHCP クライアントとサーバ間で 2 回のメッセージ交換が行われる。 DHCPDISCOVER と DHCPOFFER の 1 回のメッセージ交換だけで DHCP クライアントに IP アドレスを割り当てるとどのような問題が生じるか。
クライアントと、80 番ポートを使用する Web サーバの間で確立できる TCP コネクション数に関する以下の問に答えよ。 ただし、 すべてのホストは単一のインターフェースを有しているとする。
(1) クライアント X と Web サーバ Y の間で確立できる TCP コネクション数の最大値を答えよ。
(2) n 台のクライアント X1, ..., Xn を収容するプライベートネットワークが NAPT (Network Address and Port Translation) 対応ルータ R を介してインターネットに接続されている。 n 台のクライアントは均等に Web サーバ Y との間で複数の TCP コネクションを確立するとする。 この時、 クライアント Xi (1 <= i <= n) と Web サーバ Y の間で確立できる TCP コネクション数の最大値を n を用いて表せ。
自身が使用している端末 (PC またはスマートフォン) について以下を調査せよ。
(1) IP アドレスと、そのアドレスクラス・アドレス種別 (グローバル/プライベート)・サブネットマスク
(2) デフォルトルータ (デフォルトゲートウェイ) の IP アドレス
(3) DNS サーバの IP アドレス
(4) DHCP サーバの IP アドレス
(1) a: DHCPDISCOVER、 b: DHCPOFFER、 c: DHCPREQUEST、 d: DHCPACK
(2) d: DHCPACK 受信から DHCPRELEASE の送出まで。
(1) クライアントに IP アドレスが割り当てられるまではユニキャストで通信ができないため。
(2) DHCP サーバが複数存在する場合に、 DHCP クライアントは複数の DHCPOFFER を受信する。 この時に、 DHCP クライアントがどの IP アドレスを選択したのかがわからないため、 DHCP サーバは未使用の IP アドレスを割り当て済みと判断することになってしまう。
TCP コネクションは、 4 つ組 (X_addr, X_port, Y_addr, Y_port) で区別される。 ここで、 X_addr および X_port はクライアント X の IP アドレスおよびポート番号である。 同様に、 Y_addr および Y_port は Web サーバ Y の IP アドレスおよびポート番号である。
(1) 65,536
X_addr、 Y_addr、 Y_port (80 番) は固定であるから、 X_port の種類数によって確立できる TCP コネクション数の上限が決まる。 TCP のポート番号は 16 ビットであるから 2^16。
(2) 65,536 / n
Web サーバ Y からは、 NAPT 対応ルータ R が TCP の終端に見える。 したがって、 n 台のクライアント X1, ..., Xn と Web サーバ Y の間で確立できる TCP コネクション数の最大値が 2^16。 今、 n 台のクライアントは均等に Web サーバ Y との間で複数の TCP コネクションを確立することから、 クライアント Xi (1 <= i <= n) と Web サーバ Y の間で確立できる TCP コネクション数の最大値は 65,536/ n。
Linux 系オペレーティングシステムにおける実行例:
(1)
> ip addr
239: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 2c:8d:b1:**:**:** ff:ff:ff:ff:ff:ff
altname wlp0s20f3
inet 192.168.0.37/24 brd 192.168.0.255 scope global dynamic wlan0
valid_lft 170123sec preferred_lft 170123sec
:
:
IP アドレスは 192.168.0.37、サブネットマスクは /24 なので 255.255.255.0。 クラス C のプライベートアドレス。
(2)
> ip route
default via 192.168.0.1 dev wlan0
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.37
デフォルトルータは 192.168.0.1。
(3)
DNS サーバはリゾルバの設定ファイルに書かれている。
> cat /etc/resolv.conf
nameserver 106.187.2.33
nameserver 106.187.2.41
DNS サーバは 106.187.2.33 と 106.187.2.41。
(4)
DHCP サーバの情報は、 DHCP プロトコルを実行する DHCP クライアントソフトウェア (例: /usr/sbin/dhclient) が知っている。 dhclient は syslog(3) にアドレス取得時のログを記録している。
> journalctl | grep DHCP
:
:
Dec 06 14:08:50 **** dhclient[3737001]: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
Dec 06 14:08:51 **** dhclient[3737001]: DHCPOFFER of 192.168.0.37 from 192.168.0.2
Dec 06 14:08:51 **** dhclient[3737001]: DHCPREQUEST for 192.168.0.37 on wlan0 to 255.255.255.255 port 67
Dec 06 14:08:51 **** dhclient[3737001]: DHCPACK of 192.168.0.37 from 192.168.0.2
Dec 06 14:08:51 **** dhclient[3737001]: bound to 192.168.0.37 -- renewal in 70311 seconds.
:
:
DHCP サーバは 192.168.0.2。
小学生である C さんは、 今日、 学校に「はさみ」を持ってくるのを忘れてしまった。 図工の時間に、 教室内の誰かから「はさみ」を借りたい。
C さんが、教室内の特定の人に対して話せず、 教室内の全員に対して話す (ブロードキャストする) ことしかできないとする。
この場合、「はさみ」を借りる手順は以下のようになる。
1. C さんが教室内で「はさみ」を貸してくれる人を探す (DISCOVER)
2. 教室内の誰か (複数かもしれない) が「はさみ」を貸してあげるよ、と提示する (OFFER)
3. C さんが提示してくれた中から S さんを選択し、S さんに「貸してください」と依頼する (REQUEST)
4. S さんは C さんに「はさみ」を貸してあげる (ACK)
(1) 省略
(2) 上記において、C さんが「はさみ」を使用できるのはどの時点からか。
(略解) 4. で「はさみ」を借りた時点
(1) 省略
(2) 課題 1 の「はさみ」を借りるプロトコル (手順) では、 C さんと「はさみ」を貸す人の間で 2 回のメッセージ交換が行われる。 手順 1.と手順 2.の 1 回のメッセージ交換だけで C さんに「はさみ」を貸し出すとどのような問題が生じるか。
(略解) C さんは「はさみ」を一つしか使用しないのに、 複数の「はさみ」を同時に借りることになってしまう。
なし
なし
「レポート課題 2024/09/21」と同じ。
[<19. インターネットサービス (名前解決)] [>21. HTTP]