• Nenhum resultado encontrado

A comunicação SIP determina a troca de várias mensagens, que podem ser transportadas via UDP ou TCP, sendo o primeiro o método mais usual.

Uma mensagem pode ser 1) Requisição do cliente para o servidor ou; 2) Resposta do servidor para o cliente.

● SIP Requests

○ Uma mensagem SIP enviada do cliente ao servidor com o propósito de invocar uma operação em particular

● SIP Responses

○ Quando um UA (User Agent) ou um proxy server recebe uma requisição e envia uma resposta

Mensagem de requisição SIP (SIP Requests)

O formato de uma requisição SIP é caracterizado pela utilização de uma linha de requisição como primeira linha. Cada linha de requisição é formada por um método (tipo de operação de requisição), um endereço e pela identificação da versão SIP utilizada. São especificados seis métodos para a versão corrente do SIP. Porém, outros métodos foram definidos por extensões do SIP. Com relação ao endereço, o formato é definido como uma URI SIP, uma SIPS ou uma URI genérica.

Capítulo 03

Introdução à VoIP

Tabela 2.1 - Métodos de requisições no SIP/2.0

Há ainda os métodos estendidos de requisição. Eles estão enumerados na tabela abaixo.

Tabela 2.2 – Métodos de requisições estendidos Exemplo de SIP Request

INVITE sip:7170@rnp.br SIP/2.0 Via: SIP/2.0/UDP 195.37.77.100:5060;rport Max-Forwards: 10

Capítulo 03

Introdução à VoIP

From: "jiri" <sip:renatoduarte@rnp.rnp>;tag=76ff7a07-c091-4192-84a0-d56e91fe104f To: sip:luiz@rnp.br

Call-ID: d10815e0-bf17-4afa-8412-d9130a793d96@213.20.128.35 CSeq: 2 INVITE

Contact: sip:213.20.128.35:9315 User-Agent: Windows RTC/1.0

Proxy-Authorization: Digest username=“renatoduarte", realm=“rnp.br", algorithm="MD5", uri="sip:renatoduarte@rnp.br", nonce="3cef753900000001771328f5ae1b8b7f0d742da1feb5753c", response="53fe98db10e1074 b03b3e06438bda70f" Content-Type: application/sdp Content-Length: 451

Continua com linhas SDP...

A primeira linha indica que a mensagem INVITE é usada para estabelecer uma sessão. A URI da primeira linha SIP “7170@rnp.br SIP/2.0” é chamada de Request URI e contém a URI da pessoa chamada. Um SIP request pode conter um ou mais cabeçalhos Via, que são usados para guardar o endereço da requisição. Eles são utilizados para o roteamento de SIP Responses (respostas SIP). A mensagem INVITE contém apenas um cabeçalho Via criado pelo user agent que envia a requisição. Sobre o campo Via podemos dizer que o user agent está executando no endereço 195.37.77.100, na porta 5060. Nos campos do cabeçalho To e From identifica-se quem irá receber o convite e de quem está sendo recebido determinado convite para determinada sessão. Também possui um campo Tag que serve como um identificador de diálogo.

Mensagem de resposta (SIP Response)

É muito similar às requisições, exceto pela primeira linha. Caracterizada pela utilização de uma linha de status como linha de início, formada pela Identificação da versão SIP, Código de status numérico, Código de resultado com três dígitos e Frase textual

Existem seis classes do tipo SIP Responses: 1xx – Resposta informativa

2xx – Respostas de sucesso

3xx – Respostas de redirecionamento 4xx – Respostas de falha de requisição 5xx – Respostas de falha em servidor 6xx – Respostas de falha global

1xx

Usadas para respostas provisórias, que dizem ao receptor que a requisição feita foi recebida, mas o resultado ainda está em processo.

2xx

Respostas finais de sucesso, em que o originador da requisição sempre as receberá. Também terminam transações.

Capítulo 03

Introdução à VoIP

Respostas usadas para redirecionamento do chamador. Fornecem informações sobre a nova direção do usuário ou sobre um serviço alternativo que o chamador precisa usar para satisfazer a ligação.

4xx

Respostas utilizadas para indicar que houve erro da parte de quem enviou a requisição; erro na sintaxe ou por não ter sido bem preenchida pelo servidor. Resposta de falha de requisição. 5xx

