現在のネットワークのデファクトスタンダードであるTCP/IPは、4階層のプロトコルから構成される。
この中で、アプリケーションプロトコルの部分が我々に一番馴染みのあるところだと思われる。
今回はアプリケーションプロトコルについて観てみよう。
DNS(Domain Name System)
TCP/IPにおいてホストを指定するためには、IPアドレスが必要である。
しかし、IPアドレスは8ビットごとに10進数表記された数字の羅列に過ぎないので、人間にとって覚えやすいアドレスとはいえない。
そこで、ホストのアドレスをドメイン名とよばれる「文字列」で表現し、DNS(Domain Name System)とよばれる機能を利用して、IPアドレスとドメイン名を相互に変換する方法が利用されている。
このDNSは、アプリケーション層のプロトコルである。
IPアドレスは人間に分かりにくいうえに管理も大変だ。
そこで通常は、”advanceadvance.net”のようなドメイン名をつけて管理する。
実際にサーバにアクセスする場合は、ドメイン名をIPアドレスに変換しないといけないので、どこかにドメイン名とIPアドレスを対応させる仕組みを用意しないといけない。
これを管理するサーバがDNSサーバ(ネームサーバ)であり、DNSサーバを用いた変換の仕組みこそがDNSなのである。
DNSのドメインはルートドメインを頂点とする階層構造をとる。
クライアントが問い合わせたDNSサーバがドメイン名を解決できなかった場合には、最上位のルートドメインのDNSサーバに問い合わせが送られる。
そこから順次階層をたどり、最終的に目的ドメインのDNSサーバが、対応するIPアドレスを返却する。
上図だと、ドメイン名の後ろから順次階層をたどっていっている。
インターネット上のホストはドメインで管理されている。
ドメインは、ホスト名などを階層構造(木構造)で管理する領域であり、階層構造全体をドメイン名空間といい、階層構造の頂点に根(ルート)が存在する。
これらのドメインを区別するためにドメイン名が利用される。
サイト名などを表す文字列の最も右側の文字が最上位のドメインに対応し、これをトップレベルドメイン(TLD:Top Level Domain)という。上図の例だと、.jp が相当する。
トップレベルドメインは、.com .net といったgTLD(generic TLD)と、国属性を表す .jp(日本) などのccTLD(countrycode TLD)に大別される。
.jpドメインの場合は、.co.jp や .ne.jp のような組織種別を表す第2レベルドメインを持つ場合が多い。
また、ドメイン名の最も左側(下位)の文字列がホストを表す。上図だと、wwwというホストでありドメイン名を含めたホスト名が、www.example.co.jp となる。
このようなホスト名とドメイン名をすべて省略せずに表記したものをFQDN(Fully Qualified Domain Name)という。
WWWとHTTP
我々がよく目にするWWW(World Wide Web)は、ホームページにアクセスするサービスである。
WWWでは、クライアントであるブラウザがWebサーバに格納されたハイパテキスト(HTMLで記述された文書)や画像ファイルといった資源を要求すると、Webサーバは要求された資源を送信する。
この資源の要求や送信にHTTP(HyperText Transfer Protocol)というプロトコルが用いられる。
ホームページはHTTPを用いて送受され、WWWを用いた取引ではHTTPSを使用することにより通信内容を保護する。
Webをはじめ、インターネット上の資源を特定するために、URL(Uniform Resource Locator)が利用される。
URLでは、資源にアクセスするためのプロトコル、ホスト名、ドメイン、ディレクトリ、ファイル名などを指定することが可能である。
HTTPは、クライアントが資源を要求すると、Webサーバが要求に基づいた資源を送信するプロトコルである。
この資源とは、HTMLファイルだけでなく、画像ファイルや実行ファイル、音楽ファイルなども該当する。
受信したハイパテキストの解析や表示といった処理は、アプリケーションプログラムであるブラウザが担当し、リンクされた画像などがあれば、新たにHTTP要求を発行する。
ここにブラウザとは、パソコンやスマホを使ってインターネットに接続し、ネット上で公開されているWebページやネットのシステムなどを閲覧・操作する際に使うソフトウェアのことである。
ブラウザには以下の種類がある。
・HTTPのメッセージ
HTTPで送受信されるメッセージは、HTTP要求とHTTP応答に分けられる。
HTTP要求の主要な方法に、GETメソッドとPOSTメソッドとがある。
前者はWebページ等の資源の取得(画面に表示させる)を主な用途とし、後者はクライアントが入力したデータなどのフォームの送信を主な用途とする。
HTTP応答とは、HTTP要求に対するWebサーバ側の返事である。
クライアントからのHTTP要求を受け取ったWebサーバは、正常に処理できたかどうかを示すステータスコードをヘッダに、正常に処理できたのであればクライアントから要求されたHTMLや画像といった資源、クライアントから受け取ったデータを処理した結果などをメッセージボディに格納してクライアントに返送する。
ステータスコードはたまにお目にかかれるが、代表的なのは以下のとおり。
200 OK | 要求は正しく処理された。 |
404 Not Found | 指定された資源は見つからず。 |
503 Service Unavailable | サービスが一時的使用不可。 |
503 Service Unavailableは、過負荷やメンテナンス中などでリクエストを処理できない状況であるが、Webサーバ自体は稼働してることを意味する。
・CGI(Common Gateway interface)
インターネットで、掲示板やネットショッピング、検索エンジン等、利用者が入力した内容に応じて動的に結果を変える対話型のページを実現するには、HTTPだけでは不十分である。
こういう場合、入力データを処理して結果をブラウザに返すプログラムを連携させる必要がある。
これに用いられるのがCGIである。
CGIは、Webサーバがプログラムを起動する仕組みで、ユーザが入力したデータをプログラムに渡し、その処理結果をブラウザに返す。
・Gookie(クッキー)
Cookieは、Webサーバから利用者に送られた情報をブラウザに保存する仕組みである。
Cookieに保存された情報は、次回のアクセス時にWebサーバに送られる。Cookieにユーザ情報を保存させることにより、利用者の識別や複数の通信を一連のセッション(コンピュータとユーザ間の半永久的な双方向情報交換)として扱うことが可能になる。
・プロキシサーバ(代理サーバ)
プロキシサーバは、クライアントからの要求を受けてクライアントの代理として他のWebサーバにアクセスするサーバである。
プロキシサーバはクライアントからの要求を受け付けると、自身がクライアントとなってWebサーバにアクセスし、取得した資源をクライアントに返す。
プロキシサーバは、取得した資源をキャッシュとして保存し、同じコンテンツへのアクセス要求があれば、Webサーバには再度アクセスせずにキャッシュされた資源を返す。応答性能の向上や通信量の削減が期待できる。
またプロキシサーバが外部のサーバに一括してアクセスすることにより、外部からはプロキシサーバのみがアクセスしているように見えるので、ネットワーク内部の構成を隠蔽することが可能となる。
・リバースプロキシサーバ
インターネット上のクライアントからのアクセス要求を受けて、自組織内のサーバに代理でアクセスするサーバをリバースプロキシサーバという。
外部からやってくるサーバ宛てのアクセスはいったんリバースプロキシサーバが受け取り、それからリバースプロキシサーバが本来のサーバに代理アクセスするのである。
・Webサイトにおける負荷分散
アクセス数の多いWebサイトでは、複数のWebサーバと負荷分散装置(ロードバランサ、webスイッチ)によって、アクセスを分散させることが多い。
負荷分散装置にはWebサーバ群の仮想IPアドレスを設定し、クライアントは仮想IPアドレスにアクセスする。
負荷分散装置は仮想IPアドレスへのアクセスを各Webサーバに振り分けるのである。
・セッション維持機能
Webアプリケーションが稼働している場合、同じクライアントからのアクセスを異なるWebサーバに振り分けると、処理中のデータ(ショッピングサイトの買い物カゴ等)が消失するといった矛盾が発生する可能性がある。
これを防止するために、クライアントからのアクセスを初回と同じWebサーバに振り分けることが重要になる。
このような機能をセッション維持機能という。
セッション維持を実現するには、送信元IPアドレス、Cookie、SSLのセッションID、等によってクライアントを識別する。
電子メールで用いられるプロトコル
電子メールは、短時間でメッセージを宛先まで送信できること、ファイルを添付して送れること、送受信の履歴をできること等により、ビジネスには欠かせない重要なものとなっている。
電子メールにもいくつかのプロトコルが使用されている。
・SMTP(Simple Mail Transfer Protocol)
SMTPは、電子メールの転送を実現するプロトコルである。
転送の手順はいかのとおり。
①メールクライアントがメールサーバにメールを送信する。このときにSMTPが用いられる。
②メールを受け取ったメールサーバは、宛先のドメイン名(メルアドの@より後ろの部分)を用いて、宛先のメールサーバのIPアドレスを取得する。
③宛先となるメールサーバへSMTPを用いて電子メールを転送する。
④宛先メールサーバに届けられた電子メールは、各アカウント(@より前の部分)のメールボックスに配信される。
・POP(Post Office Protocol)
POPは、メールサーバのメールボックスに蓄積された電子メールを取り出すためのプロトコルである。
現在はPOP3(POP version3)が主流となっている。
POPでは、POPクライアント(メールソフト)が電子メールの配信を依頼すると、POPサーバがメールボックスに蓄積された電子メールをクライアントマシンの磁気ディスク装置にダウンロードし、以後はクライアントマシン上で電子メールを管理する。
・IMAP(Internet Message Access Protocol)
IMAPもPOP同様にメールボックスに蓄積された電子メールを取り出すプロトコルである。
現在は主としてIMAP4(IMAP version4)が利用されている。
単純に電子メールをメールボックスからダウンロードするPOPに対して、IMAPはサーバ上にメールを保持し、メールデータの取得やメールの削除などの管理を、すべてサーバ上で行う。
このため、IMAPはモバイル環境と非常に相性が良いプロトコルといえる。
・MIME(Multipurpose Internet Mail Extensions)
MIMEとは、もともとは7ビットのASCIIコードで表現可能な文字しか送受信できなかった電子メールに、添付ファイルや各国言語を扱えるようにする拡張規格である。
MIMEを用いた場合、7ビットコードでは表現不可能なデータを、送信側で7ビットに変換(エンコード)し、受信側で元の情報に逆変換(デコード)される。
FTP(File Transfer Protocol)
FTPは、ファイルを転送するためのプロトコルである。
プラットフォームに依存しないファイル転送が実現できるのが特徴だ。
FTPでは、制御用コネクションとデータ転送用コネクションの二つのコネクションを組み合わせて利用する。
このため、あるホストから全く異なる2台のホスト間での転送を実行することが可能である。
具体的には、利用者からファイル転送指示を受けたFTPクライアントが、FTPサーバと制御用コネクションを確立し、FTPサーバに対してIPアドレスとポート番号を通知する。
FTPサーバは、このIPアドレスとポート番号を使用してデータ転送用コネクションを確立して、データの送受信を行う。
この仕組みにより、FTPでは大容量のファイルを送受信してる最中でもファイル転送の中止といった、各種制御が可能となっている。
TELNETとSSH
TELNETは、ネットワークに接続されたコンピュータを遠隔操作するためのプロトコルである。
TELNETクライアントに入力したコマンドなどがTELNETサーバを介してOSに送られ、あたかもサーバをそのまま扱っているような、仮装端末を実現することが可能となっている。
また、TELNETでは通信内容が暗号化されてないため、現在では暗号化機能を備えたSSH(Secure SHell)の利用が多い。
DHCP(Dynamic Host Configuration Protocol)
DHCPは、IPアドレスを動的に割り当てるためのプロトコルである。
DHCPを用いる場合、ホスト(DHCPクライアント)は、起動時あるいは必要時にDHCPサーバに対してIPアドレスを要求する。
この要求に対してDHCPサーバは、あらかじめ登録されているIPアドレスのうち一つを割り当てる。
クライアントのIPアドレスの利用が終了したら、DHCPサーバはそのIPアドレスを回収するのである。
DHCPは、サブネットマスクやデフォルトゲートウェイも設定できる。
デフォルトゲートウェイとは、他のネットワークと通信するための窓口となるルータである。
各ホストは、自ネットワークに接続されたコンピュータとは直接通信し、異なるネットワークに接続されたコンピュータとの通信はすべてデフォルトゲートウェイに中継を依頼するのである。
SNMP(Simple Network Management Protocol)
SNMPは、TCP/IPにおける通信機器(ルータやコンピュータなど)を管理するためのプロトコルである。
SNMPでは、管理する側をマネージャ、管理される側をエージェントという。
エージェントは、管理される項目の集合をもち、マネージャの指示により、それらの設定変更や、格納された情報(現在の状況)の通知を行う。
また、異常な状態や資源の使用量がしきい値(高電位と低電位を区別する境)を超えた場合など、エージェントが自発的にイベントの発生などを通知することができる。
後記
緊急事態宣言が再び出て、豊洲市場も開店休業状態となっている。
幸か不幸かフリータイムが増えてきたので、このブログの更新頻度も上がりそうである。