L'intestazione di contatto dice dove sei (o meglio, dove il vostro User Agent è), mentre l'intestazione From dice chi sei.
È possibile che diversi dispositivi SIP siano tutti registrati sullo stesso indirizzo di registrazione (l'URI inserito nell'intestazione From).
Inoltre, le richieste di REGISTRO utilizzano le intestazioni dei contatti per mantenere il servizio di localizzazione di SIP: consentono a un agente utente di aggiornare le informazioni sulla posizione di un registrar.
(Per inciso, se Alice chiama Bob, l'intestazione Contact deve essere in una risposta 2xx in modo che Alice possa indirizzare l'ACK del 2xx su Bob. Ciò fa riferimento al commento di DarkDust su alcuni proxy SIP che manchino intestazioni di Contatto: se esso no, ti trovi nella scomoda posizione di avere una chiamata che è solo a metà stabilita: Alice pensa che la chiamata sia impostata perché ha inviato il suo ACK, ma Bob non la riceve mai. Un'alternativa a un proxy di manomissione dei contatti sta usando un B2BUA come gateway di rete, non avrebbe bisogno di manipolare l'intestazione del Contatto perché l'intestazione avrebbe puntato allo stesso B2BUA.)
In risposta ai commenti di Phoenix Luo, a causa delle carenze dell'utilizzo di IP LAN in un'intestazione di Contatto, RFC 5627 descrive una soluzione - usando glo URI dell'agente utente bally instradabile (GRUU) nell'intestazione/i di contatto.
fonte
2012-03-02 16:30:18
Grazie. Ho fatto un test con pjprojet. Se il campo Contatto è come sopra, il BYE inviato dal callee non può raggiungere il chiamante. –
Ciò potrebbe essere dovuto al fatto che il contatto è un indirizzo LAN privato. Se il tuo destinatario si trova in un'altra rete, non sarebbe in grado di raggiungerlo. Questa è una delle cose per cui i proxy SIP sono usati: siedono ai confini della rete e manipolano le intestazioni dei contatti in modo che l'altra parte possa raggiungere gli indirizzi citati. – DarkDust
Grazie. Con il tuo aiuto, ho riparato il problema. –