edubun
日本語

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の上で動き、その上に独自の再送のしくみを作っています。

読み込み中

ドラッグで回転、スクロールまたはピンチで拡大・縮小。

損失は25%に設定されています。TCPでは、パケットごとに緑のACKが戻ってきます。一つが欠けると、ノートパソコンはタイムアウトまで待ってそのパケットを送り直す(紫)ので、サーバーは最後には必ずメッセージ全体を受け取ります。UDPに切り替えてもう一度送ると、なくなったパケットがメッセージに点として残ります。このモデルではACKは決してなくならず、パケットごとにACKが返りますが、実際のTCPは累積のACKを送ります。

四つの数が二つのタブを区別する

四つの数がそろって一つのTCP接続を表します。送信元アドレス、送信元ポート、宛先アドレス、宛先ポートです。だから443番ポートのサーバーは何千ものブラウザーと同時に通信しても混同しませんし、あなたのノートパソコンは同じサイトを開いた二つのタブを区別できます。タブごとの接続が別の送信元ポートを使うからです。シミュレーターでパケットをタップしてヘッダーを読みましょう。家のルーターの前では、送信元は192.168.0.12のポート51000です。ルーターのあとではNATが両方の数を変えていて、ルーターはその取り替えを覚えているので、返事は正しいタブに戻ります。

TCPUDP
接続の準備3ウェイハンドシェイクなし
なくなったデータタイムアウトのあと送り直すなくなったまま
順番シーケンス番号で元に戻す保証されない
ヘッダー20バイト以上8バイト
主な使い道Webページ、メール、ファイルのダウンロードDNSの質問、音声・ビデオ通話、ゲーム、QUIC
443番ポートHTTPS
80番ポート暗号化なしのHTTP
53番ポートDNS
25番ポートメールサーバー間のメール(SMTP)
SYN, SYN-ACK, ACKTCPの3ウェイハンドシェイク
ACK受信確認:「ここまで受け取りました」
  1. いちばん大きいポート番号はいくつですか?
  2. WebサーバーがHTTPSに使うポートはどれですか?
  3. DNSが使うポートはどれですか?
  4. ブラウザーが送信元ポート50000を使っています。RFC 6335のどの範囲ですか?
    • 動的ポート(49152〜65535)
    • システムポート(0〜1023)
    • ユーザーポート(1024〜49151)
    • 正しいポートではない
  5. TCPのハンドシェイクを順番に並べましょう。
  6. UDPのヘッダーは何バイトですか?
  7. 往復時間をまだ一度も測っていないとき、RFC 6298は最初の再送タイムアウトを何秒にしますか?
  8. 損失25%のとき、TCPはなくなったパケットをどうしますか?
    • タイムアウトのあと送り直す
    • 飛ばす
    • メッセージ全体を最初から送り直す
    • すぐに接続を切る
  9. ビデオ通話でUDPがよく使われるのはなぜですか?
    • 遅れて着いた音は役に立たないので、再送を待っても意味がないから
    • UDPは通話を暗号化するから
    • UDPは決してパケットをなくさないから
    • TCPは音を運べないから
  10. ポート番号は何通りありますか?
よくある間違い
  • 「UDPは、データをなくすこわれたTCPだ。」 UDPは、通話、ゲーム、DNSのように、遅れたデータが役に立たないときや、質問一つと答え一つで足りるときに、わざと選ばれます。QUICはその上に独自の信頼性のしくみまで作っています。
  • 「ポートは、コンピューターの裏にある差し込み口のことだ。」 同じ言葉を使いますが、TCPやUDPのポートはパケットのヘッダーにある0から65535の16ビットの数です。差し込み口ではなく、プログラムを表します。
  • 「パケットが一つなくなると、TCPはファイル全体を送り直す。」 タイムアウトのあと送り直すのは、なくなったデータだけです。シーケンス番号とACKで、まだ受信確認されていない部分がわかります。受け取る側は残りをもう持っています。
先生からひとことTCPやUDPという名前を出す前に、二つのパズルを出しましょう。遅れた音の断片には価値がないと学習者が自分で決めれば、二つの名前はすでにした選択につけたラベルになります。ハンドシェイクは、3人で演じると覚えられます。両端に一人ずつ、真ん中にSYN、SYN-ACK、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