¿Caracteres válidos de un nombre de host?

85

¿Cuáles son los caracteres válidos de un nombre de host? Esto sería algo así como una computadora en red o un dominio web.

Para ponerlo en contexto, estoy escribiendo un juego de PC que se conecta a un servidor remoto; entonces tengo un campo para el nombre de host y un campo para el puerto. Obviamente, el puerto es un número en el rango corto, pero necesito saber cuáles son todos los posibles caracteres del nombre de host (y cualquier otro patrón que pueda ser necesario: ¿un nombre de host debe comenzar con una letra?).

Los ejemplos de nombre de host incluyen localhosto google.com.

Ricket
fuente
2
El comando linux sethostname aceptará cualquier byte.
OrangeDog

Respuestas:

91

Consulte esta wiki , específicamente la sección Restricciones sobre nombres de host válidos

Los nombres de host se componen de una serie de etiquetas concatenadas con puntos, al igual que todos los nombres de dominio. Por ejemplo, "en.wikipedia.org" es un nombre de host. Cada etiqueta debe tener entre 1 y 63 caracteres, y el nombre de host completo (incluidos los puntos delimitadores, pero no el punto final) tiene un máximo de 253 caracteres ASCII.

Los estándares de Internet (Solicitudes de comentarios) para protocolos exigen que las etiquetas de nombre de host de los componentes solo contengan las letras ASCII de la 'a' a la 'z' (sin distinguir entre mayúsculas y minúsculas), los dígitos '0' a '9' y el guión. ('-'). La especificación original de nombres de host en RFC 952 , exigía que las etiquetas no pudieran comenzar con un dígito o con un guión, y no deben terminar con un guión. Sin embargo, una especificación posterior ( RFC 1123 ) permitió que las etiquetas de nombre de host comenzaran con dígitos. No se permiten otros símbolos, caracteres de puntuación o espacios en blanco.

Aaron Hathaway
fuente
6
Asegúrese de tener claro si está buscando un nombre de host o un nombre de dominio completo o cualquiera de los dos.
Kevin Gross
Además, tenga claro si está buscando un requisito estricto de interoperabilidad de DNS o no. En particular, DNS prohíbe los guiones bajos en las etiquetas de nombre de host, mientras que muchos sistemas operativos los permiten para uso local. Los servidores DNS tienden a ser indulgentes, y el DNS ahora en la práctica requiere guiones bajos en algunos tipos de registros, como los registros TXT (para DKIM, etc.), pero no para las etiquetas de nombre de host.
tripleee
26

Depende de si procesa los IDN antes o después del toASCIIalgoritmo de IDN (es decir, ¿ve el nombre de dominio παράδειγμα.δοκιμήen griego o como xn--hxajbheg2az3al.xn--jxalpdlp?).

En el último caso, en el que maneja IDN a través del código puny, se aplican las reglas antiguas de RFC 1123:

U + 0041 a U + 005A (AZ), U + 0061 a U + 007A (az) caja doblada entre sí, U + 0030 a U + 0039 (0-9) y U + 002D (-).

y U + 002E (.) por supuesto; las reglas para las etiquetas permiten las demás, con puntos entre las etiquetas.

Si lo está viendo en forma de IDN, los caracteres permitidos son muy variados, consulte http://unicode.org/reports/tr36/idn-chars.html para obtener una tabla práctica de todos los caracteres válidos.

Lo más probable es que su código de red se ocupe del código puny, pero su código de visualización (o incluso simplemente pasar cadenas hacia y desde otras capas) con la forma más legible por humanos, ya que nadie ejecuta un servidor en السعودية. domain quiere ver su servidor en la lista como activado .xn--mgberp4a5d4ar.

