¿Pueden dos procesos/aplicaciones escuchar por el mismo puerto?

Iniciado por opportunity, 22 Septiembre 2012, 09:46 AM

0 Miembros y 1 Visitante están viendo este tema.

opportunity

Jugando con netcat me he preguntado si es posible que dos procesos estén a la escucha del mismo puerto.

Creo que no es posible y las pruebas que he hecho dicen que no es posible, pero tengo mis dudas.


HCK.

Creo que no :S, puedes hacer la prueba con un troyano, y escuchas el mismo puerto. Pero por si acaso qe alguien mas te confirme. Pero creo que no ;D

dato000

En windows:

Citar
netstat -a -b


Proto  Dirección local        Dirección remota       Estado
TCP    0.0.0.0:135            dato000-PC:0           LISTENING
RpcSs
[svchost.exe]
TCP    0.0.0.0:445            dato000-PC:0           LISTENING
No se puede obtener información de propiedad
TCP    0.0.0.0:554            dato000-PC:0           LISTENING
[wmpnetwk.exe]
TCP    0.0.0.0:2869           dato000-PC:0           LISTENING
No se puede obtener información de propiedad
TCP    0.0.0.0:10243          dato000-PC:0           LISTENING
No se puede obtener información de propiedad
TCP    0.0.0.0:49152          dato000-PC:0           LISTENING
[wininit.exe]
TCP    0.0.0.0:49153          dato000-PC:0           LISTENING
eventlog
[svchost.exe]
TCP    0.0.0.0:49154          dato000-PC:0           LISTENING
[lsass.exe]
TCP    0.0.0.0:49155          dato000-PC:0           LISTENING
Schedule
[svchost.exe]
TCP    0.0.0.0:49156          dato000-PC:0           LISTENING
[services.exe]
TCP    0.0.0.0:49158          dato000-PC:0           LISTENING
[spoolsv.exe]
TCP    127.0.0.1:49157        dato000-PC:0           LISTENING
[ccSvcHst.exe]
TCP    127.0.0.1:49183        validation:49184       ESTABLISHED
[thunderbird.exe]
TCP    127.0.0.1:49184        validation:49183       ESTABLISHED
[thunderbird.exe]
TCP    127.0.0.1:49341        validation:49342       ESTABLISHED
[firefox.exe]
TCP    127.0.0.1:49342        validation:49341       ESTABLISHED
[firefox.exe]
TCP    192.168.0.4:139        dato000-PC:0           LISTENING
No se puede obtener información de propiedad
TCP    192.168.0.4:49207      gg-in-f16:imaps        ESTABLISHED
[thunderbird.exe]
TCP    192.168.0.4:49234      gg-in-f16:imaps        ESTABLISHED
[thunderbird.exe]
TCP    192.168.0.4:49235      gg-in-f16:imaps        ESTABLISHED
[thunderbird.exe]
TCP    192.168.0.4:49237      gg-in-f16:imaps        ESTABLISHED
[thunderbird.exe]
TCP    192.168.0.4:49238      gg-in-f16:imaps        ESTABLISHED
[thunderbird.exe]
TCP    192.168.0.4:49525      mia04s04-in-f0:http    ESTABLISHED
[opera.exe]
TCP    192.168.0.4:49526      mia04s04-in-f0:http    TIME_WAIT
TCP    192.168.0.4:49529      mia04s04-in-f0:http    TIME_WAIT
TCP    192.168.0.4:49531      ns93:http              TIME_WAIT
TCP    192.168.0.4:49535      mia04s05-in-f0:http    TIME_WAIT
TCP    192.168.56.1:139       dato000-PC:0           LISTENING
No se puede obtener información de propiedad
TCP    [::]:135               dato000-PC:0           LISTENING
RpcSs
[svchost.exe]
TCP    [::]:445               dato000-PC:0           LISTENING
No se puede obtener información de propiedad
TCP    [::]:554               dato000-PC:0           LISTENING
[wmpnetwk.exe]
TCP    [::]:2869              dato000-PC:0           LISTENING
No se puede obtener información de propiedad
TCP    [::]:10243             dato000-PC:0           LISTENING
No se puede obtener información de propiedad
TCP    [::]:49152             dato000-PC:0           LISTENING
[wininit.exe]
TCP    [::]:49153             dato000-PC:0           LISTENING
eventlog
[svchost.exe]
TCP    [::]:49154             dato000-PC:0           LISTENING
[lsass.exe]
TCP    [::]:49155             dato000-PC:0           LISTENING
Schedule
[svchost.exe]
TCP    [::]:49156             dato000-PC:0           LISTENING
[services.exe]
TCP    [::]:49158             dato000-PC:0           LISTENING
[spoolsv.exe]
TCP    [::1]:49159            dato000-PC:0           LISTENING
[ccSvcHst.exe]
UDP    0.0.0.0:500            *:*
IKEEXT
[svchost.exe]
UDP    0.0.0.0:4500           *:*
IKEEXT
[svchost.exe]
UDP    0.0.0.0:5004           *:*
[wmpnetwk.exe]
UDP    0.0.0.0:5005           *:*
[wmpnetwk.exe]
UDP    0.0.0.0:5355           *:*
Dnscache
[svchost.exe]
UDP    127.0.0.1:1900         *:*
SSDPSRV
[svchost.exe]
UDP    127.0.0.1:44301        *:*
[PnkBstrA.exe]
UDP    127.0.0.1:52146        *:*
SSDPSRV
[svchost.exe]
UDP    127.0.0.1:60325        *:*
[wmplayer.exe]
UDP    192.168.0.4:137        *:*
No se puede obtener información de propiedad
UDP    192.168.0.4:138        *:*
No se puede obtener información de propiedad
UDP    192.168.0.4:1900       *:*
SSDPSRV
[svchost.exe]
UDP    192.168.0.4:52144      *:*
SSDPSRV
[svchost.exe]
UDP    192.168.56.1:137       *:*
No se puede obtener información de propiedad
UDP    192.168.56.1:138       *:*
No se puede obtener información de propiedad
UDP    192.168.56.1:1900      *:*
SSDPSRV
[svchost.exe]
UDP    192.168.56.1:52145     *:*
SSDPSRV
[svchost.exe]
UDP    [::]:500               *:*
IKEEXT
[svchost.exe]
UDP    [::]:4500              *:*
IKEEXT
[svchost.exe]
UDP    [::]:5004              *:*
[wmpnetwk.exe]
UDP    [::]:5005              *:*
[wmpnetwk.exe]
UDP    [::]:5355              *:*
Dnscache
[svchost.exe]
UDP    [::1]:1900             *:*
SSDPSRV
[svchost.exe]
UDP    [::1]:52143            *:*
SSDPSRV
[svchost.exe]
UDP    [fe80::14e8:1a0d:e7c4:8e32%12]:546  *:*
Dhcp
[svchost.exe]
UDP    [fe80::14e8:1a0d:e7c4:8e32%12]:546  *:*
Dhcp
[svchost.exe]
UDP    [fe80::14e8:1a0d:e7c4:8e32%12]:1900  *:*
SSDPSRV
[svchost.exe]
UDP    [fe80::14e8:1a0d:e7c4:8e32%12]:52141  *:*
SSDPSRV
[svchost.exe]
UDP    [fe80::8424:de70:5044:9fc2%19]:546  *:*
Dhcp
[svchost.exe]
UDP    [fe80::8424:de70:5044:9fc2%19]:1900  *:*
SSDPSRV
[svchost.exe]
UDP    [fe80::8424:de70:5044:9fc2%19]:52142  *:*
SSDPSRV
[svchost.exe]

