パソコンでホームページを見るときや、オンラインゲームをするときに、知らないうちにデータが送受信されています。でも、どうやって正しい情報が目的の場所に到着するんだろう?「ポート」ってネットワークの説明で時々出てくるけど、よくわからないですよね。この記事を読めば、ポートがネットワーク通信の中でどんな役割をしているのか、スッキリ理解できますよ。
- ポートはパソコンとインターネットの間の「通信口」で、データが出入りするドアのことだよ
- ポート番号で通信の種類や目的地を区別して、正しいアプリやサービスにデータを届けている
- パソコンは同時にたくさんの通信をしているので、ポートがないと大混乱しちゃうわけ
もうちょっと詳しく
ポートについて、もう少し技術的に説明すると、これはTCP/IPというインターネット通信の決まりで定められた仕組みです。つまり、世界中のパソコンが同じルールでデータをやり取りしているから、どのパソコンでも正しく通信できるわけです。ポート番号は0から65535までの65000個以上あって、それぞれに役割が決まっています。1から1023番まではウェルノウンポート(つまり、有名で決まったポート)で、2048番以上は自由に使えます。
ポート番号は「どの種類の通信か」を示す標識みたいなもの。世界のルールで決まってるから、どのパソコンでも同じ意味になるんだ。
⚠️ よくある勘違い
→ それはUSBポートなど「ハードウェアポート」で、ここで言うポートはデータの「通信口」という目に見えない概念。似た名前ですが全く別ものです。
→ インターネット通信の際に、どのアプリやサービスにデータを渡すか判断するための番号制度。ソフトウェアの世界でのみ存在します。
[toc]
ポートってなに?基本から理解しよう
ポートは「通信の窓口」
ポートをかんたんに説明すると「パソコンとインターネットをつなぐ通信口」です。パソコンがインターネットでデータを受け取るときや送るときに、必ずこのポートを通過します。目に見えないし、パソコンの背面の物理的な穴でもありません。これは、パソコンの中で動いているプログラムが、外部とやり取りするための「仮想的な窓口」だと考えてください。
たとえば、あなたがアマゾンでショッピングしているとします。同時に、YouTubeでも動画を見ているかもしれません。これらのデータは全部、パソコンのネットワークカードというデバイスを通ります。でも、ショッピングサイトのデータと動画のデータが混ざったら大変ですよね。だからポートという「振り分け番号」が必要なんです。
ポート番号の仕組み
ポートには番号がついています。これをポート番号といいます。0から65535までの約65000個のポート番号があって、それぞれ違う用途に使われています。簡単に言うと「メールはこのポート、ウェブサイトはこのポート」という風に、あらかじめ決まっているんです。
よく使われるポート番号をいくつか例に出すと、ウェブサイト(HTTP通信)は80番、安全なウェブサイト(HTTPS通信)は443番、メール送信は25番、メール受信は110番です。パソコンのプログラムはこの番号を見て「あ、この通信はウェブサイトだ。ブラウザに渡そう」と判断するわけです。
複数の通信が同時に動く理由
あなたがパソコンを使うときって、複数のアプリを同時に開いていますよね。YouTubeを見ながらLINEをして、裏ではメールが受け取られている。こんなことが可能な理由が、ポート番号の存在です。
パソコンの側から考えると、「YouTubeからのデータはポート443で、LINEからのデータはポート443で、メールはポート110で」と、複数の通信が異なるポート番号で同時に進行しているわけです。だからデータが混ざることなく、正しいアプリに届くんです。これがなかったら、パソコンはどのデータをどのアプリに渡していいか分からなくなってしまいます。
ポート番号の役割と種類を詳しく知ろう
ウェルノウンポート(決まったポート)
インターネットの世界には、世界中で使われている標準的なポート番号があります。これをウェルノウン(有名な)ポートと呼びます。0番から1023番までがこれに当たります。
具体例を挙げると、こんな感じです。ポート80はHTTP通信(普通のウェブサイト閲覧)に使われます。ポート443はHTTPS通信(安全なウェブサイト、つまり鍵マークのサイト)に使われます。ポート21はFTP通信(ファイル転送)に使われます。ポート25はSMTP(メール送信)に使われます。ポート110はPOP3(メール受信)に使われます。
これらのポート番号は、世界中のパソコンやサーバーが同じルールで使っているから、日本のパソコンもアメリカのサーバーも、同じ番号で同じ種類の通信をすることができます。これがインターネットが世界規模で動いている秘密の一つです。
登録済みポートと動的ポート
1024番以上のポート番号は登録済みポートと動的ポートに分かれます。1024番から49151番までが登録済みポート。つまり、特定のソフトウェアやサービスが使用登録されているポートです。たとえば、データベースの有名なソフト「MySQL」は3306番を使います。
49152番から65535番までが動的ポート(つまり、自由に使えるポート)です。これらのポートは、パソコンが一時的に通信を建立するときに、勝手に割り当てるポート番号です。たとえば、あなたがYouTubeにアクセスするときに、パソコンが自動的に「今回はポート54321番を使おう」と決めるわけです。これを覚えておくと、ネットワークの設定で戸惑うことが少なくなりますよ。
ローカルポートとリモートポート
ポート番号の話をするときに、ローカルポートとリモートポートという言葉が出てきます。ローカルポートはあなたのパソコン側のポート、リモートポートはネット上のサーバー側のポートです。
イメージとしては、友だちに手紙を送るときに「自分の住所と相手の住所の両方が必要」なのと同じ。あなたのパソコンがサーバーに通信するときに「あなたのパソコンのポート番号」と「相手のサーバーのポート番号」の両方が必要になります。だから、ネットワークの設定で何か問題が起きたときに「ポート接続テスト」というのをやるんです。これはサーバーの特定のポートに接続できるか試すテストなんですよ。
有名なポート番号を知ろう
ウェブ閲覧に関連するポート
毎日のようにアクセスしているウェブサイトは、実は決まったポート番号で通信しています。ポート80(HTTP)とポート443(HTTPS)がメインです。
ポート80は古い時代から使われていた標準的なウェブサイト通信です。でも、データが暗号化されないので、今はあまり使われません。かわって、ポート443のHTTPS(Secure版のHTTP)が主流になっています。HTTPSは「ハイパーテキスト・トランスファー・プロトコル・セキュア」の略で、つまり、安全な暗号化されたウェブサイト閲覧ってことです。ブラウザのアドレスバーで鍵マークが表示されているサイトはほぼ全部、ポート443で通信しています。
意外かもしれませんが、WWW(ウェブサイト)以外にも、FTPというファイル転送プロトコルがあります。これは大きなファイルをアップロード・ダウンロードするときに使うもので、ポート21を使います。ブログの記事をアップロードするときなんかに使われます。だから、ウェブサイトの制作者は「ポート21とポート80(または443)を両方知っておくといいな」というわけです。
メール関連のポート
メールの送受信にも、決まったポート番号があります。SMTP(ポート25、587、465)がメール送信で、POP3(ポート110)とIMAP(ポート143、993)がメール受信です。
ポート25はメールサーバー間での通信に使われます。あなたのパソコンからメール送信するときは、セキュリティの理由でポート587を使うことが多いです。ポート465はメール送信の新しい標準で、最初から暗号化されています。メール受信は、ポート110のPOP3(古い方式)か、ポート143のIMAP(新しい方式)を選べます。IMAPなら、スマホやパソコンで同じメールを見ても、既読状態が同期されるので便利です。
その他のよく見かけるポート
SSH(セキュアシェル)はポート22です。これはサーバーにセキュアに接続するときに使います。プログラマやシステム管理者がサーバーを遠くから操作するときに使うやつです。MySQL(データベース)はポート3306、PostgreSQL(別のデータベース)はポート5432、DNS(インターネットの住所帳みたいなやつ)はポート53です。
こういった番号を全部覚える必要はありませんが「ああ、こういう通信の種類があるんだな」くらいの感覚で大丈夫。ネットワークの設定で何か問題が起きたときに「あ、ポート80を開かなきゃいけなかったんだ」って思い出すレベルで十分です。
ファイアウォールとポートの関係を理解しよう
ファイアウォールがポートをコントロール
パソコンやネットワークを守るファイアウォールという仕組みがあります。これは「壁」という意味で、不正なアクセスから守るシステムです。ファイアウォールの主な役割は「どのポートを開くか、閉じるか」をコントロールすることなんです。
たとえば、あなたのパソコンに「悪い人からのアクセスをブロックしたい」ってときに、ファイアウォールは「ポート80と443は開いてOK(ウェブサイト閲覧できる)だけど、それ以外はブロック」みたいに設定します。これで、不要な通信は入ってこないし、セキュリティが守られるわけです。
Windows のパソコンにはファイアウォールが元々付いています。あなたが新しいアプリをインストールしたときに「このアプリをファイアウォール経由で許可しますか?」って聞かれることがあるでしょ。あれはつまり「このアプリがネットワーク通信をするときに使うポートを開きますか?」って意味です。許可すれば、そのアプリが必要なポートが開放されて、通信できるようになります。
ポートの開閉について
ファイアウォールの設定では「ポートを開く」「ポートを閉じる」という言い方をします。ポートが開いているというのは「通信ができる状態」で、閉じているというのは「通信がブロックされる状態」です。
具体的には、あなたがゲーム会社のサーバーでオンラインゲームをしたいなら、ゲームが使うポート(たとえばポート3000)を開く必要があります。学校のネットワークでは、セキュリティのために多くのポートが閉じられていて、ウェブサイト(80番や443番)しか開いていないことが多いです。だから学校のパソコンでは、特定のゲームができないとか、アプリが動かないってことが起こるんです。
会社や公共施設のネットワークで「なぜか特定のアプリが使えないんだ」って経験をしたことがあったら、その原因は「必要なポートが管理者によって意図的に閉じられている」の可能性が高いです。これは不便に見えるかもしれませんが、セキュリティを守るためには大切な設定なんですよ。
ポート転送とプロキシ
ネットワークの設定でさらに進んだ話になりますが、ポート転送とプロキシという仕組みがあります。ポート転送は「ポートA来た通信をポートBに転送する」という設定です。たとえば、ルータ(家のWi-Fiの親機)が「ポート8080に来たデータをポート80に変換してパソコンに送る」みたいなことをします。
プロキシは「仲介人」という意味で、あなたのパソコンがサーバーと直接通信せず、間に別のパソコンを挟んで通信する仕組みです。セキュリティが強い会社のネットワークでは、プロキシサーバーを通さないとインターネットに繋がらないように設定されていることがあります。これらの話は少し難しいですが「ポートをコントロールする高度な方法がある」くらいの理解で大丈夫です。
ポートの安全な使い方を学ぼう
セキュリティとポートの関係
ポートのセキュリティというのは、主に「不要なポートを閉じて、不正アクセスを防ぐ」という話です。あなたのパソコンを守るために大切なポイントが3つあります。
1つ目は「使わないポートは閉じる」です。インターネット接続に必要なのはポート80と443くらいです。それ以外のポートを開いておく理由がなければ、全部閉じてしまっても大丈夫。ただし、セキュリティソフトのアップデートとか、OSのアップデートには別のポート(たとえばポート123)を使う場合もあるので、完全に全部閉じるのは難しいですが、基本的には「使ってないポートは閉じる」が鉄則です。
2つ目は「通信は暗号化されたものを使う」ということです。ポート80のHTTPは暗号化されていませんが、ポート443のHTTPSは暗号化されています。メールの受信も、ポート110のPOP3より、ポート993のIMAPS(暗号化版)の方が安全です。パスワード入力が必要なサイトは、必ず暗号化された通信(HTTPSやIMAPS)を使いましょう。
3つ目は「怪しいポート接続要求を知る」ということです。マルウェア(悪いプログラム)がパソコンに感染すると、変な通信をしようとします。その時にファイアウォールが「このアプリはポート5555で通信しようとしていますが、許可しますか?」って聞いてきたら、知らないアプリなら「いいえ」を選びましょう。
ホームネットワークとポート開放
自分の家でホームネットワークを構築する場合、ポート設定が重要になります。家のWi-Fi(ルータ)でゲームのサーバーを立てたいとか、NASというファイルサーバーを使いたいというときに、ポート開放が必要になるんです。
ただし、ポート開放は「外からのアクセスを許可する」という意味なので、セキュリティが低下します。だから、ポート開放するときは「本当に必要か」を考えて、必要なポートだけを開くようにしましょう。また、ルータの管理画面で設定するとき「デフォルトパスワードを変更する」とか「ファイアウォールを強化する」みたいなセキュリティ対策も必須です。
職場やサーバー運営でのポート管理
会社のサーバーやウェブサイトを運営する人たちは、ポート管理をすごく大事にしています。ウェブサーバーはポート80と443だけ開いて、他のポートは全部閉じます。これで、不正アクセスの窓口を最小限にするわけです。
さらに進んだセキュリティでは「ポート番号の標準値を変える」という手段も使われます。たとえば、SSHを通常のポート22ではなく、ポート2222に変更するみたいなやつです。これをすることで「自動攻撃ツールが標準的なポート番号で攻撃できなくなる」という効果があります。大規模なサーバーを運営する人たちは、こうやって日々、セキュリティと利便性のバランスを取りながら、ポート設定をしているんですよ。
