Por definición, una conexión P2P es una conexión de red de datos entre dos máquinas que se comportan como iguales entre sí. Esto significa que cada máquina puede actuar como servidor y como cliente al mismo tiempo entre todos los equipos que forman parte de la red P2P, normalmente el grabador o la cámara IP y el terminal que utilizamos para conectarnos a ellos. Partiendo de que una conexión IP requiere de los siguientes elementos:
- Dirección IP y puertos de origen y destino (los equipos que van a comunicarse)
- Protocolo (habitualmente TCP o UDP)
La mayoría de firewall o cortafuegos bloquean todo el tráfico que viene se origina en Internet hacia la red local y permiten todo el tráfico que va desde la red local hacia Intenet. Por esto, si el equipo de destino está en una red local con un router que da conexión a Internet a todos los equipos de la red, deberíamos redirigir un puerto del exterior hacia el puerto e IP local del equipos al que deseamos conectar. Con una conexión P2P esto no es necesario, sólo debemos registrar el equipo en los servidores del fabricante o proveedor para poder conectarnos en remoto desde nuestro ordenador, smartphone o tablet tan sólo introduciendo los datos de identificación de nuestro grabador o cámara IP.
Al activar la conexión P2P, lo que estamos haciendo es registrar nuestro equipo en un servidor que almacena la dirección IP pública de nuestro grabado y el puerto UDP público que origina la conexión hacia este servidor. El servidor P2P se preocupa de enviar paquetes “keep alive” con frecuencia para el nuestro equipo mantenga la conexión UDP abierta. Entonces, si queremos conectarnos con nuestro equipo mediante P2P, la aplicación de gestión que utilicemos, ya sea en ordenador o terminal móvil, pregunta al servidor P2P qué IP pública y qué puerto UDP utiliza nuestro equipo con número de serie XXXX. El servidor P2P responde a nuestra aplicación de gestión con los datos y esta se conecta a nuestro equipo.
El protocolo que utiliza la conexión P2P es el UDP por un motivo, no se realiza control de la conexión como en el protocolo TCP, esto quiere decir que en una conexión TCP quien origina la conexión, siempre esperará datos de la IP a la que se los ha enviado, por lo que sólo puede haber tráfico de datos entre la IP de origen y la IP de destino. En cambio, con UDP no existe este control de la conexión, por lo que una vez establecida la comunicación se pueden recibir paquetes de cualquier origen. La técnica que se utiliza en P2P se llama UDP hole punching y se puede leer más en detalle aquí.
Todo esto funcionará sin problemas si la red local donde se ubica nuestro grabador o cámara IP no es “corporativa”, es decir, es gestionada por un área de informática y tienen unas reglas de uso de la red muy restrictivas. Por ejemplo, es muy habitual en este tipo de redes que todas las conexiones desde la red local hacia Internet estén cerradas exceptuando las de aplicaciones corporativas que utiliza la compañía. En estos casos deberemos solicitar una dirección IP local y que nos redirijan (port foward) el tráfico del puerto utilizado por nuestro grabador o cámara IP hacia la IP local que nos han facilitado.