
2026年10月12日に全面リライトしました
2023年9月に公開した記事を、「つくって学ぶ」の趣旨に合わせて書き直した。コマンドと小さなWebサーバーで、プロトコルとポート番号を実際に確認できる内容になっている。
はじめに
コンピューターは、ほかのコンピューターと通信している。その仕組みの土台が、ネットワークとプロトコルとポート番号である。
基本情報技術者試験のシラバスにも、ポート番号や、HTTP、SMTP、POP、FTP、DNSなどのプロトコル、ping や ss などの運用管理ツールが載っている。
今回は、GitHub Codespaces(Ubuntu)で、実際にサーバーを動かして確認していく。
コードは、筆者のGitHubリポジトリ pc-labo-hands-on の network/ フォルダにまとめてある。
ネットワークとは
一般的に、ネットワークとは、人やモノが網状につながっている構成のことである。どんなネットワークも、次の3要素でできている。
- つながる
- 運ぶ
- ルール
コンピューターでは、2台以上のコンピューターが、決められたルールに従って情報を運ぶためにつながっている状態を、コンピューターネットワークと呼ぶ。この決められたルールがプロトコルである。
プロトコルとポート番号
プロトコルには、通信の目的に応じた種類がある。同じプロトコルを使えば、メーカーやOSが違っていても通信できる。
ポート番号は、通信先のアプリケーションを識別するための番号である。範囲は0〜65535番である。
| 範囲 | 呼び方 |
|---|---|
| 0〜1023 | ウェルノウンポート(主要なサービス用に予約) |
| 1024〜49151 | 登録済みポート |
| 49152〜65535 | 動的・プライベートポート |
主なプロトコル
| ポート番号 | プロトコル | 説明 |
|---|---|---|
| 20、21 | FTP | ファイル転送 |
| 22 | SSH | 安全な遠隔操作 |
| 25 | SMTP | メールをメールサーバーまで送信 |
| 80 | HTTP | Web通信 |
| 110 | POP3 | メールの受信 |
| 443 | HTTPS | 暗号化されたWeb通信 |
IANAとは
IANA(Internet Assigned Numbers Authority)は、ドメイン名、IPアドレス、プロトコル番号、ポート番号など、インターネットの資源をグローバルに管理する組織である。ウェルノウンポートも、IANAが管理している。
もともとは、南カリフォルニア大学の研究プロジェクトとして始まった。1998年に国際的な非営利法人のICANNが設立され、現在、その役割はICANNの下で続いている。
体験1:ポート番号の対応表を見る
Linuxには、サービス名とポート番号の対応表が、ファイルとして入っている。
grep -E '^(ftp|ssh|smtp|http|pop3|https)[[:space:]]' /etc/services表と同じ番号が並んでいるか、確かめてみよう。https は、443/tcp と 443/udp の2行が出ることがある。udpは、新しいHTTP/3用である。
体験2:自分でサーバーを動かして、ポートを開く
ターミナルを開き、Webサーバーを起動する。
python3 -m http.server 8000次に、もう1つターミナルを開いて、次を実行する。
ss -tln
curl -I http://localhost:8000ss -tln:待ち受け中(LISTEN)のポートの一覧。8000番が表示されるcurl -I:HTTPで8000番のサーバーに話しかけ、応答のヘッダーを表示する
HTTPというプロトコルで、8000番で待っているアプリケーション(Python)と通信できた。
確認が終わったら、サーバー側のターミナルで Ctrl + C を押して止める。
80番を使わず8000番にしたのは、1023番以下は、通常は管理者権限が必要なためである。環境によっては、ポートに関する通知が出ることがあるが、無視してよい。
また、ss が見つからない場合は、sudo apt install iproute2 で入れる。
まとめ
- ネットワークは「つながる」「運ぶ」「ルール」の3要素でできている
- プロトコルは通信のルールで、ポート番号は通信先のアプリケーションを識別する
- ポート番号は0〜65535番で、0〜1023番がウェルノウンポートである
/etc/services、ss、curlで、ポートとプロトコルを実際に確認できた
更新履歴
- 2026年10月12日:全面リライト(手を動かす内容に刷新)
- 2023年9月1日:初版公開




コメント