ネットワーク~ポートを開いて確かめる~

コンピューターネットワーク つくるためのPCの基本
OSくん
OSくん

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、21FTPファイル転送
22SSH安全な遠隔操作
25SMTPメールをメールサーバーまで送信
80HTTPWeb通信
110POP3メールの受信
443HTTPS暗号化された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:8000
  • ss -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日:初版公開

コメント

タイトルとURLをコピーしました