Pregunta

He escrito un servicio WCF alojado por un servicio de Windows y necesita escuchar en un puerto TCP / IP conocido. ¿Desde qué rango puedo asignar de forma segura un puerto para uso dentro de mi organización? Ese puerto se integrará en los archivos de configuración del servicio y los clientes que consumen el servicio.

¿Fue útil?

Solución

Elija un número de puerto del 49152 al 65535.

IANA publica una lista de puertos asignados actualmente.

http://www.iana.org/assignments/port-numbers

Los puertos dinámicos y / o privados son aquellos desde 49152 hasta 65535. Este es el rango desde el que DEBE elegir un puerto para sus aplicaciones internas. Por supuesto, se puede utilizar cualquier puerto que pertenezca a uno de los rangos no asignados en la lista publicada. Pero tenga en cuenta que al elegir un número de puerto de esos rangos no asignados no hay garantía alguna de que el puerto que elija no será un puerto reservado en el futuro.

  

LOS NÚMEROS DE PUERTO NO ASIGNADOS NO DEBEN SER   USADO. LA IANA ASIGNARÁ EL NÚMERO   POR EL PUERTO DESPUÉS DE SU APLICACIÓN   HA SIDO APROBADO.

Y asegúrese de que el número de puerto que elija se pueda configurar como se indica:

  

Ese puerto se integrará en el   archivos de configuración para el servicio y la   clientes que están consumiendo el   servicio.

Esto evitará dolores de cabeza en caso de que algún otro software de terceros que no puede tocar esté usando su número de puerto. Si eso sucede, simplemente siga adelante y cámbielo en el archivo de configuración y simplemente funcionará.

Otros consejos

Los puertos 0-1023 son los puertos conocidos y están asignados por IANA. Estos solo deben usarse para los protocolos asignados en redes públicas.

Los puertos 1024-65535 solían llamarse Números de puerto registrados (consulte rfc1700 ), pero ahora se dividen en dos áreas (consulte rfc6335 ).

Los puertos 1024-49151 son los puertos de usuario y son los que debe usar para sus propios protocolos.

Los puertos 49152-65535 son puertos dinámicos y no deben prescribirse a un protocolo.

Los puertos de usuario pueden usarse para cualquier protocolo, pero hay un número finito, por lo que su uso chocará con el uso de otra persona en alguna red. La IANA mantiene un registro de los números de puerto registrados (0-49151). Si su protocolo se usará en redes públicas, entonces necesita registrarlo en la IANA. Si solo lo está utilizando dentro de su propia red, elija un puerto dentro de esta área (1024-49151) y verifique ese puerto con el registro IANA para asegurarse de que no esté siendo utilizado por un protocolo que pueda usarse en su red. Para uso privado, probablemente sea mejor elegir un número asignado a un protocolo que sepa que no se usará, que elegir uno que no esté asignado y, por lo tanto, se puede asignar en el futuro.

No utilice un número de puerto dentro del rango dinámico. El sistema operativo asigna estos puertos de forma dinámica y algo aleatoria. Si abre una conexión de cliente (utilizando bind () con puerto = 0), se le asignará un puerto no utilizado del rango dinámico. No hay forma de garantizar que un puerto en este rango siempre estará libre para su protocolo.

Respuesta corta: evite cualquier cosa que incluya 1023, o más de 49152, y pruebe el puerto elegido con los servicios en su red.

Si ha tomado las precauciones razonables que parece tener (al colocar el número de puerto en un archivo de configuración), no debería ser una interrupción enorme si luego descubre un conflicto.

Pero (para que pueda agregar algo a las otras sugerencias que han aparecido mientras escribía) ¡asegúrese de que sea fácil de cambiar! Si está en los archivos de configuración, que sea obvio. Documentarlo y señalarlo en la resolución de problemas. Es el tipo de cosa que podría salir mal, así que haga que sea fácil de depurar si es necesario cambiarlo.

Además de las otras sugerencias sobre cómo elegir un puerto de aplicación común, le sugiero que configure el puerto en su aplicación. Los números de puerto codificados son una mala idea, especialmente si luego encuentra un conflicto de puerto con otra aplicación y necesita cambiar la suya.

Aquí hay una buena lista de puertos de aplicaciones comunes . Haga su propia elección en una ranura vacía. Tal vez también debería escanear su red para cualquier aplicación especial interna.

Habitualmente están disponibles puertos con números altos y los sugeriría, pero podrían estar bloqueados por cortafuegos.

Como nota, recuerde revisar esos puertos con netstat / a / n para ver si está siendo utilizado por otra aplicación o no. Descubrí que Vista usaba el 49152 ... por alguna razón de nivel de aplicación. Básicamente, debido a que la mayoría de los oyentes a nivel del sistema no implementan el uso compartido de puertos, es muy seguro usar esos puertos que no se usan en absoluto.

ten un buen día de programación Amir

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top