<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ネットワーク on 寧屏</title><link>https://www.nullprivate.com/ja-jp/categories/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF/</link><description>Recent content in ネットワーク on 寧屏</description><generator>Hugo</generator><language>ja-jp</language><lastBuildDate>Wed, 11 Feb 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://www.nullprivate.com/ja-jp/categories/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF/index.xml" rel="self" type="application/rss+xml"/><item><title>DoH と DoT の技術比較分析</title><link>https://www.nullprivate.com/ja-jp/blog/2026/02/11/doh-vs-dot-comparison/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0800</pubDate><guid>https://www.nullprivate.com/ja-jp/blog/2026/02/11/doh-vs-dot-comparison/</guid><description>&lt;p&gt;DNS over HTTPS (DoH) と DNS over TLS (DoT) は、DNSクエリの安全な転送を実現する2つの一般的な暗号化DNS伝送方式です。DoTの標準は&lt;a href="https://datatracker.ietf.org/doc/html/rfc7858"&gt;RFC 7858&lt;/a&gt;で定義され、DoHは&lt;a href="https://datatracker.ietf.org/doc/html/rfc8484"&gt;DNS Queries over HTTPS (DoH)&lt;/a&gt;で標準化されています。これらの技術の本質的な違いを理解するには、ネットワークプロトコル階層構造から分析する必要があります。&lt;/p&gt;
&lt;h2 id="ネットワークプロトコル階層構造"&gt;ネットワークプロトコル階層構造&lt;/h2&gt;
&lt;p&gt;現代のネットワークプロトコルスタックは階層設計を採用しており、各層が異なる機能を提供します。DNSはアプリケーション層プロトコルとして、特定の伝送方式に依存せず、複数のベアラープロトコル上で動作できます。&lt;/p&gt;
&lt;p&gt;アプリケーション層 (L7) にはHTTP/1.1、HTTP/2、HTTP/3、FTP、DNSなどのプロトコルが含まれます。注目すべきは、HTTP/3のセマンティクスは依然としてアプリケーション層にありますが、QUICが伝送ベアラーとして機能することです。セキュリティ層はアプリケーション層とトランスポート層の間に位置し、主にTLSとその変種で構成されます。TLSは通常TCP上で動作し、HTTPSやDoTがこれに該当します。DTLSはTLSのデータグラム版で、UDP上で動作できます。QUICプロトコルは特殊で、TLS 1.3のハンドシェイクと鍵導出をプロトコル内部に直接統合しています。&lt;/p&gt;
&lt;p&gt;QUICはL4.5層プロトコルと見なすことができ、UDPを基盤に拡張され、従来のトランスポート層の機能を提供します。トランスポート層 (L4) にはTCP、UDP、QUICが含まれます。実装の観点ではQUICはUDPベースですが、信頼性、輻輳制御、多重化、暗号化ハンドシェイクなどの機能を備えているため、工学的には独立したトランスポート層プロトコルとして扱われます。ネットワーク層 (L3) はIPプロトコル（IPv4/IPv6）を使用し、データパケットの経路選択と転送を担当します。データリンク層 (L2) にはイーサネットやWi-Fi（802.11）などの技術が含まれます。&lt;/p&gt;
&lt;p&gt;TLSは暗号化手段として、アプリケーション層とトランスポート層の間で機能します。もしTLS暗号化をDoTから分離すると、DoTは本質的にDNS over TCPになります。この階層設計により、暗号化はプロトコル自体の強制要件ではなく、オプション機能となります。&lt;/p&gt;
&lt;h2 id="plain-dnsの特徴"&gt;Plain DNSの特徴&lt;/h2&gt;
&lt;p&gt;最も一般的なDNSはPlain DNSと呼ばれ、UDPまたはTCP上で動作します。UDPは接続確立が簡単で初回クエリ速度が速いため、最も一般的なベアラー方式です。しかしUDPの弱点は信頼性がなく、ネットワークでパケットが失われやすいことです。TCPはハンドシェイク回数が多いため初回接続速度がUDPより約30%遅いですが、長い接続を確立した後の応答速度はUDPと同じです。&lt;/p&gt;
&lt;p&gt;キャリアはネットワークが混雑すると、機器の負荷軽減のためにUDPパケットを破棄することがあります。一部のキャリアでUDPパケット損失が深刻な地域では、DNSクエリにTCPを使用する方が有利な場合があります。TCPには再送メカニズムがあり、パケットが失われてもデータを確実に到達させますが、UDPパケットを破棄しても小規模キャリア機器の負荷は軽減されず、再試行によってむしろ不確実性が増す可能性があります。&lt;/p&gt;
&lt;h2 id="アプリケーション層のネスト"&gt;アプリケーション層のネスト&lt;/h2&gt;
&lt;p&gt;DNSとHTTPはどちらもアプリケーション層プロトコルであり、DoHは本質的に1つのアプリケーション層プロトコルが別のアプリケーション層プロトコルをネストしたものです。DoHは必ずしもDNS over HTTPSである必要はなく、通常のHTTPを使用することも可能ですが、暗号化されていないDoHは平文リクエストのため、Plain DNSと比べて何の利点もなく、ごく少数の特殊なニーズシナリオでのみ使用されます。&lt;/p&gt;
&lt;p&gt;理論的には、任意のアプリケーション層プロトコル上でDNSを伝送できます。例えばDNS over FTPも実装可能で、対応するサーバーとクライアントを開発するだけで実現できます。この柔軟性はアプリケーション層プロトコルの組み合わせ可能性を示しています。&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart TD
 subgraph L7[&amp;#34;アプリケーション層&amp;#34;]
 A[DNS]
 B[HTTP]
 C[FTP]
 end
 
 subgraph Security[&amp;#34;セキュリティ層&amp;#34;]
 D[TLS]
 E[DTLS]
 end
 
 subgraph Transport[&amp;#34;トランスポート層&amp;#34;]
 F[TCP]
 G[UDP]
 H[QUIC]
 end
 
 subgraph L3[&amp;#34;ネットワーク層&amp;#34;]
 I[IP]
 end
 
 subgraph L2[&amp;#34;データリンク層&amp;#34;]
 J[Ethernet]
 K[WiFi]
 end
 
 A --&amp;gt; D
 B --&amp;gt; D
 C --&amp;gt; D
 D --&amp;gt; F
 E --&amp;gt; G
 H --&amp;gt; G
 F --&amp;gt; I
 G --&amp;gt; I
 H --&amp;gt; I
 I --&amp;gt; J
 I --&amp;gt; K
 
 style A fill:#e1f5ff
 style B fill:#e1f5ff
 style C fill:#e1f5ff
 style D fill:#fff4e1
 style E fill:#fff4e1
 style F fill:#ffe1e1
 style G fill:#ffe1e1
 style H fill:#e1ffe1&lt;/pre&gt;
&lt;h2 id="トランスポート層のネスト"&gt;トランスポート層のネスト&lt;/h2&gt;
&lt;p&gt;QUICプロトコルはUDPを基盤とし、同時にトランスポート層でコネクション指向サービスを提供します。QUICはTCPが持つコネクション指向、輻輳制御、再送、フロー制御、フラグメンテーションとアセンブリなどのトランスポート層機能を実装しています。TCPと比較してQUICは遅延が低く、UDPと比較してより先進的で信頼性が高いです。&lt;/p&gt;</description></item></channel></rss>