こんにちは、さくらインターネットの大喜多です。

言うまでもなく、クラウドはネットワークの向こう側にあります。クラウドインフラを活用する上でネットワークの知識は非常に重要なものになってきます。そこで今回は「TCP/IP」「HTTP/HTTPS」「SMTP」「DNS」などの『インターネットを支える技術』について解説していきたいと思います。

第1回 クラウドインフラのしくみ
第2回 クラウドを支える仮想化
第3回 Linuxコマンドを用いたボトルネック調査
第4回 インターネットを支える技術

インターネットとは

インターネットが登場する以前は、コンピュータネットワークは組織毎に独立して存在していました。これらを相互接続(inter-networkng)することでグローバルなシステムに成長したのがインターネットです。仕様の異なるネットワーク同士を接続するために、複数の標準化されたプロトコルが策定され、現在も使用されています。それらは「TCP/IP」と総称されるプロトコルの集合体を形成しています。

規格が標準化されたインターネットによって、各組織のネットワークが相互接続できるようになった

TCP/IP

TCP/IPとは、インターネットで標準的に用いられる通信プロトコル(通信手順)で、TCP(Transmission Control Protocol)とIP(Internet Protocol)を含む、インターネット標準のプロトコル群全体の総称です。

アプリケーション層 アプリケーション間のやり取り HTTP、SMTP、DNS等
トランスポート層 プログラム間の通信、通信の制御 TCP/UDP
インターネット層 インターネットワークでの通信 IP
ネットワークインターフェイス層 同一ネットワーク上での通信、ハードウェア仕様など イーサネット、無線LAN等

TCP/IP階層モデル

IP

IPとは、複数の通信ネットワークを相互に接続し、データを中継・伝送して一つの大きなネットワークにすることができる通信規約(プロトコル)のひとつです。IPではネットワークに接続された個々のネットワークやホスト(機器など)に固有の識別番号であるIPアドレスを割り当て、これを宛先や送信元に指定して通信を行います。

インターネットの普及期に用いられ、現在も広く利用されているのはIPバージョン4(IPv4)で、32ビットのアドレスを用いる。インターネットの急拡大に伴いアドレス数が逼迫しているため、IPの新しい規格として、128ビットのアドレスにより約3.40×1038個のアドレスが利用でき、セキュリティ機能や転送効率なども改善されているIPバージョン6(IPv6)が策定され、IPv4からの置き換えが模索されているが、IPv4との直接的な互換性がないことから、インターネット上で本格的に普及するには至っていません。

TCP/UDP

TCPとUDPはともにIPの上位プロトコルにあたります。ネットワーク層のIPとセッション層以上のプロトコル( 例:DNS、NTP、DHCP )の橋渡しをしています。TCPが3way handshake、確認応答、順序制御、再送制御、ウィンドウ制御、フロー制御などの機能によって信頼性を確保しているのに対して、UDPにはこれらの機能がありません。一方で、それらの機能を省いていることにより処理が簡単でTCPと比較して遅延が少ないプロトコルとなっています。UDPは、TCPと比べて信頼性が高くはないが、速さやリアルタイム性を求める通信に使用されるプロトコルです。

TCP コネクション型プロトコル
再送制御などの通信の信頼性を確保する仕組みを有する
ゆえに処理は複雑化し後述のUDPと比較して遅延の原因となりやすい
UDP コネクションレス型プロトコル
信頼性を確保する仕組みがない
ゆえに処理がシンプルで遅延が少ない

TCPとUDPのそれぞれの特徴

アプリケーション層で動作するプロトコル

IPやTCP/UDPの上で動いているプロトコルで、メールの送受信や名前解決などの具体的な機能を提供します。

SMTP/POP/IMAP

SMTPはメールクライアント→メールサーバおよびメールサーバ間でのメールの送信に使われるプロトコルです。当初は認証機能を持っていませんでしたが、後述するPOPの認証機能を用いたPOP before SMTP、SMTPの認証機能SMTP Authなど、セキュリティ面での拡張が行われています。POPはメールクライアントがメールサーバからメールを受信する際に用いられるプロトコルです。メールクライアントからメールサーバ上のメールデータを直接操作するIMAPというプロトコルも存在します。

DNS

IPアドレスとドメイン名を紐付けるために使われるプロトコルです。当初はhostsと呼ばれるファイルを端末上に保存しておき、IPアドレスとドメイン名の対照(名前解決)を行っていましたが、拡張性の問題から、インターネットを介して名前解決を行うDNSと呼ばれる仕組みが開発されました。

プロトコルの理解はこんなケースで役に立つ

これらのプロトコルを理解しておくことは、どのような場面において役に立つのでしょうか。その一例をご紹介致します。

DDoS攻撃に対しての防御方法を検討することができる

DDoS攻撃はサーバに対して大量のリクエストを投げつけてサービスを利用不能に追い込む攻撃手法です。また単一の手法を指すのではなく、攻撃Aに対して有効な防御方法が攻撃Bに対しては無力ということもあります。プロトコルに対しての理解があれば、DDoS攻撃によってどこがボトルネックになりうるのか、どのような防御手法を検討すればよいのか、またインターネットからサーバまでの間のどのポイントで防御すべきなのかを検討するスタートラインに立つことができます。これはサーバの保守を外注している場合や、サービスを利用して防御する際においても発注者側として最低限必要な知識になります。

メール連携機能の不具合の切り分けができる

2017年の今日においても、電子メールとの連携機能を有するWebサービスは多く存在します。メールの不達などが発生した場合にプログラムの問題なのか、メールサーバの問題なのか、またメールサーバの問題だとした場合どのメールサーバが問題となっているのか、その切り分けにはメールが配送される仕組みを理解していることが必須となります。

さいごに

いかがでしたでしょうか。このようにITエンジニアリングの本質にあたる根幹の部分、プロトコルという基本的な仕組みを理解しておくことが、システムを開発/運用していくうえで必須となってくることがご理解いただけましたでしょうか。ここまではクラウドの仕組み、仮想化、ネットワークなど、基本的なテクノロジについて解説してまいりました。次回からはOSS(オープン・ソース・ソフトウェア)を用いたシステム監視の具体的手順など、より実践的な内容を取り扱っていく予定です。