TCP/IPのネットワークで使われるアプリケーションソフトには、実にさまざまなものがあります。既にインターネットをお使いの方であれば、名前は知らなくてもWWWサーバーやメールサーバーのネットワークアプリケーションを使っていることでしょう。

■TCPとUDP

TCPは、Transmission Control Protocolの略で、IP通信により個々のノード宛てに送られてきたデータをアプリケーションの各ポートに送ったり、アプリケーションから送られてきたデータをIP通信に渡す等の働きをします。また、同様のものにUDP(User Datagram Protocol)と呼ばれるものもあります。TCPでは、ばらばらに送られてきたデータを整理したり、重複されてきたデータを破棄するなど、送られてきたデータをTCPの仕組そのものの範囲内で信頼性を保証しますが、UDPではアプリケーション設計者が信頼性を保証する機構を組み込むことができます。
TCPやUDPの役割は、郵便配達の方がマンションなどの集合住宅内の各ご家庭の郵便受けに手紙を配るのと良く似ています。例えば郵便配達員が自転車に乗って手紙を運び、集合住宅の郵便受けの前に立ちます。ここまでがIP通信の働きです。そして、宛名を見て各郵便受けに手紙を入れる、これがTCPやUDPの働きとなります。

■ポート番号

TCPとUDPの項で説明したように、TCPやUDPでは宛名を読んで各郵便受けに配達する仕組を持っていました。この宛名に相当するのもがポート番号で、各アプリケーションごとに割り当てられています。代表的なものとしては以下ようなものがあります。

キーワードポート番号概要
ftp21File Transfer Protocol
Telnet23Telnet
smtp25Simple Mail Transfer Protocol
http80Hyper Text Transfer Protocol
pop3110Post Office Protocol Version 3
nntp119Net News Transfer Protocol

ポート番号は、IANAにより管理されています。上記の各ポートは、ウェルノウンポート番号(WELL KNOWN PORT NUMBERS=よく使用されるポート番号)と呼ばれ、0〜1023までが割り当てられています。このポート番号は、インターネットなどでも共通で使用されているため、その他の用途に使ってしまうと混乱の元となってしまいます。例えば、httpでは80のポートを使います。これはホームページを見たりするときに使うポート番号ですが、これをほかの番号にしてしまうとブラウザではこの80番ポート宛てに接続を試みますので、ホームページが見られなくなってしまいます。また、その80番のポート番号をその他の用途で使ってしまうと、クライアントアプリケーションの違いにより意図しない結果となり、混乱を招きます。各サーバーを立ち上げるときには、注意が必要となります。余談ですが、1つのパソコンの中で同じポート番号を重複して使うことはできません。例えば、Webサーバーを立ち上げると、通常80番のポートを開きますので、別のWebサーバーを立ち上げるためには8080など別のポート番号で開く必要があります。TCPやUDPがどのポートへ運んだら良いのかわからなくなってしまうため、重複して開くことができなくなっています。

ポート番号には、それ以外にも予約済みポート番号(REGISTERED PORT NUMBERS)として、1024〜49151が割り当てられています。予約済みポート番号には、すでに予約されているポートがたくさんありますが、特に支障がなければ自由に使ってかまわないことになっています。例えば、BJDでは、初期設定でWebサーバー機能が80、httpプロキシが8080に設定してあります。これは、httpプロキシがそのままhttp(Web)サーバーではないことを意味します。あくまでもhttpプロキシで使われるポート番号ですので、80以外の設定をしなくてはいけません。その時に、0〜1023までのウェルノウンポート番号を使うことはできませんので、予約済みポート番号の中で使われていない適当な番号を選択して設定することになり、わかりやすさも含めて8080に設定してあります。
また、随時動的にポート番号を変える必要のあるアプリケーションなどで使うためのポート番号もあり、49152〜65535までを使います。例えば、サーバーでは上記のようにウェルノウンポートとして固定されたポート番号が割り当てられていますが、接続元のクライアント側では、同様にサーバーを公開しているかもしれませんので当然同じ番号を使って受け取ることができません。したがって、空いているポート番号を使って受け取るためのポート番号を確保しなくてはなりません。このような用途で使われのが動的/プライベートポート(DYNAMIC AND/OR PRIVATE PORTS)と呼ばれるものです。ただし、現実的には予約済みポートなども、クライアントアプリケーション内でポートの未使用状況を調べ、動的割り当てて使われているようです。

●http
httpは、前述の通りホームページを配信するWWWサーバーで用いられるプロトコルです。httpで制御されるため、そのサーバーはhttp serverやhttp daemon等とも呼ばれます。インターネットエクスプローラやネットスケープナビゲータなどのWebブラウザを使ってWebサーバーに接続すると、その時指定された URL にしたがって、リクエストされたWebページなどを返します。httpでは、 HTML で作成された文書以外にも、ファイルや画像などを配信することもできます。

※補足
WWW:World Wide Webの略で、インターネット上でいわゆるホームページなどを配信する機能を提供しています。WWW自体は、インターネットの網の目上のネットワーク構造を表す言葉です。
URL:Uniform Resource Locatorの略で、いわゆるホームページアドレスなどと呼ばれているものです。実際には、サーバー内で公開している資源の場所を示すものの統一的な表現方法です。
HTML:Hyper Text Markup Languageの略で、いわゆるホームページを記述するための言語です。

