Análise de Pacotes SIP, SDP e Codecs
Neste artigo, exploraremos a análise de pacotes SIP (Session Initiation Protocol) e como identificar os codecs envolvidos nessa troca.
O protocolo SIP (Session Initiation Protocol) é um protocolo de controle de sessão para comunicação em tempo real sobre a Internet. Ele é usado para estabelecer, manter e encerrar sessões de comunicação de voz, vídeo e outros tipos de dados.
O protocolo SDP (Session Description Protocol) é um protocolo de descrição de sessão que é usado para descrever as características de uma sessão de comunicação. Ele é usado para fornecer informações sobre o tipo de mídia que será transportada na sessão, os codecs que serão usados e as configurações de transporte.
Os codecs são algoritmos que codificam e decodificam dados de mídia. Eles são usados para compactar os dados de mídia para que possam ser transportados de forma eficiente pela rede.
Estrutura de um pacote SIP
Um pacote SIP é composto por várias linhas de texto, cada uma com um cabeçalho e um valor. Os cabeçalhos fornecem informações sobre o tipo de mensagem, o remetente, o destinatário, o conteúdo da mensagem e outras informações.
Exemplo de pacote SIP:
Os seguintes campos são os cabeçalhos mais comuns de um pacote SIP:
Method: O método da mensagem. Os métodos mais comuns são INVITE (para iniciar uma chamada), ACK (para confirmar o recebimento de uma mensagem), BYE (para encerrar uma chamada) e OPTIONS (para obter informações sobre um recurso).
Via: Indica o protocolo de transporte, o endereço IP e a porta utilizada, além de um identificador único (branch) para a transação.
Max-Forwards: Indica o número máximo de saltos permitidos para encaminhamento da mensagem.
Contact: Informa como o remetente pode ser contatado.
From e To: Especificam os participantes da chamada (origem e destino), indicando seus endereços SIP e, em alguns casos, informações adicionais como tags.
Call-ID: Identificador único da chamada, permitindo associar todas as mensagens relacionadas a uma mesma chamada.
CSeq: Número de sequência da mensagem, indicando a ordem das mensagens em uma transação.
Supported: Lista de recursos suportados pelo cliente.
User-Agent: Identifica o software ou dispositivo que está iniciando a chamada.
Content-Type: O comprimento do corpo da mensagem em bytes.
Estrutura do SDP
O SDP é um protocolo de texto, composto por várias linhas, cada uma com um campo e um valor. O SDP é descrito pela RFC 4566. Também faz parte do pacote SIP.
Algumas linhas em cada descrição são NECESSÁRIAS e outras são OPCIONAIS, mas todos DEVEM aparecer exatamente na ordem dada pela RFC
Exemplo de SDP:
CAMPO | NOME | OBRIGATÓRIO |
---|---|---|
v | Versão do protocolo | Sim |
o | Criador e identificador da origem | Sim |
s | Nome da sessão | Sim |
i | informação sobre a sessão | Não |
u | Uniforme Resource Identifier – URI | Não |
e | Endereço de email | Não |
p | Número de telefone | Não |
c | Informação sobre a conexão | Sim |
b | Informação sobre largura de banda | Não |
t | Tempo para início e término da sessão | Sim |
r | Número de repetições | Não |
z | Correções de fuso horário | Não |
k | Chave de criptografia (não utilizado mais) | Não |
a | Linha de atributos da sessão | Não |
m | Informações sobre a mídia | Não |
a | Atributos da mídia | Não |
Codecs
Os codecs são algoritmos que codificam e decodificam dados de mídia. Eles são usados para compactar os dados de mídia para que possam ser transportados de forma eficiente pela rede.
Em um pacote sip os codecs são ofertados no SDP no campo m (nome da mídia e endereço de transporte).
O campo m é formado por: m=<mídia> <porta> <proto> <codec>
No exemplo:
m=audio 34494 RTP/AVP 8 0 101
mídia= audio
porta= 34494
procolo= RTP/AVP
codecs= 8 0 101
Outro exemplo:
Abaixo estão alguns dos principais codecs usados nas trocas de chamadas:
Payload | Codec |
---|---|
0 | PCMU |
3 | GSM |
4 | G.723 |
5 | DVI4 |
7 | LPC |
8 | PCMA |
9 | G.722 |
18 | G729 |
Related content
SIPPulse Routing and Billing Solutions for SIP