pongo aqui como se hace es del compañero cthulhufhtagn yo no he sido capaz de hacerlo.
Trataremos del escaneo de puertos con nmap.
Handshake TCP
Cuando se abre una conexión TCP se envía se envía un paquete SYN. El receptor, si está escuchando conexiones, responde con un SYN/ACK. Si el receptor no responde, el emisor intenta el establecimiento de la conexión un número determinado de veces. Cuando finalmente el receptor recibe un SYN/ACK responde con un ACK y seguidamente se transmite la información del programa que ha pedido que es establezca dicha conexión.
Citar
SYN ->
(Receptor escuchando)
<- SYN/ACK
-> ACK
-> Datos...
Si el otro extremo no tiene ninguna aplicación escuchando, responde al SYN con un RST (abortar conexión), lo que hace que no se vuelva a reintentar la conexión.
Citar
SYN ->
<- RST
Escaneo de puertos -sS (prueba de establecimiento de conexión). Lo que hará será enviar paquetes SYN simulando que se quiere establecer una conexión. La conexión no llega a establecerse pues el SYN/ACK (de haberlo) nunca se responde.
Código:
nmap -P0 -sS direccion_ip
Al no indicar puertos, se escanearán los 1000 más comunes.
Estado de los puertos:
Open: Se ha recibido un SYN/ACK. Hay una aplicación escuchando (*)
Filtered: No se ha recibido respuesta. Hay un firewall desechando los paquetes SYN.
Closed: Se ha recibido un RST. No hay ninguna aplicación escuchando (*)
(*) En ambos casos se puede configurar un firewall para que dé estas respuestas. Podríamos por ejemplo hacer un escaneo que dé todos los puertos cerrados y sea porque el firewall ha respondido con RST.
Que un puerto esté abierto (Open) no impide que la aplicación que esté escuchando, a la hora de la verdad, establezca la conexión para después cerrarla.
Citar
SYN ->
(Receptor escuchando)
<- SYN/ACK
-> ACK
-> Datos...
<- RST