La cabecera de contacto dice donde se encuentra (o más bien, donde el agente de usuario es), mientras que el encabezado dice que eres.
Es posible que tenga varios dispositivos SIP registrados en la misma dirección de registro (el URI que coloca en el encabezado De).
Además, las solicitudes de REGISTRO usan encabezados de contacto para mantener el servicio de ubicación de SIP: permiten que un agente de usuario actualice la información de ubicación de un registrador.
(Por otro lado, si Alice llama a Bob, el encabezado de contacto debe estar en una respuesta 2xx para que Alice pueda enrutar el ACK del 2xx a Bob. Esto apunta al comentario de DarkDust sobre algunos proxies SIP que manchan los encabezados de contacto: si no, te encuentras en la incómoda posición de tener una llamada que está medio establecida: Alice cree que la llamada se configuró porque ella envió su ACK, pero Bob nunca la recibe. Una alternativa a un proxy de manipulación de contactos es usar un B2BUA. como una puerta de enlace de red; no necesitaría modificar el encabezado de contacto porque el encabezado apuntaría al propio B2BUA).
En respuesta a los comentarios de Phoenix Luo, debido a las deficiencias del uso de direcciones IP LAN en un encabezado de contacto, RFC 5627 describe una solución - usando glo URIs del agente de usuario enrutable bally (GRUUs) en el/los encabezado/s de contacto.
Gracias. Hice una prueba en pjprojet. Si el campo de Contacto es como el anterior, el BYE enviado por el destinatario no puede comunicarse con la persona que llama. –
Eso podría deberse a que el Contacto es una dirección de LAN privada. Si su destinatario está en otra red, no podrá alcanzarlo. Para eso se utilizan los proxies SIP: se ubican en los límites de la red y destruyen los encabezados de los contactos para que la otra parte pueda llegar a las direcciones mencionadas. – DarkDust
Gracias. Con tu ayuda, he reparado el problema. –