背景
SeleniumのwebDriverを使用する機会があり、そのなかでPort番号を指定するオプションがありました。最初はなんとなく、「PCとネットワークを接続するのに必要な設定」くらいにしか思っていなかったのですが、「なぜ、Port番号を指定していないとwebDriverで接続できないんだろう」、「一度接続したchromeを閉じ、同じPort番号で開いたchromeは接続できるのか」など、いくつかの疑問がわきました。
そこで、ひとまずPort番号について整理し、それからwebDriverの仕様について調べようと考えました。
※Port番号はとても基礎的なことのため、詳細に解説してくれているサイトや本は多いです。今回は、自分のなかで整理したかったこと、そして久しぶりにブログが書きたかったため、投稿しました。
目的
Port番号とは何かを説明できるようになる。
結果
- プログラムやサービスで情報を交換するために使用される論理接続(Logical connection)
- コンピューターやサーバー上の、どのプログラムやサービスが使用されるかを明確に決定するもの
IPアドレスを用いてネットワークに接続されたコンピューターのための、コミュニケーションエンドポイント
インターネットやその他のネットワークのメッセージがサーバーに到着した際に、その転送先となる過程(process)を識別するための方法です。ネットワークに接続された全ての機器は、番号が割り振られた標準化されたポートを備えています。
3つのサイトで調べた結果を載せました。1つ目のPowerCert Animated Videosは、10分ほどの動画で解説してくれており、イメージがつきやすいです。ただ、上記の定義でいうと、TechTargetが一番しっくり来ております。

Port番号について、自分の理解を模式図にしました。
例えば、僕がこのブログを見るとき、IPアドレスとPort番号を指定して、サイトを開きます。IPアドレスは、サイトを構成するResource(HTMLやJavaScript, 画像など)を置いているサーバーの位置を示しており、Port番号は、そのサーバー内でメッセージを転送するProcessを識別するためのものとなります。
あれ、URLもserverを識別するためのものじゃなかったっけ?という気がしますが、たしかURLはIPアドレスとPort番号の紐づけされているはず。DNSとか。。そのあたりは来週調べて追記しておきます。
あとは、Processって何だろう。server内の何かを識別しているのはわかるんだけど。。。
まとめ
Port番号は、”ネットワークを介してメッセージがサーバーに到着した際に、その転送先となる過程(process)を識別するための方法”です。
付録
EndPoint
エンドポイントは、リモートコンピューティングデバイスであり、デバイスが接続されているネットワークと通信を行います。
paloalto networks, “What is an Endpoint?“, 拙訳
コメント