従来のIPv4アドレスは32ビットで、理論上の割り当て可能なホスト数は43億ほどである。これでは近年の世界の総人口(80億)にも及ばず、インターネットの普及によってホスト数も増えたことから既に新規割り当て可能なIPv4アドレスが枯渇している状態である。
この問題への対応で主なものは以下の3つである。
ネットワークアドレスのクラスレス化はネットワーク基礎①で解説しているため、ここではアドレス変換技術とIPv6アドレスについて解説する。
グローバルIPアドレスはインターネット接続に必要となる世界中で一意なIPアドレスであり、IANAによって管理されている。IPアドレス枯渇問題としてはこのネットワークの発達に伴うPCなどの端末の増加に伴いグローバルIPアドレスが一意で付与できなくなった問題である。
そこで考えられたのがプライベートIPアドレスで、組織内や家庭などのLANといった小さなネットワーク内で使用されるIPアドレスである。例えばグローバルIPアドレスが1つであっても、複数の端末にIPアドレスを割り当てるための仕組みを構築するために使われる。プライベートIPアドレスはあるネットワーク内では一意ではないといけないが、別のネットワークの番号との重複は気にしなくてもよい。
例えば下図では5.0.0.1、6.0.0.1がグローバルIPアドレス、192.168で始まるIPアドレスがプライベートIPアドレスである。6.0.0.1は世界中で一つでないといけないが、192.168.0.100世界中にいくつ存在していてもよい。
B社を例にとると、プライベートIPアドレスである192.168.0.100を6.0.0.1に変換してインターネットに接続できるようにした仕組みをアドレス変換という。
NATはアドレス変換技術のうち最も基本的なもので、プライベートIPアドレスとグローバルIPアドレスを1対1で変換するものである。以下のように、ルータのようにアドレスの対応表を持つイメージである。
しかしこれではインターネットに接続したい端末の分だけグローバルIPアドレスを持つ必要があり、IPアドレス枯渇問題への根本的な解決にはならない。
IPマスカレードはNATにポート番号を組み合わせることによって、グローバルIPアドレス一つに対して複数のプライベートIPアドレスを持てるようにした技術である。例えば以下のようなイメージである。
この仕組みはプライベートネットワークからインターネットへ向けたデータ送信とその返信のみ機能する。しかし、インターネットではプライベートネットワークを起点としたインターネット接続が多いためこの機能で事足りることが多く、現状では多くの場合でこの機能を利用している。
IPアドレス枯渇問題に対応したIPv4アドレスの後継技術として設計されたIPアドレスで、RFC1883で規約化され、既に実装製品も市場に出回っている。
IPv6アドレスは128ビットで、理論上340澗個のアドレス空間を利用できる。
①まず、128ビットの2進数を16ビットごとにコロンで区切って16進数で表記する。コロンで区切られた16進数の単位をフィールドといい、8フィールドできる(16×8=128)。例えば、次のようなものになる。
2001:3481:0ABC:0000:0000:0FFF:9FFF:1616
②各フィールドの先頭の0は省略可能。
2001:3481:ABC:0:0:FFF:9FFF:1616
③0000のフィールドが続いている場合は、1回だけ::に省略可能。
2001:3481:ABC::FFF:9FFF:1616
ただし、これはあくまで1回だけであることに注意。
試験対策的にはひとまず、IPv6アドレスが8フィールドの16進数で、コロンで区切られて表記されることを覚えて、この見た目がIPv6アドレスであることが分かるとよい。
IPv6アドレスはサブネットプレフィックスとインターフェイスIDに分かれる。
それぞれ64ビットずつが通常であるが、サブネット化することも可能でその場合は/80のように表記する。
IPv6アドレスでは以下の3種類のアドレスで送信を行う。
ブロードキャストアドレスはネットワーク負荷が高いため廃止され、マルチキャストアドレスに統合されている。
Webサーバとブラウザ(クライアント)間でHTMLなどのファイルを送受信するために作られたプロトコル。クライアントサーバ型の代表的なプロトコルで、HTTPリクエストとその応答であるレスポンスによって情報をやり取りする。
リクエスト(リクエストメッセージ)はブラウザからWebサーバに送るメッセージで、以下の3つのメッセージからなる。
リクエストメッセージの1行目で、メソッド、リクエストURI、HTTPバージョンを以下のように指定する。
GET /index.html HTTP/1.1
メソッドは「何をしたいか」を指定するもので、リクエストメッセージにおいて最も重要な部分である。以下の8種類のメソッドが定義されている。
GET | データを取得する。 |
HEAD | メッセージのヘッダを取得する。 |
POST | データを送信する。 |
PUT | データを保存する。 |
DELETE | データを削除する |
CONNECT | プロキシにトンネリングを要求する。 |
OPTIONS | オプション情報の通知用 |
TRACE | 診断用 |
リクエストURIはHTTPでやり取りされる情報の場所を指定するものである。HTTPバージョンは現在の最新はHTTP/3であるが、HTTP/2やHTTP/1.1が使用されることもある。
パラメータの形で追加される情報。
Accept | 受入れ可能なメディアタイプ。 |
Authorization | 認証情報。 |
Referer | 直前に閲覧していたURI。 |
Cookie | クッキー情報。 |
User-Agent | Webブラウザの情報。 |
リクエストに関する補足的な情報が書かれる。POST通信の場合はパラメータの情報が書かれているが、GETの場合は必要がないため使われない。
レスポンス(レスポンスメッセージ)は、リクエストに対してWebサーバからクライアントに返答する情報。以下の3つからなる。
ステータスメッセージの1行目で、HTTPバージョン、ステータスコード、説明句が書かれる。説明句はステータスコードの説明であり、この二つはセットである。
コード | 説明句 | 内容 |
100 | Continue | 暫定的なレスポンスであることを示す。 |
200 | OK | リクエストが成功したことを示す。 |
304 | Not Modified | エラーの一つ。データが更新されていないことを示す。 |
401 | Unauthorized | エラーの一つ。ユーザ認証が必要であることを示す。 |
404 | Not Found | エラーの一つ。情報が見つからなかったことを示す。 |
500 | Internet Server Error | エラーの一つ。サーバエラーであることを示す。 |
パラメータの形で追加される情報。
Location | リダイレクトする。 |
Set-Cookie | クッキーを発行する。 |
Content-Type | コンテンツの形式や文字コードを示す。 |
X-Content-Type-Options | Content-Typeに合致しないコンテンツの動作を決定する。 |
Content Security Policy | セキュリティ対策を行う機能を有効化する。 |
X-Frame-Options | フレーム表示を有効化するかを設定する。 |
Strict-Transport-Security | HSTSの機能を有効化する。 |
X-XSS-Protection | クロスサイトスクリプティング対策を行う機能を有効化する。 |
レスポンスとして送られるHTML、画像などが入る。
PCなどの機器にIPアドレスを自動的に割り振る仕組み。企業などで端末が多くなると一つ一つを主導で設定するのは手間で、設定変更や機器の追加の際に重複して不具合が発生する恐れがある。その対策のための技術がDHCPである。
DHCPはDHCPサーバ(UDP 67番ポート)、DHCPクライアント(UDP 68番ポート)の二つからなる。DHCPクライアントはPCなどのネットワークに接続したい機器で、DHCPサーバがDHCPクライアントのIPアドレスを一元管理する。
DHCP ACKで承認されたIPアドレスをDHCPクライアントは設定する。
DHCPクライアントからDHCPサーバにDHCP DISCOVERを送信する際に、DHCPクライアント自身はDHCPサーバのIPアドレスが分からないためブロードキャストアドレス宛に送る必要がある。この時、ブロードキャストドメインを超えられないため、基本的にはブロードキャストドメインごとにDHCPサーバを設置する必要がある。DHCPリレーエージェントを設置することによって、その対策をすることができる。
TCP/IPでは各機器にIPアドレスが割り振られ通信を行うが、IPアドレスは32ビットの数値であるため人間には覚えにくい。そこで、使われている技術がDNSである。DNSは現在私たちが通常インターネットのホームページにアクセスするために使う文字列(例:www.google.com)とIPアドレスの対応関係を持っており、それにより相互変換が可能になっている。
尚、google.comはIPアドレス172.217.25.206でもアクセス可能である。
ドメイン名はIPアドレスに対応したgoogle.comのような名前である。ドメイン名は階層構造になっており右からトップレベルドメイン、第2レベルドメイン、第3レベルドメイン、第4レベルドメインと呼ばれる。
すべてのドメインを1台のサーバで管理することは不可能なため、ドメインごとに複数のサーバで分散管理する体制が構築されている。トップレベルドメインを管理するサーバは世界で13台あり、そのうち1台が東京に存在している。
ホスト名はネットワーク内でマシンを特定するための名前である。マシンとは、ウェブサーバのほかにメールサーバなどの機器が存在していて、ウェブサーバであればwwwとなる。
ホスト名+ドメイン名の形式で繋げた文字列のこと。例えばwww.example.co.jpとなり、example.co.jpというネットワークにあるwwwというホストを示す。例えば、mailというホストがほかに存在すれば、mail.example.co.jpも完全修飾ドメイン名である。DNSを使用して問い合わせをする場合は、完全修飾ドメイン名にプロトコルを付けてhttp://www.example.co.jpという形式で問い合わせをする。
①ブラウザの検索窓などにドメインを入力する。すると、DNSキャッシュサーバに問い合わせを行い、キャッシュされている場合はそのIPアドレスを返す。キャッシュされていない場合は、ルートネームサーバに問い合わせを行う。
②ルートネームサーバからの応答を基に.jpを管理するネームサーバ②に問い合わせる。ここで第2レベルドメインまでの.co.jpを管理しているサーバを問い合わせる。
③ネームサーバ②からの応答を基に.co.jpを管理するネームサーバ③に問い合わせる。ここで第3レベルドメインまでのexample.co.jpを管理しているサーバを問い合わせる。
④ネームサーバ③からの応答を基に.co.jpを管理するネームサーバ④に問い合わせる。ネームサーバ④は目的となるドメイン名example.co.jpとそのIPアドレス5.0.0.1を管理しているサーバで、権威サーバと呼ぶ。この結果がDNSクライアントに返され、IPアドレス5.0.0.1にアクセスする。
このように、複数のネームサーバに繰り返し問い合わせることを再帰問合せという。
DNSサーバ内に保存されている名前解決情報を集めたテキストファイル。ドメイン名とIPアドレスを関連付ける情報のほか様々な情報があり、その1行1行をDNSレコードという。
電子メールは基本的には次の3つのソフトウェアによって配送が行われる。
SMTPはメールのためのプロトコルとして最初に考案されたもので、現在もその中心となっているプロトコルである。送信者のMUAからMTAへの配送と、送信者・受信者のMTA間の配送を担う。クライアントサーバ型のプロトコルで、メールを送る側をメールクライアント、受け取る側をメールサーバと呼んで、相互でやり取りを行うことでデータ送信を行う。
SMTPでは、SMTPコマンドとその応答であるSMTPリプライによって成り立っており、その間で送信者、受信者、メールの本文などの情報がやり取りされる。SMTPコマンドで送られる情報をエンベロープロという。
SMTPコマンド
コマンド | 説明 |
---|---|
HELO | SMTPセッションでの通信開始 |
EHLO | HELOの拡張版 |
MAIL FROM | 送信者のアドレスを指定する |
RCPT TO | 受信者のアドレスを指定する |
DATA | メール本文の送信開始を知らせる |
QUIT | SMTPセッションの通信終了 |
SMTPリプライ
リプライ | 説明 |
---|---|
250 | 成功、OKを示す。 |
221 | SMTPセッションの通信終了時に、成功を示す。 |
354 | メール本文を要求する。 |
451 | 問題が発生したため処理を中断する。 |
500 | 文法エラー。 |
メールの制御情報がメールヘッダに記載される。
ヘッダ | 説明 |
---|---|
From | 送信者のアドレス。複数指定ができる。 |
Sender | 実際の送信者のアドレス。1件のみ指定できる。 |
To | 宛先アドレス。 |
Cc | カーボンコピー先のアドレス。 |
Subject | メールの件名。 |
Bccのアドレスはメールヘッダには記載されない。そのため、SMTPコマンドで送られるエンベロープと情報の内容は一致しない。
メールボックスに保存されたデータをクライアントにダウンロードするプロトコル。
SMPTでは常に受信側のメールサーバを立ち上げておく必要がある。いつ送られてくるかわからないメールのために常にインターネットを接続しておくことに対する問題に対応するために考案されたのがPOPである。現在では改良版のPOP3が主流となっている。POPもSMTPと同じくクライアントサーバ型のプロトコルとなっていて、POPリクエストとPOPリプライをやり取りする。
POPリクエスト
コマンド | 説明 |
---|---|
USER | ユーザ名の送信 |
PASS | パスワードの送信 |
LIST | メールの確認、一覧表の取得 |
RETR | メールのメッセージ取得 |
QUIT | POPによる通信終了 |
POPリプライ
リプライ | 説明 |
---|---|
OK | 正常 |
ERR | エラー |
ユーザ名とパスワードで認証を行うのが特徴である。
IMAPもPOPと同様にメールボックスに保存されたデータをクライアントが取得するプロトコルであるが、POPと違いメールをダウンロードせずにメールサーバで管理するものである。
初期のメールはテキストデータしか送信できなかったが、画像、動画なども対応するために作られたプロトコルがMIMEである。
異なるコンピュータ間でファイル転送をするプロトコル。制御用コネクションとデータ転送用コネクションの2つのTCPコネクションが作られるのが特徴である。
FTPは基本的にはTCPを使用するが、UDPを用いるTFTPも存在する。TFTPは簡易的なファイル転送プロトコルで、ユーザ認証も行わない。
また、FTPには次の2つのモードがある。
ネットワークを管理するためのプロトコル。UDPで動作する。ネットワークを管理する機器をSNMPマネージャ(管理用PC)、管理される機器をSNMPエージェント(ルータ、スイッチ、サーバなど)といい、SNMPメッセージでSNMPエージェントを管理する。
SNMPでやり取りされる情報をMIBと呼ぶ。MIBは階層構造のデータベースである。