@startuml
participant "Client" as c
participant "DNS Resolver" as resolver

participant "root \nNameServer" as rns
participant "edu \nNameServer" as tldns
participant "googleplex.edu \nNameServer" as dns
participant "compsci.googleplex.edu \nNameServer" as sns

c->resolver: Recursive Query
activate resolver
resolver->resolver: Check Local Cache
resolver->rns: Iterative Query to root
rns-->resolver: Name Server for .edu
resolver->tldns: Iterative Query to .edu
tldns-->resolver: Name Server for googleplex.edu
resolver->dns: Iterative Query to googleplex.edu
dns-->resolver: Name Server for compsci.googleplex.edu
resolver->sns: Iterative Query to compsci.googleplex.edu
sns-->resolver: Record(s) for www.net.compsci.googleplex.edu
resolver->resolver: Update Local Cache
resolver-->c: Requested Result
deactivate resolver

@enduml
