TCP と UDP、ポート番号の役割
TCPとUDPの違い、ポート番号の役割(アプリの識別・戻りパケットでの入れ替え・TCPコネクションの4つ組)、FTPの2つのポート、URLの読み方を押さえ、このレッスンの過去問を自力で解けるようになる。
「TCPかUDPか」「ポート番号は何を識別するか」は、ネットワーク分野で毎年のように形を変えて出ます。普段使っているURLの「:8080」や、Webサーバの「80番」が何を意味しているのかも分かるようになります。
このレッスンで稽古する(用語チェック・過去問)結論:TCPは確実さ、UDPは速さ
TCPは確実に届けるために手間をかける方式で、UDPは手間を省いて速く送る方式です。どちらもIPの上にあるトランスポート層(アプリとネットワークの間で、データの届け方を決める層)のプロトコルです。試験では「信頼性ならTCP、リアルタイム性ならUDP」がそのまま問われます。
たとえるなら、TCPは書留郵便(受け取りの確認があり、届かなければ送り直す)です。UDPはポストへの投函(出したら終わりで、届いたかは確かめない)です。
| 比較項目 | TCP | UDP |
|---|---|---|
| 接続方式 | コネクション型(最初に相手と接続を確立する) | コネクションレス(接続せずにいきなり送る) |
| 確認応答(受け取りの返事) | あり | なし |
| 再送制御(届かなければ送り直す) | あり | なし |
| 順序制御(届いた順番を並べ直す) | あり | なし |
| 速さ・負荷 | 手間が多いぶん遅め | 手間が少なく速い |
| 向いている用途 | Web閲覧・メール・ファイル転送など、欠けたら困るもの | 音声通話・動画配信・時刻合わせ・名前解決など、速さ優先や短いやり取り |
ひっかけの定番は、選択肢にHTTP・IP・ICMP・PPPなど層の違うものを混ぜることです。「トランスポート層のプロトコル」と書かれていたら、候補はTCPとUDPの2つだけと覚えてください。
どのアプリがTCP/UDPを使うか(主なポート番号つき)
欠けると困るものはTCP、短いやり取りや速さ優先はUDPと考えると当てやすくなります。時刻合わせのNTPは、UDPを使う代表として出題されています。
| プロトコル | 用途 | 使う方式 | ポート番号 |
|---|---|---|---|
| HTTP | Web閲覧 | TCP | 80 |
| HTTPS | 暗号化したWeb閲覧 | TCP | 443 |
| FTP | ファイル転送 | TCP | 20(データ転送用)と21(制御用) |
| SMTP | メール送信 | TCP | 25 |
| POP3 | メール受信 | TCP | 110 |
| TELNET | 遠隔ログイン(暗号化なし) | TCP | 23 |
| NTP | 時刻合わせ | UDP | 123 |
| DNS | ドメイン名からIPアドレスを調べる | 主にUDP | 53 |
| SNMP | ネットワーク機器の監視 | UDP | 161 |
| DHCP | IPアドレスの自動割当て | UDP | 67/68 |
DNSは普段の問合せはUDPですが、大きな応答などではTCPも使います。試験では「UDPを使うものはどれか」でNTP・DNSが正解になると押さえておけば十分です。
FTPだけは、命令をやり取りする「制御用(21番)」と、ファイル本体を流す「データ転送用(20番)」でポートが分かれています。「データ転送用と制御用に異なるウェルノウンポート」と聞かれたらFTPです。POP3・SMTP・SNMPは1つのポートだけを使います。
ポート番号は「アプリの内線番号」
ポート番号は、1台のコンピュータの中で、どのアプリ(サービス)宛ての通信かを見分ける番号です。IPアドレスが会社の代表電話番号だとすると、ポート番号は内線番号です。代表番号(IPアドレス)でビルまでは届き、内線番号(ポート番号)で担当者(Webサーバのプログラム、メールのプログラムなど)につながります。
ポート番号には2種類あります。サーバ側のサービスにはウェルノウンポート(0〜1023番。HTTPなら80番のように決まっている番号)を使います。クライアント側は、通信のたびにOSが空いている番号を動的に割り当てます(例:50001番)。
試験では、似た「番号」「アドレス」との区別が問われます。
| 識別子 | どの層・どこにあるか | 何を見分けるか |
|---|---|---|
| MACアドレス | データリンク層 | 同じネットワーク内の機器(前のレッスンのARPで調べたもの) |
| IPアドレス | ネットワーク層(IPヘッダ) | ネットワーク上のコンピュータ |
| プロトコル番号 | ネットワーク層(IPヘッダ) | IPの上に載っているプロトコル(TCPなのかUDPなのか) |
| ポート番号 | トランスポート層(TCP/UDPヘッダ) | 通信相手のアプリ(サービス) |
| シーケンス番号 | トランスポート層(TCPヘッダ) | データの順番(順序制御に使う) |
「通信相手のアプリケーションを識別する」とあれば答えはポート番号です。プロトコル番号は「IPより上位の層」を識別するもので、「下位の層」ではありません。IPアドレスはIPヘッダに入っていて、TCP/UDPヘッダには入っていません。
戻りパケットでは送信元と宛先が入れ替わる
**返事のパケットでは、送信元と宛先がそっくり入れ替わります。**手紙の返信で「差出人」と「宛先」が逆になるのと同じです。サーバが返事用に新しい番号を割り当てることはありません。
flowchart LR
PC["PC(ポート50001・動的割当て)"] -->|"往路:送信元50001 → 宛先80"| SV["Webサーバ(ポート80)"]
SV -->|"復路:送信元80 → 宛先50001"| PC
この入れ替えができるのは、往路のパケットに送信元ポート50001が書いてあるからです。サーバはそれを見て、「50001番宛てに返せばよい」と分かります。
TCPコネクションはIPアドレスとポート番号の4つ組で決まる
**TCPコネクション(1本の接続)は、送信元IPアドレス・宛先IPアドレス・送信元ポート番号・宛先ポート番号の4つで識別します。**同じPCから同じWebサーバに2本つないでも、PC側のポート番号が違うので別の接続として区別できます。
**MACアドレスは含めません。**MACアドレスはルータを越えるたびに書き換わるので(前のレッスンの内容です)、端から端までの接続を見分ける材料になりません。「セションID」もTCPの識別には使いません。
URLの読み方
URLは「スキーム:// ホスト名 : ポート番号 / パス」の順に並んでいます。例:http://host.example.co.jp:8080/file
| 部分 | 例 | 意味 |
|---|---|---|
| スキーム | http: | 使うプロトコル(HTTPで接続する) |
| ホスト名 | host.example.co.jp | 接続先サーバの名前(DNSでIPアドレスに変換される) |
| ポート番号 | :8080 | 接続先のポート。省略するとHTTPなら80番 |
| パス | /file | サーバ内のどのリソースか |
ひっかけは「:8080はプロキシ経由の意味」「fileはHTMLファイルの意味」「.jpだからサーバは日本国内」です。どれも誤りで、:8080は単にポート番号、パス名から形式は決まらず、.jpはドメイン名でありサーバの所在地を保証しません。
試験での問われ方
- 「信頼性よりリアルタイム性」「コネクションレス」「確認応答・順序制御をもたない」 → UDP。選択肢にHTTP(アプリケーション層)・IP(ネットワーク層)・ICMP・PPPを混ぜてくる
- 「UDPを使うものはどれか」 → NTP(またはDNS)。FTP・POP3・TELNET・SMTP・HTTPはTCP
- 「通信相手のアプリケーションを識別」 → ポート番号。MACアドレス・プロトコル番号・シーケンス番号が並ぶ
- 戻りパケットのポート番号 → 往路を入れ替えるだけ。「サーバ側で別の番号を割り当てる」は誤り
- TCPコネクションの識別 → IPアドレス2つ+ポート番号2つ。MACアドレスを含めた「全部○」の選択肢に注意
- データ転送用と制御用でポートが別 → FTP(20と21)
戻りパケットのポート番号を決める
| 送信元(Web サーバ)のポート番号 | 宛先(PC)のポート番号 | |
|---|---|---|
| ア | 80 | 50001 |
| イ | 50001 | 80 |
| ウ | 80 と 50001 以外からサーバ側で割り当てた番号 | 80 |
| エ | 80 と 50001 以外からサーバ側で割り当てた番号 | 50001 |
ア 送信元(Web サーバ)のポート番号: 80,宛先(PC)のポート番号: 50001
イ 送信元(Web サーバ)のポート番号: 50001,宛先(PC)のポート番号: 80
ウ 送信元(Web サーバ)のポート番号: 80 と 50001 以外からサーバ側で割り当てた番号,宛先(PC)のポート番号: 80
エ 送信元(Web サーバ)のポート番号: 80 と 50001 以外からサーバ側で割り当てた番号,宛先(PC)のポート番号: 50001
解き方と答えを見る
- 往路のパケットを書き出す:送信元ポート=50001(PC側で動的に割り当てた番号)、宛先ポート=80(WebサーバのHTTP用ウェルノウンポート)。
- 戻りはWebサーバ→PCなので、送信元と宛先を入れ替える。送信元ポート=往路の宛先=80、宛先ポート=往路の送信元=50001。
- サーバ側が別のポートを新しく割り当てることはないので、ウ・エは誤り。往路と同じ向きのイも誤り。
- 表で「送信元(Webサーバ)80、宛先(PC)50001」の行を選ぶ。
答え:ア(送信元80、宛先50001)
TCPコネクションの識別に必要な情報を選ぶ
| 宛先MACアドレス | 送信元MACアドレス | 宛先IPアドレス | 送信元IPアドレス | 宛先TCPポート番号 | 送信元TCPポート番号 | |
|---|---|---|---|---|---|---|
| ア | × | × | ○ | × | ○ | × |
| イ | × | × | ○ | ○ | × | × |
| ウ | × | × | ○ | ○ | ○ | ○ |
| エ | ○ | ○ | ○ | ○ | ○ | ○ |
ア 宛先MAC ×,送信元MAC ×,宛先IP ○,送信元IP ×,宛先TCPポート ○,送信元TCPポート ×
イ 宛先MAC ×,送信元MAC ×,宛先IP ○,送信元IP ○,宛先TCPポート ×,送信元TCPポート ×
ウ 宛先MAC ×,送信元MAC ×,宛先IP ○,送信元IP ○,宛先TCPポート ○,送信元TCPポート ○
エ 宛先MAC ○,送信元MAC ○,宛先IP ○,送信元IP ○,宛先TCPポート ○,送信元TCPポート ○
解き方と答えを見る
- TCPコネクションは「送信元IPアドレス・宛先IPアドレス・送信元ポート番号・宛先ポート番号」の4つ組で識別する、と思い出す。
- IPアドレスは2つとも○、TCPポート番号も2つとも○になる行を探す。片側だけ○のア・イは、同じサーバへの複数の接続を見分けられないので×。
- MACアドレスはルータを越えるたびに変わり、端から端までの接続の識別には使わない。MACアドレスまで○のエは×。
- 条件を満たすのは「MAC×・×、IP○・○、ポート○・○」の行。
答え:ウ
要点(試験直前に読む)
- TCP=コネクション型・確認応答/再送/順序制御あり=信頼性。UDP=コネクションレス・それらなし=速さ・リアルタイム性。
- UDPを使う代表はNTP(123)・DNS(53)。FTP・POP3・SMTP・TELNET・HTTPはTCP。
- ポート番号は通信相手のアプリを識別する。サーバはウェルノウンポート(HTTP=80)、クライアントは動的に割り当てた番号。
- 戻りパケットは送信元と宛先を入れ替えるだけ(往路が50001→80なら、復路は80→50001)。
- TCPコネクションは送信元・宛先のIPアドレスとポート番号の4つ組で識別する。MACアドレスは使わない。
- FTPは制御用21番とデータ転送用20番の2つ。URLの「:8080」はポート番号。
ひっかけ
- 「トランスポート層」と書いてあるのにHTTP・IP・ICMP・PPPが選択肢に並ぶ → 層が違うものは除外し、TCPかUDPの二択にする。
- アプリの識別に「MACアドレス」「プロトコル番号」「シーケンス番号」を混ぜる → アプリはポート番号、TCPかUDPかはプロトコル番号、順番はシーケンス番号。
- 戻りパケットで「サーバ側で新しい番号を割り当てる」 → 割り当てない。往路の送信元と宛先を入れ替えるだけ。
- TCPコネクションの識別で、MACアドレスまで全部○の選択肢 → MACアドレスはルータごとに変わるので不要。IP2つとポート2つで足りる。
- 「送信元ポートはプログラムに固有の番号」「IPアドレスはTCPヘッダ内にある」「:8080はプロキシ」「.jpは国内サーバ」 → どれも誤り。
用語(17)
IPの上でアプリ同士のデータの届け方(確実さや速さ)を受け持つ層で、TCPとUDPがここに属する。
⚠ IPはネットワーク層、HTTPはアプリケーション層。「トランスポート層のプロトコル」ならTCPかUDPだけ。
接続を確立し、確認応答・再送・順序制御でデータを確実に届けるコネクション型のプロトコル。
⚠ UDP:信頼性の機能をもたず速い。「信頼性重視」ならTCP。
接続をせずにデータを送りっぱなしにする、軽くて速いコネクションレス型のプロトコル。
⚠ TCP:確認応答・順序制御あり。「リアルタイム性重視」「確認応答をもたない」ならUDP。
送る前に相手と接続を確立するのがコネクション型、確立せずにいきなり送るのがコネクションレス。
⚠ TCPがコネクション型、UDPがコネクションレス。
受け取った側が「届いた」と送り返す返事のことで、TCPはこれで届いたかどうかを確かめる。
確認応答が返ってこないデータを送り直す仕組みで、TCPがもつ。
バラバラの順に届いたデータを、シーケンス番号を使って元の順に並べ直す仕組みで、TCPがもつ。
TCPでデータの並び順を示す番号で、順序制御や再送に使う。
⚠ ポート番号:アプリを識別する番号。シーケンス番号はアプリの識別には使わない。
1台のコンピュータの中で、通信相手のアプリ(サービス)を見分けるためにTCP/UDPが使う番号。
⚠ MACアドレス(機器を識別・データリンク層)やプロトコル番号(TCPかUDPかを識別・IPヘッダ)と区別する。
0〜1023番の、HTTP=80のように主なサービス用にあらかじめ決められたポート番号。
⚠ クライアント側は通信ごとに動的に割り当てた番号(例:50001)を使う。プログラムごとに決まった固有の番号ではない。
IPヘッダの中にあり、IPの上に載っているプロトコル(TCPかUDPかなど)を示す番号。
⚠ 示すのは「IPより上位」のプロトコル。アプリの識別はポート番号。
ネットワーク経由で機器の時刻を合わせるプロトコルで、UDPを使う。
⚠ FTP・POP3・TELNETはTCP。「UDPを使うもの」ならNTPやDNS。
ドメイン名からIPアドレスを調べる仕組みで、普段の問合せはUDPの53番を使う。
ファイル転送のプロトコルで、TCPの21番(制御用)と20番(データ転送用)の2つのポートを使う。
⚠ POP3(110)・SMTP(25)・SNMP(161)は1つのポートだけ。
送信元IPアドレス・宛先IPアドレス・送信元ポート番号・宛先ポート番号の組合せで、1本のTCP接続を識別するもの。
⚠ MACアドレスやセションIDは含まない。
「スキーム://ホスト名:ポート番号/パス」の形で、Web上の資源の場所と取得方法を示す文字列。
⚠ :8080はポート番号であってプロキシの指定ではない。.jpはドメイン名でサーバの所在地ではない。
URLの先頭(http: など)で、どのプロトコルで接続するかを示す部分。
このレッスンの過去問
- TCPとUDPの特性比較(信頼性とリアルタイム性)平成31年度 春期 基本情報技術者試験 午前 問33
- UDPを使うアプリケーションプロトコル(NTP・DNS)平成25年度 春期 基本情報技術者試験 午前 問36
- ポート番号によるアプリケーション識別平成31年度 春期 基本情報技術者試験 午前 問34
- TCPコネクションの識別(IPアドレスとポート番号の4つ組)平成27年度 秋期 基本情報技術者試験 午前 問35
- 戻りパケットのポート番号(送信元・宛先の入替え)基本情報技術者試験 科目A免除 修了試験 20211212 実施分 問34
- FTPのデータ転送用と制御用ポート番号平成26年度 秋期 基本情報技術者試験 午前 問33
- URLの構成要素(スキーム・ホスト・ポート・パス)基本情報技術者試験 科目A免除 修了試験 20250126 実施分 問26