Utilizadas para indicar que houve um erro da parte do servidor. Resposta de falha no servidor. 6xx

Usada para indicar que a resposta não pode ser completada em nenhum servidor. Resposta de falha global.

Exemplo de SIP Response SIP/2.0 200 OK

Via: SIP/2.0/UDP 192.168.1.30:5060;received=66.87.48.68 From: sip:sip2@iptel.org

To: sip:sip2@iptel.org;tagi=794fe65c16edfdf45da4fc39a5d2867c.b713 Call-ID: 2443936363@192.168.1.30

CSeqi: 63629 REGISTER

Contact: Msip:sip2@66.87.48.68:5060;transport=udp>;q=0.00;expires=120 Server: Sip EXpress router (0.8.11pre21xrc (i386/linux))

Content-Length: 0

Warning: 392 195.37.77.101:5060 "Noisy feedback tells:

pid=5110 req_src_ip=66.87.48.68 req_src_port=5060 in_uri=sip:iptel.org out_uri=sip:iptel.org via_cnt==1"

Este exemplo de SIP Response mostra que as respostas são bem similares às requisições, exceto na primeira linha, que contém a versão do protocolo (SIP/2.0), o código da resposta e a frase textual. Os códigos têm a intenção de serem processados pelas máquinas, não sendo muito amigáveis aos humanos, mas facilitando para que as máquinas façam o parse deles. Já a frase textual é legível aos humanos, descrevendo o resultado do processo.

Um exemplo mais completo

Capítulo 03

Introdução à VoIP

Figura 2.6 – Chamada SIP com proxies

O proxy server recebe uma requisição INVITE e envia uma resposta 100 (trying) para o softphone da Alice. A resposta 100 (trying) indica que a requisição INVITE foi recebida e que o proxy está trabalhando por ela para rotear a mensagem INVITE para seu destino. Respostas no SIP usam código com 3 dígitos seguidos de uma frase descritiva. Esta resposta contém os mesmos campos To, From, Call-ID, CSeq e Via, que permitem que o softphone da Alice correlacione a resposta com a mensagem INVITE enviada. O servidor proxy “atlanta.com” localiza o proxy no servidor

“biloxi.com”, possivelmente executando um tipo de procura no servidor de DNS para encontrar o servidor SIP que serve ao domínio “biloxi.com”. Como resultado, este obtém o endereço IP do servidor proxy “biloxi.com” e envia a requisição INVITE para lá. Antes de enviar a requisição, o servidor proxy “atlanta.com” adiciona um campo Via adicional que contém seu próprio endereço. O servidor proxy “biloxy.com” recebe a requisição INVITE e responde com 100 (trying) ao servidor proxy “atlanta.com” indicando que recebeu a requisição INVITE e a está processando. O servidor proxy consulta o banco de dados, geralmente chamado de “location service”, que contém o endereço IP atual do Bob. O servidor proxy “biloxi.com” adiciona outro campo Via no cabeçalho com o seu endereço para a requisição INVITE e a envia ao telefone SIP do Bob. O telefone SIP do Bob recebe a requisição INVITE e alerta ao Bob que existe uma chamada de Alice. O telefone SIP do Bob indica essa ação com uma mensagem de resposta 180 (ringing), que é roteada pelos dois proxies na direção reversa. Cada proxy utiliza o campo Via do cabeçalho para saber para onde enviar a resposta, depois elimina-as do topo da mensagem. Quando o softphone da Alice recebe a resposta 180 (ringing), a informação é passada para Alice, talvez utilizando tom de áudio “ringback” ou mostrando uma mensagem na tela do softphone dela.

Quando Bob atende à ligação, o seu telefone SIP envia uma mensagem 200 (OK) para indicar que a ligação foi atendida. A mensagem 200 (OK) contém o corpo da mensagem juntamente com a

Capítulo 03

Introdução à VoIP

descrição de mídia SDP (Session Description Protocol) do tipo de sessão que Bob está esperando estabelecer com Alice. Se Bob resolvesse não atender à chamada, uma mensagem de erro seria retornada em vez da mensagem 200 (OK), e a sessão de mídia não existiria.