Tanto en localhost, como en loopback, como en direcciónes salientes y entrantes en la red, cada aplicación tiene asignado un puerto diferente.



annubis

Buenas,

No se si estoy mal, pero en un servidor tengo instalado ssh, y en el router abierto el puerto del ssh, de ahi abro un tunnel ssh desde "casa" y me conecto a la aplicacion que me interesa. ok.

Abro otro tunnel ssh para otra aplicacion, evidentemente, con otro puerto local, pero usando el mismo ssh.

en definitiva, tengos 2 tuneles creados con el mismo puerto, y 2 aplicaciones funcionando bien, con diferentes puertos locales.

No se si la pregunta era esta.
saludos

dato000

Cita de: annubis en 23 Septiembre 2012, 21:37 PM
en definitiva, tengos 2 tuneles creados con el mismo puerto, y 2 aplicaciones funcionando bien, con diferentes puertos locales.

Dices que usas dos tuneles con el mismo puerto. Y tienes dos aplicaciones en 2 puertos locales diferentes....  :¬¬

no, esas instancias son diferentes una de otra, para establecer una conexión con un pc usas un tunel, y para otro pc usas otro.



moikano→@

Creo que si que se puede usar el mismo puerto para dos conexiones y se puede conseguir con una variante del netcat mucho mas moderna y compleja, el socat. No puedo aseguraros que se puede hacer, porque no lo he probado, pero me suena de haber visto algún tutorial donde creaban dos conexiones en el mismo puerto con dos aplicaciones distintas con el socat, por ejemplo podias usar un navegador por el puerto 80 y a la vez una consola en el puerto 80.

