TCP、UDPとポート
ポート番号は16ビットなので、0から65535までです。HTTPSを使うWebサーバーは443番ポートで待ち受けます。
まずパズルを二つ。ビデオ通話で、友だちの声の小さな断片が一つ途中でなくなりました。アプリはそれをもう一度要求すべきでしょうか? 次に、宿題のファイルをダウンロードしていて、ファイルの断片が一つなくなりました。同じ質問です。先を読む前に両方決めましょう。
なくなった二つの断片、二つの別々の答え
通話は「いいえ」、ファイルは「はい」と答えたなら、あなたはもう二つのトランスポートのどちらかを選んでいます。0.5秒遅れて着いた音の断片は役に立ちません。会話は先へ進んでいるので、その断片は飛ばして次を再生したほうがよいのです。断片が一つ欠けたファイルはこわれているので、その断片は待つ価値があります。インターネットにはそれぞれの場合のためのトランスポートがあります。TCPは待って送り直し、UDPは送ったら先へ進みます。ただし、どちらが役に立つにも、まずパケットが正しいプログラムに届かなければなりません。
どのプログラムがパケットを受け取るか:ポート
IPアドレスはパケットを正しいコンピューターに届けます。けれども1台のコンピューターでは、いくつものプログラムが同時に動いています。タブがいくつも開いたブラウザー、チャットアプリ、音楽アプリなどです。TCPとUDPのヘッダーはどちらも、送信元ポートと宛先ポートを持っています。それぞれ0から65535の16ビットの数で、ポートはパケットがどのプログラム宛てかを表します。サーバーのプログラムは決められたポートで待ち受けます。暗号化なしのHTTPは80、HTTPSは443、DNSは53、サーバー間のメールは25です。RFC 6335はこの範囲を、システムポート0〜1023、ユーザーポート1024〜49151、動的ポート49152〜65535に分けています。あなたのコンピューターは会話ごとに一時的な送信元ポートを選び、それはよく動的ポートの範囲から選ばれます。198.51.100.20:443のように、アドレスとポートを組み合わせると、会話の一方の端を正確に表せます。
TCPはすべてのバイトを確かめる
TCP(RFC 9293)は、信頼できないパケットの流れを、バイトのための電話回線のようなものに変えます。まず両側が3ウェイハンドシェイクで接続を作ります。クライアントがSYNを送り、サーバーがSYN-ACKで答え、クライアントがACKを返します。それからはすべてのバイトにシーケンス番号がつきます。受け取る側は、どこまで受け取ったかを示す受信確認(ACK)を送り、順番がずれた断片を元の位置に戻します。送る側は、タイムアウトまでにACKが来なければ、データを送り直します。RFC 6298は、最初のタイムアウトを1秒とし、そのあと測った往復時間に合わせて調整するとしています。TCPは、パケットがなくなるのを見ると速度を落とすので、混み合うリンクがあふれることはありません。
UDPは送ったら先へ進む
UDP(RFC 768、1980年)はもっと少ないことしかしません。ヘッダーはわずか8バイトで、二つのポート、長さ、チェックサムだけです。ハンドシェイクもシーケンス番号も再送もありません。最初のパズルのビデオ通話には、まさにこれが合っています。短いDNSの質問もUDPを使います。質問一つと答え一つなら、ハンドシェイクがないほうが速いからです。HTTP/3の下で働くトランスポートQUICはUDPの上で動き、その上に独自の再送のしくみを作っています。
ドラッグで回転、スクロールまたはピンチで拡大・縮小。
四つの数が二つのタブを区別する
四つの数がそろって一つのTCP接続を表します。送信元アドレス、送信元ポート、宛先アドレス、宛先ポートです。だから443番ポートのサーバーは何千ものブラウザーと同時に通信しても混同しませんし、あなたのノートパソコンは同じサイトを開いた二つのタブを区別できます。タブごとの接続が別の送信元ポートを使うからです。シミュレーターでパケットをタップしてヘッダーを読みましょう。家のルーターの前では、送信元は192.168.0.12のポート51000です。ルーターのあとではNATが両方の数を変えていて、ルーターはその取り替えを覚えているので、返事は正しいタブに戻ります。
| TCP | UDP | |
|---|---|---|
| 接続の準備 | 3ウェイハンドシェイク | なし |
| なくなったデータ | タイムアウトのあと送り直す | なくなったまま |
| 順番 | シーケンス番号で元に戻す | 保証されない |
| ヘッダー | 20バイト以上 | 8バイト |
| 主な使い道 | Webページ、メール、ファイルのダウンロード | DNSの質問、音声・ビデオ通話、ゲーム、QUIC |
| 443番ポート | HTTPS |
| 80番ポート | 暗号化なしのHTTP |
| 53番ポート | DNS |
| 25番ポート | メールサーバー間のメール(SMTP) |
| SYN, SYN-ACK, ACK | TCPの3ウェイハンドシェイク |
| ACK | 受信確認:「ここまで受け取りました」 |
- いちばん大きいポート番号はいくつですか?
- WebサーバーがHTTPSに使うポートはどれですか?
- DNSが使うポートはどれですか?
- ブラウザーが送信元ポート50000を使っています。RFC 6335のどの範囲ですか?
- 動的ポート(49152〜65535)
- システムポート(0〜1023)
- ユーザーポート(1024〜49151)
- 正しいポートではない
- TCPのハンドシェイクを順番に並べましょう。
- UDPのヘッダーは何バイトですか?
- 往復時間をまだ一度も測っていないとき、RFC 6298は最初の再送タイムアウトを何秒にしますか?
- 損失25%のとき、TCPはなくなったパケットをどうしますか?
- タイムアウトのあと送り直す
- 飛ばす
- メッセージ全体を最初から送り直す
- すぐに接続を切る
- ビデオ通話でUDPがよく使われるのはなぜですか?
- 遅れて着いた音は役に立たないので、再送を待っても意味がないから
- UDPは通話を暗号化するから
- UDPは決してパケットをなくさないから
- TCPは音を運べないから
- ポート番号は何通りありますか?
- 「UDPは、データをなくすこわれたTCPだ。」 UDPは、通話、ゲーム、DNSのように、遅れたデータが役に立たないときや、質問一つと答え一つで足りるときに、わざと選ばれます。QUICはその上に独自の信頼性のしくみまで作っています。
- 「ポートは、コンピューターの裏にある差し込み口のことだ。」 同じ言葉を使いますが、TCPやUDPのポートはパケットのヘッダーにある0から65535の16ビットの数です。差し込み口ではなく、プログラムを表します。
- 「パケットが一つなくなると、TCPはファイル全体を送り直す。」 タイムアウトのあと送り直すのは、なくなったデータだけです。シーケンス番号とACKで、まだ受信確認されていない部分がわかります。受け取る側は残りをもう持っています。
- ポート(16ビット、0〜65535)はプログラムを選ぶ:80はHTTP、443はHTTPS、53はDNS。
- TCP:ハンドシェイク(SYN、SYN-ACK、ACK)、シーケンス番号、ACK、タイムアウト後の再送。
- UDP:8バイトのヘッダー、ハンドシェイクなし、再送なし。遅れたデータが役に立たないときに向く。
- QUIC(HTTP/3)はUDPの上で動き、独自の信頼性のしくみを加える。
このコースの出典 (28)
- (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then operators and papers, history sources last)
- IETF RFCs (rfc-editor.org): RFC 768 UDP (1980, 8-byte header)
- RFC 791 IPv4 (1981, 32-bit addresses, "does not provide a reliable communication facility", TTL field "measured in units of seconds" but every module must decrease it by at least one, so it is only an upper bound)
- RFC 792 ICMP (Time Exceeded)
- RFC 801 NCP/TCP transition plan (1 January 1983)
- RFC 894 Ethernet (1500-byte payload)
- RFC 1034 and RFC 1035 DNS (1987, HOSTS.TXT kept by SRI-NIC, labels up to 63 octets and names up to 255, TTL in seconds)
- RFC 1122 (127.0.0.0/8 loopback)
- RFC 1918 private addresses (10/8, 172.16/12, 192.168/16)
- RFC 2131 DHCP, RFC 3022 NAT, RFC 3596 AAAA records, RFC 3849 and RFC 5737 documentation addresses, RFC 4271 BGP-4, RFC 4291 IPv6 text form, RFC 6298 TCP retransmission timer (initial RTO 1 second)
- RFC 6335 port ranges (0-1023, 1024-49151, 49152-65535)
- RFC 7766 DNS over TCP, RFC 8200 IPv6 (128-bit addresses, Hop Limit)
- RFC 8446 TLS 1.3 (one round-trip handshake)
- RFC 9000 QUIC and RFC 9114 HTTP/3, RFC 9110 HTTP semantics (status code classes)
- RFC 9293 TCP (three-way handshake, sequence numbers)
- IANA: ip-parameters registry (recommended default TTL 64)
- IPv4 free pool depleted 3 February 2011 (NRO and ARIN announcements)
- Official documentation: MDN Web Docs "How does the Internet work?" (45 cables for 10 computers, switches, routers, MAC and IP addresses, internet and web)
- "What is a URL?", "HTTP response status codes" (developer.mozilla.org)
- Cloudflare Learning Center: "What is DNS?" (four kinds of DNS server, 8 steps of an uncached lookup, browser and OS caches, TTL)
- "What is HTTP/3?" (cloudflare.com/learning)
- Google Chrome Help, "Browse in Incognito mode" (support.google.com/chrome/answer/95464, checked 2026-10-19: Incognito limits what is saved to the device; websites and organisations that manage your network, like your school, employer or internet service provider, may be able to observe your activity)
- Operators and papers: root-servers.org (13 root name servers run by 12 organisations, 2047 instances on 2026-10-17)
- Jacobson and Karels 1988, Congestion Avoidance and Control (loss mostly congestion)
- History blocks only: UCLA Samueli School of Engineering, Internet50 (first ARPANET message "LO", UCLA to SRI, 29 October 1969, 22:30)
- historyofinformation.com and Wikipedia ARPANET (Kline)
- Spiceworks/SRI history (HOSTS.TXT kept by SRI-NIC)
- Numbers (2^32, 2^96, 45 and 6 cables, packet counts, round-trip times)
確認日: 2026-10-17