Se refiere a las conexiones eléctricas y mecánicas de la red. Ejemplos de protocolos a este nivel son: Ethernet, Inalámbrico IEEE 802.11, Modem y fibra óptica. La información por transmitir se codifica en últimas como una señal electríca que debe transmitirse por cables o como una señal electromagnética (luz, ondas). En medios de transmisión compartidos por más computadores (Ethernet, fibra óptica, aire), el protocolo de este nivel debe tener en cuenta: codificación/decodificación de información del bus al medio de transmisión y arbitrar en caso de colisión de datos. Este tipo de protocolos es implementado por hardware, comúnmente por una tarjeta o dispositivo dedicado que se debe conectar al bus de cada computador. Las tarjetas de los computadores que se comunican se conectan empleando el medio de transmisión. OpenBSD, a nivel físico soporta dispositivos ethernet, fddi (fibra óptica) y conexiones inalámbricas. En caso particular de Ethernet, existen en el momento de este escrito estándares para 10Mbps, 100Mbps, 1Gbps y 10Gbps, que se emplean en topología de estrella (i.e. todos los computadores conectados por cables de pares trenzados a un concentrador), puede configurarse como Half-duplex o como Full-Duplex. Describiremos el uso del esquema más popular y económico en este momento: 100Mbps, Full-duplex con cable de pares trenzados [6]. Cada tarjeta Ethernet tiene una dirección única (llamada dirección MAC), que en una transmisión permite indicar tarjeta fuente y tarjeta destino (la dirección MAC de ambos es transmitida también).
Los protocolos de esta capa permiten interconectar la capa de internet (IP) con la red que se use. En el caso de una red Ethernet se trata del protocolo ARP[7], y que se encarga de traducir direcciones IP a direcciones MAC [8].
Cada vez que un computador de una LAN
identifica una dirección IP
de otro computador conectado a la LAN y su
correspondiente dirección ARP, almacena la
información en una tabla (se borra automáticamente después de
algunos minutos o manualmente por ejemplo con
sudo arp -d 192.168.2.2
).
La tabla puede consultarse con arp -a
.
Para monitorear una red Ethernet y detectar nuevos
computadores que se conecten, puede emplearse el programa
arpwatch (paquete
arpwatch
) que cada vez que detecta cambios
envía un correo a la cuenta root.
En el caso de una conexión por modem el protocolo es PPP[9], que se encarga de establecer, terminar y verificar la conexión. Durante la conexión autentica el computador que se conecta ante el servidor (bien con el protocolo PAP o con CHAP) y durante la operación prepara los paquetes enviados por otros protocolos (como IP) para transmitirlos por modem.
En esta capa la información es fragmentada y envíada empleando el protocolo de la capa física. Los protocolos de esta capa deben tener en cuenta la retransmisión de la información en caso de error al enviar y el verificar información recibida. En esta capa está el Internet Protocol (IP) que es un protocolo diseñado para Internet y del cual hay dos versiones: IPv4 e IPv6. Describiremos la versión 4 [10] (la versión 6 fue diseñada para soportar más computadores conectados a Internet y se espera que pronto se use ampliamente [11]).
Este protocolo permite la transmisión de paquetes (llamados datagramas) en redes donde cada computador interconectado se identifica con una dirección única. Tales direcciones están diseñadas para interconectar varias redes, identificar los computadores que pertenecen a una red (empleando una máscara de red que indica que parte de la dirección del computador corresponde a la dirección de la red) y facilitar el enrutamiento. Si el medio de transmisión lo requiere, el protocolo IP se encarga de la división de los datagramas en paquetes más pequeños para su tranmisión y de la posterior reagrupación (fragmentación), el tamaño máximo que un paquete puede tener para un protocolo de nivel físico se llama MTU (Maximal Transfer Unit), en el caso de Ethernet es 1500 bytes.
Cada datagrama por transmitir es pasado a la capa de IP por otro protocolo de una capa superior (e.g TCP) junto con dirección destino, IP mantiene una tabla de enrutamiento que asocia direcciones destino con compuertas (computadores intermediarios en inglés gateways). Así que envía el datagrama empleando el nível físico a la dirección de la compuerta que mantenga en su tabla de enrutamiento. La tabla de enrutamiento puede ser modificada manualmente (con route show) o puede ser modificada automáticamente cuando una compuerta envía un mensaje indicando la dirección de otra compuerta más apropiada para llegar a un dirección. Hay siempre una compuerta por defecto a la que se envían paquetes que IP no sepa como enrutar.
IP no es protocolo fiable, porque no asegura que un paquete llegue a su destino y no realiza retransmisiones. Aunque para informar algunas situaciones anomalas emplea el protocolo ICMP [12].
OpenBSD cuenta con una excelente implementación de IPv4 con posibilidad de filtrar, redirigir, traducir direcciones, balancear carga y muchas otras opciones que se configuran de forma sencilla con PF. Además implementa características no estándar como IPsec para transmisión encriptada y IPcomp para comprimir.
Los protocolos de esta capa asegura una conexión continua y posiblemente libre de errores entre emisor y receptor. Un protocolo de esta capa debe tener en cuenta mantener los paquetes en orden y asegurar que están completos. Esto se requiere porque el nivel de red puede enrutar diversos paquetes de forma diferente. En esta capa hay dos protocolos: TCP[13] y UDP[14]. El primero es fiable, asegura que la transmisión enviada sea recibida, UDP por su parte no busca confirmar que la información llegue a su destino (aunque permite hacer difusión[15] y multidifusión[16] mientras que TCP no). Ambos protocolos emplean puertos para permitir más de una conexión con uno o más computadores, un puerto se identifica con un número entre 0 y 65536, los primeros 1024 números sólo pueden ser usados por servidores iniciados desde la cuenta root, los demás pueden ser usados por todos los usuarios.
Puede examinar información sobre conexiones a puertos TCP y UDP con sudo pfctl -sa
Consta de protocolos empleados por aplicaciones con propósitos específicos. Emplean los protocolos de la capa de transporte para establecer comunicación. Los protocolos de esta capa pueden dividirse a su vez en protocolos de usuario y protocolos de soporte. Los primeros son para programas empleados directamente por usuarios y los segundos son empleados por el sistema operativo o por otros protocolos.
Telnet está definido en el RFC 854 y complementado en el RFC 1123. Permite la operación remota de otro computador de forma insegura pues las claves se transmiten planas (ssh es un remplazo seguro, ver Sección 2, “Servidor ssh”), además puede usarse para interactuar con otros protocolos (por ejemplo puede interactuar con el protocolo de correo SMTP de su propio computador ---puerto 25--- con telnet localhost 25).
FTP está definido
en el RFC 959 y complementado en el
RFC 1123, permite transmisión de
archivos de manera insegura pues las claves se transmiten
planas (ver Sección 6, “Servidor ftp
”).
Está definido en el RFC 1350 (Trivial File Transfer Protocol), es análogo a FTP pues permite transmitir archivos, aunque es mucho más simple, es apropiado para transmitir el sistema operativo a computadores sin disco duro que arrancan por red.
SMTP se definió en el RFC 822 y se complementó en el RFC 1123 (Simple Mail Transfer Protocol) que especifica como se realiza la transmisión de correo electrónico (ver Sección 5, “Servidor de correo electrónico”).
Definido en los RFC 1034 y 1035 y complementado en el RFC 1123. Es empleado para dar nombres descriptivos a direcciones IP (e.g structio.sourceforge.net es el nombre DNS de la dirección 216.34.181.96).
Empleado por un computador en el que no ha iniciado el sistema operativo para solicitar su dirección IP a un servidor de este protocolo.
Empleado para monitorear uso de una red.
[6] El estándar que define este esquema es IEEE 802.3, que se basa en el uso de un sólo medio de transmisión compartido por todos los dispositivos en el que sólo trasmite un sólo dispositivo durante un tiempo para evitar colisiones, se elige el siguiente dispositivo por transmitir con el algoritmo CSMA/CD --cuando un dispositivo detecta que la línea está libre transmite parte de la información si detecta colisión da oportunidad de transmisión a otros un intervalo aleatorio de tiempo.
[7] ARP se define en el RFC 826
[8] Un computador envía un mensaje a todos los demás de la red (broadcast que es posible en Ethernet), solicitando la dirección MAC de una dirección IP, el dispositivo con esa MAC responde enviando su dirección MAC al dispositivo que hizo la solicitud.
[9] PPP se describe en el RFC 1661.
[10] El protocolo IPv4 está descrito en el RFC 791, aunque puede verse una descripción en conjunto con otros protocolos en el RFC 1122
[11] OpenBSD tiene soporte para IPv6
[12] ICMP Internet Control Message Protocol, se describe en el RFC792, permite enviar mensajes de error (e.g dirección inalcanzable, tiempo excedido) y algunos mensajes para hacer consultas (e.g eco, estampilla de tiempo).
[13] TCP se describe en el RFC 793 y se complementa y corrige en el RFC 1122
[14] UDP está descrito en el RFC 768 y corregido en el RFC 1122
[15] Del inglés broadcast
[16] Del inglés multicast