RFC 3263:Session Initiation Protocol (SIP): Locati...
RFC-Ref

5. Server Usage

   RFC 3261prop [1] defines procedures for sending responses from a server
   back to the client.  Typically, for unicast UDP requests, the
   response is sent back to the source IP address where the request came
   from, using the port contained in the Via header.  For reliable
   transport protocols, the response is sent over the connection the
   request arrived on.  However, it is important to provide failover
   support when the client element fails between sending the request and
   receiving the response.

   A server, according to RFC 3261prop [1], will send a response on the
   connection it arrived on (in the case of reliable transport
   protocols), and for unreliable transport protocols, to the source
   address of the request, and the port in the Via header field.  The
   procedures here are invoked when a server attempts to send to that
   location and that response fails (the specific conditions are
   detailed in RFC 3261prop). "Fails" is defined as any closure of the
   transport connection the request came in on before the response can
   be sent, or communication of a fatal error from the transport layer.

   In these cases, the server examines the value of the sent-by
   construction in the topmost Via header.  If it contains a numeric IP
   address, the server attempts to send the response to that address,
   using the transport protocol from the Via header, and the port from
   sent-by, if present, else the default for that transport protocol.
   The transport protocol in the Via header can indicate "TLS", which
   refers to TLS over TCP.  When this value is present, the server MUST
   use TLS over TCP to send the response.

   If, however, the sent-by field contained a domain name and a port
   number, the server queries for A or AAAA records with that name.  It
   tries to send the response to each element on the resulting list of
   IP addresses, using the port from the Via, and the transport protocol
   from the Via (again, a value of TLS refers to TLS over TCP).  As in
   the client processing, the next entry in the list is tried if the one
   before it results in a failure.

   If, however, the sent-by field contained a domain name and no port,
   the server queries for SRV records at that domain name using the
   service identifier "_sips" if the Via transport is "TLS", "_sip"
   otherwise, and the transport from the topmost Via header ("TLS"
   implies that the transport protocol in the SRV query is TCP).  The
   resulting list is sorted as described in [2], and the response is
   sent to the topmost element on the new list described there.  If that
   results in a failure, the next entry on the list is tried.

Google
Web
RFC-Ref