Lío con los Puerto udp tcp

Iniciado por Rnovatis, 15 Septiembre 2016, 01:54 AM

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

Rnovatis

Si un ordenador tiene sesenta y tantos mil puertos para que tantos ? Porque solo se usa el 80 que es el de http para tener internet por ese protocolo el 445 creo https pero luego para que pueden hacer falta tantos? Y otra duda k m surge puedes cambiar que para http en vez de ser el 80 sea otro para ssh en vez del 23 sea tb otro etc... Muchas gracias haber si me podéis aclarar porque vaya lío

WHK

#1
Primero... ¿porqué hay tantos puertos disponibles?, muy fácil, porque hay muchos servicios que no son http, por ejemplo smtp, imap, pop, ssh, dns, rdp, vnc, socks4, socks5 y un sin fin de servicios:
https://es.wikipedia.org/wiki/Anexo:N%C3%BAmeros_de_puerto

Ahora lo siguiente, ¿porqué el http es 80 y asi cada servicio tiene un puerto definido si finalmente lo puedo cambiar?
R: porque existen estándares, tu navegador cuando se conecta a http://www.google.com/ se está conectando al servidor de google a traves del puerto 80 porque así está definido en todos los navegadores de internet porque en algún momento se estandarizó y se dijo... el 80 va a ser http... ¿qué pasa si pones tu servidor web en el puerto 23?, pues que cuando alguien entre a tu web el navegador va a consultar el 80 y va a decir... aca no hay servicio, y el navegador va a decir que no se pudo conectar a la pagina (a menos que le indiques manualmente el numero de puerto en la url).

Así mismo sucede con todos los servicios, de esta manera los servidores y clientes pueden trabajar conjuntamente conectandose con tan solo la dirección ip o el dominio, porque tanto el servidor como el cliente saben que puerto deben usar por estandar.

Por ejemplo cuando te conectas por ssh a un servidor tu lo haces asi:
$ ssh usuario@servidor.com

Pues bien, la aplicación ssh se conecta directamente al servidor al puerto 22, si tu lo dejas en otro puerto no se conectará a menos que le indiques el puerto manualmente al cliente.

Por eso existen estandares, para que nadie haga sus apps clientes de manera distinta y se aseguren que todos se van a poder conectar sin problemas de la misma manera al servidor.

Lo de TCP o UDP eso en palabras simples describe la manera de conectarse, no todas las conexiones son planas como tu crees, no es llegar y enviar las cabeceras del http, cuando te conectas a un servidor por debajo el socket tiene un protocolo, una manera de enviar los mensajes que escribes, por ejemplo en tcp se manda el mensaje con una serie de paquetes adicionales como cabeceras que indican la ip de origen y destino, un checksum, etc y eso no lo ves pero se manda cada ves que mandas un paquete, en udp funciona similar pero no igual, es un estandard donde el paquete tiene una arquitectura distinta, envía datos pero no manda el checksum o verificación de llegada, asi que si falla el envío del paquete el cliente o el servidor no lo verifica, en tcp si se verifica pero es un paso adicional y tiende a ser mas pesado en cuanto al uso de recursos de la maquina y el tráfico se hace mas lento, udp es mas rapido pero tiene pérdida de paquetes.

Ahora, no puedes levantar un servidor web via udp porque el estandard del http dice que solo funciona via tcp sobre el puerto 80, ¿puedes usarlo via udp y con otro puerto? claro! pero tu navegador no podrá entrar porque no está diseñado para ello.

La diversidad de protocolos y puertos son usados para una diversidad de servicios y tipos de servicios, por ejemplo el streaming debe ser rapido asi que por lo general funciona via udp, ahora ¿que pasa si quieres crear tu propio software y dejar a escucha un puerto? digamos que tienes el 80 ocupado, tienes el 53, el 22, etc etc, por donde aabriras el puerto en tu app? pues por eso existen tantos puertos disponibles, para que puedas tener mcuhas apps antiguas y nuevas sin problema y que cada una pueda salir a internet con su propio puerto o el que tu les designes.

Saludos.