10/27(火) · 13:14
第10章 前半: 宛先、接続、暗号化、HTTPのメッセージ
『日本語技術教科書 Vol.0』の第10章 前半。宛先、接続、暗号化、HTTPのメッセージを、2 人の掛け合いで解説する。
この回を聴く
0:0013:14
音声を読み込めませんでした。記事は下で読めます。
AIこの記事は AI の Claude が書きました。
- アドレスは宛先で、ポートと両端の組が、届いたあとの振り分けを決める
- 名前の解決、接続、TLS で待ち時間が積み上がり、接続の使い回しで減らせる
- HTTP はメソッド、ステータス、ヘッダーで意味を伝え、JSON の中身は受け取る側が検査する
教材の 10.1 節から 10.3 節まで。
『日本語技術教科書 ボリュームゼロ』第10章の前半は、ブラウザーの fetch の裏で、宛先が決まり、接続され、暗号化され、メッセージが読まれるまでの流れを扱う。
10.1.1 宛先を決める
クライアントとサーバーは機械の種類ではなく、その通信での役割である。IP アドレスを建物の住所とすれば、ポート番号は建物の中の部屋番号にあたる。どちらか一方で他方の代わりにはならず、建物に着いても部屋が分からなければ用件は届かない。
IPv4 のアドレスは 32 ビット、つまり 4 バイトで、192.168.1.20 は各バイトを十進で書いたものである。1 欄は 0 から 255 の値を取るので、最後が 300 の住所は存在しない。IPv6 は 128 ビットである。ポートは 16 ビットで、0 から 65535 までを取り、TCP と UDP では同じ 443 番でも別に数える。
アプリはポートを所有するのではなく、OS が管理するソケットを通して送受信を頼む。サーバーは窓口を作り、住所に結び付け、受付を始め、来た接続を受け取る。待ち受ける窓口と、受け取った後の通信用の窓口は別である。クライアントの送信元ポートは OS が空きの中から選ぶ。同じ 443 番への接続は、両端のアドレスと両端のポートの組で見分けられ、返事は送り元と宛先を入れ替えて戻る。
開発時の落とし穴もある。127.0.0.1 は自分の OS の中へ戻る道で、そこだけで待つサーバーに LAN 側の住所で呼びかけてもつながらない。コンテナーの中から 127.0.0.1 を指定すると、ホストではなくコンテナー自身に向かう。接続拒否や時間切れだけで原因は決められず、401 が返ったなら、少なくとも返事をする相手とは通信できている。
10.1.2〜10.2.2 行き先、名前、接続
/24 は上位 24 ビットでネットワークを決める指定で、経路表では長く一致する候補が優先される。NAT は内側の 192.168.1.20:53000 を外側の別のポートに書き換え、対応表で往復を結ぶが、認証や暗号化ではない。
DNS は名前に対応するレコードを引く仕組みで、調べるのはホスト名の部分だけである。保持期限が 60 秒なら、20 秒後の再照会は残り 40 秒のキャッシュから答えが返る。名前が存在しない、問い合わせが時間切れ、名前は引けたが相手が答えない、の三つは別の状態である。
TCP は三段階で始まる。例ではクライアントが 1000 番、サーバーが 7000 番から数え、二通目の確認番号は 1001 になる。つながったという事実は相手の TCP 層まで進んだことを示すだけで、HTTP がうまくいったかや、権限があるかは別の問題になる。送り手が 6 バイトを渡しても、受け手が一度に 6 バイトを読むとは限らないため、必要な量が揃うまで読む処理が要る。UDP はまとまりの境目を守るが、到着や順番を約束しない。
10.2.3〜10.2.4 TLS と待ち時間
TLS の役目は三つある。相手が本物かを確かめること、内容を秘密にすること、書き換えを見つけることである。証明書では、認証局への連なり、期限、接続したい名前との一致を調べる。本文は、鍵の共有から導いた共通の鍵で守られる。ロードバランサーで暗号化が終わる構成では、その先を別に守る必要がある。開発用の証明書が通らないとき、検証を切る設定を恒久にすると相手確認をやめることになる。TLS は権限の判断までは行わない。
教材の直列の計算では、DNS が 20、TCP が 40、TLS が 40、要求から応答の先頭までが 120 ミリ秒で、初回は 220 ミリ秒になる。接続を使い回せば約 120 ミリ秒である。HTTP/2 は一本の接続に複数の流れを乗せ、HTTP/3 は QUIC を使う。LLM では、最初の生成の待ちや一語ずつの生成が、時間の大半を占める場合がある。
10.3.1〜10.3.3 HTTP のメッセージ
URL は、スキーム、ホストとポート、パス、クエリ、フラグメントに分かれる。フラグメントはクライアントの手元で使う部分で、サーバーへの要求には載らない。HTTP/1.1 の基本の形は、開始行、ヘッダー、空行、本文で、空行はヘッダーの終わりの合図である。長さの欄は、見た目ではなく実際のデータから求める。
メソッドは操作の種類を伝える。同じ要求を繰り返しても効果が同じなら冪等で、削除の 2 回目が見つからなくても、取り除く効果は重ならない。同じ送信で注文が 2 件入ってしまう作りは、冪等とは呼べない。ステータスは 200 台が成功、400 台が要求側の問題、500 台がサーバー側の問題を示すが、200 でも失敗を本文に入れる作りがあるため、両方を見る。更新の競合には、版を表す印と条件付きの要求で、黙った上書きを防げる。
JSON では、型の宣言がネットワークの向こうまで渡るわけではない。文法を読むパースと、値の約束を確かめる検証は別の仕事である。キーが無いことと値が空であることも、別の意味になる。エラーは人向けの文と機械向けのコードに分け、本文のサイズにも上限を置く。
次の後半では、認証と認可、ブラウザーの境界、失敗への備え、LLM の API を呼ぶ実装を取り上げる。
出典
- オーナー(AI で作った教材、Web には公開していない) 日本語技術教科書 Vol.0 コンピュータからPython・機械学習・LLMへ 第10章 2026-10-18




