Redes TCP/IP - Universidad de Costa Rica

Anuncio
Universidad de Costa Rica | Escuela de Ingeniería Eléctrica
IE-0117 Programación Bajo Plataformas Abiertas
Redes TCP/IP
1.
Los protocolos TCP/IP
Las siglas TCP/IP se refieren al conjunto de protocolos de comunicación usados para la transmisión de datos en Internet
y otras redes similares. TCP/IP se diseñó con el propósito de permitir la comunicación a través de redes heterogéneas, lo
que permite su uso sobre una gran variedad de medios físicos. Hoy en día existen implementaciones de TCP/IP en todos
los sistemas operativos modernos y ha desplazado completamente a otros protocolos en las redes locales.
Los protocolos TCP/IP se desarrollaron durante los años setenta, dentro de ARPANET, la red precursora de Internet.
En 1983 TCP/IP se convirtió en el conjunto de protocolos oficial de ARPANET (y posteriormente de Internet). El desarrollo
de TCP/IP estuvo desde sus orígenes ligado a UNIX. A principios del los años ochenta se incluyó una implementación de
TCP/IP en el kernel BSD. Desde entonces TCP/IP ha estado presente en la mayoría de los sistemas operativos tipo UNIX.
El conjunto de protocolos TCP/IP puede modelarse como una serie de capas. Cada capa se encarga de una parte
distinta del proceso de comunicación y todas son necesarias para que un mensaje pueda transmitirse de un punto a otro.
El modelo TCP/IP tiene 4 capas: Enlace, Internet, Transporte y Aplicación:
Conexiones de red
Host
A
Router
Host
B
Router
Conexiones en las capas
Aplicación
Aplicación
Punto-a-punto
Transporte
Transporte
Internet
Internet
Internet
Internet
Enlace
Enlace
Enlace
Enlace
Ethernet
Fibra,
Satelite,
etc.
Ethernet
Este modelo de abstracción permite a un usuario o programador tratar la comunicación como si se estuviera dando
directamente desde una capa en un equipo a la capa equivalente en el otro equipo, sin importar que esté pasando en las
otras capas. Por ejemplo, es posible navegar en Internet o enviar un correo electrónico (capa de aplicación) sin importar
lo que esté sucediendo a nivel físico o en las capas de transporte e Internet.
1
IE-0117 Programación Bajo Plataformas Abiertas
Redes TCP/IP
1.1. Capa de Enlace
La capa de enlace es la capa de más bajo nivel dentro de la pila de protocolos TCP/IP. Los protocolos de la capa de
enlace se encargan de todo lo relacionado con el acceso al medio físico y la interconexión de nodos adyacentes dentro
de una red.
Los protocolos de la capa de enlace dependen del tipo de conexión física utilizada. GNU/Linux soporta una gran gama
de dispositivos: ethernet, wifi, fibra óptica, enlaces telefónicos punto-a-punto (PPP), etc.
Si el kernel posee los controladores adecuados, los dispositivos de acceso a la red serán detectados y se les asignará
un identificador, cuyo nombre depende del tipo de conexión. Por ejemplo, si una computadora con dos tarjetas de red
ethernet, estas podrán accederse usando los identificadores eth0 para la primera tarjeta y eth1 para la segunda. De forma
similar, una conexión punto-a-punto activa se denominaría ppp0 (o ppp1, ppp2, etc.). A nivel lógico dentro del sistema,
cada dispositivo de acceso a la red se conoce como interfaz.
1.2. Capa de Internet
La capa de Internet está a cargo del transporte de datos de un punto a otro. Para esto se utiliza primordialmente el
protocolo IP (Internet Protocol).
El protocolo IP especifica que los datos deben segmentarse en paquetes o datagramas, que serán enviados de forma
independiente hacia el destino. IP es un protocolo no orientado a conexión. Esto significa que el canal por el cual se
enviarán los datos no se establece previamente, sino que se construye sobre la marcha dependiendo de las decisiones
tomadas por los nodos (routers) que se encuentran entre el origen y el destino. IP es un protocolo no confiable, pues no
garantiza que un paquete llegue al destino. Es posible que una paquete sea descartado en el camino debido a congestión
en un router, que se corrompa debido a un error en la transmisión de datos o que los paquetes lleguen en desorden
debido a que se utilizaron rutas distintas durante la transmisión. Le corresponde a un protocolo de nivel superior verificar
que los datos lleguen completos y pedir retransmisiones en caso de que se haya dado algún error.
IP asigna a cada nodo conectado a la red una dirección única. De esta forma es posible encontrar el equipo al cual se
desea enviar la información. Obviamente, debido al tamaño de la red, un equipo no tiene información de todos los nodos.
El envío de los datos se lleva a cabo utilizando múltiples jerarquías de routers, que se encargan de enviar el paquete a su
destino.
En la actualidad se utiliza la versión 4 del protocolo IP. IPv4 utiliza direcciones de 32 bits, lo que permite un total de
aprox. 4000 millones de direcciones. Se espera que en los próximos años se realice una migración a IPv6, que utiliza
direcciones de 128 bits (3,4x1038 direcciones posibles) e introduce otras mejoras respecto a la versión actual.
1.2.1. Direccionamiento IPv4
Como se mencionó anteriormente, cada computadora en una red IPv4 tiene una dirección única de 32 bits. Normalmente, las direcciones IP se muestran en base 10, separando cada octeto (byte) con un punto. Por ejemplo, las siguientes
son direcciones IP:
10.4.4.25 (00001010.00000100.00000100.00011001)
192.168.15.3 (11000000.10101000.00001111.00000011)
163.178.124.135 (10100011.10110010.01111100.10000111)
Toda dirección IP está dividida en dos partes: la primera mitad (bits de la izquierda) corresponde a la red (network)
y el resto (bits de la derecha) corresponde al equipo (host). Para determinar cuantos bits corresponden a cada parte es
necesario tener un dato conocido como la máscara de red (network mask). La máscara de red se representa también
como una dirección IP, en la cual, los bits de la parte de la red tienen un valor de 1 y los del equipo un 0:
16 bits para la red, 16 bits para el equipo:
255.255.0.0 (11111111.11111111.00000000.00000000)
24 bits para la red, 8 bits para el equipo:
2
IE-0117 Programación Bajo Plataformas Abiertas
Redes TCP/IP
255.255.255.0 (11111111.11111111.11111111.00000000)
26 bits para la red, 6 bits para el equipo:
255.255.255.192 (11111111.11111111.11111111.11000000)
La máscara de red también puede indicarse junto con la dirección IP de la siguiente forma:
10.4.4.25/16 (16 bits para la red: 255.255.0.0)
192.168.15.3/24 (24 bits para la red: 255.255.255.0)
163.178.124.135/26 (26 bits para la red: 255.255.255.192)
Para configurar la red en una computadora es necesario contar tanto con la dirección IP como con la máscara de red.
Usando una operación Y lógica (AND) entre ambos valores es posible determinar la dirección de red de la computadora:
IP
: 00001010.00000100.00000100.00011001 (10.4.4.25)
MÁSCARA: 11111111.11111111.00000000.00000000 (255.255.0.0)
----------------------------------- (Y LÓGICO)
RED
: 00001010.00000100.00000000.00000000 (10.4.0.0)
La dirección de red es importante al decidir como se va a enviar un paquete:
Si la dirección IP destino tiene la misma dirección de red: el paquete se envía directamente. La computadora destino
está en la misma red y los protocolos de la capa de enlace pueden encargarse de la entrega de los datos.
Si la dirección IP destino tiene una dirección de red distinta: el paquete es enviado a un router para que se encargue de la entrega. La computadora destino está en una red diferente y la computadora fuente no puede hacer envío
directamente.
Además de la dirección de red, es posible extraer los siguientes datos a partir de la dirección IP y la máscara de red:
Tamaño de la red: El tamaño de una red depende de la cantidad de bits disponibles para indicar el equipo:
Red 10.4.0.0/16: 16 bits para equipo → 216 = 65536 direcciones
Red 192.168.15.0/24: 8 bits para equipo → 28 = 256 direcciones
Red 163.178.124.128/26: 6 bits para equipo → 26 = 64 direcciones
Primera y última dirección de una red: La dirección de red siempre será la primera dirección. La última dependerá del
tamaño de la red:
Red 10.4.0.0/16: 10.4.0.0 → 10.4.255.255
Red 192.168.15.0/24: 192.168.15.0 → 192.168.15.255
Red 163.178.124.128/26: 163.178.124.128 → 163.178.124.191
Dirección de difusión (broadcast): La última dirección IP de una red es especial. Esta dirección no puede ser asignada
a una computadora, sino que permite enviar datos a todas las computadoras de la red a la vez. Esta dirección se conoce
como dirección de difusión o broadcast:
Red 10.4.0.0/16: Dirección de difusión 10.4.255.255
Red 192.168.15.0/24: Dirección de difusión 192.168.15.255
Red 163.178.124.128/26: Dirección de difusión 163.178.124.191
3
IE-0117 Programación Bajo Plataformas Abiertas
Redes TCP/IP
1.2.2. Puerta de enlace (gateway)
Como se mencionó anteriormente, cuando se desea comunicarse con computadoras fuera de nuestra red local, debe
utilizarse un router. Normalmente se define un único router, que se encargará de manejar toda la comunicación con redes
externas. Este router predeterminado se conoce como puerta de enlace o gateway. Casi siempre se le asigna a la puerta
de enlace la primera dirección IP de la red, aunque esto no siempre es así (la puerta de enlace es otro equipo de la red
y puede tener cualquier dirección):
Red 10.4.0.0/16: Puerta de enlace 10.4.0.1
Red 192.168.15.0/24: Puerta de enlace 192.168.15.1
Red 163.178.124.128/26: Puerta de enlace 163.178.124.129
1.2.3. Direcciones IP privadas
Muy a menudo, las direcciones IP públicas disponibles no son suficientes para todas las computadoras de un lugar.
Esto hace que sea necesario crear redes internas utilizando otras direcciones IP distintas. Es posible conectar estas redes
a Internet a través de un router, sin embargo, es necesario asegurarse que las direcciones que se eligieron para la red
interna no vayan a coincidir con las de equipos conectados a Internet. Para este fin existen las direcciones IP privadas:
Las direcciones IP privadas están distribuidas en tres ámbitos de IP distintos:
10.0.0.0/8
172.16.0.0/16
192.168.0.0/16
Es posible crear subredes más pequeñas dentro de estos ámbitos cambiando la máscara de red.
Una computadora con IP privada puede conectarse a Internet si cuenta con una puerta de enlace adecuada. Sin
embargo, no es posible acceder directamente a una computadora con dirección privada desde Internet.
Se espera que con la adopción de IPv6 se reduzca el uso de las direcciones privadas, debido a que aumentará la
cantidad de direcciones disponibles.
1.2.4. Dirección de loopba (acceso local)
Todas las computadoras tienen una interfaz de red especial (en GNU/Linux esta interfaz tiene el nombre lo) con
la dirección 127.0.0.1 que permite efectuar conexiones de red internas dentro de la misma computadora. La conexión
loopback es usada por varios programas para facilitar la comunicación entre procesos dentro de la computadora. Puede
usarse también para realizar pruebas y evaluar programas que funcionan sobre la red sin necesidad de contar con varias
computadoras.
1.3. Capa de Transporte
La capa de transporte se encarga de enlazar el flujo de paquetes enviados o recibidos usando el protocolo IP con las
aplicaciones que utilizan o generan estos datos. Para asociar ciertos datos a una aplicación específica, los protocolos de
la capa de Transporte usan un identificador, conocido como puerto. En la capa de transporte se utilizan principalmente
dos protocolos:
TCP (Transmission Control Protocol): Este protocolo permite enviar datos de forma confiable a través de una red IP.
TCP garantiza que los datos lleguen íntegros al destino, usando mecanismos de confirmación y control de errores que
permiten solicitar la retransmisión de paquetes en caso de error o pérdida. Debido a esto, TCP es usado por la mayoría
de aplicaciones (web, correo electrónico, transmisión de archivos, etc.)
UDP (User Datagram Protocol): UDP funciona de manera similar a IP. Es un protocolo no confiable, que entrega cada
paquete usando la mejor ruta posible y que no garantiza que los datos llegarán a su destino. Debido a sus características,
es un protocolo más rápido que TCP y se usa en circunstancias es las que la velocidad es más importante que la integridad
de los datos, como por ejemplo las aplicaciones de voz o video en tiempo real.
4
IE-0117 Programación Bajo Plataformas Abiertas
Redes TCP/IP
1.4. Capa de Aplicación
Los protocolos de la capa de aplicación definen la forma en que se enviarán o recibirán los datos de una aplicación
específica, por ejemplo web o correo electrónico. Existen cientos de protocolos de aplicación distintos. Algunos de ellos
son:
HTTP (páginas web, puerto 80 TCP)
SMTP (correo electrónico, puerto 25 TCP)
SSH (shell seguro, puerto 22 TCP)
DNS (servidor de nombre de dominio, puerto 53 UDP)
SIP (VOIP, puerto 5060 TCP, UDP)
2.
Lectura recomendada
1. Internet Protocol Suite. Wikipedia. http://en.wikipedia.org/wiki/Internet_Protocol_Suite.
2. ARPANET. Wikipedia. http://en.wikipedia.org/wiki/ARPANET.
3. Internet. Wikipedia. http://en.wikipedia.org/wiki/Internet.
4. Internet Protocol. Wikipedia. http://en.wikipedia.org/wiki/Internet_Protocol.
5. A Brief History of the Internet. Internet Society. http://www.isoc.org/internet/history/brief.shtml.
6. Internet History. http://www.livinginternet.com/i/ii.htm.
5
Descargar