IP(Internet Protocol)で通信する際、同じコンピュータ内で動作する複数のソフトウェアのどれが通信するかを指定するための送受信窓口です。
1.そもそもポートとは
実際にTCPやUDPで通信を行うときは、コンピュータ(一台)という単位ではなく「プログラム単位」つまり「プロセスやスレッド単位」で通信が行われます。そのためプロセス同士、正しくデータの受け渡しをする必要があります。
この時、通信しているプロセスには「ポート番号」というものが割り振られます。プロセスやスレッドはこのポート番号を目標にして、どのアプリケーションとどのアプリケーションが通信をとっているのかを判別しています。
例として、IPアドレスを住所と例えるとポート番号は「部屋番号(何号室)」というたとえになります。コンピュータネットワーク通信において、プロトコル・IPアドレス・ポート番号を纏めて表現しますと、「どのような方法」で「どこ」の「何号室」に通信(会話)を行うのかということになります。通信に於いて重要な役目をはたすポート(番号)です。ポートを開くということは、特定の部屋の鍵を開けておくという状態と同じ事です。基本的には不必要なポートは開かない様な設定を行うべきです。
*ポートスキャン:ネットワーク上のホストの開いているポートを調査することです。ポートスキャンを行うと外部からの接続に対してオープン(開いている)ポート(扉)が特定されます。それによって滞在的な脆弱性が明らかになります。
ポートスキャンには、TCPスキャンとUDPスキャンの2種類があります。TCPを利用してポートを検査し接続が確立できるかを確認します。 UDPスキャンでは、UDPを使用してより高速にポートを検査しますが接続は確立しません。
TCPスキャンにはSYNスキャン・ACKスキャン・FNIスキャンなどの様々のタイプがあります。
・SUNスキャン:接続要求(SYNパケット)を送信して対象ホストが応答(YN-ACKパケット)を送信するかを確認します。
・ACKスキャン:RST(リセット)応答をトリガーする為に既存の接続に対してACKパケットを送信します。
・FINスキャン;接続の終了(FNIパケット)を送信して対象ホストがRST応答を送信するかを確認します。
(*)UDP:(User Datagram Protocol)
高速通信を重視する通信プロトコルです。
UDPはコネクションレス型の通信プロトコル(事前のやり取りなしで通信を開始させる)として、動画配信・音声通話・モニター監視などのリアルタイム的な分野で活用されます。
高速通信を実現した代わりに、パケットロスによる低い信頼性が出てくる。
(*)TCP:(Transmission Control Protocol)
高い信頼性で安定した通信を重視する通信プロトコルです。
TCPはコネクション型の通信プロトコル(事前のやり取りを確認した上で通信を開始させる)として、ウェブサイト閲覧・ファイル転送などのデータ完全性が求められるアプリケーションで使用されます。
安全かつ安定した高信頼性のデータ転送を実現した一方、転送速度は今ひとつで、UDPより劣っています。
2.代表的なポート番号について(その使われ方)
インターネットなどで標準的に用いられるIP(Internet Protocol)では、IPとアプリケーションごとのプロトコル(通信規約)を橋渡しするトランスポート層のプロトコルとしてTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)を用いることが多いです。
これらのプロトコルには「ポート番号」(port number)という16ビットの識別番号が組み込まれており、0番から65535番までの番号によって通信の種類や相手先の識別を行う。これにより、複数のアプリケーションで同時に通信を行い複数の相手先と同時に通信することができます。
2-1 システムポート番号(0~1023)
特定のサービスが使用するために予約されているポート番号のことを指します。0~1023番の範囲のポート番号は以前ウェルノウンポート(Well Known Ports)番号と呼ばれていましたが、今はシステムポート(System Ports)番号と呼ばれています。 その中でも0番のポートはエニーポート(any port)と呼ばれアプリケーションに対して、動的に別番号の空きポートを割り当てるために用意された特殊なポート番号です。別番号のポートの再割り当てを行わずに0番ポートとして使用することは禁止されているために、利用上では注意が必要となります。
代表的なシステムポート番号としまして。
①ポート番号 20、 21: FTP (File Transfer Protocol)
・ポート 20: データ転送
・ポート 21: コントロール (制御) コネクション
②ポート番号 22: SSH (Secure Shell)
・安全なリモートログインおよびその他の安全なネットワークサービスに使用されます。
③ポート番号 23: Telnet
・リモートログインサービス。現在ではSSHに置き換えられ、使用は推奨されません。
③25: SMTP (Simple Mail Transfer Protocol)
・電子メールの送信用に使用されます。
④ポート番号 53: DNS (Domain Name System)
・ドメイン名をIPアドレスに変換するために使用されます。
⑤ポート番号 80: HTTP (HyperText Transfer Protocol)
・ウェブサイトへのアクセスに使用されます。
⑥ポート番号 110: POP3 (Post Office Protocol version 3)
・電子メールの受信に使用されます。
ポート番号 143: IMAP (Internet Message Access Protocol)
・電子メールの受信に使用されますが、サーバ上でメールを管理するためのプロトコルです。
⑧ポート番号 443: HTTPS (HyperText Transfer Protocol Secure)
・SSL/TLSによって暗号化されたウェブサイトへのアクセスに使用されます。
⑨ポート番号 443: HTTPS (HyperText Transfer Protocol Secure)
・SSL/TLSによって暗号化されたウェブサイトへのアクセスに使用されます。
⑩ポート番号 161: SNMP (Simple Network Management Protocol)
・ネットワーク管理に使用されます。
2-2 ユーザポート番号(1024~49151)
ユーザーポート (User Ports) 番号と呼ばれている。かつては登録済みポート (Registered Ports) 番号と呼ばれていました。
IANAによって用途の受付・登録を行っていますがIANAに登録を行わずに非公式に使用しているポート番号も有る様です。
代表的なユーザーポート番号としまして。
①ポート番号3306:MySQL(データベース)
MySQLは、Webアプリケーションやゲームサーバー、オンラインストアなど、様々なWebサイト・サービスで利用されているデータベース管理システムです。
②ポート番号5432:PostgreSQL(データベース)
拡張性とSQL準拠を強調するフリーでオープンソースの関係データベース管理システム(RDBMS)です。
③ポート番号1433:Microsoft SQL Server(データベース)
Microsoft SQL Serverのデフォルトポート番号です。データベースサーバーとの通信に使用され、このポートを介してアプリケーションやクライアントからデータベースと接続します。
2-3 動的・私用ポート番号 (49152~65535)
(Dynamic and/or Private Ports) 番号と呼ばれており、IANAによる割り当てがされないポート番号となっていて、特に登録などを申請しない私的な用途や、クライアントがサーバとの通信のために一時的に占有する用途などで使用される。 一般には「エフェメラルポート」(ephemeral ports)あるいは「動的ポート」(dynamic ports)と呼ばれることが多いです。
(*)IANA(Internet Assigned Numbers Authority):インターネットに関連する識別子を管理する機構です。(IPアドレス・ドメイン名・ポート番号等の割り当て・管理をおこなっています)