Resumen Teoría

Transcripción

Resumen Teoría
COMUNICACIONES DIGITALES – TCP/IP
: Modelo TCP/IP
Introducción
Arpanet era una red de investigación patrocinada por el Departamento de Defensa
de EE.UU. (DoD) que se expandió a Universidades e instalaciones del gobierno. Los
requerimientos que se le hicieron apuntaban a que sobreviviera a la pérdida de
Hardware de subred, sin interrupción de las conversaciones existentes; que pudieran
conectarse entre sí múltiples redes de manera inconsútil; que tuviera una
arquitectura flexible pues se usaría tanto para transferir archivos hasta discursos en
tiempo real.
Paralelamente el DoD era pionero en redes de satélites y radio. Se observan
problemas para interactuar. Surge la necesidad de una nueva arquitectura que
sumada a los requerimientos conducen a una red de conmutación de paquetes
basada en una capa de interred carente de conexiones. En este contexto aparece
TCP/IP en 1974.
El Modelo
Es una suite de protocolos que toma el nombre de sus dos protocolos más
importantes:
-
Protocolo de Control de Transmisión(TCP)
Protocolo de Internet (IP)
Está modelado en capas:
Pila de Protocolos TCP/IP
Capa de Interred
Permite que los nodos inyecten paquetes en toda la red y los haga viajar de forma
independiente de su destino, sin importar el orden (las capas superiores se encargan
de este problema).
Define un formato de paquete y protocolo oficial llamado IP (Protocolo de Internet).
Es importante considerar el ruteo y evitar la congestión.
Se corresponde con la capa de Red del Modelo OSI.
Comunicaciones Digitales
1
TCP/IP
Capa de Transporte
Permite que las entidades pares en los nodos de origen y destino lleven a cabo una
conversación.
Se definen dos protocolos de extremo a extremo:
- Protocolo de Datos del Usuario (UDP)
- Protocolo de Control de Transferencia (TCP)
Capa de Aplicación
TCP/IP no tiene capa de sesión ni presentación. Contiene los protocolos de alto
nivel:
- TELNET
- FTP
- SMTP
- DNS
- NNTP
- HTTP
Capa del Nodo a la Red
No se dice mucho de lo que aquí sucede, fuera de indicar que el nodo se ha de
conectar a la red haciendo uso de algún protocolo de nodo que pueda enviar por ella
paquetes de IP.
La siguiente figura muestra los protocolos e interfaces según corresponda de las
diferentes capas:
Modelo de Arquitectura detallado
El modelo no distingue con claridad los conceptos de servicios, interfaz y protocolo.
La capa del Nodo a la Red en realidad no es una capa en el sentido normal. Es una
interfaz (entre la red y las capas de Enlace de Datos).
No distingue entre la capa Física y la de Enlace de Datos.
Muchos de sus protocolos fueron creados conforme surgía la necesidad.
En síntesis el modelo es casi inexistente, pero los protocolos se usan mucho.
Modelo Cliente/Servidor
TCP es un protocolo donde no hay una relación maestro/esclavo. Las aplicaciones,
sin embargo, utilizan el modelo cliente/servidor para las comunicaciones. Un servidor
Comunicaciones Digitales
2
TCP/IP
es una aplicación que ofrece un servicio a los usuarios de Internet; un cliente es
quien requiere el servicio.
Los usuarios usualmente invocan la parte cliente de la aplicación, los cuales
construyen un requerimiento para un servicio particular y se lo envía a la parte
servidor usando TCP/IP como vehículo de transporte.
El servidor es un programa que recibe un requerimiento, realiza el servicio y envía
de vuelta los resultados en una respuesta.
Un servidor puede usualmente atender múltiples requerimientos al mismo tiempo.
Algunos servidores esperan los requests en puertos bien conocidos. Los clientes
usan puertos arbitrarios.
La figura muestra el modelo:
Modelo Cliente/Servidor
Bridges, Routers y Gateways
Los bridges interconectan segmentos de LAN a nivel de capa de interface y dirigen
los frames entre ellas.
Se puede decir que es transparente a IP. Es decir, cuando un host envía un
datagrama IP a otro host sobre una red conectada por un bridge, éste envía el
datagrama directamente al host y el datagrama "cruza" al bridge sin que el host IP
que envía se entere.
Los routers interconectan redes a nivel de la capa de interred y rutean paquetes
entre ellas. El router debe conocer la estructura de direccionamiento asociada con
los protocolos de red; él soporta y toma decisiones sobre si, o como, dirigir los
paquetes.
Los routers son capaces de seleccionar el mejor camino de transmisión o el tamaño
de paquete optimo. La función básica de ruteo es implementada en la capa IP, por lo
que cualquier host o estación de trabajo que corre TCP/IP sobre mas de una interfaz
podría en teoría, tal como hoy ocurre con la mayoría de las implementaciones, llevar
a cabo esta función. Sin embargo, los routers dedicados proveen una función de
ruteo mucho más sofisticada que las mínimas funciones implementadas por IP.
Es visible a IP, o sea, cuando un host envía un datagrama IP a otro host a una red
conectada por un router, él envía el datagrama al router y no directamente al host
apuntado.
El termino gateway es ahora normalmente usado para conexiones a nivel de capas
superiores a la capa de interred.
Un gateway usualmente soporta dirección de mapeo de una red a otra, y puede
también proveer transformación de los datos entre los entornos para soportar
Comunicaciones Digitales
3
TCP/IP
conectividad de las aplicaciones. Los gateways típicamente limitan la
interconectividad de dos redes a un subconjunto de protocolos de aplicación
soportados sobre cada uno.
Un gateway es opaco a IP, es decir, un host no puede enviar un datagrama IP a
través de un gateway, él solamente puede enviarlo a un gateway. La información de
los protocolos de alto nivel transportado por los datagramas es entonces pasada por
el gateway usando cualquier arquitectura de red que es usada por el otro lado del
gateway.
Relacionado a los conceptos de router y gateway esta el de firewalls, el cual es
usado para restringir el acceso desde Internet a una red o a un grupo de redes
controladas por una organización por razones de seguridad.
: Internet Protocol (IP)
IP es un protocolo estándar con número STD 5. Este estándar también incluye ICMP
(Internet Control Message Protocol) y a IGMP (Internet Group Management
Protocol).
IP es el protocolo que oculta la capa física inferior mediante la creación de una visión
virtual de red. Es un protocolo de entrega de paquetes No Confiable, Best-Effort y
No Orientado a la Conexión.
Best-Effort implica que los paquetes enviados por IP pueden perderse, desordenarse
o aún duplicarse, pero IP no manejará estas situaciones; es menester de protocolos
de capas superiores hacerlo.
Una de las razones para usar un protocolo No Orientado a la Conexión fue minimizar
su dependencia en centros de cómputo específicos que utilizaban redes jerárquicas
Orientadas a la Conexión.
Direccionamiento IP
Las direcciones IP se representan por valores binarios sin signo de 32 bits,
usualmente expresados en un formato decimal con puntos (por ejemplo,
170.210.80.40).
La forma numérica es usada por el software. El mapeo entre este formato y uno más
simple de leer como uncoma.edu.ar se lleva a cabo por el Domain Name System o
DNS (Sistema de Nombres de Dominio).
La Dirección IP
Para poder identificar un host en Internet, cada uno de ellos debe poseer una
dirección única. Cuando un host está vinculado a más de una red, se denomina
Multi-homed, y posee una dirección IP por cada interfaz de red.
La dirección IP esta compuesta por dos números:
IP address = <network number> <host number>
El número de red está administrado por el Internet Network Information Centre
(InterNIC) y es único en toda la Internet. El número de host, en cambio, es
competencia del administrador de la red en cuestión.
Comunicaciones Digitales
4
TCP/IP
Los primeros bits de la dirección IP determinan cómo debe separarse el resto de la
dirección en su parte de red y su parte de host. Esta separación define cinco clases
de direcciones IP a saber:
Clases de direcciones IP asignadas
-
Clase A. Utiliza 7 bits para red y 24 para host. Esto permite direccionar 27-2 (126)
redes con 224-2 (16777214) host cada una.
-
Clase B. Utiliza 14 bits para red y 16 para host. Esto permite direccionar 214-2
(16382) redes con 216-2 (65534) host cada una.
-
Clase C. Utiliza 21 bits para red y 8 para host. Esto permite direccionar 221-2
(2097150) redes con 28-2 (254) host cada una.
-
Clase D. Reservada para multicasting.
-
Clase E. Reservada para uso futuro.
Es claro que las direcciones Clase A serán asignadas a redes con una gran cantidad
de hosts, mientras que las direcciones Clase C serán convenientes para redes con
una pequeña cantidad de hosts.
Direcciones IP Especiales
Todos los bits 0. Significa este/a (host/red). Cuando un host quiera comunicarse en
una red, pero no conozca la dirección de ésta, puede enviar
paquetes con <network address>=0. Otros hosts de la red
interpretarán esta dirección como esta red y enviarán una
respuesta con la dirección de red correspondiente, la cual será
almacenada por el host para uso futuro.
Todos los bits 1. Significa todos/as (hosts/redes). Usada para Broadcasting.
Comunicaciones Digitales
5
TCP/IP
Loopback. La dirección Clase A 127.0.0.0 se define como la red loopback.
Direcciones de esta red se asignan a interfaces que procesan datos
dentro del sistema y nunca acceden a la capa física.
Subredes IP
Debido al crecimiento explosivo de Internet, el principio de asignación de direcciones
IP se hizo demasiado inflexible para permitir cambios simples en las configuraciones
de redes locales. Estos cambios pueden ocurrir porque:
-
Se instala una nueva red física en un lugar,
Aumenta el número de host requiriendo particionar la red existente en dos o más
redes separadas,
Aumenta la distancia requiriendo que una red se divida en redes menores
conectadas por Gateways.
Para evitar el pedido de direcciones de red IP adicionales en estos casos, se
introduce el concepto de Subred.
La asignación de subredes se hace localmente, por lo que la red completa todavía
parece ser una única red IP para el mundo exterior.
La parte de la dirección IP correspondiente al número de host se divide nuevamente
en un número de subred y un número de host. Luego:
IP address = <network number> <subnet number> <host number>
Las subredes son implementadas de manera que son transparentes para redes
remotas.
La división mencionada se hace utilizando una máscara de subred, la cual es un
número de 32 bits. Los bits en cero de la máscara de subred corresponden a
posiciones de bits asignadas al número de host, y los unos (“1”) corresponden a
posiciones de bits asignadas al número de subred. Las posiciones de bits
correspondientes al número de red se hacen uno pero no se utilizan.
Esto se aclarará con la presentación de un ejemplo más adelante.
Tipos de asignación de subredes (subnetting)
Asignación Estática: significa que todas las subredes en una red tendrán la misma
máscara de subred.
Asignación de Longitud Variable: las subredes pueden utilizar máscaras distintas de
acuerdo a las necesidades individuales de cada
subred, permitiendo un uso más eficiente de las
direcciones de red.
Ejemplo
Proponemos la siguiente dirección IP clase A:
Comunicaciones Digitales
6
TCP/IP
00001001
9
9.67.38.1
01000011
67
00100110
38
00000001
1
11111111
255
11000000
192
Dirección clase A, donde
9
67.38.1
Dirección de Red
Dirección de Host
Hacemos ahora la siguiente partición:
La máscara de red correspondiente será:
11111111
255
11111111
255
Está división nos da:
218-2 = 262142 subredes
26-2 = 62 hosts
(Recordemos las restricciones impuestas sobre las direcciones con todos los bits 1 o
0.)
Aplicando la máscara a la dirección clase A de nuestro ejemplo se tiene:
00001001
01000011
00100110
00000001
11111111
11111111
11111111
11000000
=========================================
00001001
01000011
00100110
00 - - - - - Red
Subred
= 9.67.38.1 (dirección clase A)
= 255.255.255.192 (máscara)
AND lógico
= 9.67.38 (dir. subred base)
Esto deja una dirección de host:
--------
--------
Comunicaciones Digitales
--------
- - 000001
Host
7
= 1 (dirección de host)
TCP/IP
Ruteo IP
Una función importante de la capa IP es el Ruteo IP. Éste provee el mecanismo
básico para que los routers interconecten las diferentes redes. Esto significa que un
host puede funcionar simultáneamente como host y como router.
Un router básico contiene información acerca de cuatro tipos de direcciones:
-
Hosts que están conectados directamente a una de las redes físicas a las cuales
está conectado el router,
Hosts o redes para las cuales se han dado direcciones específicas al router,
Hosts o redes para las cuales el router ha recibido mensajes ICMP de redirección,
Una dirección por defecto para cualquier otro caso.
Existen dos tipos de ruteo: directo e indirecto.
Ruteo Directo
Si el host destino está unido a la red física a la cual se halla conectado también el
host fuente, puede enviarse un datagrama IP directamente encapsulándolo en un
frame de la capa física.
Ruteo Indirecto
Ocurre cuando el host destino y el host fuente no están conectados a la misma red.
La única forma de alcanzar el destino es vía una o más gateways. (En la
terminología IP, Gateway y Router se usan indistintamente para referirse a sistemas
que realizan las tareas de ruteo.) La dirección de estas Gateways se denomina ruta
indirecta en el contexto del algoritmo de ruteo IP. La dirección de la primer gateway
es la única información que necesita el host fuente.
Tablas de Ruteo IP
La determinación de las rutas disponibles se deriva de una lista de interfaces locales
disponibles para IP y son construidas automáticamente en la iniciación.
Cada host almacena un conjunto de mapas entre:
-
Direcciones IP de redes
Ruta(s) a la(s) próxima(s) Gateways(s)
Éstas se almacenan en las tablas IP. Pueden encontrarse tres tipos de mapeos en
estas tablas:
-
Rutas directas: para redes localmente vinculadas,
Rutas indirectas: para redes alcanzables vía una o más Gateways,
Ruta por Defecto: contiene la ruta a usar en caso de no encontrar el destino de la
red IP en los mapeos anteriores.
Presentamos ahora un ejemplo de configuración de tablas de ruteo.
Comunicaciones Digitales
8
TCP/IP
Topología de red
La tabla de ruteo para el host D podría ser:
La tabla de ruteo para el host F podría ser:
El Algoritmo de Ruteo
IP usa un algoritmo único para rutear datagramas IP. La forma general del Algoritmo
se ilustra en la siguiente figura:
Comunicaciones Digitales
9
TCP/IP
Sin embargo, el algoritmo completo debe ser capaz de identificar subredes. Éste se
muestra en el siguiente diagrama de flujo.
Éste es un proceso iterativo, que es aplicado por cada host que maneja un
datagrama, excepto los hosts a los cuales finalmente se les entrega el datagrama.
Métodos de Entrega
La mayoría de los datagramas IP se refieren a un único receptor, llamadas
conexiones Unicast.
Además, existen tres tipos de direcciones IP que son utilizadas para enviar
datagramas IP a más de un receptor:
Broadcasting. Las direcciones de Broadcast sólo son válidas como direcciones
destino. Existen varias clases de Broadcast: Limitado, Orientado a Red, Orientado a
Subred y Orientado a Todas las Subredes.
Multicasting. La desventaja principal del Broadcasting es su falta de selectividad. El
Multicasting evita el overhead usando grupos de direcciones IP.
Comunicaciones Digitales
10
TCP/IP
Anycasting. A menudo, diferentes hosts ofrecen el mismo servicio IP. El usuario es
atendido en caso de Anycasting por el primer host que responda.
Modos de Entrega de Paquetes IP
Datagrama IP
La unidad de transferencia de un paquete de datos en TCP/IP se denomina
Datagrama IP. Está formado por una Cabecera (Header) que contiene información
para IP y datos que son únicamente relevantes para protocolos de capas superiores.
Formato del Datagrama IP
La cabecera del datagrama IP tiene una longitud mínima de 20 bytes.
Comunicaciones Digitales
11
TCP/IP
Formato de un Datagrama IP
Donde:
VERS. Versión de protocolo IP (4, 5 o 6).
HLEN. Longitud de la cabecera en múltiplos de 32 bits, sin incluir el campo de datos.
Service Type. Indica la calidad de servicio requerida por el datagrama IP.
Total Length. Longitud total del datagrama, cabecera y datos, especificada en bytes.
Identification. Número único asignado por el remitente para colaborar en el reensamblaje de datagramas fragmentados. Los fragmentos de datagramas tendrán
todos el mismo ID.
Flags. Banderas de control para permitir o no la fragmentación del datagrama e
indicar si se trata del último fragmento o no.
Fragment Offset. Usado en la fragmentación de datagramas.
Time to Live. Especifica el tiempo, en segundos, que se le permite viajar a un
datagrama. Cada router por el cual pase el datagrama decrementará este valor
hasta que éste se haga nulo y el datagrama sea descartado.
Comunicaciones Digitales
12
TCP/IP
Protocol Number. Indica el número de protocolo de mayor nivel al cual IP debe
entregar el datagrama. Algunos valores importantes son:
0
1
2
3
4
5
6
8
9
17
41
50
51
89
Reserved
Internet Control Message Protocol (ICMP)
Internet Group Management Protocol (IGMP)
Gateway-to-Gateway Protocol (GGP)
IP (IP encapsulation)
Stream
Transmission Control Protocol (TCP)
Exterior Gateway Protocol (EGP)
Private Interior Routing Protocol
User Datagram Protocol (UDP)
IP Version 6 (IPv6)
Encap Security Payload for IPv6 (ESP)
Authentication Header for IPv6 (AH)
Open Shortest Path First
Header Checksum. Suma de Verificación de la cabecera únicamente; no incluye los
datos.
Source IP Address. Dirección IP de 32 bit del host que envía el datagrama.
Destination IP Address. Dirección IP de 32 bit del host destino.
Options. Campo de longitud variable para aplicaciones variadas.
Padding. Usado junto con el caso anterior.
Data. Información a ser entregada a un protocolo de nivel superior, especificado en
el campo Protocol.
: Internet Control Message Protocol (ICMP)
ICMP es un protocolo estándar con número STD 5. Este estándar también incluye IP
(Internet Protocol) y a IGMP (Internet Group Management Protocol).
Cuando un router o un host destino deben informar sobre errores en el
procesamiento de datagramas, usan el Protocolo de Mensajes de Control de Internet
(ICMP). Algunas de las características de ICMP son:
-
ICMP utiliza IP como si éste fuera un protocolo de nivel superior, es decir, los
mensajes ICMP se encapsulan usando el protocolo IP. Sin embargo, ICMP es
una parte integral de IP y debe implementarse en todos los módulos IP.
ICMP se usa para reportar errores, y no para hace más confiable a IP. La
confiabilidad debe lograrse a través de protocolos de nivel superior.
Los mensajes ICMP nunca se envían como respuesta a datagramas que no
tengan como destinatario a un único host.
Los mensajes ICMP nunca se envían como respuesta a datagramas que no
tengan como remitente a más de un host.
Comunicaciones Digitales
13
TCP/IP
Mensajes ICMP
Son enviados en datagramas IP. El header tendrá siempre el número de protocolo 1,
indicando ICMP y tipo de servicio igual a cero (rutina). El campo de Datos contendrá
el verdadero mensaje ICMP en el formato que muestra la figura.
Formato Mensaje ICMP
Donde:
Type. Especifica el tipo de mensaje:
0 Echo reply
3 Destination unreachable
4 Source quench
5 Redirect
8 Echo
9 Router advertisement
10 Router solicitation
11 Time exceeded
12 Parameter problem
13 Time Stamp request
14 Time Stamp reply
15 Information request (obsolete)
16 Information reply (obsolete)
17 Address mask request
18 Address mask reply
30 Traceroute
31 Datagram conversion error
32 Mobile host redirect
33 IPv6 Where-Are-You
34 IPv6 I-Am-Here
35 Mobile registration request
36 Mobile registration reply
37 Domain name request
38 Domain name reply
39 SKIP
40 Photuris
Code. Contiene el código de error correspondiente al datagrama reportado por este
mensaje ICMP. Su interpretación depende del tipo de mensaje.
Checksum. Contiene el complemento a unos de la suma en complemento a uno del
mensaje ICMP, comenzando por el campo ICMP Type.
Comunicaciones Digitales
14
TCP/IP
Data. Contiene información sobre este mensaje ICMP. Típicamente contiene parte
del mensaje IP original para el cual se generó este mensaje ICMP.
Aplicaciones ICMP
Ping
Ping es la más simple de todas las aplicaciones basadas en TCP/IP: envía uno o
más datagramas al host destino especificado solicitando respuesta y mide el tiempo
de tránsito. Se utiliza para verificar una instalación TCP/IP verificando si un host es
alcanzable o no.
Ping utiliza los mensajes ICMP Echo y Echo Reply. Dado que se requiere ICMP en
todas las aplicaciones TCP/IP, los hosts no necesitan un servidor adicional para
responder al “ping”.
Traceroute
El programa Traceroute se basa en UDP e ICMP. Envía un datagrama IP con un
TTL (Time To Live) de 1 al Host destino. El primer Router en ver al datagrama
decrementa el TTL a 0 y retorna un mensaje ICMP Time Exceeded, a la vez que
descarta el datagrama. De esta manera se identifica el primer Router en el camino al
Host. El proceso es repetido sucesivamente con valores de TTL cada vez mayores
con el fin de identificar la serie de Routers que se encuentran en el camino al Host
destino. En realidad, Traceroute envía datagramas UDP al Host destino que
referencian un número de puerto que está fuera del rango usado normalmente. Esto
posibilita al programa determinar cuándo se llegó al Host destino, esto es, cuando se
recibe un mensaje ICMP Port Unreachable.
He aquí un ejemplo de la ejecución del programa Traceroute:
C:\>tracert www.yahoo.com
Tracing route to www.yahoo.akadnsnet.com [216.32.74.55]
over a maximum of 30 hops:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
4
975
2138
914
*
*
*
*
*
*
*
1510
*
*
*
*
*
*
3072
*
*
*
*
*
1489
ms
ms
ms
ms
ms
ms
ms
ms
2
3
940
616
405
744
1115
2155
*
*
*
1610
*
*
1533
*
*
1383
*
*
1383
*
*
*
*
*
ms
ms
ms
ms
ms
ms
ms
ms
ms
ms
ms
ms
1
3
*
1476
585
973
*
*
*
1363
1695
*
*
1469
*
*
*
*
1735
*
1767
*
*
*
*
1547
ms
ms
ms
ms
ms
ms
ms
ms
ms
ms
ms
170.210.83.161
r1.uncoma.edu.ar [170.210.80.1]
lp-uncoma-64.riu.edu.ar [170.210.0.93]
riusur-lp-128.riu.edu.ar [170.210.0.9]
ciba-riu-ciba.telintar.net.ar [200.10.128.57]
border-atm6-0-1-uos.telintar.net.ar [200.10.128.6]
border9-serial4-1-2-0.Bloomington.cw.net [204.70.216.77]
xcore1-fddi0.Bloomington.cw.net [204.70.143.121]
Request timed out.
corerouter1.SanFrancisco.cw.net [204.70.9.131]
cwusa-mciworldcom.SanFrancisco.cw.net [166.63.128.10]
bbr01-g6-0.sntc01.exodus.net [216.33.147.35]
bbr01-p2-0.sntc02.exodus.net [209.185.249.110]
bbr02-p3-0.elsg01.exodus.net [209.185.249.218]
bbr01-p6-0.dlls01.exodus.net [209.1.169.73]
Request timed out.
Request timed out.
209.185.9.42
216.33.96.162
216.33.98.19
216.35.210.126
Request timed out.
Request timed out.
Request timed out.
Request timed out.
www6.dcx.yahoo.com [216.32.74.55]
Trace complete.
Comunicaciones Digitales
15
TCP/IP
: Address Resolution Protocol (ARP)
El protocolo ARP es un protocolo de red específico y estándar. Es responsable de
convertir una dirección de más alto nivel (direcciones IP) en direcciones de red
físicas.
En una red física, cada host es conocido por su dirección física de hardware. Los
protocolos de capas superiores a la física direccionan hosts de manera simbólica
(direcciones IP en este caso). Cuando uno de estos protocolos quiere enviar un
datagrama a una dirección IP w.x.y.z, el driver del dispositivo no entiende esta
dirección.
Por lo tanto, se lo provee con un módulo ARP, el cual traducirá la dirección IP a la
dirección física del host destino. Se utiliza una tabla de búsqueda, a veces
denominada cache ARP, para realizar esta tarea.
Cuando la dirección no puede encontrarse en la cache ARP, se envía un broadcast
a la red con un formato especial denominado ARP Request. Si una de las máquinas
en la red reconoce la dirección como propia la dirección IP pedida, envía una
respuesta ARP (ARP Reply) al host que solicitó la información. La respuesta
contiene la dirección de hardware del host y cierta información acerca de la ruta en
caso de que el paquete haya atravesado bridges en su camino. Toda esta
información es almacenada en la cache ARP y utilizada por el driver local para
enviar datagramas a la red.
: Puertos y Sockets
A un proceso de aplicación se le asigna un numero identificador de proceso
(Process ID) el cual es probable que sea diferente cada vez que el proceso se inicie.
Los ID de Proceso difieren entre los sistemas operativos, por lo que no son
uniformes.
Un servidor de procesos puede tener múltiples conexiones a múltiples clientes a la
vez, en consecuencia los identificadores de conexión simple podrían no ser únicos.
Los conceptos de sockets y puertos proveen una forma uniforme y unívoca de
identificar las conexiones a los programas y los host que participan en ellos, sin
considerar los números de identificación (ID) de los procesos.
Puertos
Es un numero de 16 bits. Puerto es el nombre en TCP de un TSAP (Punto de
Acceso al Servicio de Transporte). Los números de puerto por debajo de 1023 se
llaman puertos bien conocidos y se reservan para servicios estándar .Los que
están entre 1023 y 65535 son puertos efímeros.
La confusión del uso de un mismo puerto debido a dos aplicaciones diferentes que
tienen el mismo numero de puerto se evita escribiendo estas aplicaciones que
requieren un puerto disponible de TCP/IP. Como este puerto es asignado
dinámicamente, puede diferir de una invocación de una aplicación a la siguiente.
Comunicaciones Digitales
16
TCP/IP
Sockets
La interfaz socket es una de las varias Interfaces de Programación de la
Aplicación (API). Está diseñado para ser una interface de programación de
comunicación genérica.
La interfaz socket se diferencia por los servicios que son provistos a las
aplicaciones: sockets de flujo (orientada a la conexión), sockets de datagramas (sin
conexión) y el servicio de los sockets raw (acceso directo a los protocolos de capas
inferiores).
Cuando un socket se crea, no tiene información detallada de como será utilizado. En
particular no contiene información sobre el número de puerto, de protocolo o sobre la
dirección IP ni de la maquina local ni de la remota. Por lo que antes que una
aplicación lo use debe especificarla.
: Protocolo de Datos del Usuario (UDP)
Es un protocolo estándar con STD 6 , descripto en la RFC 768 con Estado
Recomendado.
Es básicamente una interfaz de aplicación a IP. Es sin conexión y No Confiable.
Sirve como multiplexor/demultiplexor para enviar y recibir datagramas, usando
puertos para dirigir los datagramas como muestra la figura:
No realiza control ni recupero de error, por lo que agrega poco overhead. Usado
para consultas de petición y respuesta del tipo cliente/servidor y donde se prioriza la
entrega rápida. Necesita identificar un puerto que es más específico que la dirección
IP, dado que los datagramas normalmente están dirigidos a ciertos procesos y no al
sistema completo.
Formato del Datagrama UDP
Cada datagrama UDP es enviado en un único datagrama IP. Como este último
puede ser fragmentado, la implementación que lo recibe deberá re-ensamblarlo
antes de pasarlo a la capa UDP. A todas las implementaciones se les requiere que
acepten datagramas de 576 bytes, aunque muchas son capaces de aceptar
datagramas mayores (no está garantizado).
Comunicaciones Digitales
17
TCP/IP
Formato del Datagrama UDP
-
Puerto de Origen : indica el puerto del proceso que envía.
-
Puerto de Destino: especifica el puerto del proceso destino sobre el host destino.
-
Longitud: es la longitud (en bytes) de este datagrama incluyendo la cabecera.
-
Checksum: es la suma (complemento a 1) de una pseudo-cabecera IP, la
cabecera UDP y los datos. Es opcional: sino se utiliza se rellena con ceros.
Pseudo-Cabecera IP (UDP)
Las aplicaciones estándar que incluyen UDP son:
-
TFTP
DNS
RPC
SNMP
LDAP
(Protocolo de Transferencia de Archivos Trivial)
(Sistema de Nombre de Dominios)
(Procedimiento de Llamada Remota)
(Protocolo de Manejo de Red Simple)
(Protocolo de Acceso al directorio Liviana)
: Transmission Control Protocol (TCP)
TCP es un protocolo estándar con número STD 7. Su estado es recomendado, pero
en la práctica toda implementación TCP/IP que no se use exclusivamente para ruteo
incluirá TCP.
TCP provee más facilidades que UDP: corrección de errores, control de flujo y
confiabilidad. TCP es un protocolo Orientado a la Conexión, a diferencia de UDP que
no lo es.
La figura muestra dos procesos que se comunican entre sí mediante una conexión
TCP llevada por datagramas IP.
Comunicaciones Digitales
18
TCP/IP
Host A
Host B
Concepto TCP
Como se dijo antes, TCP tiene como objetivo primario proveer un servicio de
conexión o circuito lógico confiable entre pares de procesos. No asume confiabilidad
de protocolos de capas inferiores por lo que debe garantizarlo por sí mismo.
TCP puede caracterizarse por las siguientes facilidades que provee a las
aplicaciones que hacen uso de él:
Stream Data Transfer (Transferencia de Datos Continua). Desde el punto de vista de
las aplicaciones, TCP transfiere datos en forma continua a través de la red. La
aplicación no debe preocuparse por fragmentar la información en bloques básicos o
datagramas. TCP realiza este trabajo agrupando bytes en segmentos TCP, los
cuales son pasados a IP para que éste los transmita a su destino. Además, TCP
decide cómo ha de segmentar la información y la manda a su propia conveniencia.
Confiabilidad. TCP asigna un número de secuencia a cada byte transmitido y espera
un reconocimiento positivo (ACK) por parte del TCP receptor. Si el ACK no es
transmitido dentro de un lapso de tiempo específico, los datos son retransmitidos.
Dado que un segmento TCP está integrado por un conjunto de bytes TCP, sólo se
envía al host destino el número de secuencia del primer byte en el segmento.
El TCP receptor utiliza estos números de secuencia para acomodar los segmentos
que arrivan fuera de orden y eliminar los duplicados.
Control de Flujo. El TCP receptor, al enviar un ACK al transmisor, también le envía el
número de bytes que es capaz de recibir a partir del último segmento recibido sin
causar overflow de los buffers internos. Esto es enviado en el ACK indicando el
máximo número de secuencia que puede recibirse sin inconvenientes. Este
mecanismo se denomina Mecanismo de Ventana.
Multiplexado. Se logra a través del uso de puertos, tal como se hace en UDP.
Comunicaciones Digitales
19
TCP/IP
Conexiones Lógicas. Los mecanismos de control de flujo y confiabilidad anteriores
requieren que TCP inicialice y mantenga cierta información de estado del envío de
datos. Esta información, junto con los números de secuencia, sockets y tamaño de
las ventanas, constituye una conexión lógica. Cada conexión se distingue
unívocamente por el par de sockets usados por los procesos transmisor y receptor.
Full Dúplex. TCP provee transmisión simultánea de datos en ambos sentidos.
Formato del Segmento TCP
El segmento TCP se muestra en la siguiente figura.
Formato Segmento TCP
Donde:
Source Port. Número de puerto en 16 bits, usado por el receptor para responder.
Destination Port. Número de puerto en 16 bits del destinatario.
Secuence Number. Número de Secuencia del primer byte de datos en el segmento.
Acknowledgement Number. Si el bit de control ACK está en 1, este campo contiene
el próximo número de secuencia que el receptor espera recibir.
Data Offset. Número de palabras de 32 bits en la cabecera TCP. Indica dónde
comienzan los datos.
Reserved. Reservados para uso futuro.
URG. Indica que el campo Urgent Field debe considerarse en este segmento.
ACK. Indica que el campo Acknowledgement debe considerarse en este segmento.
PSH. Función Push.
Comunicaciones Digitales
20
TCP/IP
RST. Resetea la conexión.
SYN. Sincroniza los números de secuencia.
FIN. No más datos del transmisor.
Window. Usado en segmentos ACK. Especifica el número de bytes de datos,
comenzando con aquel indicado en el campo Acknowledgement Number, que el
receptor está dispuesto a recibir.
Checksum. El complemento a unos de la suma en complemento a unos de todas las
palabras de 16 bits del pseudo-header, el header TCP y los datos TCP. El pseudoheader tiene el siguiente formato:
Pseudo-Header TCP
Urgent Pointer. Apunta al primer octeto de datos que sigue a los datos urgentes.
Sólo tiene significancia cuando el bit de control URG está seteado.
Options. Selección de alguna de las opciones implementadas en el protocolo TCP.
Padding. Relleno de bytes con ceros para que el Header TCP tenga una longitud
total múltiplo de 32 bits.
Establecimiento de una Conexión TCP
Antes de que sea posible la transmisión de Datos, debe establecerse una conexión
entre dos procesos. Uno de los procesos, usualmente el servidor, establece una
llamada pasiva OPEN; ésta permanece dormida hasta que otro proceso trate de
conectarse con ella con una llamada OPEN activa.
En una red se intercambian tres segmentos TCP:
Establecimiento de una Conexión TCP
Comunicaciones Digitales
21
TCP/IP
El proceso completo se conoce como Handshake de Tres Vías.
El cierre de la conexión se hace de manera implícita enviando un segmento TCP con
el bit FIN activado (no enviar más datos). Dado que la conexión es full-duplex
(existen dos flujos de datos independientes, uno en cada dirección), el segmento FIN
sólo cierra la conexión de un único lado. El otro proceso envía los datos restantes y
concluye con un segmento con el bit FIN en uno. La conexión es borrada (la
información de estado en ambos lados) una vez que el flujo de datos en ambas
direcciones ha finalizado.
Algoritmos de Control de Congestión TCP
La congestión se da cuando la carga ofrecida a la red es mayor a la que puede
manejar. La idea es no inyectar un paquete nuevo hasta que salga uno viejo (que se
entregue).
TCP manipula dinámicamente el tamaño de la ventana, adaptando la tasa de envío
de datos del transmisor a la capacidad de la red y tratar de evitar situaciones de
congestión potenciales.
El primer paso es detectar la congestión: la mayoría de las finalizaciones de
temporizaciones (timeouts) se deben a congestiones.
Se aceptan dos problemas potenciales (que se solucionan por separado):
-
Capacidad de la red
Capacidad del receptor
Arranque lento
Cada transmisor mantiene dos ventanas: la que ha otorgado el receptor y la ventana
de congestionamiento (cwnd); cada una refleja la cantidad de bytes que puede
enviar el transmisor. La efectiva será la menor de las dos.
Al establecerse la conexión, el transmisor asigna a la cwnd el tamaño de segmento
máximo usado por la conexión; entonces envía un segmento máximo. Si se recibe el
reconocimiento antes del timeout , el transmisor agrega el equivalente en bytes de
un segmento a la cwnd, y así sucesivamente. Cada ráfaga reconocida aumenta la
ventana al doble. La ventana sigue creciendo exponencialmente hasta que ocurra un
timeout o se alcance el tamaño de la ventana del receptor. Este algoritmo se llama
de arranque lento.
Comunicaciones Digitales
22
TCP/IP
Funcionamiento del Arranque Lento TCP
Algoritmo de Evasión de Congestión
Además de las ventanas de congestión y la del receptor utiliza un tercer parámetro
un umbral (inicialmente de 64k).
Al ocurrir un timeout, se establece el umbral en la mitad de la cwnd actual, y cwnd se
restablece a un segmento. Luego se usa el arranque lento para ver lo que puede
manejar la red, excepto que el crecimiento exponencial llega hasta el umbral. A partir
de ahí, las transmisiones exitosas aumentan linealmente la cwnd (en un segmento
máximo por ráfaga).
Arranque Lento y Evasión de Congestión en Funcionamiento
Algoritmo de Retransmisión Rápida y Recupero Rápido
A TCP se le requiere generar un ACK inmediato (ACK duplicado) cuando un
segmento fuera de orden es recibido y le dice, además, qué numero de secuencia
espera. No conoce si el ACK duplicado se debe a una perdida de paquete o a un reordenamiento de segmentos. Si hay un re-ordenamiento, esperará uno dos ACK
duplicados antes de que se procese el re-ordenamiento, lo cual genera un nuevo
ACK. Si tres o más son recibidos es un fuerte indicativo de que se perdió un
paquete. Luego retransmitimos el paquete perdido sin esperar que el tiempo de
retransmisión espire. Este es el algoritmo de Retransmisión Rápida (ver figura).
Comunicaciones Digitales
23
TCP/IP
Luego se implementa el algoritmo de Evasión de Congestión, no Arranque Lento,
estando en presencia del algoritmo de Recupero Rápido.
Retransmisión Rápida TCP en Funcionamiento
Estos algoritmos se implementan juntos como sigue:
1- Cuando se recibe un tercer ACK duplicado, se inicializa el umbral a la mitad de la
menor entre la actual cwnd y la del receptor.
Retransmite el segmento perdido.
Pone cwnd al umbral mas 3 veces el tamaño del segmento.
2- Cada vez que un ACK duplicado arriba , incrementa cwnd al tamaño del
segmento y transmite un paquete (si es permitido por el nuevo valor de cwnd).
3- Cuando un nuevo ACK arriba tal que reconoce un nuevo dato, pone cwnd al
umbral (valor puesto en el paso 1). Éste debería ser el ACK de la retransmisión
del paso 1, un tiempo de ida y vuelta después de la retransmisión.
Adicionalmente, este ACK debería reconocer todos los segmentos intermedios
enviados entre el paquete perdido y la recepción del tercer ACK duplicado. Este
paso es el Control de Congestión.
Comunicaciones Digitales
24
TCP/IP
: Protocolos de Aplicación
Los protocolos de alto nivel se denominan Protocolos de Aplicación y se comunican
con aplicaciones en otros hosts, siendo la interface visible para el usuario de la suite
de protocolos TCP/IP.
La mayoría de ellos se basa en el modelo de interacción Cliente/Servidor y utilizan
UDP o TCP como mecanismo de transporte.
A continuación presentamos dos de estos protocolos que son ampliamente utilizados
en Internet.
Servicio de Nombres Dominio de (DNS)
La red sólo entiende direcciones binarias y los programas usan cadenas ASCII. Es
por esto que debe haber un mecanismo que traduzca las cadenas ASCII en
direcciones de red.
La esencia del DNS es la invención de un esquema de nombres jerárquico basado
en dominios y una base de datos distribuida para implementar este esquema de
nombres. Se usa principalmente para relacionar las direcciones de host y destinos
de correo electrónico con las direcciones IP, pero también con otros fines. Se define
en los RFC 1034 y 1035.
Para relacionar un nombre con una dirección de IP, un programa de aplicación llama
a un procedimiento de biblioteca llamado resolvedor, pasándole el nombre como
parámetro. El resolvedor envía un paquete UDP a un servidor DNS local, que
entonces busca el nombre y devuelve la dirección IP al resolvedor, quien lo devuelve
al solicitante.
El espacio de nombres del DNS
Conceptualmente, Internet se divide en varios cientos de dominios de nivel superior,
cada uno de los cuales abarca muchos hosts. Cada dominio se subdivide en
subdominios y éstos a su vez se dividen nuevamente, etc. Pueden representarse
como un árbol. Las hojas representan los dominios que no tienen subdominios. Un
dominio de hoja puede tener muchos o un host.
Espacio Jerárquico de Nombres de Dominios
Los dominios de nivel superior pueden ser: genérico y de país (ISO 3166).
Comunicaciones Digitales
25
TCP/IP
Cada dominio se nombra por la trayectoria hacia arriba desde las hojas a la raíz.
Los componentes se separan por puntos. No se distinguen mayúsculas de
minúsculas.
Cada dominio controla el modo de asignación de los dominios que están debajo de
él. Para crear un dominio nuevo, se requiere el permiso del dominio en el que se
incluirá.
Los nombres reflejan los limites organizacionales, no las redes físicas.
Registros de recurso
Cada dominio, puede tener un grupo de registros de recursos asociados a él. En un
host individual, el mas común es su dirección IP. Cuando un resolvedor da un
nombre de dominio al DNS, lo que recibe son los registros de recursos asociados a
ese nombre. Un registro consta de:
Nombre_dominio
Tiempo_de_Vida
Tipo Clase Valor
Nombre_dominio: indica el dominio al que pertenece. Es la llave primaria de
búsqueda,
Tiempo_de_Vida: indica la estabilidad del registro (en segundos)
Tipo: indica el tipo de registro de que se trata. Los mas importantes se listan a
continuación
Comunicaciones Digitales
26
TCP/IP
Clase: Indica la clase, que para Internet es IN.
Valor: puede ser un número, un nombre de dominio o una cadena ASCII.
Servidores de nombres
El espacio de nombres DNS se divide en zonas no traslapantes. Normalmente cada
zona tendrá un servidor de nombres primario, que obtiene su información desde un
archivo en su disco, y uno o mas nombres de servidores secundarios que obtienen
su información del servidor de nombres primario.
Cuando un resolvedor tiene una consulta, la pasa a uno de los servidores de
nombres locales. Si el dominio que busca cae bajo la jurisdicción del servidor de
nombres, devuelve los registros de recursos autorizados. Un registro autorizado es
uno que viene de la autoridad que administra el registro, y por lo tanto, es siempre
correcto. Estos registros contrastan con los registros en cache, que podrían no estar
actualizados.
Por otro lado, si el dominio es remoto y no hay información disponible localmente
sobre el dominio solicitado, el servidor envía un mensaje de consulta para el dominio
solicitado al servidor de nombres de nivel superior.
Considérese la situación siguiente mostrada en la figura, donde el resolvedor de
flits.cs.vu.nl quiere saber la dirección IP del host linda.cs.yale.edu en el paso 1,
envía una consulta al servidor local.
Servidor de
nombres VU CV
Originador
1
flits.cs.vu..nl
2
cs.vu..nl
8
Servidor de
nombres edu
3
edu-server.net
7
Servidor de
nombres Yale
4
yale.edu
6
Servidor de
nombres Yale CS
cs.yale.edu
5
Supongamos que el servidor local nunca había sido consultado por un nombre y no
sabe nada sobre el; puede preguntar a otros servidores cercanos, pero si ninguno
de ellos sabe nada, enviará un paquete UDP al servidor de edu indicado en su base
de datos, edu-servetr.net. Es improbable que este servidor conozca la dirección
linda.cs.yale.edu y probablemente tampoco sobre la de cs.yale.edu pero debe
conocer a todos sus hijos, por lo que reenvía la solicitud a cs.yale.edu (paso 4), que
debe tener los registros de recursos autorizados. Puesto que cada solicitud es de un
cliente a un servidor, el registro de recursos solicitado regresa a través de los pasos
5 a 8.
Una vez que estos registros regresan al servidor cs.yale.edu, son ingresados en
cache ahí, para el caso de que se necesite después. Sin embargo, esta información
no es autorizada, puesto que los cambios hechos en cs.yale.edu no se propagaran a
todos los cache del mundo que puedan saber sobre ella. Por esto, las entradas de
cache no deben vivir demasiado tiempo. Esta es la razón de que se incluya en los
registros el tiempo_de _vida; indica a los servidores de nombres remotos el tiempo
durante el cual deben mantener en cache los registros.
El método de consulta descripto se conoce como consulta recurrente. Existe uno
alternativo, en el cuándo una consulta no es satisfecha localmente, falla la consulta,
pero se devuelve el nombre del siguiente servidor a intentar a lo largo de la línea.
Comunicaciones Digitales
27
TCP/IP
Cuando un cliente DNS no recibe una respuesta antes de terminar su temporizador,
normalmente intentara otro servidor la siguiente vez. Y lo que se supone es que el
servidor esta inactivo.
Protocolo de Transferencia de Archivo (FTP)
FTP es un protocolo estándar con STD 9. Estado recomendado (RFC 959).
Copiar archivos de una maquina a otra es una operación muy usada. La
transferencia entre cliente y servidor puede ser en ambas direcciones.
Para acceder a archivos remotos, el usuario debe identificarse o identificar al
servidor. En este punto el responsable de la autenticación del cliente antes de
permitir la transferencia de los archivos.
FTP usa TCP como protocolo de transporte para proveer conexiones confiables
extremo a extremo. Son usadas dos conexiones: la primera es para entrar (login) y
aceptar el protocolo TELNET y la segunda es para manejar la transferencia de
datos. El usuario que inicia la conexión asume la función de cliente, y la de servidor
por el host remoto.
Sobre ambos lados del enlace la aplicación FTP se construye con un protocolo
interpretador(PI), un proceso de transferencia de datos (DTP), y una interfaz al
usuario.
Principio FTP
La interfaz al usuario se comunica con el protocolo interpretador, el cual se encarga
del la conexión de control. Este protocolo interpretador tiene que comunicar la
información necesaria a su propio sistema de archivos.
Sobre el lado opuesto del enlace, el protocolo interpretador, además de su función
de responder al protocolo TELNET tiene que iniciar la conexión de datos. Durante la
transferencia de archivos, el manejo de datos es realizado por los DTP.
Después de que un requerimiento del usuario es completado, el PI del servidor tiene
que cerrar la conexión de control.
Las operaciones FTP
Cuando se usa FTP, el
usuario realizara algunas o todas las siguientes
operaciones:
- Conectarse al host remoto
- Seleccionar un directorio
- Listar los archivos disponibles para la transferencia
- Definir el modo de transferencia
- Copiar archivos a o desde el host remoto
- Desconectarse del host remoto
Comunicaciones Digitales
28
TCP/IP
: Referencias
- TCP/IP Tutorial and Technical Overview - IBM
Comunicaciones Digitales
29
TCP/IP

Documentos relacionados