このページでは自宅サーバーLinuxでの構築に必要な知識であるプロトコルの種類とポート番号について初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
通信とネットワークの基礎知識

通信とネットワーク

TCP/IPとは

TCPとUDP

上位プロトコルとポート番号

IPアドレスとは〜その1

IPアドレスとは〜その2

IPアドレスとは〜その3

回線の種類について

ISPの選択

ネットワークの構築

ルーターの設定〜その1

ルーターの設定〜その2

ドメイン名について

名前解決とネームサーバー

ダイナミックDNS


目的をもった上位のプロトコル

何度も繰り返すようですが、 TCP UDP は、あくまでデータの輸送手段を決めるための プロトコル です。

つまりTCPにもUDPにも、例えばメールを送るための手順であるとか、ホームページの コンテンツ を送るための形式であるとか、そういった「具体的な目的」は存在しないというわけです。

そこで、実際にメールの送受信を行い、ホームページの閲覧を行うためには、それぞれに「メールの受信要求のための通信手順と形式」あるいは「ホームページ閲覧要求のための通信手順と形式」をもった別のプロトコルが必要になります。

これがこのパートでこれから説明する、 アプリケーション層 で扱われる最上位のプロトコルということになります。

その下位の トランスポート層 で扱うプロトコルが、基本的にTCPとUDPの二種類しかないのに対して、その上位のアプリケーション層では利用されるサービスの種類、あるいはそれ以上に数多くの種類のプロトコルが存在します。

例えばTCPとUDPの違いが、バイクとトラックのような 輸送手段 違いだとすると、その上位のプロトコルの種類の違いは、ハガキと小包の違いのような 「実際に運ばれるものの種類の違い」 のようなものだと考えてください。

そしてこのアプリケーション層のプロトコルとトランスポート層のプロトコルの組み合わせによって パケット のやりとりが行われ、 ホスト機 間の通信が成立することになるわけです。

では、詳しい説明の前に、まずは 公開サーバー の運用で用いることの多い代表的なアプリケーション層のプロトコルを挙げてみましょう。

FTP "File Transfer Protocol"

汎用のファイル送受信のためのプロトコルです。パソコンソフトの ダウンロード や、パソコンで作成したホームページの コンテンツ Webサーバー アップロード するときなどに使われることが多いようです。

SSH "Secure Shell"

遠隔地の通信機器( サーバー ルーター など)に接続し、リモートコントロールするためのプロトコルです。通信経路がすべて暗号化して行われるので、通信内容を傍受されにくいという特徴があります。

TELNET

使用目的はSSHと同じ通信機器のリモートコントロールです。ただし、通信経路が暗号化されないので WAN 経由の通信にはSSHの利用が一般的です。

SMTP "Simple Mail Transfer Protocol"

電子メールのデータをパソコンから メールサーバー に送ったり、メールサーバーが他のメールサーバーへメールのデータを送るときに使用されるプロトコルです。

HTTP "HyperText Transfer Protocol"

Webブラウザ などから Webサーバー に接続し、コンテンツを受信するときに使われます。

POP3 "Post Office Protocol ver 3"

IMAP4 "Internet Message Access Protocol ver 4"

電子メールをメールサーバーからパソコンなどにダウンロードするときに使用されるプロトコルです。

プロトコルは紛らわしい? :TCPもUDPもプロトコル。HTTPもFTPもプロトコル。更にいえば、 インターネット層 のIPももちろんプロトコル。違う階層で全く違う働きをしているのに、名前はみーんな プロトコル 。本当に初心者泣かせの紛らわしさですよね。どうにかならないものでしょうか。

これらのプロトコルは、それぞれの使用目的に合わせてデータの送受信手順やデータの形が決められていますが、「信頼性が必要か」または「スピードが必要か」に応じてTCP、UDPのいずれかの方式に載せられて送受信されます。

TCP/IP において、 クライアント とサーバーが通信を行う場合には、お互いがアプリケーション層の同じ種類のプロトコルを利用しなければなりません。

例えばホームページの閲覧を例にとると、クライアント側はWebブラウザという「クライアント アプリケーション 」を、サーバー側はWebサーバーという「サーバーアプリケーション」を稼動させる訳ですが、この場合はどちらのアプリケーションも標準でHTTPで送受信を行うように設計されているため、特に意識しなくとも接続が成立するわけです。

