프로토콜 기본 아키텍처
DoH는 HTTPS URI 템플릿을 통해 구성되며, 각 DNS 쿼리-응답 쌍을 하나의 HTTP 요청-응답으로 매핑한다. 클라이언트는 사전 설정된 DoH 서버 URI를 사용하여 해석을 수행하며, URI 템플릿의 발견 및 갱신은 DHCP 등의 외부 대역 프로토콜을 통해 이루어진다.
HTTP 전송 메커니즘
DoH는 POST와 GET 두 가지 HTTP 메서드를 모두 지원한다. POST 방식은 DNS 쿼리를 HTTP 메시지 본문에 포함하며 더 작은 크기를 가진다. GET 방식은 base64url 인코딩된 DNS 쿼리를 URI 변수로 전달하여 HTTP 캐시 친화성이 더 높다. 서버는 "application/dns-message" 미디어 타입을 반드시 구현해야 하며, HTTP/2는 최소 권장 버전이다.
캐싱과 보안 고려사항
DoH 응답의 HTTP 캐시 유효 시간은 DNS 응답의 최소 TTL 이하여야 하며, GET 요청의 경우 DNS ID를 0으로 설정하면 의미상 동일한 쿼리의 중복 캐싱을 방지할 수 있다. 포트 443 사용과 HTTPS 혼재 트래픽은 감시 회피를 도모하지만, TLS 세션 재개와 HTTP 헤더(User-Agent, Accept-Language 등)는 클라이언트 식별 가능성을 증대시킨다.