BroadNet
SIP / VoIPSolicitudes

Métodos y solicitudes de SIP

Actualizado el 4 min de lecturaBasado en estándares
Respuesta directa

Las solicitudes SIP se nombran por un método. RFC 3261 define seis: INVITE (iniciar una sesión), ACK (confirmar una respuesta final a un INVITE), BYE (terminar una sesión), CANCEL (abortar un INVITE pendiente), REGISTER (registrar una ubicación) y OPTIONS (consultar capacidades). Los RFC de extensión añaden INFO, PRACK, UPDATE, SUBSCRIBE/NOTIFY, REFER, MESSAGE y PUBLISH.

§01

Los seis métodos básicos

RFC 3261 define el conjunto básico de solicitudes que toda implementación SIP admite. INVITE establece una sesión y transporta la oferta SDP inicial. ACK confirma una respuesta final a un INVITE; es inusual por ser una solicitud que completa la negociación en tres fases del INVITE en lugar de esperar su propia respuesta. BYE termina una sesión establecida. CANCEL aborta un INVITE que aún no ha recibido una respuesta final (una llamada que sigue sonando). REGISTER indica a un registrar dónde es alcanzable un usuario. OPTIONS consulta las capacidades de un par y se reutiliza ampliamente como keepalive ligero.

Métodos básicos de SIP (RFC 3261)
MétodoPropósitoNota
INVITEIniciar una sesiónTransporta la oferta SDP; crea un diálogo
ACKConfirmar una respuesta final a INVITECompleta el handshake INVITE de tres vías
BYEFinalizar una sesión establecidaEnviado por cualquiera de las partes en el diálogo
CANCELCancelar una solicitud INVITE pendienteSolo antes de una respuesta final (sigue sonando)
REGISTERRegistrar la ubicación Contact de un usuarioActualizado periódicamente (Expires)
OPTIONSConsultar capacidadesSe reutiliza comúnmente como keepalive / comprobación de estado
§02

Por qué ACK y CANCEL son especiales

Dos métodos básicos se comportan de forma distinta al resto. ACK no es un par normal de solicitud/respuesta: confirma la respuesta final a un INVITE y no transporta respuesta propia. Para un 2xx se envía de extremo a extremo como una transacción aparte; para un fallo no-2xx se genera salto a salto dentro de la transacción del INVITE. CANCEL solo tiene sentido mientras un INVITE sigue pendiente; una vez que llega una respuesta final, usa BYE en su lugar. Acertar con estos dos es el meollo de una máquina de estados SIP correcta.

§03

Métodos de extensión comunes

Más allá de los seis básicos, un conjunto de métodos de extensión gestiona mensajería, eventos y actualizaciones en mitad de la llamada. SUBSCRIBE/NOTIFY implementan el marco de eventos (presencia, indicación de mensaje en espera, estado de diálogo). REFER desencadena la transferencia de llamada. MESSAGE transporta mensajes instantáneos / SMS-sobre-SIP. UPDATE modifica una sesión antes de que esté completamente establecida (early media). PRACK confirma de forma fiable las respuestas provisionales. INFO transporta información en mitad de la sesión, como DTMF. PUBLISH envía el estado de un evento a un servidor.

Métodos de extensión comunes de SIP
MétodoRFCPropósito
INFORFC 6086Información de mitad de sesión (por ejemplo, dígitos DTMF)
PRACKRFC 3262Acuse de recibo fiable de las respuestas provisionales (1xx)
UPDATERFC 3311Modificar una sesión antes de la respuesta final (medios tempranos)
SUBSCRIBE / NOTIFYRFC 6665Suscripción y notificación de eventos (presencia, MWI)
REFERRFC 3515Solicitar transferencia a otra parte
MESSAGERFC 3428Mensajería instantánea / mensajería en modo página
PUBLISHRFC 3903Enviar el estado del evento (por ejemplo, presencia) a un servidor
§04

Una línea de solicitud en el cable

Una solicitud SIP comienza con una línea de solicitud: el método, la Request-URI (el destino actual) y la versión de SIP. A continuación siguen las cabeceras y un cuerpo opcional. El ejemplo es el inicio de un INVITE hacia un destinatario; la Request-URI la reescriben los proxies a medida que se enruta la solicitud, mientras que la cabecera To permanece fija como objetivo lógico.

El inicio de una solicitud INVITEtext
INVITE sip:bob@example.com SIP/2.0
Via: SIP/2.0/UDP host.example.net;branch=z9hG4bK776asdhds
Max-Forwards: 70
To: Bob <sip:bob@example.com>
From: Alice <sip:alice@example.net>;tag=1928301774
Call-ID: a84b4c76e66710@host.example.net
CSeq: 314159 INVITE
Contact: <sip:alice@host.example.net>
Content-Type: application/sdp
Content-Length: 142
Preguntas frecuentes

Preguntas frecuentes

¿Cuáles son los seis métodos básicos de SIP?

INVITE (iniciar una sesión), ACK (confirmar una respuesta final a un INVITE), BYE (terminar una sesión), CANCEL (abortar un INVITE pendiente), REGISTER (registrar la ubicación de un usuario) y OPTIONS (consultar capacidades). Se definen en RFC 3261; todo lo demás es una extensión.

¿Cuál es la diferencia entre CANCEL y BYE?

CANCEL aborta un INVITE que aún no ha recibido una respuesta final, una llamada que sigue sonando. BYE termina una sesión ya establecida. Usa CANCEL antes de que se conteste la llamada y BYE después; usar el equivocado deja la máquina de estados incoherente.

¿Por qué ACK no recibe respuesta?

ACK existe para confirmar la respuesta final a un INVITE y completar la negociación en tres fases, así que está definido para no tener respuesta propia. Para un 2xx es una transacción aparte de extremo a extremo; para un fallo se genera salto a salto dentro de la transacción del INVITE.

¿Cómo se envía DTMF en SIP?

Lo más común, como paquetes de telephone-event de RTP (RFC 4733) en el flujo de medios, y como alternativa mediante mensajes SIP INFO que transportan los dígitos por el trayecto de señalización. El telephone-event de RTP se prefiere porque se mantiene sincronizado con el audio.

¿Qué método transfiere una llamada?

REFER (RFC 3515). Pide al destinatario que inicie una nueva solicitud (normalmente un INVITE) hacia un tercero nombrado en la cabecera Refer-To, implementando la transferencia de llamada. Los mensajes NOTIFY informan luego del progreso de la llamada referida al transferente.

Referencias

Especificaciones de la fuente

Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.

BNMantenido por el equipo de ingeniería BroadNet·Mensajería de nivel empresarial desde 2003.
Colócalo en el cable

Desarrollado con un enlace SMPP real y una API REST.

Solicita acceso de prueba con claves de prueba reales: primero envía a tu propio número verificado y, una vez aprobada tu identidad de remitente y las rutas, pasa a producción en más de 200 países.