●smtp
smtpは、電子メールを転送するプロトコルで、この機能を提供するサーバーをsmtpサーバーと呼びます。郵便配達にたとえると手紙を配っている郵便配達員の方と言ったところでしょうか。電子メールを送受信するために使うアプリケーションをメールクライアント(メーラ、MUA(Mail User Agent))などと呼びますが、そのメールクライアントから送信されたメールは、あらかじめ設定されてあるsmtpサーバーへ送信されます。smtpサーバーでは、受け取ったメールのto行、つまり宛先を読み取り、所定の手続きによりどのサーバーへ送れば良いのかを探し出し、目的のサーバーへ送り出します。

●pop3
郵便配達では、運ばれてきた手紙は一旦家の軒先や門の前にある郵便受けへ配達されます。郵便受けへ配達された手紙を軒先まで取りに行くのと同様、電子メールにもメールが一時的に保管されているサーバーまで取りに行く仕組が必要となります。それがpop3で、この機能を提供するサーバーをpop3サーバーと呼びます。
pop3の処理手順は、メールクライアントから受信の操作をするとpop3サーバーに設定されたサーバーまでアクセスし、登録されているユーザー名とパスワードを使ってpop3サーバーにログインし、ログインしたメールボックスに入っているメールをダウンロードします。郵便受けにカギをかけるのと同じように、ユーザー名とパスワードによるログインの操作より電子メールの盗難を防ぐ仕組になっています。

●ftp
ファイル転送プロトコルは、主にファイルの転送を目的としたプロトコルです。ftpで使用されるポートは21と書きましたが、これは通信を制御するためのポートで、実際のデータ転送用には通常ポート20が用いられます。ただし、セキュリティ向上などの理由から転送用のポートはランダムに変換されてしまうftpサーバーもありますので、注意が必要です。

●Telnet
テルネットは、遠隔地にあるコンピュータ機器を制御管理するためのプロトコル仕様です。ログインと呼ばれる操作によって、相手先コンピュータに入り込み、直接操作を行うことが可能です。

●nntp
電子掲示板と形容されるネットニュース配信用のプロトコルです。世界中のニュースサーバーが連携してエンドユーザーへ記事の配信などを行います。

※補足
その他のポート番号に付いては、Windows フォルダに保存されているServicesファイルを参照してみましょう。テキストデータですので、メモ帳などで開くことができます。

■PROXY技術

IPアドレスは統一された番号体系であり、インターネットではグローバルアドレスを用い、LANにはプライベートアドレスという特殊なアドレスを割り当てるとご説明しました。プライベートアドレスは、異なるネットワーク間(データリンク間と呼びます)では重複可能な特殊なアドレスですので、インターネットと直接通信ができません。そこで一つの解決策として考えられるのがPROXYです。

PROXYは、本来代理を意味する英語ですが、インターネットで使われているグローバルアドレスを持っているホストコンピュータが、LAN内からの通信を代理実行または単に中継し、結果をクライアントへ返す処理を行います。例えば、インターネット上のWWWで配信されているWebページを見るときにはWebブラウザを使いますが、この通信先をPROXYサーバーに設定し、その通信と同じ事をPROXYがインターネットに対して代理で行い、結果得られたWebページを要求のあったWebブラウザへ返すといった処理を行います。

このことは、セキュリティ向上やネットワークの通信量(トラフィック)軽減にも役立ちます。たとえば、グローバルアドレスを持っているパソコンは、当然のようにインターネット側からもアクセスが可能になります。しかし、PROXYを用いると、クライアント側ではグローバルアドレスを持っていなくても、見かけ上インターネットと通信することができますので、必然的に安全性は高まります。さらに、PROXYにアクセスできるパソコンをプライベートアドレスだけに制限するなどにより、より一層のセキュリティ向上が見こめます。ただし、グローバルアドレスを持つことになるPROXYサーバー自体は、インターネットからのアクセスも可能となるため注意が必要です。

もうひとつのトラフィックの軽減についてですが、通信をPROXYが行うことにより、通信結果をPROXYに残すことができます(これをキャッシュと呼びます)。クライアントからのリクエストにより、すでにキャッシュされている同じデータへのアクセスがあった場合、このキャッシュされているデータを直接クライアントへ返すことができますので、自分で確保しているインターネットとの接続用媒体のみならず、インターネット自体のトラフィックも軽減できることに注目したいですね。

最近、政府のIT戦略会議などでも取り上げられ、インターネットへの常時接続化が叫ばれておりますが、常時接続で運用している場合には、特に気をつけたいのがセキュリティ管理です。もちろんダイヤルアップ環境でも同じことが起こる可能性があり、注意が必要には違いありません。PROXYでは、前述の通りある程度のセキュリティ機能が提供されています。しかし、PROXYは、Webサーバーやメールサーバーなどと同様、TCP/UDPによって適宜選択されたポート番号のみとの通信を行っているため、PROXY自体で関係しないポートの制御ができません。別途OSや、その他のアプリケーションが開いているポートなどがあり、ここから侵入などの被害が起こる可能性があります。インターネットへ接続する際は、最低限パーソナルファイアウォールと呼ばれる製品との併用をお勧めいたします。

■最後に

BJDは、LANをインターネットに接続してくれる、とても楽しい各種サーバー統合型のプロキシソフトウェアです。作者のSIN@SapporoWorksさん及びBJDに関わったたくさんの方に感謝を込めて、このネットワーク入門をお贈りさせていただきます。

SEAWorks