Recursive DNS resolver dapat terus mengembalikan hasil ketiadaan lama setelah authoritative zone memperoleh nama yang diminta. Record baru dan negative answer yang tersimpan di cache tidak saling bertentangan: keduanya berada pada titik berbeda dalam jalur resolution, dan cache tetap valid sampai negative TTL berakhir atau policy lokal menghapusnya lebih cepat.
Perilaku ini memberi ketiadaan DNS lifetime cache tersendiri. Menerbitkan record mengubah state authoritative, tetapi tidak secara sinkron membatalkan negative entry yang sudah tersimpan pada recursive resolver.
Ketiadaan adalah state yang dapat di-cache
DNS caching tidak terbatas pada resource record positif. RFC 2308 mendefinisikan negative caching untuk respons yang menetapkan bahwa suatu nama tidak ada atau bahwa record type yang diminta tidak memiliki data pada nama yang ada.
Respons NXDOMAIN menyatakan bahwa domain name yang ditanyakan tidak ada. Respons NOERROR tanpa answer yang relevan dapat berarti nama tersebut ada tetapi tidak memiliki data untuk type yang diminta. Kedua kondisi memiliki semantik berbeda walaupun sama-sama dapat membuat aplikasi tidak memperoleh alamat atau record yang diminta.
Negative response yang sesuai dapat menyertakan SOA record zone pada authority section. TTL negative caching diturunkan dari nilai yang lebih kecil antara TTL SOA record dan field MINIMUM SOA, dengan tetap mengikuti perilaku resolver dan standar DNS berikutnya yang relevan.
Objek yang di-cache karena itu merupakan pernyataan tentang ketiadaan dengan lifetime terbatas, bukan sekadar lookup gagal yang selalu harus mencapai authoritative server lagi.
Pembuatan record tidak menarik kembali jawaban yang sudah di-cache
Misalkan api.example.test belum ada dan recursive resolver menerima respons NXDOMAIN yang dapat di-cache selama 300 detik. Sepuluh detik kemudian, operator zone membuat A record untuk nama tersebut.
Authoritative server dapat langsung menjawab query baru yang tidak tersimpan di cache dengan alamat baru setelah perubahan zone aktif pada server tersebut. Namun recursive resolver yang menyimpan hasil negatif sebelumnya masih memiliki state lokal yang valid. Resolver dapat menjawab dari state itu tanpa menghubungi authority sampai negative entry kedaluwarsa.
Hal ini menciptakan interval ketika client yang memakai resolver berbeda memperoleh jawaban berbeda. Resolver tanpa negative entry sebelumnya dapat melihat record baru, sementara resolver lain terus melaporkan ketiadaan.
Interval tersebut merupakan konsekuensi langsung semantik cache. DNS tidak memiliki mekanisme umum bagi authoritative server untuk mendorong invalidation ke setiap recursive resolver yang sebelumnya menanyakan sebuah nama.
Negative TTL mengendalikan batas deployment
TTL record positif sering diperhatikan sebelum perubahan alamat karena membatasi lifetime data lama yang tersimpan di cache. Negative TTL membutuhkan perhatian yang sama ketika deployment memperkenalkan nama yang mungkin ditanyakan client sebelum dipublikasikan.
Jika client mencoba hostname masa depan ketika nama itu masih belum ada, recursive resolver dapat menyimpan ketiadaan tersebut. Membuat hostname beberapa saat kemudian tidak menjamin visibilitas langsung melalui resolver itu.
Hal ini relevan untuk aktivasi service bertahap, automated discovery, alur validasi sertifikat, dan proses apa pun yang mungkin menanyakan nama sebelum record tersedia. Dampak persisnya bergantung pada hasil DNS yang di-cache, nilai SOA authoritative, policy recursive resolver, dan timing query.
Menurunkan TTL A atau AAAA positif tidak dengan sendirinya memperpendek hasil NXDOMAIN yang sudah di-cache. Lifetime negatif berasal dari negative response dan parameter turunannya dari SOA, bukan dari record positif yang saat itu belum ada.
NXDOMAIN memiliki cakupan semantik lebih luas daripada data alamat yang hilang
Tidak adanya address record tidak selalu berarti nama yang ditanyakan tidak ada.
Jika sebuah nama memiliki TXT record tetapi tidak memiliki AAAA, query alamat IPv6 dapat menerima respons DNS sukses tanpa data AAAA. State ini berbeda dari NXDOMAIN, yang menyatakan nama itu sendiri tidak ada.
Perbedaan tersebut memengaruhi caching dan perubahan berikutnya. Negative answer yang terkait dengan record type yang hilang menggambarkan ketiadaan yang lebih sempit daripada nonexistence seluruh nama.
Resolver juga memakai aturan protokol DNS ketika menerapkan informasi negatif yang tersimpan ke query berikutnya. Menganggap setiap empty answer sama dengan NXDOMAIN membuang informasi yang dibawa response code dan authority data.
Diagnostic aplikasi yang hanya melaporkan “DNS gagal” dapat menyembunyikan batas ini. Hasil protokol dapat membedakan nama yang tidak ada, record type yang hilang, kegagalan server sementara, dan kondisi lain dengan perilaku cache berbeda.
SERVFAIL bukan objek negative cache yang sama
Lookup dapat gagal tanpa menghasilkan pernyataan authoritative tentang ketiadaan. SERVFAIL, timeout, respons malformed, dan kegagalan transport tidak berarti nama yang ditanyakan tidak ada.
Resolver dapat menerapkan failure caching atau retry control yang spesifik pada implementasi, tetapi mekanisme tersebut tidak boleh disamakan dengan negative caching RFC 2308 atas ketiadaan authoritative. Sumber semantiknya berbeda: satu merekam pernyataan DNS mengenai data yang hilang, sedangkan yang lain membatasi pekerjaan berulang atau merespons ketidakmampuan memperoleh jawaban yang dapat digunakan.
Perbedaan ini penting saat incident analysis. Client yang terus menerima NXDOMAIN setelah record dibuat mengarah pada cached absence atau data authoritative yang tidak konsisten. SERVFAIL berulang mengarah pada kelas kegagalan resolution yang berbeda.
Konsistensi authoritative menetapkan batas lain
Negative caching hanyalah salah satu sumber keterlambatan visibilitas. Zone yang dilayani beberapa authoritative server juga dapat mengekspos state yang tidak konsisten saat perubahan sedang menyebar pada set authoritative.
Recursive resolver yang menanyakan authority yang masih menyajikan isi zone lama dapat menerima negative response baru lalu menyimpannya di cache. Dalam kondisi ini, lifetime cache dimulai dari jawaban yang sudah stale relatif terhadap authority lain.
Batas operasional karena itu memiliki dua bagian: authoritative server harus konvergen pada data zone yang dimaksud, dan recursive cache harus membiarkan jawaban lama kedaluwarsa. Lifetime cache pendek tidak dapat mengompensasi authoritative server yang terus mengeluarkan respons obsolete tanpa batas.
Cache flushing bersifat lokal, bukan jaminan protokol
Operator kadang menghapus cache resolver lokal saat pengujian lalu melihat record baru. Hal itu mengonfirmasi bahwa cached state memengaruhi resolver tersebut, tetapi tidak mengubah cache di tempat lain.
Public recursive service, enterprise resolver, cache operating system, dan DNS layer lokal aplikasi dapat memiliki state serta policy masing-masing. Cache flush pada satu mesin bukan operasi invalidation global.
Demikian pula, menanyakan authoritative server secara langsung melewati state recursive cache dan dapat mengonfirmasi publikasi tanpa membuktikan client biasa sudah menerima hasil yang sama.
Observable yang relevan adalah jawaban sepanjang jalur resolution client yang sebenarnya. Kebenaran authoritative dan konvergensi yang terlihat client merupakan properti terkait, tetapi terjadi pada batas berbeda.
Urutan publikasi dapat menghindari cached absence
Jika hostname baru dapat diprediksi, menerbitkan DNS record sebelum client mulai menanyakannya dapat menghindari pembuatan negative cache entry untuk nama itu pada kondisi normal. Aktivasi service kemudian dapat dilakukan setelah record memiliki waktu untuk terlihat melalui recursive resolution.
Urutan ini tidak menghilangkan semua failure mode DNS dan tidak menciptakan jaminan konvergensi universal. Ia mengubah satu kondisi spesifik: resolver menjadi lebih kecil kemungkinannya menyimpan pernyataan yang masih valid bahwa nama service masa depan tidak ada.
Negative caching mengubah ketiadaan menjadi distributed state yang bertahan untuk interval terbatas. Pembuatan record mengubah jawaban authoritative saat ini; expiration menentukan kapan ketiadaan sebelumnya berhenti dapat digunakan kembali di tempat lain.