Cómo hacer ping a un puerto específico

Técnicamente, no se puede. El ping utiliza paquetes ICMP de "solicitud de eco", y el ICMP no utiliza números de puerto.

Sin embargo, puede obtener un resultado similar en TCP simulando un intento de abrir una conexión a ese puerto y observando si el host de destino responde. Hay tres respuestas probables: un TCP SYN-ACK, que es el segundo de los tres pasos del habitual handshake de tres pasos para abrir una conexión y que indica que el host remoto está dispuesto a aceptar una conexión, un TCP RST, que indica que el host no quiere o no puede aceptar una conexión (normalmente porque no hay nada configurado para escuchar conexiones en ese puerto), o un paquete ICMP de destino inalcanzable, que indica cualquiera de las diferentes razones por las que no se ha podido alcanzar el destino. Para UDP, todo lo que puedes hacer es enviar un datagrama y ver si obtienes la respuesta ICMP inalcanzable. Si lo hace, el puerto no está disponible para usted. Si no, el puerto puede estar abierto o no.

Esto es básicamente lo que hacen los escáneres de red como Nmap.

Nótese que enviar un SYN para abrir un puerto, y luego no completar el handshake o restablecer la conexión medio abierta, deja la conexión medio abierta en el otro extremo. Este comportamiento tiende a activar los sistemas de detección de intrusos y, en general, no debe hacer sondeos TCP o escanear un sistema a menos que tenga el permiso de su propietario, ya que de lo contrario sus acciones pueden ser interpretadas como un intento de comprometer la seguridad.