初心者がポート番号とは何か?を調べました【Linux】

Linux

サーバーを勉強していると、ポート番号という言葉が出てきます。
そもそもポート番号とは何か?を調べたのでメモ。

ポート番号はIPアドレスとセットで使う

まず前提として、ポート番号はIPアドレスとセットで使用するものらしいです。
パソコンは様々な通信を行うことができますが、通信ごとに約束事(プロトコル)があります。そのプロトコルごとの窓口を番号で表したものがポート番号です。

IPアドレスはマンションの住所で、ポート番号はそれぞれの部屋番号という例えがよく使われます。なるほど!分かりやすい。

ブラウザでウェブページを閲覧するだけでも、次のような通信が行われているそうですが、それぞれ別の通信(プロトコル)で行われています。なのでポート番号もそれぞれ別になります。

  1. 自身の端末にIPアドレスを割り振ってもらう
  2. 閲覧したいURLをIPアドレスに変換してもらう
  3. 目的のサーバーにアクセスしてデータをやりとりする

代表的なポート番号をまとめました

今回、代表的なポート番号とプロトコルを調べてまとめました。
ポート番号はTCPとUDPの2種類がありますが、違いをざっくりいうとこんなカンジらしいです。。

TCPの通信は送信側と受信側がお互い確認しながら行う→通信速度(遅い)
UDPの通信は送信側が送ったら送りっぱなし→通信速度(早い)

プロトコルポート番号
(サーバ宛)
SSH、SFTPTCP22他の端末を遠隔操作する。SFTPはSSHのオプション的な位置付け
FTP・FTPSTCP20・21サーバーとファイルを送受信する。
サーバとのやりとり開始は21だが、実際のファイルやりとりは20を使う。
HTTPTCP80Webサーバーに接続する。
HTTPSTCP443Webサーバーの接続を暗号化する。SSL、TLSとも呼ばれるがこちらは暗号化の仕組みのこと。
POP3TCP110メールサーバーに接続してメールをダウンロードする。
SMTPTCP25メールを相手のメールサーバーまで届ける。
DNSTCP/UDP 53URLをIPアドレスに変換(名前解決)
DHCPUDP67IPアドレスを個々の端末に自動的に割り振る。
クライアント側のポート番号はUDP68

ざっと調べただけでも、これだけ種類がありました。
ちなみにクライアント側にもポート番号がありますが、特に決まってないので空いている番号が都度割り当てられます。

サーバーでどのポートが使用されているか調べる

Linuxでどのプログラムがどのポートを使用しているか?を調べるにはlsofコマンドを使います。

$ sudo lsof -i -n -P

コマンドを入力すると次のような一覧が表示されます。

sshdはプロトコルSSHでデータのやりとりを行うための常駐プログラムです。
ポート番号22番を使用していて、現在通信可能な状態を表します。

NAME列にポート番号が表示されています。ポート番号の隣に(LISTEN)(ESTABILSHED)とありますが、それぞれ次の状態を表しています。

(LISTEN)他のコンピューターからの接続を待ち受けているポート
(ESTABILSHED)現在通信中のポート

参考サイト

SSHとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
「SSH」の意味を何となく説明しています。
ポート番号とは何ですか | GMOグローバルサイン サポート
【3分で把握】ポート番号とは?と代表的なポート番号まとめ
ポートとは、ネットワークでデータを通信するための扉のようなものだと思うとわかりやすいだろう。このページではポートとポート番号について初心者向けにわかりやすくご紹介しよう。

まとめ

今回、ポート番号についてまとめましたが、通信関係の用語は似たものが多いです。
今まで混同してましたが、SSHとSSLそしてSFTPにFTPS。これらは名前が似てますが、全く違うものでした。。

通信の仕組みが分からないと、サーバー関係の理解も進まないのでまた別の機会にまとめようと思います。

コメント