DESCRIPCIÓN
services es un fichero ASCII que proporciona una correspondencia entre nombres textuales cómodos para los servicios de internet y sus correspondientes números de puerto y tipos de protocolo subyacentes. Todo programa de red debería mirar este fichero para obtener el número de puerto (y protocolo) para su servicio.Las funciones getservent(3), getservbyname(3), getservbyport(3), setservent(3), y endservent(3) de la biblioteca de C, permiten consultar este fichero desde un programa.
Los números de puerto son asignados por la IANA (Internet Assigned Numbers Authority: Autoridad para la Asignación de Números de Internet), y su política actual es la de asignar tanto los protocolos TCP y UDP cuando se asigna un número de puerto. Por tanto, la mayoría de las entradas tendrán dos entradas, incluso para los servicios que son exclusivos de TCP.
Los números de puerto por debajo de 1024 (los así llamados "puertos de baja numeración") sólo pueden ser enlazados por el superusuario (ver bind(2), tcp(7), y udp(7).) Esto es así para que los clientes que se conecten a los puertos de baja numeración puedan confiar en que el servicio ejecutándose en el puerto es la implementación estándar y no un servicio tramposo ejecutado por un usuario de la máquina. Los números de puerto bien conocidos especificados por la IANA se localizan normalmente es este espacio exclusivo del superusuario.
La presencia de una entrada para un servicio en el fichero services no significa, necesariamente, que el servicio se está ejecutando actualmente en la máquina. Vea inetd.conf(5) para la configuración de los servicios ofrecidos de Internet. Dese cuenta que no todos los servicios de red son iniciados por inetd(8), por lo que no aparecerán en inetd.conf(5). En particular, los servidores de noticias (NNTP) y de correo (SMTP) frecuentemente se inician desde los guiones de arranque del sistema.
La localización del fichero services viene especificada por _PATH_SERVICES en /usr/include/netdb.h. Normalmente, el valor asignado es /etc/services.
Cada línea describe un servicio, y tiene el formato:
- service-name port/protocol [aliases ...]
- donde:
- service-name
- es el nombre amigable por el que el servicio es conocido y buscado. Distingue entre mayúsculas y minúsculas. Normalmente, el programa cliente se especifica tras service-name.
- port
- es el número de puerto (en decimal) usado por este servicio.
- protocol
- es el tipo de protocolo usado. Este campo debe coincidir con una entrada del fichero protocols(5). Los valores típicos incluyen tcp y udp.
- aliases
- es una lista separada, opcionalmente, por espacios o tabuladores de otros nombres para este servicio (pero consulte más abajo la sección ERRORES). Nuevamente, se distingue entre mayúsculas y minúsculas.
Se pueden usar o bien espacios o bien tabuladores para separar los campos.
Los comentarios comienzan con un '#' y terminan con un final de línea. Las líneas en blanco se saltan.
service-name deben comenzar en la primera columna del fichero, ya que no se eliminan los espacios iniciales. service-names puede ser cualquier secuencia de caracteres imprimibles, excepto espacios y tabuladores. Sin embargo, se debe hacer una selección conservativa de caractares para minimizar problemas de interoperatibidad. Es decir, los caracteres a-z, 0-9 y el guión (-) deben ser una elección sensata.
Las líneas que no coincidan con este formato no deberían estar presentes en el fichero. (Actualmente, getservent(3), getservbyname(3) y getservbyport(3). las saltan silenciosamente. Sin embargo, no debería fiarse de este comportamiento.)
Como característica de compatibilidad hacia atrás, la barra inclinada (/) entre el número de puerto (port) y el nombre del protocolo (protocol) puede ser, de hecho, o bien una barra inclinada o bien una coma (,). El uso de la coma en instalaciones modernas se desprecia.
Este fichero se podría distribuir a través de una red usando un servicio de nombres de red como Yellow Pages/NIS o BIND/Hesiod.
Un ejemplo. El fichero services podría tener el siguiente aspecto:
-
netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp 21/tcp # 22 - unassigned telnet 23/tcp
ERRORES
Hay un máximo de 35 alias, debido a la forma en que está escrito el código de getservent(3).Las líneas con una longitud superior a BUFSIZ (actualmente, 1024) caracteres serán ignoradas por getservent(3), getservbyname(3), y getservbyport(3). Sin embargo, esto también provocará que la siguiente línea sea analizada incorrectamente.
FICHEROS
- /etc/services
- La lista de servicios de red de Internet.
- /usr/include/netdb.h
- Definición de _PATH_SERVICES