Parece que no puedo encontrar una respuesta para esto.
¿Alguna sugerencia?
La diferencia está en la naturaleza misma de los dos protocolos.
TCP es una Protocolo orientado a la conexión . Esto significa que los sistemas deben establecer y confirmar una conexión estable; para TCP, el proceso se conoce comúnmente como "tres vías apretón de manos "- antes de que los datos se transfieran realmente. Como el proceso debe ocurrir rápidamente para una buena conexión, puede esperarse razonablemente que un puerto TCP abierto responderá en el corto plazo cuando se realice la prueba. Esto significa que el tiempo de espera antes de asumir que un puerto está cerrado también puede ser muy corto.
UDP , por otro lado, es un sin conexión protocolo. Para UDP, las comunicaciones se envían sin ninguna expectativa de una confirmación oportuna de recepción desde el extremo remoto. Por lo tanto, uno tiene que permitir un tiempo de espera más prolongado antes de que se pueda suponer que un puerto remoto está cerrado, incluso después del tiempo de espera, tal suposición no es 100% segura de ser válida.
De cierta manera, es algo así:
TCP llamará a su teléfono y esperará a que conteste realmente para advertirle de un incendio en su lugar de trabajo. Si recoges y te hablan, saben que has recibido el mensaje. Si su correo de voz responde o el teléfono suena > 4 veces sin una redirección, pueden estar bastante seguros de que no recibirá el mensaje lo suficientemente pronto.
UDP enviará un aviso de alerta de emergencia a su teléfono para informarle del incendio. No sabrán si recibiste el mensaje a menos que te vean salir del edificio, 5 tramos de escaleras y uno o más de 100 metros o más. Y eso suponiendo que estuvieras incluso en el edificio para empezar.
Ahora, supongamos que tuvo que notificar a 1,000 o más personas sobre un incendio. Pero solo podía decirles uno por uno, y tuvo que esperar la confirmación del recibo (o un tiempo razonable para estar seguro de que no haya recibo) de cada uno antes de intentar el siguiente.
La exploración de puertos (con Nmap o cualquier otra herramienta) es algo así. TCP va a ser relativamente rápido, y probablemente será bastante preciso. Con UDP, es probable que el edificio se queme antes de que termines la lista solo una vez , y aún no estarás realmente seguro de si las personas a las que enviaste el mensaje estaban preocupadas por eso.De la página de nmap
Un gran desafío con el escaneo UDP es hacerlo rápidamente. Los puertos abiertos y filtrados rara vez envían una respuesta, lo que deja a Nmap en el tiempo de espera y luego realiza retransmisiones en caso de que la sonda o la respuesta se hayan perdido. Los puertos cerrados son a menudo un problema aún mayor. Por lo general, envían de vuelta un error de puerto ICMP inalcanzable. Pero a diferencia de los paquetes RST enviados por puertos TCP cerrados en respuesta a un SYN o un escaneo de conexión, muchos hosts limitan los mensajes inalcanzables del puerto ICMP de forma predeterminada. Linux y Solaris son particularmente estrictos sobre esto. Por ejemplo, el kernel de Linux 2.4.20 limita los mensajes de destino inalcanzables a uno por segundo (en net / ipv4 / icmp.c).
Nmap detecta la limitación de la velocidad y disminuye su velocidad para evitar inundar la red con paquetes inútiles que la máquina de destino eliminará. Desafortunadamente, un límite de estilo Linux de un paquete por segundo hace que un escaneo de 65,536 puertos tome más de 18 horas. Las ideas para acelerar su escaneo UDP incluyen escanear más hosts en paralelo, hacer un escaneo rápido de solo los puertos populares primero, escanear desde detrás del firewall y usar --host-timeout para saltar hosts lentos.
Son protocolos diferentes. En UDP, tiene que esperar la respuesta por un tiempo de espera específico, en TCP, se ve instantáneamente que un puerto está abierto después de recibir el protocolo de enlace de tres vías. Si está cerrado, es más probable que obtenga un paquete con el indicador RST
establecido, por lo que también puede pasar instantáneamente al siguiente puerto.
Es posible lograr una velocidad extra para los escaneos UDP, con nmap puede usar --min-rate
, --max-rtt-timeout
y --max-retries
para ajustar algunas configuraciones.
Lea otras preguntas en las etiquetas ports tcp network-scanners scan udp