インターネットの話題とかでときたま出てくる「ポート」。何気なく80とか443とか8080とか話題に出てなんとなく重要っぽいけど、別に知らなくても何とかなるやつです。
IPアドレス
ポートとセットで必ずと言っていいほど出るのがこのIPアドレスです。
IPアドレスとは一言でいうとインターネットで利用される住所です。(よく使われるたとえですが……)
これは、ネットに繋がったコンピュータがネット上のどこにあるかを識別する数値です。
IPアドレスを管理しているところ等々からそのIPアドレスが実際どのコンピュータのことなのかお伺いを立てることでデータのやり取りが出来ます。
ポート
IPアドレスはコンピュータを識別する為のもでしたが、ではポートが何かというと、コンピュータの中でのどのアプリとデータをやり取りするかの識別です。
例えば、WEBとFTPの機能を持ったサーバーがあるとします。このサーバーに対して通信を行うと、サーバー側はWEBとして返事すべきか、FTPとして返事すべきかを判断する必要があります。
この判断する方法がポートです。
ポートはサーバー側ではなくWebサービスを利用する側ももちろんあります。でないとサーバーからの返事がどのアプリ宛の返事かわかりません。
実は通信を開始する側のポートはランダムに決まります。その時使われていないポートから1つ適当に選んでそれを通信ポートとして使います。
サーバーに通信する際にその選ばれたポートをセットで送って、返信はこのポート宛にしてください。というデータを付与しています。
普段ネットサーフィンやらする分にはポートなんて意識したことはないとは思います。
これは、特にポートを指定しないときは各サービスの種類ごとに基本の数値を決めておこうという取り決めがあるためです。
例えばhttp通信であれば80、https通信であれば443といった風です。
まとめるとIPアドレスでコンピュータ、ポートでアプリを識別です。
番外:ping
pingという、ネットワークの状態を見るときによく使われるものがあります。
これにはポートという概念が存在しません。というのもこのpingはコンピュータ同士の通信をするシステムで実装されたものだからです。
ポートはさらに上位のアプリ同士が通信するシステムのものです。
ネットワークの世界ではこのようにいくらかの段階に分けて実装されています。(コンピュータ同士の通信システムがあって、それを基本にしてアプリ同士の通信がある)
この段階をOSI参照モデルとか言ったりします。
番外:IPv4とIPv6
ポート同様にネットでよく話に出るのがIPv4とIPv6。これはすごく簡単に言うとIPv4では数値の桁数が足りなくなったのでIPv6で桁数を増やそうという話です。
日本でも郵便番号が桁数不足で増やしたアレみたいなものです。
IPv4は約4億位のコンピュータを識別できます。
日本では約5500万世帯(2016年現在)ありますので、そのすべての世帯がネットに契約するとその段階でもう1/8のIPアドレスが使用されていることになります。
これに各企業、アメリカだの中国だのの諸外国を入れるとWEBサービスを利用する側だけでかなりの数のIPアドレスが必要なことが分かります。
勿論WEBサービスを提供する側もIPアドレスは必要なのでその内足りなくなる……というのは言われ続けています。(IPアドレスを管理している大元ではすべて使い切ってしまいました。各プロバイダやらはこれにIPv4のままで対応する為にいろいろ工夫していると思います。)
その結果出てきたのが桁数を大幅に増やそうというIPv6です。こっちは約340澗位(万億兆京垓𥝱穣溝澗の順番です)のコンピュータを識別できるまで桁数を増やしました。これによってまずIPアドレスが枯渇するのはないだろうと言われています。
v4からv6へ移行するのは割と面倒なので、イマイチ移行が進んでいる感じはしませんが……