Академический Документы
Профессиональный Документы
Культура Документы
ÍNDICE DE CONTENIDOS
1. INTRODUCCIÓN..................................................................................................................... 4
1.1. PRESENTACIÓN ............................................................................................................ 4
1.2. ESTRUCTURA DEL PROYECTO ..................................................................................... 6
2. ESTUDIO TEÓRICO-PRÁCTICO SOBRE LAS COMUNICACIONES ............................................. 7
2.1. CONSIDERACIONES SOBRE ENTORNOS DE RED INALÁMBRICOS ................................. 7
2.1.1. CARACTERÍSTICAS PROPIAS DEL MEDIO INALÁMBRICO..................................... 7
2.1.2. ALTERNATIVAS DE INFRAESTRUCTURA .............................................................. 7
2.1.3. ASPECTOS PRÁCTICOS DE UNA WLAN ............................................................. 10
2.2. ANÁLISIS DE PROTOCOLOS DE TRANSPORTE EN REDES INALÁMBRICAS................... 12
2.2.1. ASPECTOS TEÓRICOS ........................................................................................ 12
2.2.1.1. ARQUITECTURA DE PROTOCOLOS TCP/IP............................................... 12
2.2.1.2. CONTROL DE FLUJO ................................................................................. 15
2.2.1.3. CONTROL DE ERRORES ............................................................................. 18
2.2.1.4. EL NIVEL DE TRANSPORTE ....................................................................... 21
2.2.2. CARACTERIZACIÓN DE LOS PROTOCOLOS TCP Y UDP SOBRE PLATAFORMAS
INALÁMBRICAS ................................................................................................................... 23
2.2.3. CONCLUSIONES DEL ANÁLISIS DE PROTOCOLOS .............................................. 30
3. SISTEMA PROTOTIPO .......................................................................................................... 31
3.1. DEFINICIÓN DEL MARCO DE TRABAJO ...................................................................... 31
3.2. HARDWARE ................................................................................................................ 32
3.2.1. HARDWARE E INFRAESTRUCTURA DISPONIBLE. .............................................. 32
3.2.1.1. PLACA PC104+......................................................................................... 32
3.2.1.2. HARDWARE DE ESTACIÓN BASE E INFRAESTRUCTURA DE RED ............... 33
3.2.2. SELECCIÓN DE HARDWARE ............................................................................... 34
3.2.2.1. PC104-PCMCIA-1................................................................................... 34
3.2.2.2. ORINOCO PC CARD SILVER ..................................................................... 34
3.2.2.3. ORINOCO WIRELESS RANGE EXTENDER ANTENNA ................................ 35
3.2.2.4. ORINOCO AP-500 ..................................................................................... 36
3.2.2.5. WIDE-ANGLE ANTENNA ........................................................................... 36
3.3. SOFTWARE BÁSICO .................................................................................................... 39
3.3.1. SISTEMA OPERATIVO DE LA ESTACIÓN BASE .................................................... 39
3.3.2. SISTEMA OPERATIVO DE LAS ESTACIONES MÓVILES :QNX ............................. 39
3.4. CONFIGURACIÓN DEL HARDWARE E INFRAESTRUCTURA ......................................... 40
3.4.1. SOFTWARE DE GESTIÓN ORINOCO.................................................................... 40
3.4.2. CONFIGURACIÓN DE LA INTERFAZ INALÁMBRICA SOBRE QNX....................... 42
4. SOFTWARE DE COMUNICACIONES ...................................................................................... 44
4.1. PROPUESTA DE SOLUCIÓN DE SOFTWARE DE COMUNICACIÓN ................................. 44
4.1.1. MODELO CLIENTE - SERVIDOR ......................................................................... 45
4.1.2. API DE COMUNICACIONES ................................................................................ 46
4.2. STCP (SIMPLEX TCP) ............................................................................................... 47
4.2.1. DISEÑO GENERAL DEL PROTOCOLO (POSIBLES SOLUCIONES)......................... 47
4.2.2. DESCRIPCIÓN DEL PROTOCOLO STCP.............................................................. 51
4.2.2.1. DECLARACIÓN DEL PROTOCOLO A NIVEL DE COMUNICACIÓN ................ 51
4.2.2.2. DECLARACIÓN DEL PROTOCOLO A NIVEL DE TRAMA ............................... 52
4.2.2.3. DECLARACIÓN DEL PROTOCOLO A NIVEL DE FIABILIDAD ....................... 55
4.2.2.4. DECLARACIÓN DEL PROTOCOLO A NIVEL DE INTERFAZ DE USUARIO ..... 65
4.3. APLICACIONES DE EJEMPLO...................................................................................... 69
4.3.1. APLICACIÓN DE TRANSFERENCIA DE FICHEROS .............................................. 69
4.3.2. APLICACIÓN PARA MÚLTIPLES COMUNICACIONES SIMULTÁNEAS ................... 70
5. CONCLUSIONES Y TRABAJO FUTURO .................................................................................. 75
6. REFERENCIAS BIBLIOGRÁFICAS ........................................................................................ 76
6.1. ENLACES DE INTERNET CONSULTADOS .................................................................... 76
6.2. LIBROS Y REVISTAS TÉCNICAS CONSULTADOS .......................................................... 76
-1-
Sistema de comunicaciones inalámbricas para robots
FIGURAS
-2-
Sistema de comunicaciones inalámbricas para robots
TABLAS
-3-
Sistema de comunicaciones inalámbricas para robots
1. INTRODUCCIÓN
1.1. PRESENTACIÓN
Este documento presenta un proyecto de ingeniería técnica en
telecomunicaciones que forma parte de otro proyecto de mayor envergadura dentro del
grupo SRV (Systems, Robotics and Vision Group) de la Universitat de les Illes Balears
consistente en la creación de una flota de robots autónomos capaces de llevar a cabo
misiones de relativa complejidad. Las líneas de investigación del grupo dentro del
campo de la robótica apuntan hacia el estudio y diseño de arquitecturas de control para
robots móviles, desarrollo de prototipos para robots móviles así como el diseño y
desarrollo de entornos de simulación para robots móviles específicamente orientado a
entrenamiento y test.
Uno de los componentes de esta flota es el CABRIT (Car Based Robot for
Intelligent Transport) (Figura 1.1), un robot autónomo terrestre montado sobre una base
de coche de radio control y dotado de diversos sensores tales como infrarrojos, sonars y
brújula electrónica que le permiten interactuar con el entorno que le rodea así como
cierta capacidad de inteligencia proporcionada por un microcontrolador y un ordenador
de abordo.
-4-
Sistema de comunicaciones inalámbricas para robots
-5-
Sistema de comunicaciones inalámbricas para robots
-6-
Sistema de comunicaciones inalámbricas para robots
-7-
Sistema de comunicaciones inalámbricas para robots
1 FHSS – (Frequency Hopping Spread Spectrum).Técnica de transmisión del Espectro Amplio (Spread Spectrum) que, al igual que
Ethernet, divide los datos en paquetes de información pero que, por motivos de seguridad, para dificultar su interceptación por
terceros, los envía a través de varias frecuencias (Hopping Pattern) seleccionadas al azar y que no se superponen entre sí. Para llevar
acabo la transmisión además es necesario que tanto el aparato emisor como el receptor coordinen este "Hopping Pattern".
2 OFDM – (Orthogonal Frequency Division Multiplexing )Técnica de modulación FDM para transmitir grandes cantidades de
datos digitales a través de ondas de radio. OFDM divide la señal de radio en múltiples subseñales más pequeñas que luego serán
transmitidas de manera simultánea en diferentes frecuencias al receptor. OFDM reduce la cantidad de ruido (crosstalk) en las
transmisiones de señal.
-8-
Sistema de comunicaciones inalámbricas para robots
Tenemos por tanto que tomar una decisión sobre la tecnología a utilizar, y
teniendo presentes los objetivos y el marco de trabajo podríamos destacar, entre otros,
los siguientes motivos que nos han llevado a elegir el estándar 802.11b como base para
nuestro proyecto:
- El hecho de que 802.11b sea el estándar más extendido y barato es muy
beneficioso puesto que vamos a trabajar con software un tanto especial
que nos obliga a buscar las soluciones más comunes en el mercado
- Entre los objetivos a cumplir, se encuentra la intención de cubrir la
mayor superficie exterior posible, lo cual nos obliga a abandonar
Bluetooth y decantarnos por 802.11b
3
DSSS – (Direct Sequence Spread Spectrum). A diferencia de la técnica de transmisión de Espectro Amplio (Spread
Spectrum) FHSS, DSSS no precisa enviar la información a través de varias frecuencias sino mediante transmisores;
cada transmisor agrega bits adicionales a los paquetes de información y únicamente el receptor que conoce el
algoritmo de estos bits adicionales es capaz de descifrar los datos .Es precisamente el uso de estos bits adicionales lo
que permite a DSSS transmitir información a 10Mbps y una distancia máxima entre transmisores de 150 metros.
-9-
Sistema de comunicaciones inalámbricas para robots
- Puesto que trabajamos con robots móviles tenemos que observar las
condiciones de trabajo de la tecnología. Una de las principales
limitaciones de la robótica es el consumo, y por tanto quedará
descartada la opción de 802.11a, entre otras cosas, por el consumo que
supone.
- 10 -
Sistema de comunicaciones inalámbricas para robots
Dónde:
Nrs = Nivel de recepción de señal
Pt a = Potencia de transmisión a
Pcoa = Pérdida de los conectores a
Pca a = Pérdida de los cables a
Ga a = Ganancia de la antena a
Pp = Pérdida de propagación
Ga b = Ganancia de la antena b
Pca b = Pérdida de los cables b
Pco b = Pérdida de los conectores b.
Esta fórmula tiene sentido, cuando para un enlace óptimo, el Nrs es mayor
que la sensibilidad más un margen de ruido que viene determinado por el entorno.
4
La llamada zona de Fresnel es una zona de despeje adicional que hay que tener en consideración además de haber una visibilidad
directa entre las antenas. Este factor deriva de la teoría de ondas electromagnéticas respecto de la expansión de las mismas al viajar
en el espacio libre. Esta expansión resulta en reflexiones y cambios de fase al pasar sobre un obstáculo. El resultado es un aumento o
disminución del nivel de señal recibido.
- 11 -
Sistema de comunicaciones inalámbricas para robots
necesarias a la red para que envíe el mensaje a B. Para controlar esta operación, se debe
transmitir información de control junto a los datos de usuario.
Veamos que sucede con los datos desde que salen de la capa más alta del
emisor hasta llegar a la capa del mismo nivel del receptor. En el momento que la
aplicación emisora genera un bloque de datos y se lo pasa a la capa de transporte, esta
puede romper el bloque en unidades más pequeñas para hacerlas más manejables. A
cada una de estas pequeñas unidades la capa de transporte añadirá una cabecera, que
contendrá información de control según el protocolo. La unión de los datos generados
por la capa superior junto con la información de control de la capa actual se denomina
unidad de datos del protocolo (PDU, “Protocol Data Unit”); en este caso se referirá
como unidad de datos del protocolo de transporte. La cabecera en cada PDU de
transporte contiene información de control que se usará por el mismo protocolo de
transporte en el computador B. La información de estas cabeceras podría ser, por
ejemplo:
- SAP (Service Access Point) destino. La capa de transporte identificará
el destino de los datos a partir de ese punto de acceso al servicio
- Número de secuencia. Puesto que el protocolo de transporte envía
secuencias de PDU’s, estas estarán numeradas.
- Código de detección de error. La entidad de transporte emisora incluye
un código calculado en función del contenido del resto de la PDU y este
código sirve, en la parte receptora para asegurar la integridad de la PDU.
- 13 -
Sistema de comunicaciones inalámbricas para robots
- 14 -
Sistema de comunicaciones inalámbricas para robots
(a) (b)
Figura 2.3: Modelo para la transmisión de tramas
- 15 -
Sistema de comunicaciones inalámbricas para robots
rango de números de secuencia irá desde 0 hasta 2k-1, y las tramas se numerarán
módulo 2k.
En la figura 2.5 se muestra un ejemplo, en el que se supone un campo de 3
bits para los números de secuencia y un tamaño máximo para las ventanas igual a siete
tramas. Inicialmente, A y B tienen sendas ventanas indicando que A puede transmitir
siete tramas, comenzando con la trama 0 (F0). Tras transmitir tres tramas (F0,F1,F2)sin
confirmación, A habrá cerrado su ventan hasta tener un tamaño de 4 tramas. B entonces
transmite una trama Receptor Preparado RR3 (“Receive Ready”3), lo que significa: “He
recibido todas las tramas hasta la trama número 2 y estoy listo para recibir trama 3; de
hecho estoy listo para recibir siete tramas, empezando por la 3”.
- 18 -
Sistema de comunicaciones inalámbricas para robots
- 19 -
Sistema de comunicaciones inalámbricas para robots
- 20 -
Sistema de comunicaciones inalámbricas para robots
- 22 -
Sistema de comunicaciones inalámbricas para robots
2.2.1.4.3. Aplicaciones
¿Por qué razón existen dos protocolos de transporte (TCP y UDP)?. La
respuesta es porque proporcionan dos servicios diferentes. Las aplicaciones sobre TCP
se ajustan mejor cuando se necesita
a) Un servicio de liberación de flujo de datos fiable y/o
b) Eficiencia sobre circuitos de largo recorrido.
Pronto veremos que en lo que a este proyecto concreto se refiere, tomar una
decisión sobre cual de estos dos protocolos utilizar supone un reto puesto que nuestro
entorno de trabajo requiere unas necesidades intermedias entre las ofrecidas por TCP y
por UDP.
- 24 -
Sistema de comunicaciones inalámbricas para robots
5
SNOOP. Modulo que, colocado lo más próximo al receptor gestiona las retransmisiones en entornos de alto BER incrementando el
rendimiento de TCP
6
Referencia bibliográfica en: Referencias bibliográficas/ Enlaces de Internet consultados / Nº1.
7
Este algoritmo, es un ejemplo de los algoritmos adaptativos existentes para la gestión temporizadores.
- 25 -
Sistema de comunicaciones inalámbricas para robots
8
Referencia bibliográfica en: Referencias bibliográficas/ Libros y revistas técnicas consultados/ Nº3
- 26 -
Sistema de comunicaciones inalámbricas para robots
- Caracterización de TCP
Una vez finalizada la caracterización del protocolo 802.11b, empleando el
tráfico UDP, se da paso al estudio del comportamiento de aplicaciones basadas en TCP
sobre la misma plataforma. El protocolo de transporte TCP implementa mecanismos de
control de flujo y errores, citando al contenido del artículo, se documenta de qué forma
afecta esto en el overhead de las tramas y el retardo.
Se utilizó para este análisis, el mismo proceso que en el caso UDP, es decir,
primero se analizará el caso en el que el canal puede considerarse como ideal (sin
9
Throughput La cantidad de datos transmitidos entre dos puntos en una determinada cantidad de tiempo. Se entiende
como el rendimiento total relacionando cantidad de información y tiempo.
- 27 -
Sistema de comunicaciones inalámbricas para robots
presencia de errores), para más adelante estudiar la influencia que los errores tienen
sobre el comportamiento de TCP. Sin embargo hay un aspecto que se modifica respecto
al análisis realizado previamente. En esta ocasión, más que analizar los diferentes
procedimientos que implementa el protocolo de acceso IEEE 802.11b, el artículo, hace
especial hincapié en el efecto de los errores en los mecanismos implementados por TCP.
Se tratará, pues, de un análisis más a nivel de capa de transporte que de enlace, a
diferencia del estudio basado en UDP.
En la figura 2.12 se muestra la contribución individual de todos los niveles
que intervienen en la comunicación en el rendimiento global para las cuatro velocidades
de trabajo. Vuelve a destacar la sobrecarga física en la que se derrocha la mayor parte
de eficiencia, sobre todo cuando se trabaja a regimenes elevados.
En el caso de aplicaciones basadas en TCP, la influencia de los errores del
canal inalámbrico degradará su comportamiento de una manera radicalmente diferente
al caso UDP. En primer lugar, dado que este protocolo de transporte implementa un
mecanismo de control de errores, la pérdida IP es cero en todos los casos, ya que aunque
falle la transmisión de un segmento, éste se retransmitirá posteriormente.
- 29 -
Sistema de comunicaciones inalámbricas para robots
- 30 -
Sistema de comunicaciones inalámbricas para robots
3. SISTEMA PROTOTIPO
El siguiente capítulo está dedicado a mostrar el entorno concreto en el que
se desarrolla nuestro proyecto. Para ello vamos a definir un marco de trabajo y dentro de
este marco que nos ocupa, estudiaremos la gestión de este tipo de entornos así como las
herramientas y características propias de los elementos seleccionados para alcanzar el
objetivo final del proyecto.
- 31 -
Sistema de comunicaciones inalámbricas para robots
3.2. HARDWARE
Dentro de esta sección se pretende mostrar cuales son las características del
hardware que interviene en el proyecto, tanto el hardware disponible como el nuevo.
Como se ha mostrado en el esquema del proyecto (figura 1.2), el hardware
con el que nos encontramos se puede clasificar en dos categorías:
- Hardware e infraestructura de la/las estación/estaciones base.
- Hardware e infraestructura de la/las estación/estaciones móviles.
La selección del nuevo hardware se determinará, en primer lugar, por el
entorno concreto del proyecto que nos ocupa y en segundo lugar por el hardware de la
estación móvil puesto que es éste hardware el que tiene más restricciones.
- 32 -
Sistema de comunicaciones inalámbricas para robots
realiza tareas de servidor, haciendo las veces de puerta de enlace ofreciendo una salida
hacia Internet.
3.2.2.1. PC104-PCMCIA-1
Este hardware es esencial para proporcionar comunicación inalámbrica
mediante el estándar IEEE 802.11b a la placa PC104+ ya que proporciona la interfaz
que, mediante los buses de salida de la pc104+, hace posible la inserción de la tarjeta
PCMCIA. Este dispositivo sigue el estándar PC104 y por tanto tiene un tamaño igual a
la PC104+. La figura 3.4 muestra este dispositivo.
10
Lucent Technologies tras descolgarse de AT&T se dividió en unidades de negocio más pequeñas. Fruto de esta división nació
Avaya y Agere Systems. Avaya se encargaba de las redes dentro del sector empresarial mientras que Agere se encargaba de algo
más específico como el negocio de la microelectrónica (chips).
Orinoco es una división de Agere que fue comprada en el año 2000 momento en el cual pasó de llamarse WaveLan a llamarse
Orinoco.
En 2002, Proxim hizo suya la marca Orinoco y, al menos hasta el 2005, Agere y Proxim firmaron un acuerdo por el cual Agere
proporcionaría chips, módulos y tarjetas 802.11 a Proxim.
- 34 -
Sistema de comunicaciones inalámbricas para robots
11
dB: decibelio, unidad logarítmica de intensidad usada para indicar potencia ganada o perdida entre dos señales.
dBi: ganancia en decibelios referente a un radiador isotrópico. Un radiador isotrópico es una antena teórica con igual ganancia a
todos los puntos en una esfera isotrópica.
dBm: decibelio referente a un milivatio dentro de una impedancia de 50 ohmios 0dBm= 1mW
- 35 -
Sistema de comunicaciones inalámbricas para robots
12
Power Over Ethernet. Es una técnica que se emplea para llevar alimentación a puntos de acceso u otros dispositivos de red,
empleando dos pares de conductores que quedan disponibles en los cables de conexión Ethernet.
13
Spanning Tree-Bridging Algoritmo o fórmula concreta que aplican los puentes transparentes para determinar dinámicamente la
mejor ruta entre origen y destino. Este algoritmo evita los bucles de puentes dentro de una red
14
RADIUS: Sistema de autenticación y accounting empleado por la mayoría de proveedores de servicios de Internet (ISPs) si bien
no se trata de un estándar oficial. Cuando el usuario realiza una conexión a su ISP debe introducir su nombre de usuario y
contraseña, información que pasa a un servidor RADIUS que chequeará que la información es correcta y autorizará el acceso al
sistema del ISP si es así.
15
DHCP(Dynamic Host Configuration Protocol) BOOTP (Bootstrap Protocol) Son protocolos de comunicaciones que permiten a
los administradores de red gestionar y automatizar la asignación de direcciones IP en una red. DHCP es un protocolo más avanzado,
pero ambos son los usados más normalmente
- 36 -
Sistema de comunicaciones inalámbricas para robots
exterior del edificio, dará cobertura a la mayor distancia posible y con la mejor relación
señal ruido posible.
Llegados a este punto, la selección de la antena dependerá de las
características de los otros elementos de la red inalámbrica, distancias, etc. Utilizando la
fórmula que relaciona el nivel de señal con todos los factores condicionantes
calcularemos aproximadamente la ganancia necesaria de nuestra antena.
Esos son los datos para nuestros cálculos:
- Distancia a cubrir (entre antenas): como primera aproximación
podemos suponer 5km aproximadamente (siendo este nuestro máximo
exagerado para asumir posibles pérdidas debidas a condiciones
atmosféricas)
- Longitud del cable A: El cable que conecta el access point con la
antena externa mide aproximadamente 20,4 metros.
- Longitud del cable B: El cable que conecta la antena (range extender
antenna ) con la tarjeta de la estación móvil mide aproximadamente 1,5
metros.
- Potencia tarjeta A: Entendemos tarjeta A como el punto de acceso ya
que éste no es más que una tarjeta de las mismas características que la
de la estación móvil. La potencia nominal es 15 dBm
- Potencia tarjeta B: La potencia nominal es 15 dBm
- Pérdida de conectores A: Consideramos de forma conjunta los 50 cm
del pigtail16, los conectores tipo N y los empalmes desde el access point
a la antena. Estos suman un total aproximado de 4,2dBm (2 dBm de
pérdida cada conector más la pérdida de los 50 cm de pigtail)
- Pérdida de conectores B: No se tienen en cuenta pérdidas en el
conector de la estación móvil puesto que no existen empalmes y la
pérdida en el conector de la PCMCA a la antena (range extender ) es
mínima.
- Ganancia de antena A: Valor a calcular
- Ganancia de antena B: 2,5 dBi
Ahora necesitaremos otros datos como son; la sensibilidad, el margen de
ruido, la pérdida de señal por propagación y las pérdidas producidas por el tipo de
cable.
- Para un enlace correcto, la sensibilidad debe ser:
o Para 11Mbit: -82dBm
o Para 5,5Mbit: -87dBm
o Para 2Mbit: -91dBm
o Para 1Mbit: -94dBm
- El margen ha de ser:
o Mínimo: 15dB
o Enlaces expuestos a interferencias (ciudad): 18dB
o Enlaces con condiciones climáticas adversas: 22dB
- La pérdida de señal por propagación entre antenas se puede calcular:
Pp= 40 + 20 log (d)
Dónde Pp es la pérdida por propagación en dB y d es la distancia entre
antenas en kilómetros.
16
Pigtail: Es un cable corto y flexible que se conecta entre la interfaz de red inalámbrica y el cable alimentador de antena Su
función es el desacoplamiento mecánico
- 37 -
Sistema de comunicaciones inalámbricas para robots
El último dato que nos hace falta será la pérdida de los cables, utilizando la
tabla y sabiendo que los cables son del tipo RG-216 y LMR-200:
Pérdida del cable A: 20,4 m * 1,36 dB/m = 27,744 dB
Pérdida del cable B: 1,5 m * 0,542 dB/m = 0,81 dB
Nuestra antena, deberá por lo tanto, tener una ganancia mínima mayor de
7,224 dBi. Teniendo estos cálculos en consideración y sin olvidar que las suposiciones
sobre el margen son variables, se selecciona una antena apropiada para nuestros
requerimientos. Puesto que los requerimientos sobre tiempo real son muy deseables
seleccionaremos una antena que cumpla con creces esta ganancia para asegurar una
señal de ruido siempre menor a los 10 dB que hemos comentado que son mínimos para
un buen desempeño de UDP en tareas de tiempo real.
De entre las posibilidades del mercado se ha seleccionado la antena
direccional “Wide Angle Antenna” de 12 dBi (figura 3.8). Estas son sus características
- Ganancia 12 dBi (±1 dB)
- Impedancia nominal: 50 Ω
- Polarización: Vertical
- Ángulo de apertura horizontal: 125° (±5°)
- Ángulo de apertura vertical: 13° (±2°)
- 38 -
Sistema de comunicaciones inalámbricas para robots
configuración en bare-bone del kernel con una pequeña cantidad de módulos pequeños
hasta un sistema de red amplia equipada para servir a cientos de usuarios, QNX nos
permite configurar nuestro sistema para usar sólo aquellos recursos que requiramos con
el fin de poder abordar nuestra tarea.
QNX es capaz de alcanzar un alto grado de eficiencia, modularidad y
simplicidad gracias a dos principios fundamentales:
- Arquitectura de micro kernel
- Comunicación entre procesos basada en paso de mensajes.
Respecto a la interfaz con el usuario, cabe decir que este sistema operativo
dispone de dos tipos de interfaces, como viene siendo habitual en muchos otros
sistemas: Una interfaz en modo texto, sencilla, que permite interactuar con el sistema
mediante comandos de sistema operativo que siguen el formato UNIX y una interfaz en
modo gráfico llamada Photon (figura 3.9) que se activa como un programa
independiente de forma similar a como lo hacía el antiguo Microsoft Windows 3.1x,
respetando de esa manera su comentada modularidad.
Otra de las ventajas importantes de este sistema operativo es que está muy
orientado a la programación en el lenguaje C/C++.
- 40 -
Sistema de comunicaciones inalámbricas para robots
(A) ZONA
EXTERIOR
- 41 -
Sistema de comunicaciones inalámbricas para robots
17
Como se ve en la figura 3.13 a la clave está en formato hexadecimal. Nota: no se muestra la clave completa.
- 42 -
Sistema de comunicaciones inalámbricas para robots
pasarán como parámetros durante la carga del controlador utilizando las opciones que
proporciona el driver devn-orinoco.so.
- Parámetros de interfaz de red.
Por último será necesario indicar la IP, máscara de subred, dominio y puerta
de enlace predeterminada. Esto se hace mediante el comando netmanager. Este
comando, entre otros, acepta una opción (-f) de forma que, indicándole la ruta a un
fichero, obtiene los datos de red contenidos en él.
sleep 1 [global]
hostname localhost
devp-pccard
domain Wlabelec
sleep 1 nameserver 130.206.33.1
io-net -d orinoco station=Cabrit, route 192.168.64.1 0.0.0.0 0.0.0.0
key1=0x6c61XXX, default_key=1.
-p tcpip [en0]
sleep 2 type ethernet
netmanager -f /etc/wirelessnet.cfg mode manual
manual_ip 192.168.64.23
manual_netmask 255.255.255.0
- 43 -
Sistema de comunicaciones inalámbricas para robots
4. SOFTWARE DE COMUNICACIONES
En este capítulo se desarrollará todo lo referente al software necesario para
completar los objetivos planteados en el presente proyecto. Una vez comprobado que
existe enlace entre nuestra estación base y la estación móvil18 podemos adentrarnos en
los aspectos que afectan al servicio final de comunicaciones que se desea ofrecer, esto
es, una interfaz que permita al usuario final utilizar toda la infraestructura montada hasta
ahora logrando un flujo de datos entre los extremos.
Nuestro frente de actuación para mejorar en lo posible el comportamiento de
las comunicaciones inalámbricas sobre TCP/IP se centra en este software de
comunicaciones, más concretamente en la capa de transporte.
18
Esta comprobación se hace mediante herramientas de gestión de redes (ping, tracert, netstat, arp, etc. ).
A partir de ahora se hará referencia siempre a una única estación móvil aunque realmente puedan existir más de una.
19
El diseño de STCP está basado en algunos protocolos existentes que fueron consultados durante la fase de estudio teórico de este
proyecto. El más relevante de los protocolos consultados, del cual se han obtenido algunas ideas, incluido el propio nombre ‘STCP’
es el diseñado en la “Práctica de Redes I” del GS y C de la Universidad Rey Juan Carlos (referencia bibliográfica en: Referencias
bibliográficas/Enlaces de Internet consultados / Nº2).
- 44 -
Sistema de comunicaciones inalámbricas para robots
nivel un control de errores adecuado. También es necesario mencionar que aunque UDP
es un protocolo no orientado a conexión, STCP deberá, para poder implementar la
fiabilidad, ser capaz de guardar el estado en ambos extremos de la comunicación
(receptor y emisor). Sería incorrecto decir que logramos que UDP sea un protocolo
orientado a conexión pero sí podemos decir, como se verá más adelante, que STCP
deberá incluir fases de establecimiento y cierre de conexión. Es por ello que, en diversos
puntos de este capítulo se utilizan los términos de establecimiento o cierre de conexión
refiriéndose no a UDP, sino a la implementación realizada a nivel de aplicación.
Hay que decir que esto no es más que una primera aproximación, puesto
que, como veremos, nuestro software servidor y cliente no son estrictamente programas
que inician o esperan comunicación. Más bien podemos decir que tanto uno como otro
- 45 -
Sistema de comunicaciones inalámbricas para robots
20
API - Application Program Interface o Application Programming Interface. Una interfaz de programa de
aplicación o de programación de aplicaciones es el método específico prescrito por un sistema operativo
o por cualquier otra aplicación mediante el cual un programador que escribe una aplicación puede hacer
solicitudes al sistema operativo o a otra aplicación. Una API puede contrastarse con una interfaz gráfica
de usuario (GUI) o una interfaz de comando (ya que ambas son interfaces directas del usuario) como
formas de interactuar con un sistema operativo o un programa.
- 46 -
Sistema de comunicaciones inalámbricas para robots
21
Un descriptor de socket no es más que un índice, que el sistema operativo utiliza para apuntar a la estructura de datos que la
aplicación necesita para realizar operaciones de comunicación de red. El socket por tanto es un valor entero que proporciona el
sistema operativo a la aplicación que lo solicite.
Puesto que no es objetivo de este proyecto profundizar en la interficie de socketes se hará mención a terminología relacionada con
esta interficie sin profundizar en su significado.
- 47 -
Sistema de comunicaciones inalámbricas para robots
misma forma ya que utiliza procedimientos convencionales que ejecutan el proceso IP.
Sin embargo, pronto veremos que para ofrecer fiabilidad se hace indispensable el uso de
procesos independientes que funcionen de forma paralela gestionando los diferentes
eventos que pueden suceder de forma asíncrona.
Por tanto no nos libraremos de la complejidad de manejar varios procesos
pero si podemos hacer estos procesos mucho más sencillos que los implementados en
TCP. Pronto entraremos en detalle en estos procesos.
Otro aspecto del protocolo TCP a nivel de funcionamiento es el hecho de
que sea orientado a conexión. Este funcionamiento hace que sean necesarias fases de
establecimiento y liberación de la comunicación. Estos son procedimientos muy
costosos que implican un intercambio de datos considerable, lo que conlleva un
consumo de recursos (tanto en términos temporales como de procesador), que se podría
plantear eliminar en nuestro STCP.
Estas fueron las bases del primer diseño del protocolo. Puesto que el tipo de
información más común con el que se trabajará (los comandos), son paquetes de tamaño
muy reducido (aproximadamente 80 bytes) y que además el tráfico no será un flujo
constante sino más bien transmisiones eventuales entre estaciones (con lo que no tiene
sentido implementar ventana deslizante en este caso) se planteó un protocolo que
añadiese control de errores de la forma más simple posible.
Esto significa añadir un número de secuencia (SN) en cada datagrama UDP.
Para cada paquete recibido, la estación receptora enviará un reconocimiento (ACK) con
el siguiente número de secuencia que espera recibir, de forma que la estación emisora
no tuviese permiso para enviar el siguiente hasta recibir la confirmación de recepción
correcta del primer datagrama enviado, exactamente de la misma forma que lo hace
ARQ Stop & Wait estudiado en la subsubsección 2.2.1.3.1.
En un primer momento, la idea de eliminar las fases de establecimiento y
liberación de comunicación puede parecer una buena idea, puesto que aunque nos
vemos obligados a guardar el estado y algunos datos de la comunicación (siguiente
número de secuencia esperado, siguiente reconocimiento esperado, último datagrama
enviado, etc.), nos liberamos de la carga de las pesadas fases de establecimiento y cierre
de comunicación. Pero es fácil ver que este caso no es factible por varios motivos
descritos a continuación:
- ¿De que forma sabe la estación receptora cual es el primer número de
secuencia que debe recibir?.
- ¿Como puede saber la estación receptora en que momento debe dejar de
“escuchar” a la estación emisora?
Como solución a estas cuestiones se podría plantear establecer un número
de secuencia inicial conocido por las dos estaciones o tal vez colocar una marca de
identificación en el primer datagrama enviado, pero el problema se transforma puesto
que ¿Cuándo se dejará de aumentar el número de secuencia?, es decir ¿en que momento
se volverá a el número de secuencia inicial conocido?. Esta pregunta también tiene una
posible solución y podría ser, por ejemplo, que la máquina emisora marcase también de
alguna forma el último paquete que desea enviar por el momento. Pero de nuevo, aun
superando este problema, veamos el funcionamiento de este diseño en el caso que
muestra la figura 4.3.
- 49 -
Sistema de comunicaciones inalámbricas para robots
22
SYN es un valor que indica que, efectivamente, el número de secuencia de ese datagrama es el primero.
FIN indica que este será el último datagrama que se desea enviar por el momento.
DATA indica que el contenido del datagrama son datos de aplicación.
- 50 -
Sistema de comunicaciones inalámbricas para robots
23
El puerto de protocolo sirve para especificar la aplicación concreta a la que van destinados los datos. Es decir, el número de
puerto de protocolo es la herramienta que utiliza UDP para realizar el demultiplexado.
- 51 -
Sistema de comunicaciones inalámbricas para robots
capa. El conjunto de funciones que forman este nivel están contenidas en los ficheros
llamados UdpTools.c y UdpTools.h.
La mayoría de las funciones que se irán mostrando devuelven un entero que
informa de los posibles errores generados a los procedimientos de que hacen uso de
estas funciones. Así, por ejemplo, todas las funciones de este primer nivel devuelven un
(-1) como consecuencia de este posible error.
- 52 -
Sistema de comunicaciones inalámbricas para robots
TIPO CÓDIGO
DATA 1
ACK 2
SYN 3
FIN 4
- 53 -
Sistema de comunicaciones inalámbricas para robots
24
A partir de este momento, se entiende como datos de la comunicación el descriptor de socket, el puerto de protocolo y la
estructura de dirección final remota.
- 54 -
Sistema de comunicaciones inalámbricas para robots
STCP. Hay que decir que antes de rellenar la cabecera y devolver los
datos de usuario recibidos, realiza la comprobación del Checksum y en
caso de error devuelve el campo de datos vacío. De esta forma, el nivel
superior puede detectar errores sucedidos en este nivel.
Como resumen, la siguiente figura (figura 4.6) nos muestra,
conceptualmente, la funcionalidad de este nivel de tramas:
deben funcionar de forma paralela sin ocupar el 100% del procesador, al mismo tiempo
vemos que el evento de recepción de un paquete por la red es totalmente asíncrono, por
tanto puede ocurrir en cualquier momento.
Todo esto nos obliga a pensar en un método que dedique un proceso a cada
tarea, de forma que el proceso empleado para la recepción de paquetes por la red quede
bloqueado en espera de este evento, y el proceso dedicado al temporizador se inicie al
enviar un paquete y finalice al recibir la confirmación de paquete recibido o se de su
expiración.
Si profundizamos más aun en el comportamiento de nuestro protocolo
veremos que necesitamos un nuevo proceso, puesto que, el usuario de nuestra API
puede solicitar, también de forma asíncrona, el envío de un paquete. De esta manera,
con únicamente dos procesos, uno estará dedicado a los temporizadores y el otro a la
escucha por la red, entonces no disponemos de mecanismos para atender la petición de
envío del paquete. Por tanto serán como mínimo tres los procesos independientes
necesarios en nuestra implementación; proceso encargado de los temporizadores,
proceso de escucha y proceso principal o de usuario.
Como vemos, de nuevo nos acercamos un poco más al funcionamiento de
TCP ya que, la implementación de este protocolo, normalmente, utiliza un proceso
independiente para la entrada, otro para la salida y otro para los temporizadores.
Para llegar a una solución válida, aunque no tan compleja como la utilizada
en TCP, se opta por no implementar procesos independientes sino hilos de ejecución o
threads. Esta decisión evita la sobrecarga software que conlleva el cambio de contexto
entre procesos así como el esfuerzo necesario para la creación y destrucción de estos
procesos. Para lograr una mayor similitud del código desarrollado en QNX y el
desarrollado en Windows se ha optado por utilizar el estándar POSIX en los dos casos.
El primer diseño referente a la gestión de tiempos seguía la estructura
mostrada en la figura 4.7. La idea es la siguiente; para cada paquete que se envía,
automáticamente, se crea un nuevo hilo de ejecución (a partir de ahora thread), de
forma que empieza la cuenta atrás, si el contador expira y no se ha recibido
confirmación del paquete, se retransmitirá el último paquete enviado. Si por el contrario
antes de la expiración del temporizador se recibe el reconocimiento válido, desde el
thread de lectura se detiene y finaliza el thread correspondiente.
- 57 -
Sistema de comunicaciones inalámbricas para robots
anterior, por tanto nos podemos preguntar ¿Qué ocurre si el usuario desea enviar más
datos mientras se está esperando un ACK?. La respuesta a esta pregunta es que estos
datos se almacenarán en un buffer en espera de ser transmitidos.
Por otra parte ocurre algo similar en la recepción, veamos que ocurre desde
el punto de vista de la estación receptora; supongamos que el hilo de escucha recibe un
paquete STCP, inmediatamente responde con un asentimiento (ACK) a la parte emisora,
y entonces avisa con un evento al usuario del nivel superior de la llegada de un nuevo
paquete, pero, ¿Qué ocurre si el usuario no reacciona antes de la llegada del siguiente
paquete?. La solución adoptada para este problema no es otra que la utilización de un
buffer de almacenamiento de paquetes entrantes. Así cuando el hilo de escucha recibe
un paquete envía inmediatamente el reconocimiento, lo almacena en el buffer
correspondiente y seguidamente avisa al nivel superior de la llegada de éste paquete.
El problema de la utilización de estos buffers (BuffWaitingToSend y
BuffRcvd en la implementación del STCP), es que son finitos, es decir, que en la
situación en que se llene cualquiera de estos buffers se deberá tomar una decisión sobre
que postura a adoptar: descartar el último paquete recibido, eliminar el paquete que
lleve más tiempo en cola, etc. La decisión tomada en nuestra implementación es la de
no almacenar el último paquete y avisar con un evento al usuario del nivel superior para
que él tome una decisión.
La implementación de estos buffers se ha realizado de forma que no
consuma más recursos de los necesarios (buffers circulares), dejando en manos del
usuario de la API la decisión de cual es el máximo número de paquetes que es posible
almacenar tanto en la recepción como en el caso de los paquetes pendientes de enviar.
Esta cantidad máxima está definida, junto con otras constantes, como el time out
máximo, en el archivo llamado config.h.
Estos buffers descritos, junto con otras variables que irán surgiendo durante
las siguientes secciones, forman la información necesaria para gestionar la
comunicación. Muchas de estas estructuras o variables deben ser comunes para los tres
threads. Son por tanto los recursos compartidos de los que hablábamos en el punto
anterior sobre los que hay que asegurar la exclusión mutua. Para evitar el acceso
simultáneo a estos recursos, la implementación hace uso de mutex y de variables
condición25 para la sincronización y comunicación entre los hilos.
- Establecimiento de la comunicación
25
Gracias a las funciones proporcionadas por el estándar POSIX es posible realizar la sincronización entre las tareas utilizando las
mutex y variables condición de la misma forma en el software desarrollado sobre QNX como en el desarrollado sobre Windows
- 58 -
Sistema de comunicaciones inalámbricas para robots
protocolo no necesita negociar tantos detalles de la conexión como TCP. Así pues
nuestro esquema es una simplificación de este caso.
La dificultad de esta fase reside en la sincronización de las dos estaciones
relacionadas en la comunicación, es decir, lograr el estado de comunicación establecida
pasa por el intercambio de varios paquetes STCP en un orden determinado. Por
ejemplo, la figura 4.9 muestra un ejemplo de este intercambio.
Una vez finalizada esta fase, las dos estaciones utilizan la función
ChangeBroadOpt para aceptar únicamente paquetes procedentes de la máquina remota.
Esto tiene un fallo importante y es que si un tercer terminal inicia la aplicación STCP
mientras las dos primeras están en la fase de establecimiento, las dos máquinas recibirán
el SYN de la tercera y esto podría confundir a la aplicación, logrando incluso que no se
establezca la comunicación.
- 60 -
Sistema de comunicaciones inalámbricas para robots
- Cierre de la comunicación
El envío, por parte de una estación, del paquete tipo FIN no implica que la
estación receptora de este FIN deba dejar de enviar paquetes, y por supuesto, la estación
emisora no dejará de reconocer los paquetes recibidos. Por otra parte, el envío de un
paquete tipo FIN si implica a la estación que lo emite, no poder enviar más paquetes de
datos.
- 63 -
Sistema de comunicaciones inalámbricas para robots
Una vez que tenemos implementado este vector con las estructuras,
deberemos añadir una función que gestione constantemente los posibles intentos de
comunicación. Esta función es un bucle infinito que, para cada establecimiento de
comunicación, rellena los campos de la estructura, crea los threads (Listen Thread y
Alarm Thread), para esta comunicación concreta y vuelve al estado de escucha. De esta
forma, cuando el usuario haga una llamada a Send o Receive deberá indicar a que
comunicación en particular está llamando mediante el índice al vector de estructuras.
Esto es lo que se conoce como un servidor concurrente, puesto que el
software es capaz de tratar múltiples peticiones al mismo tiempo. Inicialmente, existe un
hilo de escucha en un puerto determinado y para cada comunicación entrante se crean
nuevos hilos que gestionarán esta comunicación en particular. La figura 4.14 muestra un
gráfico que representa el modelo de un servidor no orientado a la conexión (UDP) y
concurrente (puesto que utiliza múltiples hilos para tratar varias comunicaciones al
mismo tiempo).
Registro WINDOWS
OS time: 13:54:49 .
OS date: 03/13/04 .
ip local: 192.106.1.100 |----Se han recibido datos ajenos----|
Master socket 1956 ip remota: 192.106.1.5
***Variables de estado de conexión:*** Siguiente número de secuencia a enviar:50
Estado de conexión--------- CLOSED Hemos recibido tipo de paquete que indica posibilidad de conexion
SendVars.SNToSend---------- 0 esperamos el tiempo de seguridad: 2
SendVars.SNExpectedAck---- 0 desbloqueo del timesleep: 0
SendVars.LastAppSN ---- 0
RcptVars.SNReceived------- 0 PASAMOS A HANDLER
RcptVars.SNRecognized----- 0 Hemos insertado al cliente que nos ha solicitado conexión
RcptVars.SNToConsume------- 0 Este es su mensaje/nombre inicial: CLIENT2
***************** Paquete tipo SYN
Número de secuencia inicial SYN local: 49 con SN:97
<<<<<<<SE ENVIA PAQUETE CON: Enviamos confirmación del nsec recibido
<<<Campo tipo--------------------SYN <<<<<<<SE ENVIA PAQUETE CON:
<<<Número de secuencia enviado:--- 49 <<<Campo tipo--------------------ACK
<<<Número de secuencia enviado:--- 98
LISTEN|-----Estamos dentro de bucle principal de Open----|
Enviamos nuestro SYN local
***Variables de estado de conexión:*** <<<<<<<SE ENVIA PAQUETE CON:
Estado de conexión--------- LISTEN <<<Campo tipo--------------------SYN
SendVars.SNToSend---------- 49 <<<Número de secuencia enviado:--- 49
SendVars.SNExpectedAck---- 50
SendVars.LastAppSN ---- 49 .
RcptVars.SNReceived------- 0 .
RcptVars.SNRecognized----- 0
RcptVars.SNToConsume------- 0 .
esperamos recibir ACK con nsec: 50
***************** . y recibimos:ACKcon nsec: 50
. desbloqueo del tiempo de seguridad para fin three way handshake
. estado de conexión:
EST
- 65 -
Sistema de comunicaciones inalámbricas para robots
mediante este nombre se pueden diferenciar las múltiples comunicaciones (el mensaje
inicial es el contenido del paquete tipo SYN intercambiado en la fase de establecimiento
de comunicación y está asociado a un número de comunicación).
Además del fichero de registros (log.txt), existe otro fichero que se crea para
cada comunicación. Este fichero, times.txt, contiene valores temporales que indican el
tiempo transcurrido entre el envío de un paquete cualquiera, (llamada a SendPacket), y
la recepción del reconocimiento correspondiente, o en su defecto, la expiración del
temporizador. Este archivo es útil para realizar un seguimiento del comportamiento del
enlace.
En cuanto a la gestión de eventos, ya hemos mencionado, en diversas
ocasiones que el usuario de la librería debe ser informado de los eventos internos que
sucedan durante el transcurso de la comunicación. La forma en la que la librería informa
de los eventos es mediante una estructura de datos, en ella se guarda el tipo de evento
del que se está informando, el número de conexión al que pertenece el evento y un
mensaje de texto que añade información sobre el evento.
Así, por ejemplo, cuando se establece una nueva comunicación, se levanta
un evento tipo informativo que contiene como texto la IP de la máquina con la que se ha
establecido la comunicación y el mensaje inicial que envía esta máquina.
Los tipos de eventos posibles se encuentran enumerados en el fichero
STCPEvents.h y se muestran, junto con la definición de la estructura de datos en la
figura 4.16.
//estructuras y tipos para tratamiento de errores:
typedef enum {
/*------empezamos con los eventos generados por errores o que pueden generarlos-----*/
NoError,
SocketError, //relacionado con el nivel de sockets Winsock2.h
ChecksumError, //error de checksum, puede ser un error aislado o un problema de red
MutexOrCondVarError, //error relacionado con mutex o variables de condición
PthreadError, //error relacionado con la gestión de threads (el mensaje de error puede aclarar en que punto sucedió)
ReadBufferOverflow, //memoria destinada a almacenamiento de paquetes de entrada llena
SendBufferOverflow, //memoria destinada al almacenamiento de paquetes pendientes de enviar llena
TimeOutDone, //saltará este evento cada vez que salte un time out y sea necesario retransmitir
//(de esta forma el usuario de la api podrá llevar un control optimo del timeout apropiado)
TimeOutReceive, //timeOut bloqueados esperando llegada de un nuevo dato expirado
ConnectFailed, //intento de conexión fallida (desconexión repentina del otro extremo,etc.)
MaxConnectEst,
RetransmisionFailed, //n intentos de retransmitir un paquete fracasados, (desconexión repentina del otro extremo,etc.)
/*----------Los siguientes son eventos que suceden durante la comunicación y deberán ser tenidos en cuenta por el usuario de la API----------*/
InformationEvent, //cualquier tipo de evento que se considera relativamente importante para el usuario
ComunicationEstablished, //nueva comunicación establecida, el mensaje contiene IP y nombre de máquina remota
DatagramSended, //informa de paquete enviado por la red (no almacenado en buffer)
DatagramReceived, //informa de paquete recibido y almacenado
ReceivedDone, //informa de la extracción de un paquete del buffer de recpción
CloseDone //informa del envío de la finalización de la comunicación(por parte de las dos estaciones)
}EventKind;
typedef struct {
enum EventKind EvKind;
int IDConnect;
char *MsgEvent;
}TEvent;
- 66 -
Sistema de comunicaciones inalámbricas para robots
26
Así por ejemplo, el usuario podría decidir utilizar la librería en una aplicación de entorno consola y mostrar los mensajes por
pantalla haciendo un simple printf para imprimir el mensaje del evento por pantalla, o podría, en cambio, decidir trabajar con un
entorno visual en el que se sustituya el printf por un AfxMessageBox. De la misma forma podría decidir la acción a realizar para
cada tipo de evento; ignorar los eventos de información, cerrar y volver a iniciar comunicación en caso de fallo de conexión, etc.
- 67 -
Sistema de comunicaciones inalámbricas para robots
- 68 -
Sistema de comunicaciones inalámbricas para robots
- 69 -
Sistema de comunicaciones inalámbricas para robots
27
Los proyectos de visual C++ incluidos en el CD son; STCPLib y STCPGui, siendo el primero la
librería STCP y el segundo el proyecto de la aplicación que se documenta en este apartado
28
Ambas se encuentran en la carpeta aplicaciones del CD adjuntado. Carpetas Windows y QNX para
cada aplicación correspondiente.
- 70 -
Sistema de comunicaciones inalámbricas para robots
- 72 -
Sistema de comunicaciones inalámbricas para robots
- 74 -
Sistema de comunicaciones inalámbricas para robots
Dentro de las líneas de trabajo futuro, podemos decir, que la utilización del
protocolo STCP implementado implica desarrollar nuevas aplicaciones de usuario que
aprovechen la funcionalidad ofrecida por el protocolo. En este sentido, existen
numerosas aplicaciones útiles para la comunicación entre robots, como por ejemplo el
tratamiento de imágenes y la transferencia de éstas mediante el software desarrollado.
Otra aplicación que podría ser de gran utilidad es el uso del protocolo STCP como un
enlace de comunicación entre robots a través de la estación base, es decir, igual que se
documentó en la aplicación de transferencia de ficheros, crear un formato en el que se
indique a la estación base hacia quien van destinados los datos, haciendo la estación
base, de esta forma de puente entre dos estaciones móviles tal como muestra la figura
5.1.
6. REFERENCIAS BIBLIOGRÁFICAS
6.1. ENLACES DE INTERNET CONSULTADOS
Para todos los enlaces mencionados, última fecha de consulta: 12/04/2004.
3. “ACM Crossroads Student Magazine: Can TCP be the transport protocolo of the
21st centuty?”
Kostas Pentikousis
http://www.acm.org/crossroads/espanol/xrds7-2/tcp21.html
6. “Windows Sockets”
http://world.std.com/~jimf/papers/sockets/winsock.html
4. “Optimizing Internet Flows over IEEE 802.11b Wireless Local Area Networks: A
Performance Enhancing Proxy Based on Forward Error Correction”.
M. García, R. Agüero, L. Muñoz, P. Mähönen.
IEEE Communications Magazine, Diciembre 2001, Vol. 39, Nº 12 pp.60-67
- 77 -