HdM

#6
Yo creo que se podría hacer siempre que ambas aplicaciones no utilizasen el mismo protocolo (una por UDP y otra por TCP).

EDIT: Rectifico. Creo que no se puede hacer. He puesto dos app a escuchar en el mismo puerto, una por TCP y la otra por UDP. Cuando se lanza una, estando ya la otra a la escucha, avisa que el puerto ya está en uso.

- Nice to see you again -

dato000

Cita de: moikano→@ en 23 Septiembre 2012, 22:47 PM
Creo que si que se puede usar el mismo puerto para dos conexiones y se puede conseguir con una variante del netcat mucho mas moderna y compleja, el socat. No puedo aseguraros que se puede hacer, porque no lo he probado, pero me suena de haber visto algún tutorial donde creaban dos conexiones en el mismo puerto con dos aplicaciones distintas con el socat, por ejemplo podias usar un navegador por el puerto 80 y a la vez una consola en el puerto 80.

claro pero, el navegador usa un protocolo html, y transporta paquetes con cabeceras IP creo yo. Y una aplicación pues, puede usar cualquier otra cosa.



moikano→@

Citarclaro pero, el navegador usa un protocolo html, y transporta paquetes con cabeceras IP creo yo. Y una aplicación pues, puede usar cualquier otra cosa.

Supongo que será algo así. Además las aplicaciones, aunque estén escuchando por un puerto si les llega un paquete  que desconocen su compresión lo descartan, así que supongo (siempre supongo, alguna vez aseguro) que dos aplicaciones escuchando en un mismo puerto recibirán los mismos paquetes las dos, pero una rechazará un paquete que no tenga que ver con su conexión y aceptará el paquete que esté esperando, digo yo.

opportunity

He hecho una prueba y parece ser que dos procesos no pueden escuchar por el mismo puerto.

Prueba:
Arranco el servidor web Apache escuchando por el puerto 80.
Intento poner netcat a escuchar en el mismo puerto

ncat -l -p 80

Retorna error:

ncat: bind to 0.0.0.0:80: Address already in use. QUITTING.

ó tmb:
ncat localhost -l -p 80
ncat: bind to 127.0.0.1:80: Address already in use. QUITTING.

Mirando documentacion de TCP/IP tmb parece que el standard no lo permite por definicion.

Solo se me ocurre que sea posible saltarse el standard buscando algun bug en el s.o.