This article was previously published under Q232025
This article has been archived. It is offered "as is" and will no longer be updated.
The SRV resource record allows administrators to use several servers for a single domain, to move services from host to host easily, and to designate some hosts as primary servers for a service and others as backups.
When clients ask for a specific service or protocol for a specific domain (the term "domain" is used here in the strict RFC 1034 sense), they receive the names of any available servers.
Format of the SRV Resource Record
The SRV resource record has DNS type code 33, with the following syntax:
Service.Proto.Name TTL Class SRV Priority Weight Port Target
Service: The symbolic name of the requested service, as defined in Assigned Numbers or locally. Some widely used services (notably POP) do not have a single universal name. If Assigned Numbers names the service indicated, that name is the only name that is legal for SRV lookups. Only locally defined services can be named locally. Service is case insensitive.
Proto: TCP and UDP are at present the most useful values for this field, though any name defined by Assigned Numbers or locally can be used (as for Service). Proto is case insensitive.
Name: The domain this resource record refers to. The SRV resource record is unique in that the name searched for is not this name.
TTL: Standard DNS meaning.
Class: Standard DNS meaning.
Priority: As for MX, the priority of this target host. A client must attempt to contact the target host with the lowest-numbered priority it can reach; target hosts with the same priority should be tried in pseudorandom order. The range is 0-65535.
Weight: a load-balancing mechanism. When selecting a target host among those that have the same priority, the chance of trying this one first should be proportional to its weight. Larger weights SHOULD be given a proportionately higher probability of being selected. The range is 0-65535. Domain administrators should use Weight 0 when there is not any load balancing to do (to make the resource record easier for humans to read).
Port: The port on this target host of this service. The range is 0-65535. This is often as specified in Assigned Numbers but need not be.
Target: As for MX, the domain name of the target host. There must be one or more "A" records for this name. Implementers should, but are not required, to return the "A" record(s) in the Additional Data section. Name compression is to be used for this field. A Target of "." means that the service is not available at this domain.