こんにちは、うったむです。今日はポートについてまとめてみました。Webエンジニアを目指している人には必須のことなので理解しておきましょう!
##ポートとは何?
ポートは__受付窓口__、もしくは__ドア(扉)__、__ビルの一つ一つの部屋__と例えられることがあります。
病院にはいくつかの科があって、いろいろな症状に合わせて治療を受ける場所が異なります。
同じように、Webサーバーにも機能に応じて異なるポートが用意されています。「〜をする時にはこの受付窓口」という具合にポートが設定されています。通信に関して受け渡しの作業をしてくれます。
##機能とポート番号が決まっている
インターネットは「IPアドレス+ポート番号」で通信を行っています。さらに「よく使う機能」にはすでにポート番号が決まっています。以下のように、用途別でポートがあります。
- HTTP 80
- HTTPS 443
- SSH 22
- FTP(ファイルを送受信する) 20,21
- telnet(ほかのコンピュータを遠隔操作する) 23
クライアントがPCとかスマホでURLなどを使って、何かに接続したいとします。URLもしくはIPアドレスとポート番号から、サーバーに対して「何をしたいのか」リクエストします。
サーバーに「〜ということをしたいので処理して」とポートを選んで指示します。サーバーも役割毎に「〜は受け付けるけど、〜は受け付けない」という感じにポートを用意したり、閉じたりします。
##ポートの開放とは
大抵の場合、サーバーはどのポートを開くか、制限をかけています。
例えば、80と443、つまりHTTPとHTTPSのみ開くといった具合です。この二つだけ開放している状態を「ポートの開放」と言います。開いていないポートに対してリクエストをしても、何もできません。
サーバーの場合は、使わないポートを開くとセキュリティのリスクがあります。例えば、SSHの機能がないのに、開いておくとハッキングされる危険あります。最悪、サーバーを乗っ取られることも...
どのポートを開いているのか、使っていないポートを開いていないか確認すべきですね。
##ポートを自由に割り当てられる
よく使う機能に関してはポート番号が決まっていますが、自由にポートを割り当てることもできます。しかし注意も必要です。自由にポートを割り当てると「ポートの競合」という問題が起きる可能性あり。
一つのポートに二つの機能を割り当てると、一つの機能が動かなくなることも。機能が十分に使えないこともあるので「一つのポートに一つの機能」といった風に制限すると良いですね。
##まとめ
__ポート__とは、ネットワークにおいて「データを通信するための部屋」ということがわかりましたね。__ポート番号__は「その部屋の番号」みたいなものです。
プログラムの種類や機能によって、使うポートが異なります。通信には「IPアドレス+ポート番号」が必要だということがわかりましたね。