ポート番号とはなにか?
おはようございます。またはこんにちは。もしくはこんばんわ。マゲっちSCと申します。中秋の名月が終わりまた月は欠けていきます。来月の中旬頃にはまた満月が巡ってきます。今月と来月は台風の月でもありますので気をつけていきたいところですね。さて2021年9月23日秋分の日を迎えました。今日は全国的に秋晴れの1日となりそうですね。暑さ寒さも彼岸までとは申しますが、お彼岸を過ぎてもまだしばらくは暑さが残りそうですね。
さて前回のブログでは主要な通信プロトコルについてお話をしました。TCP/IPにUDPなどの情報の投げ方を司るプロトコルやHTTP、POP3などのウェブサイトやメールの受信を行うプロトコル。SMTPというメール送信プロトコル。FTPというファイルを転送するためのプロトコルもありました。今回はそのお話をさらに深堀りしていきます。その前に皆さんに思い出していただきたいのがOSI参照モデルです。実は今回お話する内容はOSI参照モデルと密接な関係があります。OSI参照モデルがわからないという方はこちらを先にお読みいただいてある程度の基礎知識をつけておいてください。
OSI参照モデルに基づく通信プロトコル
それではポート番号のお話をする前に各通信プロトコルがOSI参照モデルのどこに該当するのかを確認しておきます。まずTCPとUDPですが、この2つは通信方式を司っているため、OSI参照モデルでは第4層トランスポート層に当たる通信プロトコルです。TCPとセットになっているIPに関してはOSI参照モデル上では第3層ネットワーク層の扱いであり、TCPが通信相手の状況を掴む際にIPアドレスで相手の宛先を特定します。UDPは相手の状況を把握する必要はありません。続いてHTTP、SMTP、POP3、FTPに関してはTCPやUDPよりも上の層になります。つまり第4層より上ですから第5層~第7層に関して扱う部分になります。実は第5層のセッション層、第6層のプレゼンテーション層、第7層のアプリケーション層に関しては現在はアプリケーション・ソフトウェアでコントロールできます。役割は分かれていますが、プログラム上でコントロールできるのです。各通信プロトコルに対応したデータを書くソフトウェア上で変換して展開します。HTTPを使えばハイパーテキストファイルとそれにつけられている画像ファイルなどを表示したり、メールであればメールソフト上で文字や画像ファイルとして表示したり、添付されたファイルを転送したりできます。
ポート番号について
さて、以上の前提知識を踏まえていよいよポート番号についてのお話になります。とはいっても物理的にコンピュータやWi-FiルータなどのLANポートに番号が振られているわけではなく、目視で確認できるものではありません。いわゆる概念的なものです。ポート番号についてはIANAという団体が管理しています。ポート番号は0番から始まり65535まであります。16ビットの整数で管理されています。ここで勘の良い方であれば「ん?」と思うかも知れません。TCP/IPの通信プロトコルがあればどのコンピュータからサーバに対してアクセス要求があったかが特定できるはずですよね。しかし実はインターネットというものは実に様々なサービスが裏で動いています。例えばウェブサイトのウェブページ閲覧を行いたい場合、通信端末側ではウェブブラウザというプログラムを使用します。その端末のウェブブラウザからウェブサーバ側に通信要求を出す場合以下のようになります。皆さんの通信端末側は「◯◯のウェブページ情報を192.168.0.1のIPアドレス上にある80番ポートへ送り返してくれ」。ウェブサーバ側は「了解した。同IPアドレス上の80番ポートに◯◯のウェブページ情報を返信する」というやり取りがなされて、ウェブサーバから皆さんの通信端末に対してデータが送られてきます。オンラインゲームの場合は例えばですがみなさんの通信端末が「192.168.0.1上の☓☓というゲームソフトに現在のサーバの状況を送信してほしい。ポート番号は16775番」。するとゲームサーバは「了解した。同IPアドレス上の16775番ポートにゲームサーバの状況を送信する」となります。あとはみなさんの通信端末内にインストールされているゲームのクライアントソフト側でその情報をもとにCGを表示したり動かしたり、BGMを変更したりSEを鳴らしたりしているわけですね。
ウェルノウンポートについて
ポート番号は0~65535番まであり実はどの番号を使っても通信端末側とサーバ側がポート番号を把握していればインターネットを利用した通信は可能です。しかし、各メーカーがそれぞれ適当な番号をあげて、その番号で好き勝手に通信を行うとどうなるでしょうか?答えとしては「通信できません」ということになると思います。IPアドレスまでは特定できるので、各住所までにはデータは到達しています。しかしそこの住人が郵便物が郵便受けに入るというルールを知らなかった場合、そこの住人は永遠に郵便物を受け取ることができないことになります。同じように小包の受け取り方を知らなければ持ってきてもらった荷物を受け取れません。受け取り方は人同士のやり取りであれば配達者や知り合いから教えてもらえますが、コンピュータの世界では教えてもらうことはできません。結果として端末まで届いていても画面に表示できないはずです。つまり、80番のポート番号に送る内容を81番に送っても画面に出ない可能性が高いわけです。よく使うポート番号は標準化して通信を円滑に行えるようにしておかなければなりません。そこでIANAという組織を作り、IPアドレスやポート番号を一元管理するようにしているわけです。
その中でもウェルノウンポートというものが存在していて、これはIANAで国際的に決められた予約済みの通信ポート番号となります。先ほどHTTP通信で80番ポートを指定していましたがこの番号もIANAで管理されて予約済みです。そして、各通信プロトコルはTCP専用のものとUDP専用のもの、TCPでもUDPでも使用可能なものに分かれています。ウェルノウンポートの番号は0~1023番までです。1024番から65,535番以内の番号は各メーカーでそれぞれ任意に通信ポートとして利用するかどうかを決めることができます。その中でもよく使われるポート番号と通信方式を組み合わせて紹介します。
FTP
FTPはファイル転送を行う際に使用する通信プロトコルですが、通信方式はTCPとなっています。ポート番号は20番と21番です。どちらを使用しても問題はありません。
POP3
続いてメール管理と受信を行うPOP3です。通信方式はTCPを使います。使用するポート番号は118番となっています。POP3プロトコルを使ってメールの受信を行う場合はメールサーバもリクエストを出す通信端末も118番ポートが空いていないと結果としてメールを受信できません。
IMAP
メールを受信するためのプロトコルですが、POP3とは別の方式です。ポート番号はIMAP4では143番。IMAPS(暗号化して使う場合)では993番を使用します。
HTTP
インターネット上のウェブページを扱う際に使用するポート番号です。通信方式はTCPとUDPです。80番を使用しています。暗号化してやり取りを行うhttpsは443番を使用します。
SMTP
メールの送信を行う通信プロトコルです。通信方式はTCPとUDPです。ポート番号は25版を使います。
DNS
DNSとは名前解決に使う通信プロトコルですが、こちらもポート番号が設定されており、通信端末かポートを開けていないとhttpから始まるウェブアドレスを打っても目的のサーバに到達することはできません。ポート番号は53番を使います。通信方式はTCPとUDPです。
その他NTPやてTelnetなどの通信プロトコルもありますが、通常の使い方であれば使用することはまずありませんのでここでは割愛します。
ファイアーウォール
最後にファイアーウォールについてお話させていただきます。皆さんもファイアーウォールという単語は聞き覚えがあるのではないでしょうか?その名の通り「炎の壁」。激しく燃え上がる炎で壁を作っているイメージです。最近ではウィルス対策ソフト内に簡易的に設けられているものや細かい設定が可能なものまで様々ですが、代表的なものといえばWindowsファイアーウォールでしょうか。このファイアーウォールとは一体何をしているものなのでしょうか?簡単に言えば不正アクセス防止のためのシステムです。WindowsXPのSP2から導入され、ファイアーウォールという名前が有名になるきっかけになりましたが、同時にWindowsに対してかなり不評を買ったシステムでもあります。
というのも、Windowsファイアーウォールが初めて導入されたとき、インターネットエクスプローラ6やアウトルックエクスプレスというWindowsXPに標準搭載されているインターネットブラウザやメーラー(メールソフト)、追加でインストールするマイクロソフトオフィススイート(ワードやエクセル・パワーポイントなどが集められたソフト)以外のソフトのほとんどはこのWindowsファイアーウォールに引っかかって通信不可能となりました。なぜこのような自体になったのかということですが、Windowsファイアーウォールは基本的にすべての通信ポートを遮断するからです。マイクロソフト製のソフトウェアに関しては基本的に例外扱いとなっており、WindowsファイアーウォールをONにしても通信可能だったのですが、マイクロソフト社以外のソフトは基本的に自動で例外扱いにはならず、インターネットから切り離されてしまいました。
回避策としてはファイアーウォールを設定していても通信が可能になるようにソフトウェア単位で例外をWindowsファイアーウォールに設定するか、ポート番号を指定してファイアーウォールに通信用の穴をあける必要がありました。そこで先ほどお話したウェルノウンポートのうちよく使う通信プロトコルの番号を手動で例外指定したわけです。また、ソフトウェアによってはどの通信ポートを使用しているのかがわからないものもあるため、ソフトウェア単位で例外をWindowsファイアーウォールへ設定します。ソフト単位で例外を設定することでユーザ側がどのポート番号を開けなければならないのかを把握していなくても、ソフトで使用しているポートが自動で開くため、ソフトメーカーに対して連絡しなくてもいいというわけですね。Windows10ではサードパーティ製の(マイクロソフト社製以外の)ソフトでもファイアーウォールを通過して通信可能になっています。おそらくインストール時にWindowsファイアーウォールに対して例外登録を自動で行っているのではないかと思います。
まとめ
現在のインターネット環境は基本的にWi-Fiルータを使用しているため、不正アクセスに関してはWi-Fiルータにパケットが到達してもよっぽどのことがない限りは家庭内のネットワークに侵入できないようになっています。NATがIPアドレスをグローバルIPアドレスからプライベートIPアドレスへ変換しますが、NATというものはこちらからリクエストした通信の返信以外はすべて遮断します。Wi-FiルータのNATテーブルにはグローバルIPアドレスとプライベートIPアドレスがそれぞれ管理されていて、変換処理を行っています。つまり不正アクセスのような一方的にこちらへ来る通信はすべて遮断できます。Wi-Fiルータが実質ファイアーウォールを兼任しているわけです。仮にWi-Fiルータを突破されてもPCにファイアーウォールが搭載されていればPC側でも不正アクセスを遮断できます。まさにスキを生じぬ二段構えとなっているため、現在ではデジタル上でなにか問題を起こすのは非常に難しくなっているわけです。その代わり増えてきているのがなりすましですね。なりすましに関してはネットワーク上のセキュリティではなく、ユーザの人生経験によって危険かそうでないかを決定します。そのため人生経験が少ない若者や、ネットワーク上のルール(ネチケットなど)を把握していない人たちがターゲットになってしまうことが多いのです。実はアナログな手段の方が今は見破りにくい状況になっているわけですね。皆さんもお気をつけください。
それでは次回ですが、文字コードに関してのお話となります。標準化されているのは何も通信プロトコルやポート番号だけではありません。文字記号や英数字、特殊記号や絵文字もほとんどの場合は標準化されています。ご興味がありましたらまたお立ち寄りください。それでは失礼いたします。
この記事が気に入ったらサポートをしてみませんか?