回 4-3 道 4 ネットワークと暗号
TCP は、
読み終えたら動画の
この頁の流れ
確実に
TCP と UDP は、 何が違うのか
TCP と
ビデオ通話で
TCP と
TCP と UDP は どう 作られているのか
TCP は
| 比べる所 | TCP | UDP |
|---|---|---|
| つながる手順 | 3 ウェイハンドシェイク | 無い |
| 頭の大きさ | 20 バイト (追加の | 8 バイト |
| 欠けたとき | 見つけて送り直す | 何もしない |
| 届く順番 | 並べ直して渡す | 届いた順に渡す |
| 混雑したとき | 送る | 決まりには無い |
ポート番号は、 機械の中の宛先
ポート番号は、
TCP の 頭と、 3 ウェイハンドシェイク
TCP は、
TCP の
RFC 9293 の
順番の 番号と 確認応答で、 欠けを見つける
TCP は
途中の 1 個が抜けると、
輻輳制御は、 混んだら 送る 量を減らす
輻輳制御は、
- スロースタートでは、
確認応答 1 つにつき cwnd を 最大 1 セグメント (一度に 送る 1 か たまり ) 増やす。往復 1 回でほぼ倍になる - 輻輳回避では、往復 1 回につき 1 セグメントずつ増やす
- 重複 ACK 3 回で気づいたら、
しきい値 (ssthresh) を 送りかけの 量の 半分 (最低 2 セグメント) に 下げ、 送り直しの あと cwnd も そこまで 下げて続ける - タイマー切れで
気づいたら、 cwnd を 1 セグメントに 下げ、 スロースタートからやり直す
混んだ道で
UDP の 頭は 8 バイトだけ
UDP の
何に 使われるか、 DNS は 両方を 使い分ける
UDP の
HTTP/3 は
動かして確かめる
まず、
動かす ポート番号の範囲
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
53 System
8080 User
50000 Dynamic
最大 65535次に、struct で! はネットワークの並び (ビッグエンディアン)、H は
動かす UDP の頭 8 バイト
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
8 バイト
c3 50 00 35 00 17 00 00
送り元 50000 宛先 53
長さ 23
中身 15「こんに
続いて TCP のI はB は
動かす TCP の頭と 3 ウェイ
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
20 バイト
100 0 SYN
300 101 SYN ACK
101 301 ACK追加の5 << 4 は
欠けと 遅れで、 何が起きるか
TCP は
確認応答から、 抜けた 番号を見つける
6 個のかたまりを送り、3 番だけが
動かす 確認応答から送り直す
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
ACK [2, 3, 3, 3, 3]
重複の ACK 3
送り直す番号 3
ACK 74 番から 6 番が届いても
混雑を 見ると、 送る 量が落ちる
上の
動かす 輻輳ウィンドウの動き
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
重複 [1, 2, 4, 8, 16, 8, 9, 10]
RTO [1, 2, 4, 8, 16, 1, 2, 4]16 まで
なぜ 動画や 通話で UDP が 選ばれるのか
通話や
1 秒 30 コマなら
動かす 期限に間に合うか
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
TCP
0 90 50 OK
1 123 83 OK
2 156 116 OK
3 189 249 遅れ
4 222 249 遅れ
5 255 249 OK
UDP
0 90 50
1 123 83
2 156 116
3 欠け
4 222 182
5 255 215TCP では 3 番が期限 189 に
実際の
ただし、
崩れる
- 全部が
順番どおりに そろえば 役に 立つ、という 前提。 期限の ある データでは、 遅れは 欠けと 同じになる - UDP なら
いつも 通る、という 前提。 RFC 8835 は、 UDP を 通さない 防火壁の ために TCP で 迂回する 道も 求めている - UDP は
届かなくても 困らない、という 前提。 確実さが 要るなら、 上の プログラムが 自分で補う
仕事で どう 確かめるか
仕事では、
防火壁のss -tuln で
関わる実例
SYN フラッド攻撃 (1996 年 9 月ごろ)
RFC 4987 によると、TCP の
UDP を 使った 増幅攻撃 (CISA の TA14-017A)
米国の
よくある問い
TCP は プロトコルですか、 TCP セッションとは何ですか
はい、TCP は
UDP は どういう 意味ですか
UDP は
TCP と UDP は どちらが 速いですか
最初の 1 個が届くまでは、
HTTP/3 は UDP なのに、 なぜ確実に 届くのですか
HTTP/3 は
確認クイズ
答えだと
1 問目
A が
2 問目
この
UDP の頭の大きさ
import struct
print(struct.calcsize("!HHHH"))3 問目
ビデオ通話で
4 問目
TCP の
説明課題
次の
- TCP と
UDP の 違いを、 ハンドシェイク、 確認応答、 送り直しの 言葉を使って - 通話や
生の 映像で UDP が 選ばれる 理由と、 録画の 配信では HTTP で 取りに 行く 形もある理由
自分の
この回の 先の一歩
通信が
もっと深く
この
一次資料
どれも 2026年10月27日に開いて、
- RFC 768 User Datagram Protocol (IETF、英語)。UDP の頭の 4 つの欄、
保証しないこと - RFC 9293 Transmission Control Protocol (TCP) (IETF、英語)。頭の
欄と フラグ、 3 ウェイハンドシェイクの 例と 理由、 累積の 確認応答、 ソケットの対 - RFC 5681 TCP Congestion Control (IETF、英語)。4 つの輻輳制御、
重複 ACK 3 回の高速再送、 しきい値を 半分 (最低 2 セグメント) に、 タイマー切れで 1 セグメントに - RFC 6335 Port Number Registry Procedures (IETF、英語)。ポート番号の 3 つの範囲
- RFC 1035 Domain Names Implementation and Specification (IETF、英語)。53 番、問い
合わせは UDP で ゾーン転送は UDP を 使わない こと、 UDP は 512 バイトまでで 超えると TC の印 - RFC 6891 Extension Mechanisms for DNS (EDNS(0)) (IETF、英語)。512 バイトを
超える UDP の答え - RFC 3550 RTP A Transport Protocol for Real-Time Applications (IETF、英語)。RTP を
ふつうは UDP の 上で 動かすこと - RFC 8835 Transports for WebRTC (IETF、英語)。UDP が
前提、 UDP を 通さない 防火壁のための TCP の 道、 TCP の 先頭の詰まり - RFC 8216 HTTP Live Streaming (IETF、英語)。映像を小分けのファイルの一覧で示し HTTP で
届けること - RFC 9114 HTTP/3 (IETF、英語)。HTTP/2 は
主に TLS と TCP の 上、 HTTP/3 は QUIC の上 - RFC 9000 QUIC A UDP-Based Multiplexed and Secure Transport (IETF、英語)。QUIC の
小包が UDP で 運ばれ、 確実に 届ける ための 応答と 輻輳制御を持つこと - RFC 4987 TCP SYN Flooding Attacks and Common Mitigations (IETF、英語)。1996 年の公開と 9 月までの
観測、 CA-96.21、 つながりかけの 枠を 埋める手口 - UDP-Based Amplification Attacks, TA14-017A (米国 CISA、英語)。送り元の
住所を 確かめないこと、DNS と NTP の 増幅率、 最終改訂の日
