サーバーを勉強していると、ポート番号という言葉が出てきます。
そもそもポート番号とは何か?を調べたのでメモ。
ポート番号はIPアドレスとセットで使う
まず前提として、ポート番号はIPアドレスとセットで使用するものらしいです。
パソコンは様々な通信を行うことができますが、通信ごとに約束事(プロトコル)があります。そのプロトコルごとの窓口を番号で表したものがポート番号です。
IPアドレスはマンションの住所で、ポート番号はそれぞれの部屋番号という例えがよく使われます。なるほど!分かりやすい。
ブラウザでウェブページを閲覧するだけでも、次のような通信が行われているそうですが、それぞれ別の通信(プロトコル)で行われています。なのでポート番号もそれぞれ別になります。
- 自身の端末にIPアドレスを割り振ってもらう
- 閲覧したいURLをIPアドレスに変換してもらう
- 目的のサーバーにアクセスしてデータをやりとりする
代表的なポート番号をまとめました
今回、代表的なポート番号とプロトコルを調べてまとめました。
ポート番号はTCPとUDPの2種類がありますが、違いをざっくりいうとこんなカンジらしいです。。
TCPの通信は送信側と受信側がお互い確認しながら行う→通信速度(遅い)
UDPの通信は送信側が送ったら送りっぱなし→通信速度(早い)
プロトコル | ポート番号 (サーバ宛) | |
SSH、SFTP | TCP22 | 他の端末を遠隔操作する。SFTPはSSHのオプション的な位置付け |
FTP・FTPS | TCP20・21 | サーバーとファイルを送受信する。 サーバとのやりとり開始は21だが、実際のファイルやりとりは20を使う。 |
HTTP | TCP80 | Webサーバーに接続する。 |
HTTPS | TCP443 | Webサーバーの接続を暗号化する。SSL、TLSとも呼ばれるがこちらは暗号化の仕組みのこと。 |
POP3 | TCP110 | メールサーバーに接続してメールをダウンロードする。 |
SMTP | TCP25 | メールを相手のメールサーバーまで届ける。 |
DNS | TCP/UDP 53 | URLをIPアドレスに変換(名前解決) |
DHCP | UDP67 | IPアドレスを個々の端末に自動的に割り振る。 クライアント側のポート番号はUDP68 |
ざっと調べただけでも、これだけ種類がありました。
ちなみにクライアント側にもポート番号がありますが、特に決まってないので空いている番号が都度割り当てられます。
サーバーでどのポートが使用されているか調べる
Linuxでどのプログラムがどのポートを使用しているか?を調べるにはlsofコマンドを使います。
$ sudo lsof -i -n -P
コマンドを入力すると次のような一覧が表示されます。
NAME列にポート番号が表示されています。ポート番号の隣に(LISTEN)(ESTABILSHED)とありますが、それぞれ次の状態を表しています。
(LISTEN)他のコンピューターからの接続を待ち受けているポート
(ESTABILSHED)現在通信中のポート
参考サイト
まとめ
今回、ポート番号についてまとめましたが、通信関係の用語は似たものが多いです。
今まで混同してましたが、SSHとSSLそしてSFTPにFTPS。これらは名前が似てますが、全く違うものでした。。
通信の仕組みが分からないと、サーバー関係の理解も進まないのでまた別の機会にまとめようと思います。
コメント