Link
Introdução
- SIP(Session Initiation Protocol), trabalha com gerenciamento de sessões, com várias formas de sessões multimídia de tempo real.
- É um protocolo da aplicação que lida com chamadas de telefone pela Internet.
- o SIP suporta 5 "facetas":
- Localização do usuário
- Disponibilidade do usuário
- Aptidões do usuário
- Iniciação de sessão (setup)
- Gerenciamento de sessão
- Pode trabalhar com outros procolos (RTP,RSTP,SDP,MEGACO), mas não precisa deles necessariamente.
- O SIP não provê serviços, mas primitivas para que estes possam ser implementados.
- Não é oferecido nenhum controle sobre os serviços de conferência, para isto devem ser usados outros protocolos.
- São oferecidos serviços de segurança, que envolvem criptografia, autenticação, privacidade...
- Funciona com IPv4 e IPv6.
Overview das Operações
- As funções básicas do SIP envolvem: localização do ponto final, negociação de parâmetros da sessão, etc.
- O SIP usa identificadores (URI) chamados de SIP URI. Cada lado da chamada possui o seu identificador.
- Um "INVITE" é uma requisição de chamada, parecido com o acontece no HTTP. Esta mensagem pode conter informações adicionais em seus campos.
- Segue abaixo uma figura de uma troca de mensagens SIP, e o modelo de um INVITE:


- Os campos do INVITE:
- Via: contém o endereço pelo qual Alice espera respostas para esta requisição, que também contém um parâmetro que identifica a transação.
- To: contém o destino (nome) e seu SIP URI.
- From: tem o nome do solicitante, seu SIP URI adicionado de uma string randômica usada para identificação.
- Call-ID: identificador único para esta chamada. A combinação de To, From e Call-ID define o relacionamento SIP peer-to-peer.
- CSeq: é um número incrementado para cada requisição (como um numero de sequência).
- Contact: traz um SIP ou SIP URI para contato direto com o solicitante. Neste campo pode ter o IP.
- Max-Forwards: funciona como o TTL, limitando o número de saltos.
- Content-Type: descrição do corpo da mensagem.
- Content-Lenght: um contador de bytes do corpo da mensagem.
- Uma mensagem SDP pode ser carregada pelo SIP com informações sobre a sessão.
- Se Alice não conhece a localização de Bob, seu servidor SIP (atlanta.com) passa a fazer a busca, e manda um Trying falando que recebeu o INVITE. A busca pode ser feita usando DNS e vai passando pelos servidores até chegar no Bob. Estes servidores podem ser chamados de proxy.
- Bob manda para Alice um reconhecimento de que recebeu o INVITE e depois um OK, aceitando-o.
- A mensagem OK copia os campos do INVITE e adiciona uma tag no "To" que vai ser usada pelo resto da comunicação. Segue abaixo a mensagem OK:

- Um servidor proxy pode mandar vários invites ao mesmo tempo, isso é chamado de forking.
- Alice responde o OK com um ACK, fechando o tree way handshaking do SIP. O ACK é direto pois o endereço de Bob já foi "aprendido".
- Um re-INVITE pode ser mandado paraa mudar as características da sessão, o qual deve ser respondido com um OK e depois ACK. Se não for aceito vem uma mensagem de "não aceitável" de número 488.
- Para encerrar é gerada uma mensagem BYE que deve ser respondida com uma 200(OK). Neste caso não há ACK.
- Um servidor proxy pode solicitar que todas as mensagens passem por ele.
- Uma operação comum é regitrar, para que o servidor proxy saiba a localização corrente do SIP phone. Aí fica claro que a distinção entre os servidores SIP é lógica e não física.
- Um usuário pode ter vários phones e um phone pode ser usado por vários usuários, assim o proxy pode fazer múltiplas buscas. O "registrar" pode ajudar nisto, mas não é o único meio, algumas funções de mapping podem ser configuradas pelo administrador.
- Existem outras mensagens SIP que serão apresentadas depois.
- pag 18 -