Jon Hanna
fuente
1
¡Vaya, nunca he visto IDN y Ponycode! En este momento estoy planeando solo apoyo en inglés, ya que es solo un proyecto mío, ¡pero definitivamente aprendí algo de tu respuesta!
Ricket
2
Lo mejor de la forma en que funciona punycode es que, por debajo de cierto nivel (en el que haces la red), todo es ASCII. Es más o menos una forma de pretender que un técnico solo ASCII puede funcionar con otro texto (incluidas algunas palabras en inglés que anteriormente no estaban permitidas). Además de darle a toda la palabra una ruta de actualización, también le brinda una: compélela para que haga lo que dice RFC 1123, y si luego agrega compatibilidad con IDN, el código de red permanece igual y agrega compatibilidad con RFC 3490 (las bibliotecas están disponibles en muchos idiomas para ayudar también).
Jon Hanna
2
@Ricket no sé si fue un error tipográfico o si bromeó sobre el nombre ("ponycode"). Yo los llamo "castigados", personalmente.
Camilo Martin
4

Un "nombre" (Net, Host, Gateway o Domain name) es una cadena de texto de hasta 24 caracteres extraídos del alfabeto (AZ), dígitos (0-9), signo menos (-) y punto (.). Tenga en cuenta que los puntos solo se permiten cuando sirven para delimitar componentes de "nombres de estilo de dominio". (Consulte RFC-921, "Programa de implementación del sistema de nombres de dominio", para conocer los antecedentes). No se permiten caracteres en blanco o espacios como parte de un nombre. No se hace distinción entre mayúsculas y minúsculas. El primer carácter debe ser un carácter alfabético. El último carácter no debe ser un signo menos ni un punto. Un host que sirve como GATEWAY debe tener "-GATEWAY" o "-GW" como parte de su nombre. Los hosts que no sirven como pasarelas de Internet no deben usar "-GATEWAY" y "-GW" como parte de sus nombres. Un anfitrión que sea un TAC debería tener "

Esto se proporciona en http://support.microsoft.com/kb/149044

Vivek
fuente
Esto se cita literalmente de RFC 952 [ tools.ietf.org/html/rfc952] . Es engañoso: los nombres de host pueden tener entre 1 y 63 caracteres, como se indicó anteriormente.
Craig S. Anderson
Desafortunadamente, el vínculo está roto.
Devolución de llamada de Eugene Mayevski
0

Si está registrando un dominio y la terminación (ex .com) no es IDN, como dijo Aaron Hathaway : los nombres de host están compuestos por una serie de etiquetas concatenados con puntos, al igual que todos los nombres de dominio. Por ejemplo, en.wikipedia.orges un nombre de host. Cada etiqueta debe tener entre 1 y 63 caracteres, y el nombre de host completo (incluidos los puntos delimitadores, pero no el punto final) tiene un máximo de 253 caracteres ASCII.

Los estándares de Internet (Petición de comentarios) para protocolos exigen que las etiquetas de nombre de host de componentes pueden contener sólo las letras ASCII aa través z(de una manera sensible a las mayúsculas), los dígitos 0través 9y el guión -. La especificación original de los nombres de host en RFC 952 exigía que las etiquetas no pudieran comenzar con un dígito o con un guión, y no debían terminar con un guión. Sin embargo, una especificación posterior (RFC 1123) permitió que las etiquetas de nombre de host comenzaran con dígitos. No se permiten otros símbolos, caracteres de puntuación o espacios en blanco.

Más tarde, España con ella es .es, .com.es, .org.es, .nom,es, .gob.esy .edu.espresentó TLD de IDN, si su dominio de nivel superior es uno de .eso cualquier otro que lo soporta, cualquier personaje puede ser utilizado, pero no se puede combinar alfabetos como el latín, el griego o Cyril en un nombre de host, y que respete las cosas que no pueden salir al principio ni al final.

Si está utilizando tlds no registrados, solo para redes locales, como con DNS local o con archivos de hosts, puede tratarlos a todos como IDN.

Tenga en cuenta que algunos programas podrían no funcionar bien, especialmente los antiguos, desactualizados e impopulares.

Javier CasdeDie
fuente