SIP - Mensagens
As mensagens SIP são de dois tipos - requests e responses.
A linha de abertura de uma solicitação contém um método que define a solicitação e um Request-URI que define para onde a solicitação deve ser enviada.
Da mesma forma, a linha de abertura de uma resposta contém um código de resposta.
Métodos de Solicitação
SIP requestssão os códigos usados para estabelecer uma comunicação. Para complementá-los, existemSIP responses que geralmente indicam se uma solicitação foi bem-sucedida ou falhou.
Essas solicitações SIP, conhecidas como MÉTODOS, tornam a mensagem SIP viável.
MÉTODOS podem ser considerados como solicitações SIP, uma vez que solicitam uma ação específica a ser realizada por outro agente de usuário ou servidor.
MÉTODOS são distinguidos em dois tipos -
Métodos Básicos
Métodos de Extensão
Métodos Básicos
Existem seis métodos principais, conforme discutido abaixo.
CONVITE
INVITE é usado para iniciar uma sessão com um agente do usuário. Em outras palavras, um método INVITE é usado para estabelecer uma sessão de mídia entre os agentes do usuário.
INVITE pode conter as informações de mídia do chamador no corpo da mensagem.
Uma sessão é considerada estabelecida se um INVITE recebeu uma resposta de sucesso (2xx) ou um ACK foi enviado.
Uma solicitação INVITE bem-sucedida estabelece um dialog entre os dois agentes do usuário, que continua até que um BYE seja enviado para encerrar a sessão.
Um CONVITE enviado em um diálogo estabelecido é conhecido como um re-INVITE.
Re-CONVIDAR é usado para alterar as características da sessão ou atualizar o estado de um diálogo.
INVITE Exemplo
O código a seguir mostra como INVITE é usado.
INVITE sips:[email protected] SIP/2.0
Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9
Max-Forwards: 70
From: Alice<sips:[email protected]>;tag = 1234567
To: Bob<sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sips:[email protected]>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
v = 0
o = Alice 2890844526 2890844526 IN IP4 client.ANC.com
s = Session SDP
c = IN IP4 client.ANC.com
t = 3034423619 0
m = audio 49170 RTP/AVP 0
a = rtpmap:0 PCMU/8000
TCHAU
BYE é o método usado para encerrar uma sessão estabelecida. Esta é uma solicitação SIP que pode ser enviada pelo chamador ou pelo receptor para encerrar uma sessão.
Não pode ser enviado por um servidor proxy.
A solicitação BYE normalmente roteia de ponta a ponta, ignorando o servidor proxy.
BYE não pode ser enviado para um INVITE pendente ou uma sessão não estabelecida.
REGISTRO
A solicitação REGISTER realiza o registro de um agente do usuário. Essa solicitação é enviada por um agente do usuário a um servidor de registro.
O pedido de REGISTER pode ser encaminhado ou procurado até chegar a um registrador autorizado do domínio especificado.
Carrega o AOR (Endereço de Registro) no To cabeçalho do usuário que está sendo registrado.
A solicitação REGISTER contém o período de tempo (3600seg).
Um agente de usuário pode enviar uma solicitação REGISTER em nome de outro agente de usuário. Isso é conhecido comothird-party registration. Aqui oFrom tag contém o URI da parte que envia o registro em nome da parte identificada no To cabeçalho.
CANCELAR
CANCELAR é usado para encerrar uma sessão que não foi estabelecida. Os agentes do usuário usam essa solicitação para cancelar uma tentativa de chamada pendente iniciada anteriormente.
Ele pode ser enviado por um agente de usuário ou um servidor proxy.
CANCELAR é um hop by hop solicitação, ou seja, ela passa pelos elementos entre o agente do usuário e recebe a resposta gerada pelo próximo elemento com estado.
ACK
ACK é usado para reconhecer as respostas finais a um método INVITE. Um ACK sempre vai na direção de INVITE.ACK pode conter corpo SDP (características de mídia), se não estiver disponível em INVITE.
ACK não pode ser usado para modificar a descrição da mídia que já foi enviada no INVITE inicial.
Um proxy com estado que recebe um ACK deve determinar se o ACK deve ou não ser encaminhado para outro proxy ou agente de usuário.
Para respostas 2xx, ACK é ponta a ponta, mas para todas as outras respostas finais, ele funciona salto a salto quando proxies stateful estão envolvidos.
OPÇÕES
O método OPTIONS é usado para consultar um agente de usuário ou um servidor proxy sobre seus recursos e descobrir sua disponibilidade atual. A resposta a uma solicitação lista os recursos do agente do usuário ou servidor. Um proxy nunca gera uma solicitação OPTIONS.
Métodos de Extensão
Se inscrever
SUBSCRIBE é usado por agentes de usuário para estabelecer uma assinatura com o objetivo de obter notificação sobre um determinado evento.
Contém um Expires campo de cabeçalho que indica a duração de uma assinatura.
Depois que o período de tempo passar, a assinatura será encerrada automaticamente.
A assinatura estabelece um diálogo entre os agentes do usuário.
Você pode se inscrever novamente enviando outro ASSINAR dentro da caixa de diálogo antes do tempo de expiração.
Um 200 OK será recebido para uma assinatura do usuário.
Os usuários podem cancelar a assinatura enviando outro método SUBSCRIBE com valor de expiração 0 (zero).
NOTIFICAR
NOTIFY é usado por agentes de usuário para obter a ocorrência de um evento específico. Normalmente, um NOTIFY será acionado em uma caixa de diálogo quando houver uma assinatura entre o assinante e o notificador.
Cada NOTIFY obterá uma resposta 200 OK se for recebida pelo notificador.
NOTIFY contém um Event campo de cabeçalho indicando o evento e um subscriptionstate campo de cabeçalho indicando o estado atual da assinatura.
Uma NOTIFICAÇÃO é sempre enviada no início e no término de uma assinatura.
PUBLICAR
PUBLISH é usado por um agente de usuário para enviar informações de estado do evento a um servidor.
PUBLICAR é útil principalmente quando há várias fontes de informações de eventos.
Uma solicitação PUBLISH é semelhante a uma NOTIFY, exceto que ela não é enviada em um diálogo.
Uma solicitação PUBLICAR deve conter um Expires campo de cabeçalho e um Min-Expires campo de cabeçalho.
REFERIR
REFER é usado por um agente de usuário para referir outro agente de usuário para acessar um URI para o diálogo.
REFER deve conter um Refer-Tocabeçalho. Este é um cabeçalho obrigatório para REFER.
REFER pode ser enviado dentro ou fora de um diálogo.
UMA 202 Accepted irá acionar uma solicitação REFER que indica que outro agente do usuário aceitou a referência.
INFO
INFO é usado por um agente de usuário para enviar informações de sinalização de chamada a outro agente de usuário com o qual ele estabeleceu uma sessão de mídia.
Esta é uma solicitação ponta a ponta.
Um proxy sempre encaminhará uma solicitação de INFO.
ATUALIZAR
UPDATE é usado para modificar o estado de uma sessão se uma sessão não for estabelecida. O usuário pode alterar o codec com UPDATE.
SE uma sessão for estabelecida, um novo convite é usado para alterar / atualizar a sessão.
PRACK
PRACK é usado para acusar o recebimento de uma transferência confiável de resposta provisória (1XX).
Geralmente PRACK é gerado por um cliente quando recebe uma resposta provisória contendo um RSeq número de sequência confiável e um supported:100rel cabeçalho.
PRACK contém valor (RSeq + CSeq) no rack cabeçalho.
O método PRACK se aplica a todas as respostas provisórias, exceto a resposta 100 Trying, que nunca é transportada de forma confiável.
Um PRACK pode conter um corpo de mensagem; pode ser usado para troca de oferta / resposta.
MENSAGEM
Ele é usado para enviar uma mensagem instantânea usando SIP. Uma MI geralmente consiste em mensagens curtas trocadas em tempo real por participantes em conversas de texto.
A MENSAGEM pode ser enviada dentro de um diálogo ou fora de um diálogo.
O conteúdo de uma MENSAGEM é transportado no corpo da mensagem como um MIME anexo.
UMA 200 OK a resposta é normalmente recebida para indicar que a mensagem foi entregue em seu destino.