{"id":72189,"date":"2024-01-30T11:34:57","date_gmt":"2024-01-30T14:34:57","guid":{"rendered":"https:\/\/a3aengenharia.com\/es-es\/contenido\/articulos-tecnicos\/que-son-los-puertos-de-red\/"},"modified":"2024-01-30T11:34:57","modified_gmt":"2024-01-30T14:34:57","slug":"que-son-los-puertos-de-red","status":"publish","type":"articles","link":"https:\/\/a3aengenharia.com\/es-es\/contenido\/articulos-tecnicos\/que-son-los-puertos-de-red\/","title":{"rendered":"\u00bfQu\u00e9 son los Puertos de Red?"},"content":{"rendered":"\n<p>Los <strong>Puertos de Red<\/strong> son componentes esenciales en la comunicaci\u00f3n entre procesos, ya sea de forma local o en redes de larga distancia, como internet.<\/p>\n\n\n\n<p>En este art\u00edculo, exploraremos los conceptos fundamentales que sustentan el funcionamiento de los puertos de red, abarcando desde los conceptos de gesti\u00f3n y comunicaci\u00f3n entre procesos hasta la implementaci\u00f3n pr\u00e1ctica de servidores y el detalle del funcionamiento de los puertos.<\/p>\n\n\n\n<p>\u00a1Consulte!<\/p>\n\n\n<p>[elementor-template id=&#8221;24446&#8243;]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--40)\">\u00bfC\u00f3mo Gestiona los Procesos un Sistema Operativo?<\/h2>\n\n\n\n<p>Para comprender el funcionamiento, la finalidad y la existencia de los puertos de red, es necesario entender c\u00f3mo un sistema operativo gestiona los procesos y facilita la comunicaci\u00f3n entre ellos.<\/p>\n\n\n\n<p>Un sistema operativo (SO) es responsable de gestionar los procesos, que son b\u00e1sicamente programas en ejecuci\u00f3n. Cada proceso recibe un identificador exclusivo llamado PID (<em>Process ID<\/em>), y el sistema operativo controla los recursos que cada proceso utiliza, incluyendo la memoria.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"507\" src=\"https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/01\/comando-top-linux.jpeg\" alt=\"\" class=\"wp-image-27410\" style=\"width:720px\" srcset=\"https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/01\/comando-top-linux.jpeg 900w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/01\/comando-top-linux-600x338.jpeg 600w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/01\/comando-top-linux-64x36.jpeg 64w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/01\/comando-top-linux-512x288.jpeg 512w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/01\/comando-top-linux-768x433.jpeg 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><figcaption class=\"wp-element-caption\">La utilidad &#8220;top&#8221; en un servidor Linux, equivalente al administrador de tareas de Windows.<\/figcaption><\/figure>\n\n\n\n<p>Un concepto fundamental para la gesti\u00f3n de procesos es el <strong>aislamiento de memoria<\/strong>. El aislamiento garantiza que cada proceso opere en un espacio de memoria separado, evitando que un proceso interfiera directamente en el funcionamiento de otro.<\/p>\n\n\n\n<p>Esta separaci\u00f3n es vital para la integridad de los datos y para la estabilidad del sistema en su conjunto, previniendo que las fallas en un proceso afecten a otros en ejecuci\u00f3n.<\/p>\n\n\n\n<p>Como los procesos est\u00e1n aislados, no pueden simplemente acceder a la memoria de otro proceso. Para que dos procesos compartan informaci\u00f3n, necesitan mecanismos de Comunicaci\u00f3n Entre Procesos (<em>Inter-Process Communication<\/em>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--40)\">Comunicaci\u00f3n Entre Procesos (IPC)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pipes;<\/li>\n\n\n\n<li>Archivos;<\/li>\n\n\n\n<li>Streams y Buffers;<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--40)\">Comunicaci\u00f3n en Redes<\/h3>\n\n\n\n<p>En los a\u00f1os 60, la creaci\u00f3n de las redes de computadoras cambi\u00f3 radicalmente la computaci\u00f3n. En lugar de sistemas aislados, las redes permitieron que diferentes computadoras ejecutaran procesos en paralelo y, m\u00e1s importante, que esos procesos pudieran comunicarse.<\/p>\n\n\n\n<p>Este nuevo paradigma exig\u00eda una forma de hacer que un proceso en una computadora hablara con un proceso en otra, de forma estructurada y confiable.<\/p>\n\n\n\n<p>Para facilitar esta comunicaci\u00f3n, surgi\u00f3 el concepto de sockets, que ofrece una sem\u00e1ntica similar a la manipulaci\u00f3n de archivos. As\u00ed como manipulamos archivos con operaciones como &#8220;read&#8221; y &#8220;write&#8221;, los sockets permiten leer y escribir datos en flujos de bits entre sistemas distintos.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">BSD Sockets<\/h4>\n\n\n\n<p>En 1983, la introducci\u00f3n de los <em>BSD Sockets<\/em> (Berkeley Software Distribution Sockets) en el sistema UNIX BSD 4.2 estandariz\u00f3 la comunicaci\u00f3n entre procesos en redes, convirti\u00e9ndose en un modelo ampliamente adoptado.<\/p>\n\n\n\n<p>Los BSD Sockets, o <em>POSIX sockets<\/em>, definen un conjunto de APIs y protocolos que forman la base de un sistema UNIX, ofreciendo una interfaz para establecer conexiones de red entre procesos en computadoras diferentes.<\/p>\n\n\n\n<p>Estos sockets facilitan la fragmentaci\u00f3n de datos en paquetes, permitiendo su transferencia por diferentes tipos de redes, ya sea una red local o internet. El sistema operativo es responsable de crear estos paquetes y transportarlos por una red f\u00edsica (fibra \u00f3ptica, cable de cobre, redes inal\u00e1mbricas, etc.), convirtiendo los datos en bloques de bits, ya sea en discos duros (HDD) o en paquetes de red.<\/p>\n\n\n\n\n\n<p>De forma simplificada, los sockets son una generalizaci\u00f3n de las primitivas de archivos. En Linux, por ejemplo, el sistema entrega al programa un descriptor de archivo (<em>file descriptor<\/em>) que puede representar tanto un archivo local como una conexi\u00f3n de red (un socket).<\/p>\n\n\n\n<p>Este descriptor es una &#8220;caja negra&#8221; que permite al proceso recibir y enviar bits, funcionando como un intermediario entre el sistema operativo y el hardware.<\/p>\n\n\n\n<p>As\u00ed, independientemente de si es un archivo o un socket de red, el programa interact\u00faa con el sistema operativo de la misma manera: solicitando la lectura o escritura de datos.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Flujo de Conexi\u00f3n<\/h4>\n\n\n\n<p>El proceso para establecer una conexi\u00f3n por sockets sigue una secuencia de pasos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li style=\"margin-bottom:var(--wp--preset--spacing--20)\"><strong>Bind (Vinculaci\u00f3n)<\/strong>: Un programa solicita al sistema operativo una &#8220;vinculaci\u00f3n&#8221; (bind) entre una direcci\u00f3n IP y un n\u00famero de puerto (16 bits). Este proceso es como un &#8220;registro&#8221;, donde el sistema operativo asigna un identificador exclusivo (PID) al proceso y lo asocia a un puerto espec\u00edfico, garantizando que ning\u00fan otro proceso pueda usar ese mismo puerto.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><strong>Listen (Escucha)<\/strong>: Despu\u00e9s del <em>bind<\/em>, el proceso entra en estado de escucha, esperando una conexi\u00f3n. Es similar a abrir un archivo y esperar datos de entrada. En el caso de un servidor web, por ejemplo, escucha conexiones en el puerto 80 (HTTP) o 443 (HTTPS), esperando una solicitud del cliente.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--20)\"><strong>Accept (Aceptaci\u00f3n)<\/strong>: Cuando un cliente intenta conectarse, el sistema operativo verifica qui\u00e9n est\u00e1 escuchando en el puerto especificado y entrega los datos al proceso correcto. En este punto, el programa receptor puede decidir aceptar o rechazar la conexi\u00f3n.<\/li>\n<\/ol>\n\n\n\n<p>Este ciclo de <em>bind<\/em>, <em>listen<\/em> y <em>accept<\/em> es la base de la comunicaci\u00f3n en red entre procesos, creando una &#8220;conexi\u00f3n&#8221; a trav\u00e9s de la cual los datos fluyen bidireccionalmente.<\/p>\n\n\n\n<p>Despu\u00e9s de crear la conexi\u00f3n, los procesos involucrados (cliente y servidor) necesitan intercambiar informaci\u00f3n en un lenguaje com\u00fan, o protocolo, que define los comandos y datos permitidos. Por ejemplo, un servidor de base de datos espera comandos espec\u00edficos que siguen el protocolo SQL, mientras que un servidor web espera comandos HTTP como <em>GET<\/em> y <em>POST<\/em>.<\/p>\n\n\n\n<p>Cada protocolo es como un &#8220;patr\u00f3n de pines&#8221; de un enchufe. Si un navegador intenta comunicarse con un servidor SQL, no funcionar\u00e1, ya que los comandos no &#8220;encajan&#8221;. Esta estandarizaci\u00f3n de protocolos garantiza que cada aplicaci\u00f3n pueda comunicarse correctamente, siempre que el protocolo sea comprendido por ambas partes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--40)\">\u00bfQu\u00e9 es un Puerto de Red?<\/h2>\n\n\n\n<p>Un puerto de red es un identificador num\u00e9rico que, junto con la direcci\u00f3n IP, permite que el sistema operativo dirija el tr\u00e1fico de datos al proceso correcto.<\/p>\n\n\n\n<p>Cada puerto est\u00e1 compuesto por un n\u00famero de 16 bits, posibilitando un rango de 65.536 puertos (0 a 65.535).<\/p>\n\n\n\n<p>Los puertos se clasifican en diferentes rangos:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Puertos de Sistema (0 &#8211; 1023)<\/h3>\n\n\n\n<p>Estos puertos, tambi\u00e9n conocidos como <em>Well-Known Ports<\/em>, est\u00e1n reservados para servicios est\u00e1ndar que todos los sistemas reconocen y para los cuales tienen expectativas claras de funcionalidad.<\/p>\n\n\n\n<p>Requieren permisos de administrador en sistemas UNIX, ya que soportan servicios cr\u00edticos, siendo fundamentales para la infraestructura de internet.<\/p>\n\n\n\n\n\n<p>Estos puertos son fundamentales para mantener la estabilidad y seguridad de la red, y el requisito de permisos administrativos para su uso evita que programas comunes o usuarios sin privilegios interfieran en estos servicios esenciales.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Puertos Registrados \/ Registered Ports (1024 &#8211; 49151)<\/h3>\n\n\n\n<p>Los <em>Registered Ports<\/em> est\u00e1n reservados para servicios y aplicaciones que no requieren permisos administrativos, pero que necesitan un puerto fijo para funcionar correctamente. Son muy utilizados por aplicaciones y servicios espec\u00edficos de empresas o de desarrollo, permitiendo que los desarrolladores configuren aplicaciones sin necesitar privilegios elevados.<\/p>\n\n\n\n<p>Estos puertos pueden ser utilizados por cualquier usuario com\u00fan, y su amplio rango evita conflictos, permitiendo que diversas aplicaciones diferentes coexistan en un \u00fanico sistema sin necesidad de compartir puertos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Puertos Ef\u00edmeros \/ Dynamic Ports (49152 &#8211; 65535)<\/h3>\n\n\n\n<p>Los <em>Dynamic Ports<\/em>, tambi\u00e9n conocidos como puertos ef\u00edmeros o privados, est\u00e1n reservados para conexiones temporales y din\u00e1micas, donde el sistema operativo elige autom\u00e1ticamente el primer puerto disponible para la comunicaci\u00f3n. Estos puertos se utilizan principalmente en aplicaciones que necesitan conexiones r\u00e1pidas y temporales, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Videollamadas<\/strong>: Programas como Zoom y Skype utilizan estos puertos para establecer conexiones temporales entre dispositivos.<\/li>\n\n\n\n<li><strong>Juegos Multijugador<\/strong>: Los juegos en l\u00ednea usan estos puertos para crear sesiones de comunicaci\u00f3n temporales entre jugadores.<\/li>\n\n\n\n<li><strong>Transferencia de Datos en Sesiones Web<\/strong>: Los navegadores web abren conexiones ef\u00edmeras para transferir datos al conectarse a servidores.<\/li>\n<\/ul>\n\n\n\n<p>Cuando una aplicaci\u00f3n inicia una conexi\u00f3n temporal, el sistema operativo elige un puerto libre dentro de este rango y lo utiliza mientras dure la sesi\u00f3n. Al terminar, el puerto es liberado, permitiendo que otras aplicaciones reutilicen este recurso. Esta din\u00e1mica evita la necesidad de un <em>bind<\/em> fijo y aumenta la flexibilidad de las conexiones temporales.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--40)\">Reenv\u00edo de Puertos<\/h2>\n\n\n\n<p>Cuando un paquete de datos llega a un router en la red, tiene una direcci\u00f3n IP y un puerto de destino.<\/p>\n\n\n\n<p>El reenv\u00edo de puertos instruye al router a reenviar el tr\u00e1fico destinado a un puerto espec\u00edfico hacia una direcci\u00f3n IP y puerto dentro de la red local.<\/p>\n\n\n\n<p>De esta manera, los dispositivos externos pueden comunicarse directamente con los dispositivos internos, incluso si esos dispositivos internos est\u00e1n en una red privada.<\/p>\n\n\n\n<p>Por ejemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si desea acceder a una c\u00e1mara de seguridad en su red local (IP interno 192.168.1.50) por el puerto 8080, puede configurar el router para redirigir el puerto 8080 de la IP p\u00fablica al puerto 8080 de esa IP interna espec\u00edfica. As\u00ed, al acceder a <em>http:\/\/[su-IP-p\u00fablico]:8080<\/em>, el router dirige el tr\u00e1fico a la c\u00e1mara interna.<\/li>\n<\/ul>\n\n\n\n<p>El reenv\u00edo de puertos se configura en el router o en el firewall de la red. Las configuraciones generalmente incluyen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li style=\"margin-bottom:var(--wp--preset--spacing--20)\"><strong>Puerto Externo<\/strong>: El puerto en el que el router recibe el tr\u00e1fico externo.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><strong>Direcci\u00f3n IP Interna<\/strong>: La IP del dispositivo en la red local al que debe redirigirse el tr\u00e1fico.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--20)\"><strong>Puerto Interno<\/strong>: El puerto del dispositivo interno que recibir\u00e1 el tr\u00e1fico.<\/li>\n<\/ul>\n\n\n\n<p>Cuando el router recibe una solicitud en el puerto externo configurado, la reenv\u00eda autom\u00e1ticamente a la direcci\u00f3n IP y puerto internos definidos, estableciendo la conexi\u00f3n con el dispositivo deseado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tipos de Reenv\u00edo de Puertos<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Reenv\u00edo de Puertos Est\u00e1tico<\/h4>\n\n\n\n<p>En el reenv\u00edo de puertos est\u00e1tico, un puerto externo espec\u00edfico siempre se redirige a un puerto interno espec\u00edfico en una IP fija. Es ideal para servidores que necesitan estar accesibles de forma consistente, como servidores web o FTP.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Reenv\u00edo de Puertos Din\u00e1mico (PAT)<\/h4>\n\n\n\n<p>El <strong>Port Address Translation (PAT)<\/strong>, o reenv\u00edo din\u00e1mico de puertos, permite que varios puertos internos compartan un \u00fanico puerto externo o un conjunto de puertos. El PAT es ampliamente utilizado para asignar puertos temporales a dispositivos y aplicaciones, permitiendo un mayor control sobre el tr\u00e1fico.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Reenv\u00edo de Rango de Puertos (Range Forwarding)<\/h4>\n\n\n\n<p>Este tipo de reenv\u00edo permite que un rango de puertos sea redirigido, lo que es \u00fatil para aplicaciones que utilizan m\u00faltiples puertos simult\u00e1neamente, como juegos multijugador y servicios VoIP.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">DNS Din\u00e1mico (DDNS)<\/h3>\n\n\n\n<p>Muchas conexiones de internet dom\u00e9sticas y comerciales utilizan <strong>IP din\u00e1mico<\/strong>, es decir, la direcci\u00f3n IP p\u00fablica puede cambiar en cualquier momento, dependiendo del proveedor de internet.<\/p>\n\n\n\n<p>Esto puede ser problem\u00e1tico para el <strong>reenv\u00edo de puertos<\/strong> y el acceso remoto, ya que los dispositivos externos necesitan conocer la direcci\u00f3n IP exacta para conectarse a la red local.<\/p>\n\n\n\n<p>Con IP din\u00e1mico, acceder remotamente a un dispositivo o servicio se vuelve inconsistente, ya que la direcci\u00f3n puede cambiar inesperadamente.<\/p>\n\n\n\n<p>El DDNS resuelve este problema, asociando un <strong>nombre de dominio<\/strong> a la IP din\u00e1mica y actualizando autom\u00e1ticamente la direcci\u00f3n IP cuando cambia.<\/p>\n\n\n\n<p>As\u00ed, puede acceder a dispositivos internos (como c\u00e1maras de seguridad, servidores o aplicaciones de IoT) usando siempre el mismo nombre de dominio, independientemente de la IP.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Seguridad de Datos<\/h3>\n\n\n\n<p>Redirigir puertos puede crear vulnerabilidades, ya que abre un canal directo hacia los dispositivos internos, que puede ser explotado por atacantes.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Uso de Contrase\u00f1as Fuertes<\/h4>\n\n\n\n<p>Configure siempre contrase\u00f1as seguras para los dispositivos accesibles de forma remota.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Doble Verificaci\u00f3n<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">Firewall y Control de Acceso<\/h4>\n\n\n\n<p>Use firewalls para limitar el acceso a puertos espec\u00edficos.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Red Privada Virtual (VPN)<\/h4>\n\n\n\n<p>En lugar de exponer directamente un puerto en la red p\u00fablica, utilice una VPN para acceder a la red local de forma segura, creando un t\u00fanel cifrado que protege el tr\u00e1fico.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Los Puertos de Red son componentes esenciales en la comunicaci\u00f3n entre procesos, ya sea de forma local o en redes de larga distancia, como internet. En este art\u00edculo, exploraremos los conceptos fundamentales que sustentan el funcionamiento de los puertos de red, abarcando desde los conceptos de gesti\u00f3n y comunicaci\u00f3n entre procesos hasta la implementaci\u00f3n pr\u00e1ctica [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":23427,"parent":0,"template":"","meta":{"_a3a_post_lang":"es-es","_a3a_translation_group_id":"trans_19519","_a3a_i18n_canonical_slug":"que-son-los-puertos-de-red"},"categories":[307],"class_list":["post-72189","articles","type-articles","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/a3aengenharia.com\/es-es\/wp-json\/wp\/v2\/articles\/72189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/a3aengenharia.com\/es-es\/wp-json\/wp\/v2\/articles"}],"about":[{"href":"https:\/\/a3aengenharia.com\/es-es\/wp-json\/wp\/v2\/types\/articles"}],"author":[{"embeddable":true,"href":"https:\/\/a3aengenharia.com\/es-es\/wp-json\/wp\/v2\/users\/4"}],"version-history":[{"count":0,"href":"https:\/\/a3aengenharia.com\/es-es\/wp-json\/wp\/v2\/articles\/72189\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/a3aengenharia.com\/es-es\/wp-json\/wp\/v2\/media\/23427"}],"wp:attachment":[{"href":"https:\/\/a3aengenharia.com\/es-es\/wp-json\/wp\/v2\/media?parent=72189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/a3aengenharia.com\/es-es\/wp-json\/wp\/v2\/categories?post=72189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}