2010-08-19 12 views
52

¿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.Caracteres válidos de un nombre de host?

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

Ejemplos de nombre de host incluyen localhost o google.com.

+2

El comando Linux [sethostname] (http://linux.die.net/man/2/sethostname) aceptará cualquier bytes. – OrangeDog

Respuesta

57

Pedido esta wiki, específicamente la sección restricciones en los nombres de host válidas

nombres de los sistemas se componen de una serie de etiquetas concatenados 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 de longitud, y el nombre de host completo (incluidos los puntos de delimitación pero no un 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 nombres de host de componentes contengan solo las letras ASCII 'a' a 'z' (de una manera que no distinga entre mayúsculas y minúsculas), los dígitos '0' a '9' y el guion ('-'). La especificación original de nombres de host en RFC 952, ordenaba que las etiquetas no podían comenzar con un dígito o con un guión, y no debe terminar con un guión. Sin embargo, una especificación posterior (RFC 1123) permitió que las etiquetas de nombres de host comenzaran con dígitos. No se permiten otros símbolos, signos de puntuación o espacios en blanco.

+2

Asegúrese de tener claro si está buscando un nombre de host o un nombre de dominio completo o cualquiera. –

17

Depende de si procesa IDN antes o después del algoritmo IDN toASCII. (Es decir, ¿cree que el nombre de dominio παράδειγμα.δοκιμή como παράδειγμα.δοκιμή o como xn--hxajbheg2az3al.xn--jxalpdlp

En este último caso - en el que está manejando los IDN a través de la punycode, aplicar a continuación el viejo RFC 1123 reglas:

U + 0041 a través U + 005A (AZ), U + 0061 a U + 007A (az) caso plegado como el uno al otro, U + 0030 a U + 0039 (0-9) y U + 002D (-). [Editar: y U + 002E (.) por supuesto, las reglas para etiquetas permiten a los demás, con puntos entre etiquetas, a veces son las partes obvias las más fáciles de olvidar]

Si lo está viendo en forma IDN, los caracteres permitidos son muy variados, ver http://unicode.org/reports/tr36/idn-chars.html para un han tabla dy de todos los personajes válidos

Lo más probable es que su código de red se ocupe de punycode, pero su código de visualización (o simplemente pasando cadenas hacia y desde otras capas) con la forma más humana como nadie ejecutando un servidor en el السعودية. domain quiere ver su servidor listado como en .xn - mgberp4a5d4ar

+0

¡Wow, nunca he visto IDN y Ponycode! En este momento, estoy planeando solo para el apoyo de inglés, ya que es solo un proyecto mío, ¡pero definitivamente aprendí algo de su respuesta! – Ricket

+1

Lo bueno de la forma en que funciona punycode es que, por debajo de cierto nivel (aquel en el que se hace la red), todo es ASCII. Es más o menos una manera de fingir que un ASCII solo la tecnología puede trabajar con otro texto (incluidas algunas palabras en inglés que antes no se permitían). Además de darle a toda la palabra una ruta de actualización, también te da una: compila para hacer lo que dice RFC 1123, y si luego agregas soporte IDN el código de red permanece igual y agregas soporte para RFC 3490 en la parte superior (las bibliotecas están disponibles en muchos idiomas para ayudar también). –

+0

@Ricket no sé si hay errores tipográficos o si bromeó sobre el nombre ("ponycode"). Los llamo "punyshed", personalmente. –

2

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 períodos solo están permitidos 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 ver el fondo). No se permiten caracteres en blanco o espacio como parte de un nombre. No se hace distinción entre mayúsculas y minúsculas. El primer personaje debe ser un personaje alfa. El último carácter no debe ser un signo o período menos. Un host que sirve como GATEWAY debe tener "-GATEWAY" o "-GW" como parte de su nombre. Los hosts que no sirven como puertas de enlace de Internet no deben usar "-GATEWAY" y "-GW" como parte de sus nombres.Un host que es un TAC debe tener "-TAC" como la última parte de su nombre de host, si es un host DoD. Los nombres o apodos de un solo personaje no están permitidos.

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

Cuestiones relacionadas