ポート番号関連

ポート番号

実際TCPUDPで通信を行うときは、コンピュータ一台という単位ではなく「プログラム単位」つまり「プロセスやスレッド単位」で通信が行われる。そのためプロセス同士、正しく受け渡しをする必要がある。このとき通信しているプロセスには「ポート番号」というものが割り振られる。プロセスやスレッドはこのポート番号を目印にして、どのアプリケーションとどのアプリケーションが通信をとっているのかを判別することになる。

IPアドレスを建物の住所に例えるなら、ポート番号は「部屋の番号は何号室か?」という例えになる。コンピュータネットワークにおいて、プロトコルIPアドレスとポート番号はまとめると、「どのような方法」で「どこ」の「何号室」に通信をとるのか?という形にいいかえることが出来る。それぞれ「どの様なプロトコルがどの様なポート番号で運用されるのか?」代表的な例をあげると次のようになる。

ポート番号 名称
TCP 20 FTP (データ)
TCP 21 FTP (制御)
TCP 22 SSH
TCP 23 Telnet
TCP 25 SMTP
UDP 53 DNS
UDP 67 DHCP(サーバ)
UDP 68 DHCP(クライアント)
TCP 80 HTTP
TCP 110 POP3
UDP 123 NTP
TCP 443 HTTPS


ウェルノウンポート番号

ポート自体は0から65535まで存在するが、そのなかでも0~1023までを「ウェルノウンポート番号」という。これらはIANAという団体により管理されている。TCP/IPUDPにおいて通信で利用されるポート番号のうち、メジャーなサービスやプロトコルが利用するために予約されているポート番号のことである。80がHTTP、22がSSHとあるように、メジャーなサービスはポート番号が一般的に決め打ちされている。

レジスタードポート番号

ポート番号1024~49151もIANAで管理されている。特定のアプリケーションなどが使用することになっているポート郡である。IANAが登録を受け付け、公開している。

その他のポート番号

49152~65535はユーザが自由にとりあつかえるポート番号となっている。IANAに登録をする必要もない。ポート番号に関しては、実際どのサービスをどのポートで動かすかという絶対的な決まり事が存在するわけではないので、任意で管理、わりふって使用することも出来る。

lsof

lsof(エルエスオーエフ)コマンドは"list open files"の意味であり、多くのUnixオペレーティングシステムで、オープン中のファイルやそのファイルをオープンしているプロセスのリストを出力するコマンドである。lsofの出力は以下の内容を表している。

そのファイルをオープンしているプロセスのID(PID)
そのプロセスのグループID(PGID)(オプション)
親プロセスのプロセスID(PPID)(オプション)
プロセスが実行しているコマンド
プロセスのオーナー
プロセスが使用している、実行中のテキストファイルおよび共有ライブラリを含む、すべてのファイルのそれぞれに対して以下の項目を表示する
可能なら、そのファイルのファイル記述子の数
ファイルのアクセスモード
ファイルのロック状態
ファイルのデバイス数
ファイルのinode数
ファイルのサイズまたはオフセット
ファイルが格納されているファイルシステムの名前
ファイルのパス名の利用可能なすべてのコンポーネント
ファイルのストリームコンポーネントの名前
ファイルのローカルおよびリモートのネットワークアドレス
ファイルのTLIネットワーク(主にUDP)の状態
ファイルのTCPの状態、読み込みキューの長さ、および、書き込みキューの長さ
ファイルのTCPウィンドウの読み込みおよび書き込みの長さ(Solarisのみ)
その他のファイルまたはファイルタイプ固有の値


netstat

netstatは、ネットワーク接続、ルーティングテーブル、各種ネットワークインタフェースの統計情報などを表示するコマンド行ツールである。ネットワークに関わる問題を探したり、トラフィック量を調べて性能を測定するといった用途に使う。

ルーティング

ルーティングあるいは経路制御とは、データを目的地まで送信するために、コンピュータネットワーク上のデータ配送経路を決定する制御の事である。OSI参照モデルネットワーク層(第3層)の中継機器がこの制御を担っている。ルーティングを行うための通信プロトコルを「ルーティングプロトコル」という。経路が判明すれば、その経路に沿って、発信元から最終的な受取先へ、結節点またはノード(ここではルータと呼ばれる)を経由しながら転送を繰り返して情報が送られる。

情報はパケット(小包の意。データをある程度の量ずつに小分けして送信する、その一単位)として送られ、各パケットには論理的なアドレスが付加してある。各ルータはルーティングテーブルという表を保持しており、この表に従ってパケットの転送先を決定する。

ルーティングテーブル

コンピュータネットワークにおけるルーティングテーブルとは、ルーターやネットワーク接続されたコンピュータが持つ、個々のネットワークの宛先への経路の一覧を保持しているテーブル状のデータ構造である。

ss

「ss」コマンドは、ネットワーク通信で利用する「ソケット」についての情報などを出力するコマンドで ある。従来はnetstatコマンドが使用されていたが、現在はssコマンドへの移行が進んでいる。

ソケット

インターネットはTCP/IPと呼ぶ通信プロトコルを利用するが、そのTCP/IPをプログラムから利用するには、プログラムの世界とTCP/IPの世界を結ぶ特別な出入り口が必要となる。 その出入り口となるのがソケット(Socket)であり、TCP/IPのプログラミング上の大きな特徴となっている。ソケットを介してデータを送受信 するときにはファイルの入出力と同じ要領で行うことができる。つまり、送信したいデータをソケットに書き込むと通信相手のコンピュータのソケットに届く。また、受信はソケットからデータを読み出せば良い。