Hola Jose, mira primeramente para poder hacer eso puedes utilizar el control winsock del visual basic, con este control se pueden hacer maravillas sin necesidad de utilizar la gran cantidad de código. Para validar a los usuarios podrias utilizar un método tan fácil de login que puede ser el siguiente
el cliente envía usuario y contraseña al servidor, el servidor verifica los datos en su base de datos tabla: usuarios. Si los datos coinciden, se envía notificación al cliente de que puede entrar a la red de nuestro programa.
Ya que están loggeados los usuarios en el servidor, entonces que cuando se quiera mandar un mensaje se seleccione el usuario destinatario de la lista de usuarios y entonces se puede hacer el siguiente proceso:
1.- El cliente envía al servidor, usuario destinatario y mensaje.
2.- El servidor se encarga de buscar en su lista de conectados a dicho usuario y hecho esto se envía el mensaje al usuario por medio de su IP.
TODO SE MANEJA POR IPS.
Espero haber sido siquiera de un poco de ayuda para que comprendas más o menos este mundo de programación en red. Saludos.