12.3. Los Ficheros de Servicios Y Protocolos

Los números de puerto en los que ciertos servicios “estándar” se ofrecen se definen en el RFC Assigned Numbers. Para permitir a los programas servidores y clientes convertir nombres de servicio a estos números, al menos parte del listado se mantiene en cada host; esto se almacena en un fichero llamado /etc/services. Una entrada se crea del siguiente modo:
    servicio puerto/protocolo   [alias]

Aquí, servicio especifica el nombre de servicio, puerto define el puerto en el que el servicio se ofrece y protocolo define qué protocolo de transporte se usa. Comúnmente, el último campo es o udp o tcp. Es posible que un servicio sea ofrecido para más de un protocolo, así como ofrecer diferentes servicios en el mismo puerto mientras que los protocolos son diferentes. El campo alias le permite especificar nombres alternativos para el mismo servicio.

Normalmente, usted no tiene que cambiar el fichero de servicios que viene junto con el software de red de su sistema GNU/Linux. Sin embargo, le damos un pequeño extracto de ese fichero en Ejemplo 12-2.

Ejemplo 12-2. Un fichero /etc/services de ejemplo

    # El fichero de servicios:
    #
    # servicios bien conocidos
    echo           7/tcp                 # Eco
    echo           7/udp                 #
    discard        9/tcp  sink null      # Descartar
    discard        9/udp  sink null      #
    daytime       13/tcp                 # Hora
    daytime       13/udp                 #
    chargen       19/tcp  ttytst source  # Generador de caracteres
    chargen       19/udp  ttytst source  #
    ftp-data      20/tcp                 # Protocolo FTP (Datos)
    ftp           21/tcp                 # Protocolo FTP (Control)
    telnet        23/tcp                 # Protocolo de Terminales Virtuales
    smtp          25/tcp                 # Protocolo de Correo SMTP
    nntp         119/tcp  readnews       # Protocolo de Noticias NNTP
    #
    # UNIX services
    exec         512/tcp                 # BSD rexecd
    biff         512/udp  comsat         # notificación de correo
    login        513/tcp                 # registro remoto (remote login)
    who          513/udp  whod           # who y uptime remotos
    shell        514/tcp  cmd            # órden remota, sin uso de contraseña
    syslog       514/udp                 # sistema remoto de registros del sistema
    printer      515/tcp  spooler        # colas de impresión remotas
    route        520/udp  router routed  # protocoo de información de encaminamiento

Fíjese que el servicio echo se ofrece en el puerto 7 para TCP y UDP, y que el puerto 512 se usa para 2 servicios diferentes: ejecución remota (rexec) usando TCP, y el demonio COMSAT, el cual notifica a los usuarios que tienen correo nuevo, sobre UDP (vea xbiff(1x) ).

Como el fichero de servicios, la biblioteca de red necesita una manera de traducir nombres de protocolo—por ejemplo, esos usados en el fichero de servicios— a los números de protocolo entendidos por la capa IP en otros hosts. Esto se hace mirando el nombre en el fichero /etc/protocols. Éste contiene una entrada por línea, cada una conteniendo el nombre del protocolo y el número asociado. Tener que tocar este fichero es incluso más inverosímil que hacerlo con /etc/services. Un ejemplo del fichero se proporciona en Ejemplo 12-3.

Ejemplo 12-3. Un fichero /etc/protocols de ejemplo

    #
    # Protocolos de Internet (IP)
    #
    ip      0       IP              # protocolo de internet, número de pseudo protocolo
    icmp    1       ICMP            # protocolo ICMP
    igmp    2       IGMP            # Protocolo IGMP
    tcp     6       TCP             # Protocolo de control de transmisión (TCP)
    udp     17      UDP             # Protocolo UDP
    raw     255     RAW             # Interfaz RAW IP