sábado, 13 de junio de 2009

Protocolo SIP

PROTOCOLO SIP



Métodos que utiliza el protocolo SIP:

Metodo

Descripcion

INVITE

Solicita el inicio de una sesión

ACK

Confirma que se ha iniciado una sesión

BYE

Solicita la terminación de una sesión

OPTIONS

Consulta a un host sobre sus capacidades

CANCEL

Cancela una solicitud pendiente

REGISTER

Informa al servidor de redireccionamiento sobre la ubicación actual del usuario

Codigos de Respuesta

Codigo

Significado

Ejemplos

1xx

Informacion

100=El servidor esta de acuerdo en manejar la solicitud del cliente

2xx

Éxito

200=la solicitud es exitosa;204=no hay contenido

3xx

Redireccion

301=pagina movida;304=pagina no encontrada

4xx

Error del Cliente

403=pagina prohibida;404=pagina no encontrada

5xx

Error del Servidor

500=error interno del servidor;503=trata mas tarde

Descripcion del funcionamiento en base a la figura anterior

Para establecer una sesión, el invocador crea una conexión TCP con el invocado y envía un mensaje INVITE a través de ella o lo envía en un paquete UDP. En ambos caso, los encabezados de la segunda línea y de las subsiguientes describen la estructura del cuerpo del mensaje, el cual contiene las capacidades, los tipos de medios y los formatos del invocador. Si el invocado acepta la llamada, responde con un código de respuesta tipo HTTP(son números de 3 digitos descritos en la tabla anterior, en el caso de aceptación el invocado envía un 200). El invocado también puede proporcionar información sobre sus capacidades, tipos de medios y formatos, después de la línea de código de respuesta.

La conexión se realiza utilizando un acuerdo de 3 vias, de modo que el invocador responde con un mensaje ACK para terminar le protocolo y confirmar la recepción del mensaje del código de respuesta 200.

Cualquiera de las 2 partes puede solicitar la terminación de una sesión enviando un mensaje que contiene el método BYE. Cuando el otro lado confirma su recepción, se termina la sesión(siempre en 3 vias).

El método OPTIONS se utiliza para consultar a una maquina sobre sus propias capacidades. Por lo general, se utiliza antes de que se inicie una sesión a fin de averiguar si esa maquina tiene la capacidad de transmitir voz sobre IP o el tipo de sesión que se ha contemplado.

El método REGISTER se relaciona con la capacidad de SIP de rastrear y conectarse con un usuario que este lejos de casa. Este mensaje se envía a un servidor de ubicación IP que mantiene la pista de quien esta en que lugar. Ese servidor se puede consultar posteriormente para encontrar la ubicación actual del usuario. En este ejemplo se muestra la operación de redirección. Aquí el invocador envía un mensaje INVITE a un servidor proxy para ocultar la posible redirección. A continuación el proxy investiga donde esta el usuario y envía el mensajeINVITE ahí. Despues actua como un regulador para los mensajes subsecuentes en el acuerdo de 3 vias. Los mensajesLOOKUP yREPLY no son parte de SIP; se puede utilizar cualquier protocolo conveniente, dependiendo del tipo de servidor de ubicación que se este utilizando.

El ejemplo como pueden ver muestra la comunicación SIP por medio de un proxy, en donde se necesita que el proxy haga el LOOKUP y REPLY, si no se esta utilizando un proxy, que se utiliza para cuando son redes de voz ip grandes, que incluyen varias oficinas por ejemplo, la conexión es directa a un servidor IP, donde los clientes solo tienen que hacer directo a el métodoREGISTER.

Los números de teléfono de SIP se representan como URL, se utiliza el esquema sip, por ejemplo:sip:erika@dominio1.compara un usuario Erika y en un host de dominio dominio1.com, estos URLs pueden contener direcciones IPv4, IPv6 y también números de teléfonos reales.

Entonces en términos mas claros funciona asi:

sip:erika@dominio1.comenvía un REGISTER al servidor SIP para darle a conocer su ubicación, lo mismosip:noel@dominio2.com , como ambos están en ubicaciones geográficas diferentes, asumamos que cada uno tiene en su lado un proxy que se conecta aun servidor SIP en Neptuno, estos servidores proxy utilizando cualquiera que sea protocolo necesario se comunica con el servidor en Neptuno utilizando mensaje de LOOKUP para ubicar a cada una de las partes, y el servidor le envía un mensaje deREPLY diciéndole donde se encuentra cada uno.

Una vez quesip:erika@dominio1.comubico asip:noel@dominio2.com , utiliza el método INVITE,al cual si Noel quiere hablar con ella le va a contestar y este por HTTP le envía un mensaje de respuesta #200 de que la aceptación fue exitosa, al recibir Erika el mensaje de respuesta exitoso ella enviara el método ACKpara avisar de que lo recibió y la comunicación se levanta entre ambas partes.

Cuando Erika se aburra de hablar con Noel, o viceversa, cualquiera de ellos enviara el métodoBYE, y una vez que la otra parte confirme que recibió el mensaje de terminación, este responderá con un mensaje de respuesta # 200 y la comunicación se termina.

El método CANCEL se envía en el caso de quesip:erika@dominio1.comllame asip:noel@dominio2.com y este no le conteste, entonces para terminar esa operación pendiente se utiliza este método. Puede ser una llamada o cualquier otro tipo de solicitud pendiente.

Antes de que ocurra cualquier cosa, las diferentes hosts pueden enviar el método deOPTIONS para estar sabidos de las capacidades y servicios con que cuenta cada uno de los hosts con los que se quiere comunicar.

Mas información para tenerlo aun mas claro:


Este seria el formato del mensaje que enviaria Erika

INVITE sip:noel@dominio2.com SIP/2.0

Via: SIP/2.0/UDP dominio1.com;branch=z9hG4bK776asdhds

Max-Forwards: 70

To: Noel

From: Erika;tag=1928301774

Call-ID: a84b4c76e66710@dominio1.com

CSeq: 314159 INVITE

Contact:

Content-Type: application/sdp

Content-Length: 142


El formato del mensaje de aceptacion que mandaria noel seria:

SIP/2.0 200 OK

Via: SIP/2.0/UDP dominio2.com

;branch=z9hG4bKnashds8;received=192.0.2.3

Via: SIP/2.0/UDP dominio1.com

;branch=z9hG4bK77ef4c2312983.1;received=192.0.2.2

Via: SIP/2.0/UDP dominio1.com

;branch=z9hG4bK776asdhds ;received=192.0.2.1

To: Noel ;tag=a6c85cf

From: Erika ;tag=1928301774

Call-ID: a84b4c76e66710@dominio1.com

CSeq: 314159 INVITE

Contact:

Content-Type: application/sdp

Content-Length: 131



No hay comentarios:

Publicar un comentario