ここで挙げたのは、公開サーバー運用にあたって最低限覚えておく必要のあるプロトコルのごく一部です。アプリケーション層のプロトコルには、これらの他にも非常にたくさんの種類ありますから、公開サーバーで自分が提供したいサービスの種類に応じて サーバー機 やルーターを随時設定していくことになります。

このページの先頭へ↑

ポート番号は通信の窓口

最近のパソコンは ハードウェア の性能がよくなり、 OS マルチタスク 能力も向上しています。

Windows95 MacOS9 などの古いOSはマルチタスク機能が弱かったので、そんな「強引な」扱いをしようものならば、間違いなく「フリーズ」か「爆弾」でした。

従って、例えば自分のパソコンから WAN 上の FTPサーバー コンテンツ データを送りながら、その待ち時間に Webブラウザ を立ち上げてホームページを見、その合間に電子メール送受信をする、というようなことが当たり前に行われるようになりました。

これはよくよく考えてみればすごいことです。

なぜなら、こういう作業をしている間にはネットワーク上と ホスト機 の中では色々な種類の プロトコル が入り乱れて飛び交っていることになるわけですが、 コンテンツ パケット FTPクライアント とFTPサーバーとの間を、ホームページのデータはWebブラウザと Webサーバー との間を、電子メールのデータはメールソフトと メールサーバー との間を、それぞれが 決して間違えることなく 送受信されているからです。

こういう芸当を可能にしているのが、 TCP/IP の仕組みの一つである

ポート番号

というシステムです。

ホスト機や ルーター などの通信機器には、 IPアドレス という ノード としての所在地情報、つまり「住所」に相当するものが割り当てられ、一台一台が識別される訳ですが IPアドレスの説明へ 、ポート番号はそれぞれの住所にいくつも設けられている「窓口」のようなものだと考えてください。

TCP/IPでは、サービスを要求する クライアント と、サービスに答える サーバー との間で通信が成立するには、お互いが同じ プロトコル を処理できるだけではなく、

「クライアントがサービスを要求するときのポート番号が、サーバー側で待ち受けているポート番号と一致しなければ通信は成立しない。」

という仕組みになっている訳です。

例えば、ポート番号8000番で要求を待ってるWebサーバーには、扱うプロトコルが同じWebブラウザであっても、ポート番号80番で要求しては通信は成立しません。

また逆に、ポート番号25番で要求を待っているメールサーバーに対しては、違うプロトコルしか扱えないFTPクライアントでは、同じポート番号25番で要求を行っても通信は成立しない、という訳です。

この仕組みのおかげで、通信回線とホスト機の間、あるいはホスト機の中を様々な種類のプロトコルが入り乱れても、「パケットが行き先を間違う」ということが起こらないわけです。

ポート番号は 0〜65535 番まであります。もちろん番号の大小によって通信速度などが違うということはありません。それぞれのポート番号は、それぞれが単純に違う番号を持った受け付けの窓口のようなものだと考えてください。

ただ、だからといって誰もが自分勝手に好きな番号を使ってしまうと逆に面倒が多くなります。

例えば世界中のWebサーバーが好き勝手なポート番号で受け付けを始めたら、それに接続しようとする側は、接続したいWebサーバーごとに要求するポート番号を変えなければならないことになります。

そこで、誰もがよく使う汎用性の高いプロトコルについては、原則的に使用すべきポート番号が指定されています。これを Well-Knownポート といいます

Well-Knownポートは右に挙げた以外にもたくさんありますが、そのほとんどは0〜1023番に割り振られています。

前のセクションで挙げた「公開サーバーでよく用いられるプロトコル」にはいずれもWell-Knownポートが設定されています。

プロトコルの種類 主な利用目的 ポート番号 tcp/udp
FTP ファイル転送 20,21 tcp
SSH 暗号化リモート操作 22 tcp
TELNET 非暗号化リモート操作 23 tcp
SMTP メール送信 25 tcp
domain 名前解決 53 udp
HTTP ホームページ送受信 80 tcp
POP3 メール受信 110 tcp
IMAP4 メール受信(同期) 143 tcp
HTTPS ホームページ送受信(暗号化通信) 443 tcp

