Las redes de computadores constan de medios de transmisión (e.g cables), dispositivos (e.g tarjetas de red) y programas (e.g pila TCP/IP del kernel) que permiten transmitir información entre computadores. Pueden clasificarse de acuerdo al tamaño (WAN de cobertura amplia como un país, MAN de cobertura metropolitana o LAN para edificios o salones) o de acuerdo a la estructura de sus protocolos (e.g el módelo OSI que consta de 7 capas de protocolos: física, enlace, red, transporte, sesión, presentación y aplicación), o de acuerdo a la distribución física de los medios de transmisión y dispositivos (e.g estrella, bus).
LAN es acrónimo de Local Area Network, con este término se hace referencia a redes pequeñas (comúnmente menos de 100 computadores) cuyos computadores están generalmente en un mismo espacio físico. Los principales usos de una red LAN son:
Compartir información distribuida en los discos duros o medios de almacenamiento de cada computador.
Emplear recursos de un computador desde otro, o recursos conectados en red (por ejemplo una impresora).
Compartir una conexión a Internet.
Conformar una Intranet con servicios como correo, web, ftp, news.
Un protocolo [1] es una serie de reglas que indican cómo debe ocurrir una
comunicación entre dos computadores de una red; las reglas de un
protocolo son seguidas por programas que se ejecutan en los
computadores interconectados. Su computador puede tener procesos
activos que esperan conexiones de otros computadores o procesos para
iniciar protocolos (por ejemplo con ps -ax
es
posible que vea: sshd
, inetd
,
httpd
, postgres
). A estos
programas, que esperan conexiones, se les llama servicios[2]. Usted puede iniciar un protocolo con otro computador
empleando el programa cliente adecuado, por ejemplo el cliente
ping
con:
ping 127.0.0.1
iniciará el protocolo de ping (ICMP
,
ECHO_REQUEST
) con el computador con dirección IP
127.0.0.1 (su propio computador), un programa de su computador
estará pendiente de conexiones de este tipo y seguirá el
protocolo[3].
Dado que estamos en paso de IPv4 a IPv6 también mencionamos que el mismo ejemplo con IPv6 (y protocolo ICMP6) es:
ping6 ::1
Internet es una red mundial de redes que están interconectadas vía satélite, por cables submarinos, fibra óptica y muchos otros medios de transmisión financiados por estados y organizaciones. Las heterogeneidad de las redes que interconecta (e.g una LAN de un colegio con Linux, una LAN de una ONG con OpenBSD, una WAN de un banco con X.25) es superada con los protocolos TCP/IP. Para facilitar la conexión de una LAN a Internet, en esta sección se presenta una introducción a los aspectos de redes de Internet; los temas introducidos serán tratados en detalle en otras secciones aplicándolos especialmente al caso de redes Ethernet (ver Sección 3, “Dispositivos de interconexión”, Sección 4, “Direcciones, enrutamiento, transporte y cortafuegos” y Sección 5, “Protocolos de soporte y de usuario”).
Hay muchas personas que aportan su trabajo (muchos de forma voluntaria) para mantener Internet en funcionamiento, para solucionar problemas que ocurren y para planear su futuro. Quienes dirigen el rumbo de Internet están organizados en comités encargados de diversas actividades:
Compuesta enteramente de voluntarios autoorganizados que colaboran en la ingeniería requerida para la evolución de Internet, es decir identifican problemas y proponen soluciones. Quien lo desee puede participar, asistir a las reuniones, ayudar a dar forma o proponer estándares. La IETF recibe borradores (Internet Draft) de autores que renuncian al control del protocolo que proponen. Tras refinamiento estos borradores pueden llegar a ser RFC (Request for Comment) de uno de estos tipos: estándar propuesto, protocolo experimental, documento informativo o estándar histórico. Un estándar propuesto puede después convertirse en borrador de estándar y en casos muy contados en estándar de Internet.
Organización sin ánimo de lucro, da soporte legal y financiero a otros grupos.
Ratifica o corrige estándares propuestos por la IETF.
Planeación a largo plazo y coordinación entre las diversas áreas.
Mantienen registros de diversos nombres y números asignados a organizaciones. Es financiado por ICANN (Internet Corporation for Assigned Names and Numbers).
Es responsable de la asignación y administración de los recursos de numeración de Internet (IPv4, IPv6), Números Autónomos y Resolución Inversa, entre otros recursos para la región de América Latina y el Caribe. Es uno de los 5 Registros Regionales de Internet en el mundo.
La interconexión de las redes conectadas a Internet y su mantenimiento se basa en el protocolo IP, que asigna a cada red y a cada computador un número único (dirección IP) que permite identificarlo y enviarle información.
La asignación de direcciones IP[4] es manejada por IANA, que a su vez la ha delegado a registros en diversas regiones. La región de América Latina es manejada por el registro LACNIC, que recibe solicitudes para asignar bloques a proveedores de servicio a Internet (ISP) o usuarios, estos proveedores deben contar con la infraestructura para conectar sus computadores a Internet (e.g con cables submarinos, vía satélite) y a su vez ofrecen bloques de direcciones y conexión a otros proveedores o a usuarios.
Dada que la comunicación de dos computadores es un proceso complejo (aún más dada la variedad de redes conectadas a Internet), además de una basta infraestructura física, Internet se basa en varios protocolos que siguen todos los computadores y enrutadores conectados. Algunos de estos protocolos dependen de otros, dando lugar a varias capas de protocolos: aplicación, transporte, Internet, enlace[5]. El siguiente diagrama presenta algunos protocolos en las diversas capas de una red TCP/IP sobre una red física Ethernet o sobre una conexión con modem:
Capa de aplicación: Protocolos de usuario FTP Telnet ssh http SMTP ... | | | | | Protocolos de soporte DNS BGP | | | | | | \ | | | | | | Capa de transporte UDP TCP -------------------------- \ / Capa de Internet (red): IP - ICMP ___|___ / \ Capa de enlace: ARP PPP OSPF | | Capa física: Ethernet Modem | | Par trenzado Línea telef.
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: 1000Mbps, 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 e IPv4 se trata del protocolo ARP[7], que se encarga de traducir direcciones IPv4 a direcciones MAC [8].
Cada vez que un computador de una LAN identifica una dirección
IPv4 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 doas arp -d 192.168.2.2
). Dicha
tabla puede consultarse con
arp -a
Para monitorear una red Ethernet e IPv4 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 IPv6 y Ethernet se emplea el portocolo NDP
(Neighbor Discovery Protocol). Puede examinarse la tabla de
vecinos con ndp -a
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.
Cuando al interior de una organización (o sistema autonomo) hay diversas LANs que requieren decisiones de enrutamiento puede emplearse OSPF.
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 transmisió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 una
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 anómalas 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 cifrada 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 doas 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 reemplazo seguro, ver
Sección 5.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 5.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 cómo se realiza la transmisión de correo electrónico (ver Sección 5.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.
Determina enrutamiento de paquetes en Internet a partir de información de Sistemas Autonomos. Cómo se describe en el RFC 4271, un Sistema Autonomo (AS) es un conjunto de enrutadores bajo una única administración técnica que a la vista de otros AS tiene un plan de enrutamiento interior coherente y que presenta una imagen consistene de los destinos a los que se pueden llegar mediante el mismo.
Puede consultar más sobre el IETF y otras organizaciones que mantienen Internet en taioetf y en osietf.
Puede consultar los RFC en rfceditor. También puede consultar versiones en castellano en rfces
Páginas del manual netintro4, ip4, inet4, ip4
https://en.wikipedia.org/wiki/Internet_protocol_suitehttps://en.wikipedia.org/wiki/Internet_protocol_suite
BGP y OSPF: https://www.openbsd.org/papers/linuxtag06-network/mgp00003.html
[1] Para ampliar el significado de los términos técnicos introducidos en estas guías (como protocol), se sugiere consultar el diccionario FOLDOC http://foldoc.doc.ic.ac.uk/foldoc
[2] También suele llamárseles daemons pero como puede resultar ofensivo para cristian@s, procuramos no emplear ese término, ver http://aprendiendo.pasosdejesus.org/?id=Renombrando+Daemon+por+Servicio.
[3] El programa que sigue este protocolo hace parte de la implementación de IPv4 en el kernel.
[4] Puede verse más sobre asignación de IPs en el RFC 2050 y sobre asignación de direcciones in redes IP privadas en RFC 1918.
[5] El RFC 1122 presenta las capas de una red TCP/IP
[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 que se define en el RFC 826
[8] Un computador envía un mensaje a todos los demás de la red (que es posible por ejemplo en Ethernet), solicitando la dirección MAC de una dirección IPv4, 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