インターネットでよく使われるプロトコルとWell-Knownポート

例えば、世の中のほとんどのWebサーバーは、ポート番号80番で着信を待っています。もちろん、仕組みの上では別の番号で待ち受けても構わないのですが、一般的なWebブラウザのホームページの閲覧要求はポート番号80番での要求が標準になっています。

従って「特定の人にしか見せたくないコンテンツ」を公開する目的でない限りは、80番以外で待ち受けても意味がないということになります。

ただ、Webサーバーのように「できるだけたくさんの人にコンテンツを見て欲しい」、あるいはメールサーバーのように「利用者が誰でも簡単に接続できるように」といったサービスの場合にはWell-Knownポートで待ち受けする必要がありますが、逆に「特定のユーザー(自分自身を含む)にだけ提供したいサービス」を稼動させる場合には、敢えてWell-Knownポートを利用しないほうが安全なケースもあります。

悪い人はどこにでもいるもので、ポート番号22や23は常にハッカーの「 ポートスキャン 」という不正侵入の標的にされます。この「お便利サーバー」みたいなちっぽけな公開サーバーでも、こういうポートを空けていたら一日に1,000回以上の不正侵入を受けます。もちろん、きちんとしたパスワードがかかっていれば、一応侵入は不可能ですが、それによって通信回線は無駄に利用されますし、サーバーは侵入を拒否するために余分な仕事をしなくてはなりません。

例えばサーバーの設定変更などをWAN経由のリモート操作で行いたいという場合、TELNETやSSH、HTTPなどを利用するのが一般的ですが、特にTELNETの場合には通信内容が暗号化されていないのでパスワードを傍受されやすく、馬鹿正直にWell-Knownポートの23番を使うのは情報漏洩の面から考えて好ましくありません。

こういう場合はサーバー側のTELNETサーバーの待ち受けポート番号に5982X番などの「第三者が予測し難い」ものを割り当てるのが賢い方法といえます。

また、このポート番号の仕組みを利用すれば、同じプロトコルを利用する二種類以上のサーバー アプリケーション を、ひとつしかノードを持っていないサーバー上で運用することもできます。

例えば、Webサーバーを稼動させているサーバー機では、一般にHTTP+ポート番号80番というWell-Knownポートが使われます。また、サーバーの設定をWebブラウザ上で行う"Webmin"というプログラムは、http+ポート番号10000という組み合わせでリモート設定を行います。

この二つのサーバーアプリケーションは同じプロトコルを利用していますが、接続するクライアント側がWebブラウザ上で明示的にポート番号を指定することで、ホームページを見に行ったりサーバーの設定画面を呼び出したり、ということが可能になるわけです。

さて、ポート番号は0〜65535番までありますから、現在のところはほとんどは空き番号になっています。

管理人おススメの
ネットワーク解説書です

プロトコルはその有用性と一般的な流布が認められると、 ICANN からWell-Knownポートを割り当てられ、「メジャーデビュー」ということになるわけです。

しかし、大企業や大きな事業団体などが主導して提唱するプロトコルで「最初から有用度が高い」と想定される場合には、流布を待たずにWell-Knownポートとしてスタートすることもあります。

もちろん、あまり使われないプロトコルにはWell-Knownポートが割り当てられることはありません。ただ、現在はほとんど使われることはなくなっていても、かつてはよく使われていたプロトコルの中にはWell-Knownポートが割り当てられたままになっているままのものもあります。

公開サーバーを運用する場合、このポート番号という概念はとても重要です。

例えば ルーター で特定の種類のポート番号を遮断したり( パケットフィルタリング )、普通は通過させない方向に特定のポート番号だけ通過させたり( ポートフォワーディング )、更にはルーター内でパケットのポート番号を任意に変更したり( ポート番号変換 )など、サーバーの セキュリティ と汎用性のバランスをとるためにとても重要なものです。

Linuxとネットワークの初心者にオススメです!

これはルーターだけではなく、サーバー自体を設定するためにも必要となりますので、是非ともマスターしてください。

TCPとUDP <<Previous
このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System