1 # Resumen 2 3 Redes de Comunicaciones (TB067) - FIUBA 4 5 ## Introducción 6 7 Una **red** es un sistema de nodos interconectados mediante enlaces de 8 comunicación, que utilizan protocolos para el intercambio de datos. La conexión 9 puede darse a través de un único cable trenzado entre los extremos o a través de 10 redes mas grandes, por ejemplo internet, que es una red de redes. 11 12 Un **protocolo** es un conjunto de reglas o convenciones utilizadas para 13 controlar la transferencia de datos en una red. 14 15 Los enlaces físicos vinculan transmisor con receptor y la información se propaga 16 a través de medios, estos medios pueden ser **guiados** o **no guiados**. Los 17 medios guiados son aquellos que propagan las señales por medios sólidos como 18 cables de cobre, mientras que los medios no guiados son aquellos que propagan 19 las señales a través del espacio libre, haciendo uso de antenas, por ejemplo 20 microondas. 21 22 Existen dos métodos fundamentales para transportar información a través de 23 redes, la **conmutación de circuitos** y la **conmutación de paquetes**. En la 24 conmutación de circuitos se establece un camino dedicado entre emisor y receptor 25 antes de comenzar la transmisión, y ese camino permanece reservado durante toda 26 la comunicación, un ejemplo de este método de comunicación es la red telefónica 27 tradicional. En la conmutación de paquetes los datos se dividen en paquetes que 28 se envían de forma independiente a través de la red sin haber reservado recursos 29 previamente, estos paquetes comparten dinámicamente los recursos de la red, por 30 ejemplo internet. 31 32 En la conmutación de paquetes los nodos intermedios típicamente utilizan un 33 método de transmisión llamado **Store-and-Forward**, en el cual el nodo no 34 retransmite la unidad de datos (trama o paquete) hasta que no disponga de la 35 totalidad de los bits correspondientes a esa unidad. Este nodo intermedio 36 almacena temporalmente la unidad de datos incompleta en un buffer hasta no 37 recibirla por completo. Puede ocurrir que la tasa de arribo de unidades de datos 38 exceda la tasa de transmisión (esto puede ocurrir por ejemplo si se tienen 39 enlaces con diferentes características) en cuyo caso, si el nodo dispone de 40 memoria libre se encola, produciendo un retardo de encolamiento, o si el nodo no 41 dispone de memoria libre se descarta esa unidad, provocando una perdida de 42 datos. Además del retardo de encolamiento existen otros retardos que 43 caracterizan lo que se denomina **retardo extremo a extremo** o **latencia**, 44 que es el tiempo total que tarda un paquete en ir desde el origen hasta el 45 destino. Los retardos son: el retardo de procesamiento, el retardo de 46 propagación y el retardo de transmisión. El retardo de procesamiento es el 47 tiempo que se tarda un nodo en examinar el encabezado del paquete. El retardo de 48 transmisión es el tiempo necesario para poner todos los bits del paquete en el 49 enlace y resulta del cociente entre el tamaño del paquete $L$ (en bits) y la 50 tasa de transmisión del enlace $R$ (en bits por segundo o bps). El retardo de 51 propagación es el tiempo que tarda la señal en viajar físicamente por el medio, 52 resulta del cociente entre la distancia del enlace $d$ (en metros) y la 53 velocidad de propagación del medio $v$ (en metros por segundo). 54 55 El **throughput** es la tasa a la que se envían los bits de la fuente a 56 destino, en otras palabras, es la cantidad real de datos útiles que una red 57 transmite por unidad de tiempo. El throughput extremo a extremo queda 58 determinado por el enlace de menor tasa de transmisión $R$ (en bits por 59 segundo). Se mide típicamente en bits por segundo (bps). Por ejemplo un enlace 60 de 1 Gbps puede tener un throughput real de 940 Mbps debido al overhead 61 Ethernet/IP/TCP. También se dice en TCP que el throughput es la cantidad de 62 datos que se pueden estar en el enlace sin recibir validacion ACK. 63 64 <!-- 65 Un modelo de comunicaciones es una representación conceptual que describe como 66 se comunican los sistemas de una red, separando el proceso de comunicación en 67 funciones bien definidas. Estos modelos resultan de una abstracción realizada 68 sobre los componentes de las redes y facilitan el análisis y diseño de las 69 mismas. Por lo general se representan en capas, en los que a cada capa 70 corresponde una serie de componentes del sistema, puede ser software, hardware o 71 protocolos de red. 72 --> 73 74 Un modelo de comunicaciones organiza las funciones necesarias para la 75 comunicación de sistemas en una red en capas, de modo que cada capa cumple un 76 rol específico. Los modelos tradicionales son el modelo TCP/IP (por los 77 protocolos utilizados) y el modelo OSI (por Open Standard Institute) los cuales 78 se muestran en las tablas \ref{tab:modelos}a y \ref{tab:modelos}b, 79 respectivamente. 80 81 \begin{table}[h] 82 \centering\normalsize 83 \setlength{\arrayrulewidth}{0.5pt} 84 \begin{minipage}{0.48\columnwidth} 85 \begin{tabularx}{\linewidth} {|>{\centering\arraybackslash}X|} 86 \hline 87 Aplicación \\ \hline 88 Transporte \\ \hline 89 Red \\ \hline 90 Enlace \\ \hline 91 Física \\ \hline 92 \end{tabularx} 93 \subcaption{Modelo TCP/IP} 94 \end{minipage}% 95 \hfill 96 \begin{minipage}{0.48\columnwidth} 97 \begin{tabularx}{\linewidth} {|>{\centering\arraybackslash}X|} 98 \hline 99 Aplicación \\ \hline 100 Presentación \\ \hline 101 Sesión \\ \hline 102 Transporte \\ \hline 103 Red \\ \hline 104 Enlace \\ \hline 105 Física \\ \hline 106 \end{tabularx} 107 \subcaption{Modelo OSI} 108 \end{minipage} 109 \vspace{-0.5em} 110 \caption{Modelos de comunicaciones} 111 \label{tab:modelos} 112 \end{table} 113 114 ## Nivel de aplicación 115 116 El nivel de aplicación es el mas alto en cuanto a nivel de abstracción, permite 117 que las aplicaciones de los usuarios se comunique a través de la red, ocultando 118 los detalles de transporte y de la red subyacente, por ejemplo aplicaciones de 119 transferencia de archivos (FTP), de correo electrónico (SMTP), de resolución de 120 direcciones IP (DNS) o servidores Web (HTTP), entre otras. El software del nivel 121 de aplicación solo se ejecuta en los dispositivos terminales, ya que en los 122 dispositivos intermedios, como son los switches y routers, solo se ejecuta 123 software del nivel de red y enlace. 124 125 Existen dos paradigmas principales de la comunicación entre terminales: el 126 paradigma cliente-servidor y el peer-to-peer (abreviado P2P). El paradigma 127 cliente-servidor involucra la comunicación entre: un cliente, que realiza una 128 petición por un servicio, y un servidor, que siempre debe estar disponible para 129 responder a esa petición. En el paradigma peer-to-peer los dispositivos de una 130 red intercambian recursos entre sí, compartiendo carga, control y datos, no hay 131 un servidor siempre disponible para satisfacer las peticiones si no que cada 132 nodo ofrece y solicita recursos. 133 134 Un proceso (o aplicación si se quiere) ejecutándose en una terminal, envía y 135 recibe mensajes de la red a través de una interfaz de software denominada 136 **socket**. Un socket es la interfaz entre la capa de aplicación y la capa de 137 transporte de un host. El socket se compone de la dirección IP del dispositivo, 138 el protocolo de transporte y el numero de **puerto**, el puerto identifica un 139 servicio o aplicación especifica dentro del dispositivo, por convención se 140 asignan diferentes números de puerto a diferentes aplicaciones[^1], siendo las 141 más comunes el puerto 80 para HTTP, el puerto 443 para HTTPS, el puerto 22 para 142 SSH, etc. Los puertos pueden ser bien conocidos (Well-Known Ports), registrados 143 (Registered Ports) o dinamicos/privados/efímeros (Ephemeral Ports). Los puertos 144 bien conocidos están en el rango 0-1023 y se reservan para servicios de red 145 estándar (como HTTP, SSH, etc); los puertos registrados son utilizados por 146 aplicaciones específicas, empresas o protocolos registrados para evitar 147 conflictos, están en el rango (1024-49151); los puertos efímeros están en el 148 rango 49141-65535 y son utilizados por las aplicaciones cliente para iniciar 149 conexiones hacia servidores. Se llaman "efímeros" porque son temporales; el 150 sistema operativo asigna uno al azar cuando una aplicación lo necesita y lo 151 libera al cerrar la conexión. A continuación se muestran ejemplos de sockets: 152 153 [^1]: List of TCP and UDP port numbers, [https://en.wikipedia.org/w/index.php?title=List_of_TCP_and_UDP_port_numbers](https://en.wikipedia.org/w/index.php?title=List_of_TCP_and_UDP_port_numbers) 154 155 ```text 156 TCP; 157.92.49.38; 80 157 TCP; 122.36.99.208; 9887 158 ``` 159 160 Una **sesión** es la conexión de sockets entre extremos, sea punto-a.punto o 161 cliente-servidor. Es un canal de comunicación estable y temporal entre dos 162 dispositivos y se compone de camps correspondiente al nivel de transporte y red, 163 en primer lugar el protocolo de transporte, luego la dirección IP y el numero de 164 puerto del cliente y la dirección IP y el numero de puerto del servidor. Por 165 ejemplo: 166 167 ```text 168 (UDP; 208.67.22.22; 23; 10.99.1.33; 23054) 169 ``` 170 171 ### WWW 172 173 La World Wide Web es un conjunto de protocolos y aplicaciones que se utilizan 174 para transferir recursos sobre internet. Estos recursos pueden ser documentos 175 HTML, texto plano, imágenes, entre otros, y se obtienen mediante enlaces 176 (hipervínculos) accesibles mediante navegadores web, que utilizan los protocolos 177 HTTP/HTTPS. 178 179 Un hipervínculo es una referencia activa que utiliza una URL (Uniform Resource 180 Locator) para localizar el recurso al que apunta. Una URL es un identificador 181 que indica dónde está un recurso y cómo acceder a él. Por ejemplo en la URL 182 `http://www.ejemplo.com/img/meme.jpeg` el nombre de host es `www.ejemplo.com` 183 mientras que la ruta es `/img/meme.jpeg` 184 185 #### HTTP 186 187 El protocolo HTTP (HyperText Transfer Protocol) o su version segura HTTPS 188 (HyperText Transfer Protocol Secure) definen la estructura de los mensajes entre 189 aplicaciones del cliente y el servidor en la Web. HTTP/HTTPS utiliza TCP como 190 protocolo de transporte (por lo menos hasta la version HTTP/2) y se asigna por 191 convención el puerto 80. Dado que se utiliza TCP como protocolo de transporte 192 previo a realizar peticiones a un servidor el cliente HTTP debe establecer una 193 conexión TCP con el servidor, una vez que se ha establecido la conexión entre el 194 cliente y el servidor, a nivel de aplicación, se comunican mediante sockets. 195 196 El servidor envía los archivos solicitados a los clientes sin almacenar ninguna 197 información acerca del estado del cliente. Si un determinado cliente pide el 198 mismo objeto dos veces en un espacio de tiempo de unos pocos segundos, el 199 servidor reenvía el objeto, ya que ha olvidado por completo que ya lo había 200 hecho anteriormente. Dado que un servidor HTTP no mantiene ninguna información 201 acerca de los clientes, se dice que HTTP es un protocolo **sin memoria del 202 estado**. 203 204 Las conexiones HTTP entre cliente-servidor pueden ser **persistentes** o **no 205 persistentes**, cuando la conexión es persistente se mantiene la misma conexión 206 TCP para multiples solicitudes y respuestas entre el cliente y el servidor, si 207 la conexión es no persistente, se utilizan conexiones TCP separadas para una 208 petición y para otra. 209 210 El tiempo de ida y vuelta (Round-Trip Time, RTT) es el tiempo que tarda un 211 paquete pequeño en viajar desde el cliente al servidor y volver de nuevo al 212 cliente. El RTT incluye los retardos de propagación de los paquetes, los 213 retardos de cola en los routers y switches intermedios y los retardos de 214 procesamiento de los paquetes. 215 216 Como se mencionó previamente el protocolo HTTP define una estructura que deben 217 tener los mensajes de solicitud y respuesta, a continuación se muestra un 218 mensaje de solicitud típico. 219 220 221 ```console 222 GET /index.html HTTP/1.1 223 Host: www.ejemplo.com 224 Connection: close 225 User-agent: Mozilla/5.0 226 Accept-language: es 227 ``` 228 229 Un mensaje de respuesta al mensaje de solicitud previo puede ser el que se 230 muestra a continuación. 231 232 ```console 233 HTTP/1.1 200 OK 234 Date: Tue, 06 Feb 2026 12:30:00 GMT 235 Server: Apache/2.4.57 236 Content-Type: text/html 237 Content-Length: 137 238 239 <!DOCTYPE html> 240 <html> 241 <head> 242 <title>Ejemplo</title> 243 </head> 244 <body> 245 <h1>Hola, mundo!</h1> 246 </body> 247 </html> 248 ``` 249 250 ##### HTTP/1.0 (1996) 251 252 Esta es una mejora de la primera version del protocolo (HTTP/0.9 de 1991) en 253 esta version se introdujo el concepto de cabeceras HTTP, lo que permitió 254 transportar distintos tipos de contenido además de HTML, indicar metadatos y 255 devolver códigos de estado. 256 257 ##### HTTP/1.1 (1997-1999) 258 259 En esta versión se mejoró significativamente la eficiencia al definir conexiones 260 persistentes por defecto, permitiendo reutilizar una misma conexión TCP para 261 varias solicitudes. También se añadió soporte para hosts virtuales, mejores 262 mecanismos de caché y control de errores. Se introdujo el concepto de pipelining 263 lo cual permite enviar varias solicitudes sin esperar respuestas, pero esto no 264 tuvo mucho éxito debido a problemas de bloqueo. 265 266 ##### HTTP/2 (2015) 267 268 En esta version se cambió completamente la forma de transmitir los datos, aunque 269 la semántica sigue siendo la misma que en versiones anteriores. Se utiliza un 270 formato binario y multiplexa múltiples flujos de datos sobre una sola conexión 271 TCP, reduciendo la latencia y mejorando el rendimiento. Además, incorpora 272 compresión de cabeceras y la posibilidad de envío proactivo de recursos por 273 parte del servidor, aunque sigue afectado por el bloqueo de cabeza de línea 274 propio de TCP. 275 276 ##### HTTP/3 (2022) 277 278 Esta es la versión más reciente y funciona sobre QUIC en lugar de TCP, 279 utilizando UDP como protocolo subyacente. Esto permite evitar el bloqueo de 280 cabeza de línea entre flujos, reducir el tiempo de establecimiento de conexión y 281 soportar la migración de conexiones cuando cambia la dirección IP del cliente. 282 283 #### Cookies 284 285 Como se menciono previamente un servidor HTTP no tiene memoria del estado de la 286 conexión, sin embargo existe el concepto de **cookie** que permite a los sitios 287 seguir la pista de los usuarios, almacenando un numero de identificador en la 288 terminal del cliente e información relacionada a ese identificador en el 289 servidor. El sistema de cookies utiliza cuatro componentes: una linea de 290 cabecera de la cookie en el mensaje de solicitud HTTP, `Cookie: 1234`; una linea 291 de cabecera en el mensaje de respuesta HTTP, `Set-cookie: 1234`; el archivo de 292 cookies almacenado en el sistema terminal del usuario y gestionado por el 293 navegador; y una base de datos en el sitio-web. 294 295 #### Cache web 296 297 Un cache web o también denominado servidor **proxy** guarda temporalmente 298 respuestas HTTP para poder servirlas directamente a los clientes cuando el 299 recurso no ha cambiado. 300 301 Aunque el almacenamiento en caché puede reducir los tiempos de respuesta 302 percibidos por el usuario, introduce un nuevo problema: la copia de un objeto 303 que reside en la caché puede estar desactualizada. En otras palabras, el objeto 304 almacenado en el servidor web puede haber sido modificado desde que la copia fue 305 almacenada en la caché del cliente. HTTP dispone de un mecanismo que permite a 306 la caché verificar que sus objetos están actualizados. Este mecanismo se 307 denomina GET condicional. Un mensaje de solicitud HTTP se denomina también 308 mensaje GET condicional si el mensaje de solicitud utiliza el método GET y 309 ademan se incluye una línea de cabecera `If-Modified-Since`. Por ejemplo un 310 servidor cache desea saber si su versión del archivo `/fruit/kiwi.jpeg` esta 311 desactualizada con respecto al servidor web, por lo que envía el siguiente 312 mensaje HTTP al servidor. 313 314 ```console 315 GET /fruit/kiwi.gif HTTP/1.1 316 Host: www.exotiquecuisine.com 317 If-modified-since: Wed, 9 Sep 2015 09:23:24 318 ``` 319 320 El servidor puede responder con el archivo actualizado o con un mensaje HTTP con 321 código 304 que no ha sido modificado, como se muestra a continuación. 322 323 ```console 324 HTTP/1.1 304 Not Modified 325 Date: Sat, 10 Oct 2015 15:39:29 326 Server: Apache/1.3.0 (Unix) 327 (cuerpo de entidad vacío) 328 ``` 329 330 ### SMTP 331 332 El protocolo simple de transferencia de correo (Simple Mail Transfer Protocol, o 333 SMTP) es el principal protocolo de transferencia de correo de la capa de 334 aplicación, utiliza el protocolo de transporte TCP y por convención se asigna el 335 puerto 25. 336 337 A diferencia del protocolo HTTP, el cual es un protocolo principalmente de tipo 338 **pull** (o extracción) en el cual alguien carga los datos a un servidor web y 339 los usuarios mediante HTTP extraen la información cuando desean, SMTP es un 340 protocolo principalmente de tipo **push** (o inserción), en este caso el 341 servidor de correo emisor introduce el archivo en el servidor de correo 342 receptor. La máquina que desea enviar el archivo inicia la conexión TCP. 343 344 Cuando una persona envía un mensaje de correo electrónico a otra, existe una 345 cabecera que contiene información administrativa y antecede al cuerpo del 346 mensaje, análogo a la cabecera de HTTP. Toda cabecera tiene que estar formada 347 por una línea de cabecera `From:` y una línea de cabecera `To:`; también puede 348 incluir una línea `Subject:`, así como otras líneas de cabecera opcionales. Por 349 ejemplo la siguiente cabecera 350 351 ```text 352 From: alicia@crepes.fr 353 To: benito@hamburger.edu 354 Subject: Hello, World! 355 ``` 356 357 #### Mail User Agent 358 359 El agente de usuario de mail es la aplicación que un usuario utiliza para 360 conectarse con el servidor de correo. En los orígenes del correo electrónico 361 cada usuario típicamente tenia un servidor de correo ejecutándose en su estación 362 y el agente de usuario se conectaba a este de manera directa. Hoy en día es más 363 común que el servidor de correo esté ejecutándose en algún host de la red, y el 364 agente de usuario de mail se conecte a este también a través de la red. 365 366 #### Protocolos de acceso de correo 367 368 Un destinatario que ejecuta un agente de usuario en su PC local obtiene sus 369 mensajes, que se encuentran en un servidor de correo de su ISP por ejemplo, 370 mediante un protocolo especial de acceso al correo que permita transferir los 371 mensajes del servidor de correo a su PC local, hay que tener en cuenta que no se 372 puede utilizar el protocolo SMTP ya que seria una operación de extracción 373 (*pull*). Actualmente existen varios protocolos de extracción de correo como ser 374 POP3 (Post Office Protocol Version 3, Protocolo de oficina de correos versión 3) 375 el Protocolo de acceso de correo de Internet (IMAP, Internet Mail Access 376 Protocol) y también se puede utilizar HTTP. 377 378 ### DNS 379 380 El sistema de nombres de dominio (Domain Name System, DNS) es un servicio de la 381 capa de aplicación que se utiliza para hallar la dirección IP de un host 382 solicitado por un cliente. DNS utiliza el protocolo de transporte UDP y se 383 asigna por convención el puerto 53. 384 385 <!-- 386 Otros protocolos de la capa de aplicación, como HTTP y SMTP, emplean 387 habitualmente DNS para obtener la dirección IP de algún host suministrados por 388 el usuario. 389 --> 390 391 Por ejemplo, un navegador solicita el URL `www.unaescuela.edu/index.html`, para 392 que el host del usuario pueda enviar un mensaje de solicitud HTTP al servidor 393 web `www.unaescuela.edu` debe obtener primero la dirección IP de 394 `www.unaescuela.edu`, por lo que realiza los siguientes pasos: 395 396 1. La máquina del cliente ejecuta el lado cliente de la aplicación DNS. 397 2. El navegador extrae el nombre de host `www.unaescuela.edu` del URL y lo pasa 398 al lado cliente de la aplicación DNS. 399 3. El cliente DNS envía una consulta que contiene el nombre de host a un 400 servidor DNS. 401 4. El cliente DNS recibe como respuesta la dirección IP correspondiente al 402 nombre del host. 403 5. Teniendo la dirección IP del servidor, el navegador puede iniciar una 404 conexión TCP. 405 406 Los servidores DNS se organizan de forma jerárquica y se distribuyen alrededor 407 de todo el mundo. Ningún servidor DNS dispone de todas las correspondencias de 408 todos los hosts de Internet. En una primera aproximación, podemos decir que 409 existen tres clases de servidores DNS: los servidores DNS raíz, los servidores 410 DNS de dominio de nivel superior (Top-Level Domain, TLD) y los servidores DNS 411 autoritativos. Un servidor DNS **autoritativo** mantiene los registros oficiales 412 de una zona DNS, mientras que un servidor **no autoritativo** resuelve consultas 413 usando caché o consultando a otros servidores, los cuales en ultima instancia 414 pueden ser servidores DNS autoritativos si no existe ningún cache. 415 416 Suponga que un cliente DNS desea determinar la dirección IP correspondiente al 417 nombre de host `www.amazon.com`. En una primera aproximación tienen lugar los 418 siguientes sucesos: primero, el cliente contacta con uno de los servidores raíz, 419 el cual devuelve las direcciones IP para los servidores TLD del dominio de 420 nivel superior `com`. A continuación, el cliente contacta con uno de estos 421 servidores TLD, que devuelve la dirección IP de un servidor autoritativo para 422 `amazon.com`. Por último, el cliente contacta con uno de los servidores 423 autoritativos de `amazon.com`, el cual devuelve la dirección IP correspondiente al 424 nombre de host `www.amazon.com`. 425 426 <!-- 427 Existen 3 tipos de servidores DNS organizados de forma jerárquica: servidores 428 DNS raíz, servidores DNS de dominio de nivel superior y servidores DNS 429 autoritativos 430 --> 431 432 Las consultas DNS pueden ser **recursivas** o **iterativas**. Una consulta 433 recursiva exige una respuesta final, por lo que de no tener una respuesta 434 el servidor DNS consulta a otros servidores DNS; en una consulta DNS iterativa 435 el servidor devuelve la mejor información disponible, de no tener una entrada 436 para la dirección de host solicitada responde con una referencia a otro servidor 437 DNS. 438 439 La resolución de la dirección IP para un host dado, agrega un retardo cuando se 440 quiera establecer una conexión entre un cliente y un servidor, es por eso que 441 los servidores DNS utilizan exhaustivamente el **almacenamiento en cache**. 442 Cuando un servidor DNS local, es decir, no dispone de la entrada DNS para un 443 host pedido y debe recurrir a otro servidor DNS, recibe una respuesta DNS de 444 resolución para ese host, almacena la respuesta, de manera tal que si en un 445 futuro otro cliente realiza una petición de resolución DNS para ese host el 446 servidor local disponga de la respuesta inmediatamente. Dado que los hosts y las 447 correspondencias entre nombres de host y direcciones IP no son permanentes, los 448 servidores DNS descartan la información almacenada en caché pasado un cierto 449 período de tiempo (normalmente, unos dos días). 450 451 Los servidores DNS almacenan la información en tablas o **registros de recursos 452 (RR)**, que es básicamente una base de datos. Los mensajes de respuesta DNS 453 pueden contener uno o mas registros de recursos. Los registros de recursos están 454 formados por cuatro campos Nombre, Valor, Tipo y TTL y se organizan de 455 la siguiente forma (conceptual, en la practica el formato es distinto): 456 457 ```text 458 (Nombre, Valor, Tipo, TTL) 459 ``` 460 461 El campo TTL es el tiempo de vida del registro de recurso; determina cuándo un 462 recurso debería ser eliminado de una caché DNS. El significado de Nombre y 463 Valor depende del campo Tipo, el cual puede ser A, AAAA, NS, CNAME o MX. 464 465 En los registros A y AAAA, el campo Nombre es una dirección de host y el campo 466 Valor es una dirección IP, IP version 4 en el caso del tipo A e IP version 6 en 467 el caso de tipo AAAA. Por ejemplo el siguiente registro tipo A (en el cual se 468 omite el campo TTL): 469 470 ```text 471 (relay1.bar.foo.com, 145.37.93.126, A) 472 ``` 473 474 En los registros de tipo NS el campo Nombre es un dominio (como `ejemplo.com`) y 475 el campo Valor es el nombre de host de un servidor DNS autoritativo que sabe 476 cómo obtener las direcciones IP de los hosts de ese dominio. Este registro se 477 utiliza para enrutar las consultas DNS a lo largo de la cadena de consultas. 478 A continuación se muestra un ejemplo de registro de tipo NS: 479 480 ```text 481 (foo.com, dns.foo.com, NS) 482 ``` 483 484 En los registros de tipo CNAME el campo Valor es un nombre de **host canónico**, 485 esto es un identificador único para un host dado, y el campo Nombre es un alias 486 que apunta a ese host. Por ejemplo un alias puede ser `ejemplo.com` que 487 "apunta" al nombre canónico `relay1.bar.ejemplo.com`. 488 489 <!-- 490 ```text 491 (blog.example.com, www.example.com, CNAME) 492 ``` 493 --> 494 495 En los registros de tipo MX, el campo Valor es un nombre canónico de un servidor 496 de correo con un alias dado por el campo Nombre. Por ejemplo el registro 497 `(foo.com, mail.bar.foo.com, MX)` es un registro MX. Los registros MX permiten a 498 los nombres de host de los servidores de correo tener alias simples. 499 500 ### ping 501 502 El comando ping envía mensajes ICMP (capa de red) de tipo **echo request** a un 503 host dado, si el host esta activo y le llegan estos mensajes, puede responder 504 con el mismo tipo de mensajes ICMP pero con tipo **echo reply**. En base a estos 505 mensajes se elabora la salida del comando. 506 507 ```console 508 root@redes:~# ping -4 -c 2 google.com 509 PING google.com (172.217.28.14) 56(84) bytes of data. 510 64 bytes from lcezea-af-in-f14.1e100.net (172.217.28.14): icmp_seq=1 ttl=119 time=4.11 ms 511 64 bytes from lcezea-af-in-f14.1e100.net (172.217.28.14): icmp_seq=2 ttl=119 time=3.96 ms 512 513 --- google.com ping statistics --- 514 2 packets transmitted, 2 received, 0% packet loss, time 1001ms 515 rtt min/avg/max/mdev = 3.955/4.032/4.109/0.077 ms 516 ``` 517 518 ### traceroute 519 520 El comando traceroute es una herramienta de diagnóstico que sirve para mostrar 521 la ruta que sigue un paquete de datos desde la estación donde se ejecuta el 522 comando hasta un destino. Funciona enviando mensajes de la capa de red, 523 típicamente utilizando el protocolo UDP, con TTL (Time-to Live) creciente, es 524 decir, comienza por el primer paquete con TTL 1, este TTL se decrementa en los 525 routers por los que pasa el datagrama, por lo que en el primer router se 526 decrementa y dado que es cero se descarta, el router envía al host desde donde 527 se originó el datagrama un mensaje ICMP de tipo 11, time exceeded, y código 0, 528 Time to Live exceeded in Transit, luego se envía otro datagrama con TTL 2 y así 529 sucesivamente hasta llegar al host destino. 530 531 ```console 532 root@redes:~# traceroute fi.uba.ar 533 traceroute to fi.uba.ar (186.33.219.219), 30 hops max, 60 byte packets 534 1 _gateway (192.168.1.1) 0.354 ms 0.547 ms 0.724 ms 535 2 200.51.241.1 (200.51.241.1) 4.797 ms 4.849 ms * 536 3 * IPCUY03-Valan-573.mrse.com.ar (200.63.152.13) 4.894 ms * 537 4 ARSAT-NAC.mrse.com.ar (200.63.152.14) 6.617 ms * * 538 5 73.254.33.186.in-addr.arpa (186.33.254.73) 7.991 ms * * 539 6 74.254.33.186.in-addr.arpa (186.33.254.74) 7.905 ms 6.933 ms 7.026 ms 540 7 49.254.33.186.in-addr.arpa (186.33.254.49) 7.729 ms * * 541 8 217.219.33.186.in-addr.arpa (186.33.219.217) 5.664 ms * * 542 9 219.219.33.186.in-addr.arpa (186.33.219.219) 7.260 ms * * 543 ``` 544 545 ### dig 546 547 ```console 548 ; <<>> DiG 9.20.18 <<>> example.com 549 ;; global options: +cmd 550 ;; Got answer: 551 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44701 552 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 553 554 ;; OPT PSEUDOSECTION: 555 ; EDNS: version: 0, flags:; udp: 512 556 ;; QUESTION SECTION: 557 ;example.com. IN A 558 559 ;; ANSWER SECTION: 560 example.com. 300 IN A 104.18.27.120 561 example.com. 300 IN A 104.18.26.120 562 563 ;; Query time: 28 msec 564 ;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP) 565 ;; WHEN: Mon Feb 16 02:29:31 -03 2026 566 ;; MSG SIZE rcvd: 72 567 ``` 568 569 ## Nivel de transporte 570 571 Un protocolo de la capa de transporte proporciona una comunicación lógica entre 572 procesos de aplicación que se ejecutan en hosts diferentes. Por comunicación 573 lógica se dice que, desde la perspectiva de la aplicación, es como si los hosts 574 que ejecutan los procesos estuvieran conectados directamente; en realidad, los 575 hosts pueden encontrarse en puntos opuestos del planeta, conectados mediante 576 numerosos routers y a través de un amplio rango de tipos de enlace. Los procesos 577 de aplicación utilizan la comunicación lógica proporcionada por la capa de 578 transporte para enviarse mensajes entre sí, sin preocuparse por los detalles de 579 la infraestructura física utilizada para transportar estos mensajes. 580 581 Los protocolos de la capa de transporte están implementados en los sistemas 582 terminales, pero no en los routers de la red. En el lado emisor, la capa de 583 transporte convierte los mensajes que recibe procedentes de un proceso de 584 aplicación emisor en paquetes de la capa de transporte, conocidos como 585 **segmentos**, esto se hace dividiendo los mensajes de la aplicación en 586 fragmentos más pequeños y añadiendo una cabecera de la capa de transporte a cada 587 fragmento, con el fin de crear el segmento de la capa de transporte. Luego, la 588 capa de transporte pasa el segmento a la capa de red del sistema terminal 589 emisor, donde el segmento se encapsula dentro de un paquete de la capa de red 590 (un **datagrama**) y se envía al destino. En el lado receptor, la capa de red 591 extrae el segmento de la capa de transporte del datagrama y lo sube a la capa de 592 transporte. A continuación, esta capa procesa el segmento recibido, poniendo los 593 datos del segmento a disposición de la aplicación de recepción. 594 595 Para aplicaciones de red puede haber más de un protocolo de la capa de 596 transporte disponible como el Protocolo de datagramas de usuario (User Datagram 597 Protocol, **UDP**) y el Protocolo de control de transmisión (Transmission 598 Control Protocol, **TCP**). 599 600 Un protocolo de la capa de transporte proporciona una comunicación lógica entre 601 procesos que se ejecutan en hosts diferentes, un protocolo de la capa de red 602 proporciona una comunicación lógica entre hosts 603 604 ### Multiplexación y demultiplexación 605 606 La multiplexación y la demultiplexación son las funciones fundamentales que 607 permiten que la capa de transporte extienda el servicio de entrega de datos de 608 host a host a un servicio de entrega de proceso a proceso. Aunque la capa de red 609 (mediante el protocolo IP) entrega datos a un dispositivo específico, es la capa 610 de transporte la que decide a qué aplicación o servicio concreto pertenecen esos 611 datos dentro de dicho dispositivo. 612 613 La multiplexación ocurre en el host de origen. Su función consiste en reunir 614 fragmentos de datos provenientes de diferentes procesos de aplicación, añadirles 615 un encabezado de transporte con identificadores específicos como el número de 616 puerto y pasar los segmentos resultantes a la capa de red. Gracias a esto, 617 múltiples aplicaciones como un navegador web, un cliente de correo y una 618 videollamada pueden enviar datos simultáneamente a través de una única conexión 619 física de red sin que la información se mezcle de forma irrecuperable. 620 621 La demultiplexación es el proceso inverso y ocurre en el host de destino. Cuando 622 la capa de transporte recibe un segmento de datos de la capa de red, examina el 623 número de puerto de destino en el encabezado. Luego, dirige esos datos al socket 624 o punto de acceso correspondiente a la aplicación que los está esperando. De 625 esta manera, el sistema operativo asegura que los datos del servidor web lleguen 626 al navegador y no al programa de correo electrónico, por dar un ejemplo. 627 628 Existen diferencias en cómo se realiza este proceso dependiendo del protocolo 629 de trasporte utilizado. En el caso de UDP, la demultiplexación se basa 630 únicamente en la dirección IP de destino y el número de puerto de destino. Esto 631 significa que si dos segmentos tienen el mismo puerto de destino pero vienen de 632 diferentes orígenes, serán dirigidos al mismo socket. Por el contrario, en TCP 633 la demultiplexación es más específica ya que utiliza una tupla de cuatro 634 valores: dirección IP de origen, número de puerto de origen, dirección IP de 635 destino y número de puerto de destino. Esto permite que un servidor mantenga 636 múltiples conexiones simultáneas con diferentes clientes en el mismo puerto, 637 como el puerto 80 o 443, manteniendo cada flujo de datos totalmente 638 independiente del otro. 639 640 ### TCP 641 642 El protocolo de control de transmisión (Transmission Control Protocol, TCP) es 643 un protocolo de transporte del modelo TCP/IP cuya función es permitir la 644 comunicación confiable y ordenada entre aplicaciones que se ejecutan en 645 distintos dispositivos de una red. 646 647 A diferencia de protocolos más simples como UDP, TCP es un protocolo orientado a 648 la conexión. Esto significa que antes de que los datos comiencen a fluir, los 649 dos dispositivos deben realizar un procedimiento de apertura llamado 650 acuerdo de tres pasos o "three-way handshake". Durante este proceso, ambos 651 extremos sincronizan sus números de secuencia y confirman que están listos para 652 intercambiar información. Cuando se desea terminar la comunicación, los 653 dispositivos también deben realizar un procedimiento para terminar la conexión. 654 655 Una de las características más críticas de TCP es la fiabilidad mediante la 656 detección de errores y la retransmisión. Cada segmento de datos que se envía 657 lleva un número de secuencia único. Cuando el receptor recibe un paquete, 658 devuelve un mensaje de confirmación llamado ACK. Si el emisor no recibe esta 659 confirmación en un tiempo determinado, asume que el paquete se perdió o se dañó 660 y lo reenvía automáticamente. Esto asegura que la aplicación de destino reciba 661 una copia exacta de los datos originales, sin importar las condiciones de la 662 red. Además de la fiabilidad, TCP gestiona el control de flujo y el control de 663 congestión. El control de flujo evita que un emisor rápido abrume a un receptor 664 lento mediante el uso de una ventana deslizante, que indica cuánto espacio tiene 665 disponible el receptor en su memoria temporal. El control de congestión, por su 666 parte, permite que TCP reduzca la velocidad de envío si detecta que la red está 667 saturada, evitando así un colapso del tráfico. Finalmente, TCP garantiza la 668 entrega en orden. Debido a que Internet es una red de conmutación de paquetes, 669 es común que diferentes fragmentos de un archivo sigan rutas distintas y lleguen 670 al destino en desorden. TCP utiliza los números de secuencia mencionados 671 previamente para reensamblar los segmentos en la posición correcta antes de 672 entregarlos a la capa de aplicación, de modo que se reciba la información tal 673 como fue enviada originalmente. 674 675 #### Inicio y cierre de sesión 676 677 Como se mencionó previamente, al iniciar una sesión TCP se sigue un acuerdo de 3 678 pasos ("three-way handshake"), esto comienza cuando un cliente desea establecer 679 una conexión con un servidor, para esto envía un segmento TCP con la bandera (o 680 campo, en el encabezado) SYN activada e incluye su numero de secuencia (el cual 681 elige el sistema operativo mediante un algoritmo), si el servidor esta 682 disponible responde con un segmento con las banderas SYN y ACK activas y también 683 devuelve su numero de secuencia el cual es elegido de la misma forma (por el 684 sistema operativo) además el servidor asigna a su campo ACK el numero de 685 secuencia que el cliente envió en el primer segmento +1 ya que el primer 686 segmento ocupa 1 byte. Por ultimo el cliente envía un segmento con la bandera 687 ACK activa y con numero de ACK igual al numero de secuencia que el servidor 688 envío en su respuesta +1, debido a que el segmento enviado por el servidor ocupa 689 1 byte. 690 691 692 \begin{figure}[h] 693 \centering 694 \begin{tikzpicture}[ 695 >=Stealth, 696 line width=1.0pt, 697 every node/.style={font=\small} 698 ] 699 700 % Títulos 701 \node[font=\small] (cLabel) at (0, 0.5) {Cliente}; 702 \node[font=\small] (sLabel) at (6, 0.5) {Servidor}; 703 704 % Líneas de vida (coordenadas) 705 \draw[dashed] (0, 0.0) -- (0,-2.55); 706 \draw[dashed] (6, 0.0) -- (6,-2.55); 707 708 % Mensajes 709 \draw[->] (0, -0.25) -- node[above, sloped, yshift=-2pt]{SYN; S=1000} (6,-0.75); 710 \draw[->, green!60!black] (6, -1.00) -- node[above, sloped, yshift=-2pt]{SYN, ACK; S=5000 A=1001} (0,-1.50); 711 \draw[->] (0, -1.75) -- node[above, sloped, yshift=-2pt]{ACK; A=5001} (6,-2.25); 712 713 \end{tikzpicture} 714 \caption{Inicio de una conexión TCP} 715 \label{fig:tcp-handshake} 716 \end{figure} 717 718 El cierre de sesión TCP se da en 2 pasos, como se muestra en la figura 719 \ref{fig:tcp-fin} quien inicia el cierre de conexión envía un segmento TCP con 720 el bit FIN activado, cuando recibe reconocimiento del otro extremo de la 721 conexión espera a recibir un segmento separado con el bit FIN activado, cuando 722 llega este segmento envía un segmento de reconocimiento y se da por finalizada 723 la sesión en ambos extremos. 724 725 \begin{figure}[h] 726 \centering 727 \begin{tikzpicture}[ 728 >=Stealth, 729 line width=1.0pt, 730 every node/.style={font=\small} 731 ] 732 733 % Títulos 734 \node[font=\small] (cLabel) at (0, 0.5) {Cliente}; 735 \node[font=\small] (sLabel) at (6, 0.5) {Servidor}; 736 737 % Líneas de vida (coordenadas) 738 \draw[dashed] (0, 0.0) -- (0,-3.90); 739 \draw[dashed] (6, 0.0) -- (6,-3.90); 740 741 % Mensajes 742 \draw[->] (0,-0.25) -- node[above, sloped, yshift=-2pt]{FIN} (6,-0.75); 743 \draw[->, green!60!black] (6,-0.95) -- node[above, sloped, yshift=-2pt]{ACK} (0,-1.45); 744 \draw[->] (6,-2.45) -- node[above, sloped, yshift=-2pt]{FIN} (0,-2.95); 745 \draw[->, green!60!black] (0,-3.15) -- node[above, sloped, yshift=-2pt]{ACK} (6,-3.65); 746 747 \end{tikzpicture} 748 \caption{Cierre limpio de una conexión TCP} 749 \label{fig:tcp-fin} 750 \end{figure} 751 752 #### Control de flujo y congestion 753 754 El control de flujo controla el flujo de datos que se envía a la aplicación, ya 755 que en aplicaciones lentas puede que el emisor desborde el buffer de recepción. 756 757 El control de congestión controla que no haya congestión en la red, esto puede 758 provocarse debido a los protocolos subyacentes al nivel de transporte, como el 759 protocolo IP. 760 761 En ambos casos se regula la velocidad de transmisión del emisor para mitigar los 762 efectos y lograr una conexión segura. 763 764 ##### Ventana deslizante 765 766 La ventana deslizante (sliding window) en TCP es el mecanismo de control de 767 flujo que regula cuántos bytes puede enviar un emisor sin recibir confirmación 768 (ACK) del receptor. 769 770 La ventana deslizante permite que el emisor envié multiples segmentos seguidos 771 sin esperar el segmento de validación de receptor instantáneamente. 772 773 Se puede determinar la ventana TCP mediante el producto de el throughput y el 774 RTT del enlace (o Bandwidth-delay product, BDP). 775 776 $$\text{Ventana TCP } = \text{Throughput}\cdot\text{RTT}$$ 777 778 Si la ventana es menor que el BDP el emisor se queda sin datos para enviar y el 779 enlace queda parcialmente ocioso, por lo que no resulta eficiente. 780 781 El throughput queda limitado 782 783 Si la ventana es mayor o igual al BDP, entonces el enlace se mantiene lleno y se 784 alcanza el máximo throughput posible. 785 786 <!-- ##### Slow start --> 787 788 ##### Fast retransmit 789 790 En el caso de que se reciban tres ACK con igual numero de reconocimiento, el 791 emisor TCP realiza una retransmisión rápida lo cual permite retransmitir un 792 segmento perdido sin esperar a que expire el temporizador de retransmisión 793 (RTO). Un ejemplo de esto se muestra en la figura 794 \ref{fig:tcp-fast-retransmit}. 795 796 Cuando TCP detecta los ACK duplicados guarda esos segmentos en un buffer ya que 797 detecta que los segmentos recibidos no están en orden y debe esperar a que el 798 emisor retransmita el segmento perdido. 799 800 \begin{figure}[h] 801 \centering 802 \begin{tikzpicture}[ 803 >=Stealth, 804 line width=1.0pt, 805 every node/.style={font=\small} 806 ] 807 808 % Títulos 809 \node (cLabel) at (0,-0.25) {Cliente}; 810 \node (sLabel) at (6,-0.25) {Servidor}; 811 812 % Líneas de vida 813 \draw[dashed] (0,-0.75) -- (0,-5.0); 814 \draw[dashed] (6,-0.75) -- (6,-5.0); 815 816 % Segmentos enviados 817 \draw[->] (0,-1.0) -- node[pos=0.2, above, sloped, yshift=-2pt]{S=1000} (6,-1.5); 818 \draw[-, red!70!black] (0,-1.5) -- node[pos=0.4, above, sloped, yshift=-2pt]{S=2000} (3,-1.75); 819 \draw[->] (0,-2.0) -- node[pos=0.2, above, sloped, yshift=-2pt]{S=3000} (6,-2.5); 820 \draw[->] (0,-2.5) -- node[pos=0.2, above, sloped, yshift=-2pt]{S=4000} (6,-3.0); 821 822 % ACKs duplicados 823 \draw[->, green!60!black] (6,-1.6) -- node[pos=0.35, above, sloped, yshift=-2pt]{A=2000} (0,-2.1); 824 % \draw[-, green!60!black] (6,-2.0) -- node[pos=0.35, above, sloped, yshift=-2pt]{A=2000} (0,-1.75); 825 \draw[->, green!60!black] (6,-2.6) -- node[pos=0.35, above, sloped, yshift=-2pt]{A=2000} (0,-3.1); 826 \draw[->, green!60!black] (6,-3.1) -- node[pos=0.35, above, sloped, yshift=-2pt]{A=2000} (0,-3.6); 827 828 % Retransmisión rápida 829 \draw[->, thick] (0,-3.7) -- node[above, sloped, yshift=-2pt]{Retransmisión S=2000} (6,-4.2); 830 831 % ACK acumulativo final 832 \draw[->, green!60!black] (6,-4.3) -- node[pos=0.5, above, sloped, yshift=-2pt]{A=5000} (0,-4.8); 833 834 \end{tikzpicture} 835 \caption{Ejemplo de Fast Retransmit en TCP} 836 \label{fig:tcp-fast-retransmit} 837 \end{figure} 838 839 840 #### Transmisión de datos 841 842 La flag PSH indica al receptor que debe enviar los datos recibidos 843 inmediatamente a la aplicación, sin almacenarlos en un buffer. Esto se utiliza 844 cuando en un segmento se envía la totalidad de la petición, por lo que no hace 845 falta que el receptor espere a más datos. 846 847 #### Maximum segment size 848 849 El tamaño máximo de segmento (Maximum Segment Size, MSS) es un parámetro del 850 protocolo TCP que indica la cantidad máxima de bytes de datos útiles de la 851 aplicación (payload) que puede transportar un segmento TCP, sin incluir 852 cabeceras TCP ni IP. 853 854 Se define durante el three-way handshake al inicio de la conexión TCP y esta 855 relacionado con el MTU del enlace. Por ejemplo, para un enlace Ethernet con MTU 856 de 1500 bytes, y tomando una cabecera TCP e IPv4 de 20 bytes cada una se tiene 857 un MSS de 1460 bytes. 858 859 \vspace{-1em} 860 $$MSS = 1500 \text{ B} − 20 \text{ B} − 20 \text{ B} = 1460\text{ B}$$ 861 862 #### Segmentación 863 864 Cuando la aplicación desea transmitir una cierta cantidad de bytes el protocolo 865 TCP divide esos bytes en segmentos de acuerdo al tamaño máximo de segmento (MSS) 866 del enlace por el cual se va a realizar la transmisión. Por ejemplo para 867 transmitir 5000 bytes de datos con un MSS de 1460 bytes, se necesitaran 4 868 segmentos TCP, 3 segmentos de 1460 bytes y un segmento de 620 bytes. A cada 869 segmento de datos se agrega una cabecera TCP, en este ejemplo sin opciones de 870 20 bytes, y una cabecera IP, también sin opciones en este ejemplo también 871 ocupando 20 bytes, de esta forma se llega a los 1500 bytes de segmento máximo. 872 873 ### UDP 874 875 El Protocolo de datagramas de usuario (User Datagram Protocol, UDP) es un 876 protocolo de transporte cuya función es enviar datagramas de forma rápida y 877 simple, sin establecer conexión previa y sin garantizar entrega, orden ni 878 control de errores. Solo se verifica si el datagrama llego bien con un checksum. 879 880 <!-- ### QUIC --> 881 882 ## Nivel de red 883 884 La función principal de la capa de red es la de transportar paquetes desde un 885 host emisor a un host receptor. Esta capa es muy amplia y se puede dividir 886 conceptualmente en un **plano de control** y un **plano de datos**. El plano de 887 datos (o forwarding plane) se encarga de reenviar un paquete que entra por una 888 interfaz a otra interfaz apropiada, basándose en la tabla de forwarding o 889 reenvío (o Forwarding Information Base, FIB) la cual ya ha sido previamente 890 completada por el plano de control. El plano de control se encarga justamente de 891 completar la tabla de reenvío para que así el plano de datos reenvíe los 892 paquetes por la interfaz apropiada. Para completar la tabla de reenvío el 893 enfoque tradicional, o más común, es elegir de acuerdo a la dirección de destino 894 del paquete y basarse en la tabla de ruteo (o Routing Information Base, RIB) 895 para elegir la interfaz de salida. En otros enfoques no tradicionales, como 896 enrutamiento basado en políticas (Policy Based Routeing, PBR) puede que se tenga 897 en cuenta otros parámetros del paquete ademas de la dirección de destino, como 898 la dirección de origen, y en ese caso la tabla de reenvío no dependería 899 solamente de la tabla de ruteo. 900 901 <!-- 902 Esta tabla de ruteo en el plano de control puede ser completada por un 903 administrador de redes manualmente, pero típicamente se completa automáticamente 904 mediante algoritmos más eficiente, por ejemplo algoritmos que eligen la ruta más 905 corta. 906 907 En la realización de esta tarea podemos identificar dos importantes funciones de 908 la capa de red: el reenvío (*forwarding*) y el enrutamiento (*routing*). El 909 **reenvío** hace referencia a la acción local que realiza un router al 910 transferir un paquete desde una interfaz de un enlace de entrada a una interfaz 911 del enlace de salida apropiado. El reenvío tiene lugar en escalas de tiempo muy 912 cortas (típicamente de unos pocos nanosegundos) y se implementa normalmente en 913 hardware. El **enrutamiento** hace referencia al proceso que realiza la red en 914 conjunto para determinar las rutas extremo a extremo que los paquetes siguen 915 desde el origen al destino. El enrutamiento tiene lugar con escalas de tiempo 916 mucho más largas (normalmente de segundos) y, como veremos, suele implementarse 917 en software. 918 919 Un elemento crucial en todo router de una red es su **tabla de reenvío** (o 920 **routing table**). Un router reenvía un paquete examinando el valor de uno o 921 más campos de la cabecera del paquete entrante y utilizando después esos valores 922 de la cabecera para realizar una indexación dentro de su tabla de reenvío. El 923 valor almacenado en la entrada de la tabla de reenvío correspondiente a esos 924 valores indica cuál es la interfaz del enlace de salida del router a la que hay 925 que reenviar el paquete. Un ejemplo de una tabla de enrutamiento (o ruteo) se 926 muestra en la tabla \ref{tab:ej-tabla-enrutamiento}. 927 --> 928 929 En la tabla \ref{tab:ej-tabla-ruteo} se muestra un ejemplo de tabla de ruteo. 930 En el enfoque tradicional, en el cual el reenvío se basa solo en la dirección de 931 destino del paquete, se realiza la operación binaría AND entre la mascara de la 932 entrada en la tabla y la dirección de destino del paquete entrante, luego se 933 compara con la dirección de destino de la tabla y se reenvía de acuerdo a la 934 interface de esa entrada en la tabla. 935 936 Una entrada particular de la tabla es lo que se conoce como **default gateway**, 937 el cual típicamente es la entrada con todos ceros y mascara cero: 0.0.0.0/0, esta 938 entrada es aquella por la cual debe salir el paquete si no coincide con ningún 939 otra entrada en la tabla, de no estar esta entrada el paquete se descartaría ya 940 que no existiría destino conocido por el cual reenviar el paquete. 941 942 \begin{table}[h] 943 \centering\small 944 \setlength{\arrayrulewidth}{0.5pt} 945 \begin{tabularx}{\linewidth} 946 {|>{\centering\arraybackslash}p{48pt}| 947 >{\centering\arraybackslash}p{38pt}| 948 >{\centering\arraybackslash}p{45pt}| 949 >{\centering\arraybackslash}X|} 950 \hline 951 \textbf{Destino} & \textbf{Mascara} & \textbf{Próximo salto} & \textbf{Interface} \\ \hline 952 123.0.0.0 & /8 & 123.0.0.99 & eth0 \\ \hline 953 190.4.28.0 & /16 & 190.4.28.1 & eth0 \\ \hline 954 200.10.20.0 & /24 & 200.10.20.2 & eth0 \\ \hline 955 0.0.0.0 & /0 & 200.10.20.1 & eth0 \\ \hline 956 \end{tabularx} 957 \caption{Ejemplo de tabla de ruteo} 958 \label{tab:ej-tabla-ruteo} 959 \end{table} 960 961 Puede ocurrir que una dirección IP coincida con una o más entradas de la tabla 962 de ruteo, en cuyo caso, la entrada que tenga más campos en común con la 963 dirección será la elegida. Por ejemplo, una dirección coincide con una entrada 964 de la tabla con mascara /24 y también con una entrada con mascara /26, entonces 965 el datagrama se reenvía por la interfaz correspondiente a la entrada de la tabla 966 con la mascara /26. 967 968 ### Protocolo IP 969 970 El protocolo de internet (Internet Protocol, IP) es el componente principal de 971 la capa de red y la principal función es la de actuar como un sistema de 972 direccionamiento y enrutamiento universal, permitiendo que los datos viajen 973 desde un origen hasta un destino a través de múltiples redes interconectadas. 974 Se puede decir que el protocolo IP pertenece al plano de datos aunque depende 975 de la información brindada por plano de control para direccionar los datagramas. 976 977 A diferencia de protocolos de capas superiores que se encargan de la fiabilidad, 978 IP es un protocolo de entrega de mejor esfuerzo (*best-effort*) y no orientado a 979 la conexión. Esto significa que no garantiza que los datos lleguen a su destino 980 ni que lo hagan en el orden correcto; simplemente se encarga de empaquetar la 981 información en unidades denominadas datagramas y enviarlas a través de la 982 infraestructura de red basándose en las direcciones de los encabezados. 983 984 Cada datagrama IP contiene una sección de encabezado que incluye información 985 vital para el transporte, siendo las direcciones IP de origen y de destino los 986 campos más importantes. Estas direcciones identificando de forma única a cada 987 dispositivo conectado a la red. Existen dos versiones del protocolo IP la 988 version 4 y la version 6. La version 4 (o IPv4) utiliza direcciones de 32 bits 989 representadas por cuatro bytes separados por punto, por ejemplo 192.168.1.1. La 990 versión 6 (o IPv6) utiliza direcciones de 128 bits, con una representación en 991 hexadecimal de ocho grupos de 16 bits separados por dos puntos, con reglas de 992 compresión para los ceros, por ejemplo 2001:0db8:85a3:0000:0000:8a2e:0370:7334. 993 994 #### Versión 4 995 996 El formato de los datagramas de IPv4 se muestra en la tabla 997 \ref{tab:ipv4-header}. Un datagrama IP tiene un total de 20 bytes de cabecera 998 cuando no se utilicen opciones. Por lo general no se utilizan opciones en el 999 encabezado IP ya que la mayoría de estas opciones son obsoletas. Si el datagrama 1000 transporta un segmento TCP, entonces cada datagrama (no fragmentado) transporta 1001 un total como mínimo de 40 bytes de cabecera (20 bytes de la cabecera IP más 20 1002 bytes de la cabecera TCP, sin opciones en los dos casos) junto con el mensaje de 1003 la capa de aplicación. 1004 1005 <!-- 1006 ```text 1007 0 1 2 3 1008 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 1009 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1010 |Version| IHL |Type of Service| Total Length | 1011 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1012 | Identification |Flags| Fragment Offset | 1013 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1014 | Time to Live | Protocol | Header Checksum | 1015 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1016 | Source Address | 1017 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1018 | Destination Address | 1019 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1020 | Options | Padding | 1021 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1022 ``` 1023 --> 1024 1025 \begin{table}[h] 1026 \centering\small 1027 \setlength{\arrayrulewidth}{0.5pt} 1028 \setlength{\extrarowheight}{2.5pt} % Da un poco de aire vertical 1029 \setlength{\tabcolsep}{2pt} % default is 6pt 1030 \begin{tabular}{|*{32}{>{\centering\arraybackslash}c|}} 1031 1032 \multicolumn{4}{c}{0-3} & 1033 \multicolumn{4}{c}{4-7} & 1034 \multicolumn{8}{c}{8-15} & 1035 \multicolumn{16}{c}{16-32} \\ \hline 1036 1037 \multicolumn{4}{|c}{Version} & 1038 \multicolumn{4}{|c}{\makecell{Header\\length}} & 1039 \multicolumn{8}{|c}{ToS} & 1040 \multicolumn{16}{|p{0.5\linewidth}|}{\centering Total length} \\ \hline 1041 1042 \multicolumn{16}{|c}{Identification} & 1043 \multicolumn{3}{|c}{\centering Flags} & 1044 \multicolumn{13}{|c|}{Fragment Offset} \\ \hline 1045 1046 \multicolumn{8}{|c}{TTL} & 1047 \multicolumn{8}{|c}{Protocol} & 1048 \multicolumn{16}{|c|}{Header checksum} \\ \hline 1049 1050 \multicolumn{32}{|c|}{Source address} \\ \hline 1051 1052 \multicolumn{32}{|c|}{Destination address} \\ \hline 1053 1054 \multicolumn{32}{|c|}{Options} \\ \hline 1055 1056 \multicolumn{32}{|c|}{Padding} \\ \hline 1057 1058 \end{tabular} 1059 \caption{Formato encabezado IPv4} 1060 \label{tab:ipv4-header} 1061 \end{table} 1062 1063 Los campos de los datagramas IP version 4 son: 1064 1065 1. Número de versión: Ocupa 4 bits del encabezado y especifica la versión del 1066 protocolo IP del datagrama. A partir del número de versión, el router puede 1067 determinar cómo interpretar el resto del datagrama IP. 1068 2. Longitud de cabecera: Un datagrama IPv4 puede contener un número variable de 1069 opciones, estos 4 bits son necesarios para determinar dónde comienzan 1070 realmente los datos (o carga útil) en el datagrama IP. La mayoría de los 1071 datagramas IP no contienen opciones, por lo que el datagrama IP típico tiene 1072 una cabecera de 20 bytes. 1073 3. Tipo de servicio: Los bits del tipo de servicio (Type Of Service, ToS) se 1074 incluyeron en la cabecera con el fin de poder diferenciar entre los distintos 1075 tipos de datagramas IP. Por ejemplo, para diferenciar datagramas en tiempo 1076 real (como los utilizados en aplicaciones de telefonía IP) del tráfico que no 1077 es en tiempo real (como por ejemplo el tráfico FTP). 1078 4. Longitud del datagrama: Es la longitud total del datagrama IP (la cabecera 1079 más los datos) en bytes. Puesto que este campo tiene una longitud de 16 bits, 1080 el tamaño máximo teórico del datagrama IP es de 65535 bytes. Aunque rara vez 1081 tienen una longitud mayor a 1500 bytes. 1082 5. Identificador, flags, offset: Estos campos se utilizan cuando hay 1083 fragmentación de IP. 1084 6. Tiempo de vida (Time-To-Live, TTL): se incluye con el fin de garantizar que 1085 los datagramas no estarán eternamente en circulación a través de la red 1086 (debido, por ejemplo, a un bucle de enrutamiento de larga duración). Este 1087 campo se decrementa en una unidad cada vez que un router procesa un 1088 datagrama. Si el campo TTL alcanza el valor 0, el datagrama tiene que ser 1089 descartado por el router. 1090 7. Protocolo: Este campo solo se utiliza cuando el datagrama IP alcanza su 1091 destino final. El valor de este campo indica el protocolo específico de la 1092 capa de transporte al que se pasarán los datos. Por ejemplo, un valor de 6 1093 indica que los datos se pasan a TCP, mientras que un valor igual a 17 indica 1094 que los datos se pasan a UDP. 1095 8. Suma de comprobación de cabecera: La suma de comprobación de cabecera ayuda a 1096 los routers a detectar errores de bit en un datagrama dado. Un router calcula 1097 la suma de comprobación de cabecera para cada datagrama IP recibido y detecta 1098 una condición de error si la suma de comprobación incluida en la cabecera del 1099 datagrama no coincide con la suma de comprobación calculada. Normalmente, los 1100 routers descartan los datagramas en los que se ha detectado que existe un 1101 error. La suma de comprobación tiene que volver a calcularse y almacenarse en 1102 cada router, ya que el campo TTL, y posiblemente también el campo de 1103 opciones, cambian. 1104 9. Direcciones IP de origen y de destino: Cuando un origen crea un datagrama, 1105 inserta su dirección IP en el campo de dirección IP de origen e inserta la 1106 dirección del destino final en el campo de dirección IP de destino. A menudo, 1107 el host de origen determina la dirección de destino mediante una búsqueda DNS 1108 10. Datos (carga útil): En la mayoría de las circunstancias, el campo de datos 1109 del datagrama IP contiene el segmento de la capa de transporte (TCP o UDP) 1110 que va a entregarse al destino. Sin embargo, el campo de datos puede 1111 transportar otros tipos de datos, como por ejemplo mensajes ICMP. 1112 1113 ##### Fragmentación 1114 1115 La cantidad máxima de datos que una trama de la capa de enlace puede transportar 1116 se conoce como **unidad máxima de transmisión** (Maximum Transmission Unit, 1117 MTU). Dado que cada datagrama IP se encapsula dentro de una trama de la capa 1118 de enlace para ir de un router al siguiente, la MTU del protocolo de la capa de 1119 enlace impone un límite estricto a la longitud de un datagrama IP. Además en 1120 cada enlace a lo largo de la ruta entre el emisor y el receptor puede utilizar 1121 diferentes protocolos, los cuales imponen MTU diferentes. 1122 1123 <!-- 1124 Esta limitación del tamaño de un datagrama IP no supone un problema importante. 1125 Lo que realmente es un problema es que cada uno de los enlaces existentes a lo 1126 largo de la ruta entre el emisor y el destino pueden utilizar diferentes 1127 protocolos de la capa de enlace y cada uno de estos protocolos puede emplear una 1128 MTU diferente. 1129 --> 1130 1131 Si el datagrama no cabe en una trama de la capa de enlace entonces se debe 1132 fragmentar la carga útil del datagrama IP en dos o más datagramas IP más 1133 pequeños, esto es encapsular cada uno de los datagramas IP más pequeños en una 1134 trama de la capa de enlace distinta y enviar dichas tramas a través del enlace 1135 de salida. Cada uno de estos datagramas más pequeños se conocen como 1136 **fragmentos**. Cuando un host de destino recibe una serie de datagramas 1137 procedentes del mismo origen, tiene que determinar si algunos de esos datagramas 1138 son fragmentos de algún otro datagrama original más grande. Si algunos 1139 datagramas son fragmentos, tiene que determinar además cuándo ha recibido el 1140 último fragmento y cómo debe ensamblar los fragmentos que ha recibido para 1141 formar el datagrama original. Para que el host de destino pueda reensamblar los 1142 fragmentos, en la cabecera de IPv4 se incluye los campos identificación, 1143 indicadores y offset. Cuando se crea un datagrama, el host emisor marca el 1144 datagrama con un número de identificación, así como con las direcciones de 1145 origen y de destino. Normalmente, el host emisor incrementa el número de 1146 identificación para cada datagrama que envía. Cuando un router necesita 1147 fragmentar un datagrama, cada datagrama resultante (es decir, cada fragmento) se 1148 marca con la dirección de origen, la dirección de destino y el número de 1149 identificación del datagrama original. Cuando el destino recibe una serie de 1150 datagramas procedentes del mismo host emisor, puede examinar los números de 1151 identificación de los datagramas para determinar cuáles de ellos son fragmentos 1152 de un mismo datagrama más largo. Puesto que IP es un servicio no fiable, es 1153 posible que uno o más de los fragmentos nunca lleguen a su destino. Por esta 1154 razón, con el fin de que el host de destino esté absolutamente seguro de que ha 1155 recibido el último fragmento del datagrama original, ese último fragmento tiene 1156 un bit indicador de más fragmentos (More Fragments, MF) puesto a 0, mientras que 1157 los demás fragmentos tienen el bit MF puesto a 1. Además, para que el 1158 host de destino determine si falta un fragmento (y también para que pueda 1159 reensamblar los fragmentos en el orden apropiado), se utiliza el campo offset 1160 para especificar en qué posición dentro del datagrama IP original encaja el 1161 fragmento. 1162 1163 #### Direccionamiento 1164 1165 Las direcciones IPv4 tienen una longitud de 32 bits (lo que equivale a 4 bytes), 1166 por lo que existen un total de 232 (unos 4.000 millones) direcciones IP 1167 posibles. Estas direcciones normalmente se expresan utilizando la denominada 1168 notación decimal con puntos, en la que cada byte de la dirección se escribe en 1169 formato decimal y se separa mediante un punto del resto de los bytes de la 1170 dirección. Por ejemplo, la dirección IP 193.32.216.9. El 193 es el número 1171 decimal equivalente a los 8 primeros bits de la dirección; el 32 es el 1172 equivalente decimal de los segundos 8 bits de la dirección, y así sucesivamente. 1173 Por tanto, la dirección 193.32.216.9 en notación binaria se expresa como sigue: 1174 1175 ```text 1176 11000001.00100000.11011000.00001001 1177 ``` 1178 1179 <!-- 1180 **************************revisar***************************** 1181 En términos de IP, esta red que interconecta tres interfaces de host y 1182 una interfaz de router forma una subred. El direccionamiento IP asigna una 1183 dirección a esta **subred**: 223.1.1.0/24, donde la notación /24, que en 1184 ocasiones se denomina **máscara de subred**, indica que los 24 bits más a la 1185 izquierda de ese número de 32 bits definen la dirección de subred. Por tanto, la 1186 subred 223.1.1.0/24 consta de tres interfaces de host (223.1.1.1, 223.1.1.2 y 1187 223.1.1.3) y de una interfaz del router (223.1.1.4). Cualquier host adicional 1188 conectado a la subred 223.1.1.0/24 requeriría una dirección de la forma 1189 223.1.1.XXX. 1190 --> 1191 1192 #### Subnetting y Supernetting 1193 1194 Subnetting es el proceso de dividir una red IP en subredes más pequeñas mediante 1195 la extensión del prefijo del campo de red, para mejorar la eficiencia y 1196 administración del direccionamiento. Por cada bit tomado se divide la red en dos 1197 subredes con la mitad de capacidad de hosts. Por ejemplo se tiene la red 1198 192.168.1.0/24 la cual tiene capacidad para 253 hosts (debido a que la dirección 1199 0 representa la red y la dirección 255 se usa para broadcast). Tomando un bit 1200 más de mascara se tienen dos subredes 192.168.1.0/25 y 192.168.1.128/25 ambas 1201 con capacidad para 126 hosts. El subnetting se puede hacer tomando mascaras 1202 fijas (Fixed Length Subnet Mask, FLSM) o tomando mascaras variables (Variable 1203 Length Subnet Mask, VLSM) la diferencia radica en que con FLSM la mascara es 1204 fija para toda la subred, mientras que con VLSM se puede tomar diferentes 1205 longitudes de mascara para diferentes porciones de la subred creada. 1206 1207 Supernetting es el proceso inverso al Subnetting, es reducir el numero de 1208 bits que ocupa la mascara agrupando multiples redes. Por ejemplo se tienen las 1209 subredes 192.168.0.0/24 y 192.168.1.0/24 estas subredes ambas tienen capacidad 1210 para 253 hosts, haciendo supernetting tomando un bit menos de mascara, resulta 1211 en la red 192.168.0.0/23 lo cual tiene capacidad para 510 hosts. 1212 1213 ##### Direccionamiento con y sin clases 1214 1215 En el direccionamiento **con clases** se establece una longitud fija para la 1216 parte de red de las direcciones IP (la mascara), esta longitud fija puede ser de 1217 8, 16 y 24 bits correspondiente con la clase A, B y C, respectivamente (también 1218 existen las clases D y E pero no es común utilizarlas). Dada una dirección IP y 1219 sabiendo que se utiliza direccionamiento con clases se puede determinar la 1220 mascara de red observando el primer octeto de la dirección IP, como se muestra 1221 en la tabla \ref{tab:ipv4-classful}. 1222 1223 \begin{table}[h] 1224 \centering 1225 \begin{tabular}{|c|c|c|c|} 1226 \hline 1227 \textbf{Clase} & \textbf{Primer octeto} & \textbf{Máscara} \\ 1228 \hline 1229 A & 0xxxxxxx (0 -- 127) & /8 \\ 1230 \hline 1231 B & 10xxxxxx (128 -- 191) & /16 \\ 1232 \hline 1233 C & 110xxxxx (192 -- 223) & /24 \\ 1234 \hline 1235 D & 1110xxxx (224 -- 239) & No aplica \\ 1236 \hline 1237 E & 1111xxxx (240 -- 255) & No aplica \\ 1238 \hline 1239 \end{tabular} 1240 \caption{Clases IPv4} 1241 \label{tab:ipv4-classful} 1242 \end{table} 1243 1244 Esta forma de particionar las direcciones, utilizando clases es ineficiente 1245 debido a que en muchos casos, como organizaciones pequeñas, una red con 1246 direccionamiento clase C es muy pequeña (254 hosts) y una red clase B es muy 1247 grande (65634 hosts). En el direccionamiento **sin clases** (Classless 1248 Interdomain Routing, CIDR) se utilizan prefijos de longitud variable, eliminando 1249 las clases y mejorando la eficiencia, ya que se pueden tener subredes de tamaño 1250 arbitrario, este ultimo método es el que se usa en la actualidad, la única 1251 desventaja con el método con clases es que se debe especificar siempre con que 1252 longitud de mascara se esta trabajando. 1253 1254 Al igual que sucede con el direccionamiento de subredes, la dirección IPv4 de 32 1255 bits se divide en dos partes y de nuevo se expresa en notación decimal con 1256 puntos como a.b.c.d/x, donde x indica el número de bits de la primera parte de 1257 la dirección. Los x bits más significativos de una dirección en el formato 1258 a.b.c.d/x constituyen la parte de red de la dirección IP y a menudo se los 1259 denomina prefijo (o prefijo de red) de la dirección. 1260 1261 La dirección IPv4 255.255.255.255 (en binario todos los campos en 1) se denomina 1262 dirección de difusión (o broadcast) y cuando un host envía un datagrama cuya 1263 dirección de destino es 255.255.255.255, el mensaje se entrega a todos los hosts 1264 existentes en la misma subred. 1265 1266 Por ejemplo se tiene la siguiente red de la cual se tiene 255 direcciones de 1267 host disponibles y una única red, pero se desea particionar la red en 4 1268 subredes. 1269 1270 ```text 1271 192.168.1.0/24 1272 ``` 1273 1274 Para esto se hace una subred tomando los primero 26 bits de la dirección, 1275 resultando en una mascara /26 (en lugar de los primeros 24 bits de dirección 1276 para la clase, como indica la masca /24). El resultado son 4 subredes con 1277 espacio para 62 host cada subred. 1278 1279 ```text 1280 192.168.1.0/26 1281 192.168.1.64/26 1282 192.168.1.128/26 1283 192.168.1.192/26 1284 ``` 1285 1286 ##### DHCP 1287 1288 Las direcciones de host también se pueden configurar manualmente, pero 1289 frecuentemente esta tarea se lleva cabo utilizando el Protocolo de configuración 1290 dinámica de host (DHCP, Dynamic Host Configuration Protocol). DHCP permite a un 1291 host obtener (permite que se le asigne) automáticamente una dirección IP. Un 1292 administrador de red puede configurar DHCP de modo que un host dado reciba la 1293 misma dirección IP cada vez que se conecte a la red, o bien a un host puede 1294 asignársele una dirección IP temporal que será diferente cada vez que el host se 1295 conecte a la red. Además de la asignación de direcciones IP de host, DHCP 1296 también permite que un host obtenga información adicional, como por ejemplo su 1297 máscara de subred, la dirección de su router del primer salto [a menudo 1298 denominado pasarela (gateway) predeterminada] y la dirección de su servidor DNS 1299 local 1300 1301 #### Versión 6 1302 1303 En la tabla \ref{tab:ipv6-header} se muestra el formato de un datagrama IP de 1304 versión 6. Esta versión aumenta el tamaño de la dirección IP, de 32 a 128 bits. 1305 Además de las direcciones de unidifusión y de multidifusión, IPv6 ha introducido 1306 un nuevo tipo de dirección, denominado dirección **anycast**, que permite que 1307 múltiples nodos tengan la misma dirección IPv6 y que el tráfico llegue 1308 automáticamente al nodo más cercano o más óptimo. También se eliminan algunos de 1309 los campos de la version anterior, o se han hecho opcionales, de cualquier forma 1310 la cabecera IPv6 es de longitud fija de 40 bytes a diferencia de la version 1311 anterior. 1312 1313 A diferencia de la version anterior no se permite ni la fragmentación ni el 1314 reensamblado en routers intermedios; estas operaciones solo pueden ser 1315 realizadas por el origen y el destino. Si un router recibe un datagrama IPv6 y 1316 es demasiado largo para ser reenviado por el enlace de salida, el router 1317 simplemente lo descarta y envía de vuelta al emisor un mensaje de error ICMPv6 1318 "Paquete demasiado grande". El emisor puede entonces reenviar los datos 1319 utilizando un tamaño de datagrama IP más pequeño. 1320 1321 \begin{table}[h] 1322 \centering\small 1323 \setlength{\arrayrulewidth}{0.5pt} 1324 \setlength{\extrarowheight}{2.5pt} % Da un poco de aire vertical 1325 \setlength{\tabcolsep}{2pt} % default is 6pt 1326 \begin{tabular}{|*{32}{>{\centering\arraybackslash}c|}} 1327 1328 % \multicolumn{4}{c}{0-3} & 1329 % \multicolumn{4}{c}{4-7} & 1330 % \multicolumn{8}{c}{8-15} & 1331 % \multicolumn{16}{c}{16-32} \\ 1332 1333 \hline 1334 \multicolumn{4}{|c}{Version} & 1335 \multicolumn{8}{|c}{Traffic class} & 1336 \multicolumn{20}{|p{0.6\linewidth}|}{\centering Flow label} \\ \hline 1337 1338 \multicolumn{16}{|p{0.5\linewidth}}{\centering Payload length} & 1339 \multicolumn{8}{|c}{Next header} & 1340 \multicolumn{8}{|c|}{Hop limit} \\ \hline 1341 1342 \multicolumn{32}{|c|}{\makecell[c]{\\Source address\\{}\\{}}} \\ \hline 1343 \multicolumn{32}{|c|}{\makecell[c]{\\Destination address\\{}\\{}}} \\ \hline 1344 1345 1346 1347 \end{tabular} 1348 \caption{Formato encabezado IPv6} 1349 \label{tab:ipv6-header} 1350 \end{table} 1351 1352 La cabecera IPv6 dispone de los siguientes campos: 1353 1354 1. Versión (4 bits): Identifica el número de versión del protocolo IP utilizado. 1355 2. Clase de tráfico (8 bits): Al igual que el campo ToS de IPv4, el campo de 1356 clase de tráfico, se utiliza para dar prioridad a ciertos 1357 datagramas dentro de un flujo, o para dar prioridad a los datagramas de 1358 determinadas aplicaciones (por ejemplo, VoIP) frente a los datagramas 1359 de otras aplicaciones (como SMTP). 1360 3. Etiqueta de flujo (20 bits): Este campo se utiliza para identificar un flujo 1361 de datagramas. 1362 4. Longitud de la carga útil (16 bits): Este valor se trata como un entero sin 1363 signo que proporciona el número de bytes del datagrama IPv6 incluidos a 1364 continuación de la cabecera del datagrama. 1365 5. Siguiente cabecera (8 bits): Este campo identifica el protocolo (por ejemplo, 1366 TCP o UDP) al que se entregará el contenido (el campo de datos) de este 1367 datagrama. El campo utiliza los mismos valores que el campo de protocolo de 1368 la cabecera IPv4. 1369 6. Límite de saltos (8 bits): Cada router que reenvía un datagrama decrementa el 1370 contenido de este campo en una unidad. Si el límite de saltos alcanza el 1371 valor cero, el datagrama se descarta. 1372 7. Direcciones de origen y de destino (128 bits cada una): se usan para 1373 identificar quién envía el paquete y a quién debe llegar 1374 1375 ##### Neightbor Discovery Protocol 1376 1377 El Neighbor Discovery Protocol (NDP) es un protocolo de la suite IPv6 que 1378 sustituye y mejora funciones que en IPv4 realizaban protocolos como ARP, ICMP 1379 Router Discovery y Redirect. 1380 1381 En lugar de usar broadcast (que satura la red), NDP utiliza mensajes multicast 1382 más eficientes para que los nodos se comuniquen con sus vecinos en el mismo 1383 enlace. NDP opera mediante cinco tipos de mensajes ICMPv6: Router Solicitation 1384 (RS), Router Advertisement (RA), Neighbor Solicitation (NS), Neighbor 1385 Advertisement (NA) y Redirect. 1386 1387 ### Protocolo ICMP 1388 1389 El Protocolo de Mensajes de Control de Internet (Internet Control Message 1390 Protocol, ICMP) es un protocolo de control y diagnóstico de la capa de red que 1391 se utiliza para informar errores y condiciones de funcionamiento de la red. Los 1392 mensajes ICMP si bien corresponden a la capa de red se encapsulan dentro de 1393 datagramas IP. Existen dos versiones de ICMP, uno para IPv4, ICMP y otro para 1394 IPv6, ICMPv6. 1395 1396 1397 <!-- 1398 ```text 1399 0 8 16 1400 +--------+--------+----------------+ 1401 | Tipo | Código | Checksum | 1402 +--------+--------+----------------+ 1403 | Datos ICMP | 1404 +----------------------------------+ 1405 ``` 1406 --> 1407 1408 Los hosts y los routers utilizan ICMP para intercambiarse información acerca de 1409 la capa de red. El uso más típico de ICMP es la generación de informes de error. 1410 Por ejemplo, al ejecutar una sesión HTTP podemos encontrarnos con un mensaje de 1411 error como "Red de destino inalcanzable". Este mensaje tiene su origen en ICMP. 1412 En algún punto, un router IP no ha podido encontrar una ruta hasta el host 1413 especificado en la solicitud HTTP, y dicho router ha creado y enviado un mensaje 1414 ICMP a nuestro host para informarle del error. 1415 1416 Los mensajes ICMP tienen un campo de tipo y un campo de código, y contienen la 1417 cabecera y los 8 primeros bytes del datagrama IP que ha dado lugar a la 1418 generación del mensaje ICMP (para que el emisor pueda determinar qué datagrama 1419 ha producido el error) 1420 1421 ### NAT 1422 1423 El protocolo de traducción de direcciones de red (Network Address Translation, 1424 NAT) es un protocolo que permite que varios dispositivos en una red privada 1425 compartan una única dirección IP pública. 1426 1427 Una dirección **IP pública** es única y accesible mundialmente, mientras que una 1428 dirección **IP privada** se usa solo dentro de una red local y no es accesible fuera 1429 de esa red. Las redes publicas son accesibles por los proveedores de internet, 1430 mientras que las redes privadas son asignadas mediante los administradores de la 1431 red privada o mediante servidores DHCP, por ejemplo. 1432 1433 ### Ruteo 1434 1435 <!-- 1436 Como se mencionó previamente el ruteo es el proceso de completar las 1437 tablas de de forma tal que luego los datagramas se reenvíen en la interfaz 1438 adecuada. El enrutamiento ocurre en el plano de control. 1439 --> 1440 1441 El ruteo es el proceso de calculo y selección de rutas optimas hacia los 1442 destinos. El proceso de ruteo ocurre en el plano de control. El ruteo puede ser 1443 estático, dinámico o predeterminado. En el ruteo estático las rutas se 1444 configuran manualmente y no cambian a menos que un administrador de red lo haga. 1445 En el ruteo dinámico las rutas se ajustan automáticamente según el estado de la 1446 red, para esto se utilizan protocolos de ruteo que modifican las rutas basándose 1447 por ejemplo en el camino más corto. El ruteo predeterminado se usa cuando no hay 1448 una ruta especifica hacia un destino y se envía por ese camino por defecto. 1449 1450 Un **sistema autónomo** (Autonomous System, AS) es un conjunto de redes IP que 1451 están bajo un mismo control administrativo y que comparten una política de ruteo 1452 común. 1453 1454 El ruteo se puede dividir en **ruteo interno** y **ruteo externo** de acuerdo al 1455 alcance y tipos de protocolos que se utilizan para establecer las rutas. El 1456 ruteo interno se realiza dentro de un mismo sistema autónomo, por ejemplo dentro 1457 de una empresa u organización. El ruteo externo se usa para intercambiar rutas 1458 entre diferentes sistemas autónomos, es decir, entre redes diferentes, 1459 generalmente a través de internet. 1460 1461 Los protocolos de ruteo definen como se deben intercambiar los mensajes con los 1462 nodos adyacentes, el formato del mensaje, cada cuanto se intercambian los 1463 mensajes, etc. con la información recolectada sobre la red el protocolo ejecuta 1464 un algoritmo, denominado **algoritmo de ruteo**, el cual decide cual será la 1465 ruta más optima para cada destino. 1466 1467 #### Algoritmos de ruteo 1468 1469 Los algoritmos de ruteo tienen como objetivo determinar buenas rutas desde los 1470 emisores a los receptores, a través de la red de routers de manera tal de 1471 calcular la tabla de enrutamiento más optima. Normalmente, una "buena ruta" es 1472 aquella que tiene el coste mínimo. El **coste mínimo** es la ruta cuyo valor 1473 total de métrica acumulada es el más bajo entre todas las posibles rutas hacia 1474 un destino, generalmente se toma la sumatoria del costo de todos los enlaces de 1475 la ruta. El costo de un enlace se asigna de acuerdo al protocolo de ruteo 1476 utilizado. 1477 1478 <!-- 1479 Los algoritmos de ruteo más comunes son estado de enlace (Link State, LS) y 1480 vector distancia (Distance Vector, DV). Los algoritmos de tipo vector distancia 1481 son más antiguos, o primitivos, el mas conocido de este tipo es RIP y su version 1482 actualizada RIPv2. Los algoritmos link state son más modernos y utilizan 1483 algoritmos más avanzados, por ejemplo el algoritmo de Dijkstra para determinar 1484 la ruta más corta. 1485 --> 1486 1487 #### Protocolos de ruteo 1488 1489 Los protocolos de ruteo, como se mencionó previamente, definen como se 1490 intercambian los mensajes entre los nodos, cada cuanto tiempo, el formato del 1491 mensaje, etc., recolectan información de la red y ejecutan algoritmos sobre la 1492 información recolectada para determinar la ruta más optima. Los protocolos de 1493 ruteo se diferencian principalmente en internos y externos, los protocolos de 1494 ruteo interno (Interior Gateway Protocols, IGP) se utilizan dentro de un sistema 1495 autónomo mientras que los protocolos de ruteo externo (Exterior Gateway 1496 Protocols, EGP)[^2] se utilizan entre sistemas autónomos. Los protocolos de 1497 ruteo interno se pueden clasificar según el tipo de algoritmo que ejecutan, 1498 siendo los más conocidos los protocolos de distancia vectorial y los protocolos 1499 de estado de enlace. 1500 1501 [^2]: Hay que tener en cuenta que también existe un protocolo de ruteo externo 1502 obsoleto con las mismas siglas y un nombre parecido: Exterior Gateway 1503 Protocol, EGP. 1504 1505 Los protocolos de tipo vector distancia son más antiguos, o primitivos, el más 1506 conocido de este tipo es RIPv1 y la version actualizada RIPv2 (también existe 1507 para direcciones IPv6). Los algoritmos link state son más modernos y utilizan 1508 algoritmos más avanzados, por ejemplo el algoritmo de Dijkstra, para determinar 1509 la ruta más corta. El protocolo más conocido de tipo link state es SPF y su 1510 version abierta OSPF. 1511 1512 #### Vector distancia 1513 1514 <!-- 1515 Contra: se pueden generar lazos ya que solo se conoce la información (tabla de 1516 ruteo) de los nodos adyacentes. 1517 --> 1518 1519 En los protocolos de ruteo de vector distancia (Distance Vector, DV) la mejor 1520 ruta se determina aplicando el algoritmo de Bellman-Ford. Este algoritmo calcula 1521 los caminos mínimos desde un router origen hacia todos los demás routers, para 1522 esto cada router debe mantener una tabla con destino, costo y next-hop. La tabla 1523 de cada nodo se actualiza de acuerdo a actualizaciones periódicas que recibe de 1524 sus nodos adyacentes. Esta tabla de ruteo en cada router no contiene informacion 1525 de toda la red, si no mas bien de los routers adyacentes. 1526 1527 \begin{figure}[H] 1528 \centering 1529 \begin{subfigure}[t]{0.65\columnwidth} 1530 \centering 1531 \includegraphics[width=\linewidth]{img/tabla-de-ruteo.png} 1532 \label{fig:tabla-ruteo-dv} 1533 \end{subfigure} 1534 \vspace{-1em} 1535 \caption{Tabla de ruteo de un nodo} 1536 \label{fig:ej-arboles} 1537 \end{figure} 1538 1539 El mejor camino desde un punto a otro se determina de manera iterativa por la 1540 ecuación de Bellman-Ford, la cual se muestra en (\ref{eq:bellman-ford}) y dice 1541 que la mejor ruta desde $x$ hasta $y$ es aquella que pasa por el vecino $v$ que 1542 minimiza la suma, es decir, la mejor ruta es aquella que minimiza el costo hacia 1543 el vecino sumado el menor costo del vecino hacia el destino. Dado que la 1544 ecuación de Bellman-Ford es recursiva, ya que depende del costo del nodo 1545 adyacente y este de su adyacente, etc. es posible que se formen lazos y la 1546 ecuación resulte infinita. 1547 1548 \vspace{-2em} 1549 \begin{align} 1550 D_{x}(y) = \min_{v\ \in\ vecinos} \left\{\ c(x,v) + D_{v}(y)\ \right\} 1551 \label{eq:bellman-ford} 1552 \end{align} 1553 \vspace{-1.5em} 1554 1555 La métrica (o costo del enlace, también llamado distancia) se mide teniendo en 1556 cuenta parámetros como la velocidad del enlace, la latencia o condiciones de la 1557 red. En muchos casos simplemente se toma la métrica como la cantidad de saltos 1558 (o distancia) de un punto a otro, por ejemplo para un enlace punto a punto la 1559 métrica es 1. 1560 1561 <!-- 1562 El costo de cada salto depende de la implementacion del algoritmo, por ejemplo 1563 en RIP el costo es la cantidad de saltos, pero en 1564 1565 Este proceso de intercambio ocurre continuamente cada un período de 1566 tiempo determinado por el protocolo, por ejemplo para RIPv1 es de 30 segundos. 1567 --> 1568 1569 ##### RIP 1570 1571 El protocolo de información de rutas (Routing Information Protocol, RIP) fue uno 1572 de los primeros protocolos de ruteo interno dinámico basado en vector distancia. 1573 Utiliza como métrica la cantidad de saltos y se limita a 15 para prevenir el 1574 problema de lazos infinitos, esto pone un limita el tamaño de la red. Si la 1575 distancia entre un punto y otro en la red es mayor a 15, entonces se considera 1576 distancia **infinita** y por tanto ese punto es inalcanzable. El protocolo RIP 1577 implementa también los mecanismos de horizonte dividido (Split Horizon) y 1578 envenenamiento de ruta (Route Poisoning) para prevenir lazos. 1579 1580 Por ser un algoritmo de distancia vectorial los routers comparten su tabla de 1581 ruteo con los routers adyacentes mediante actualizaciones periódicas. En RIP las 1582 actualizaciones por defecto ocurren cada 30 segundos, aunque este es un 1583 parámetro que en muchos casos es configurable. 1584 1585 En la primer version de RIP, RIPv1, los routers realizan peticiones a los 1586 routers adyacentes mediante mensajes RIP de tipo request con la dirección de 1587 broadcast 255.255.255.255, estos mensajes se encapsulan en paquetes UDP y se 1588 utiliza el puerto 520. Si bien los mensajes llevan la dirección de broadcast, 1589 los routers adyacentes no reenvían este tipo de mensajes. Un router que recibe 1590 un mensaje de petición del protocolo RIPv1 responde con su tabla de ruteo, con 1591 esta información el router que hizo la petición originalmente actualiza su 1592 tabla. Estos mensajes se originan en cada router de la red al momento de 1593 intercambiar información, lo que causa trafico en la red periódicamente. 1594 1595 En la segunda version del protocolo, RIPv2, se agrega soporte para la mascara de 1596 red (CIDR) ya que en la primer version solo soporta direccionamiento con clases. 1597 También se cambia la dirección de broadcast 255.255.255.255 por una multicast 1598 224.0.0.9, esto provoca que solo los routers que ejecuten el protocolo RIPv2 1599 escuchen esa dirección, reduciendo la carga innecesaria en otros dispositivos de 1600 la red. La segunda version añadió soporte para autenticación (mediante texto 1601 plano o MD5) esto previene que alguien conecte un router malicioso y "envenene" 1602 las tablas de ruteo de tu red. 1603 1604 El protocolo RIP en general tiene un tiempo de convergencia lento, ya que la 1605 información se actualiza en intervalos relativamente grandes (30 segundos). Por 1606 ejemplo si un enlace se cae se debe esperar ese tiempo hasta que se actualicen 1607 las tablas de ruteo. Además si pasan 180 segundos sin recibir actualizaciones de 1608 un router adyacente se marca la ruta como dudosa y si pasan 240 segundos se 1609 elimina por completo esa ruta de la tabla de ruteo. 1610 1611 <!-- 1612 La primer versión del protocolo RIP, RIPv1, se publicó en 1988. Un router luego 1613 de configurarse el protocolo y pasados 30 segundos (el timer por defecto) emite 1614 un datagrama de petición RIPv1 a la dirección broadcast (dirección 1615 255.255.255.255) a todas las interfaces con RIPv1 habilitado. Luego los 1616 dispositivos corriendo el mismo protocolo responde con su tabla de ruteo. El 1617 router que hace la peticion es quien actualiza su tabla de ruteo con las 1618 respuestas que obtiene de los nodos adyacentes. 1619 --> 1620 1621 ###### Split horizon 1622 1623 Compensa los efectos de la cuenta a infinito, o lazos, prohibiendo a los routers 1624 enviar información a través de una ruta por la que aprendieron esa ruta, por 1625 ejemplo un router A aprende una ruta debido a información que le llega del 1626 router adyacente B, entonces si el router adyacente B realiza una petición a A, 1627 este no le enviara esa ruta que aprendió previamente de B. 1628 1629 En split horizon con poison reverse si un enlace se cae las rutas comparten de 1630 todas formas pero con métrica infinita (por convención 16), sin poison reverse 1631 simplemente no se compartían las rutas. 1632 1633 #### Estado de enlace 1634 1635 En los algoritmos de estado de enlace (Link State, LS) cada nodo dispone de un 1636 mapa completo de la red en forma de grafo (se pueden representar como tablas) y 1637 entre nodos adyacentes se intercambian sus mapas completos. Cada router luego 1638 independientemente ejecuta un algoritmo de ruteo para determinar las rutas 1639 optimas entre ese router y todos los posibles destinos de la red. La colección 1640 de rutas optimas determinada por el algoritmo formará la tabla de ruteo. 1641 1642 #### SPF/OSPF 1643 1644 El camino más corto primero (Shortest Path First, SPF) es un protocolo de 1645 ruteo interno de tipo link state que calcula el coste mínimo desde un router 1646 hacia todos los demás nodos en la red. En la practica es el algoritmo de 1647 Dijkstra aplicado a enrutamiento. 1648 1649 <!-- 1650 El coste mínimo se asigna por el protocolo de enrutamiento y un protocolo muy 1651 conocido es el proceso abierto del camino más corto primero (Open Shortest Path 1652 First, OSPF). OSPF es un protocolo de enrutamiento interior (IGP) de tipo estado 1653 de enlace (link-state), utilizado dentro de un Sistema Autónomo (AS). 1654 --> 1655 1656 #### BGP 1657 1658 El protocolo de puerta de enlace de frontera (Border Gateway Protocol, BGP) es 1659 un protocolo de ruteo externo que se utiliza entre sistemas autónomas para 1660 intercambiar información de ruteo garantizando que estas estén libres de bucles. 1661 Es el protocolo principal de publicación de rutas utilizado por las compañías 1662 más importantes de ISP en Internet. 1663 1664 A diferencia de los protocolos de ruteo internos (IGP), como RIP u OSPF, no se 1665 usan métricas como número de saltos, ancho de banda o retardos. En cambio, BGP 1666 toma decisiones de encaminamiento basándose en políticas de la red (**Policy 1667 Based Routing, PBR**), o reglas que utilizan varios atributos de ruta. Los 1668 protocolos de ruteo basados en políticas, PBR, permiten seleccionar la ruta de 1669 un paquete según criterios como origen, protocolo, puerto, tipo de tráfico o 1670 marca, en lugar de usar solo la tabla de ruteo tradicional. 1671 1672 ### SDN 1673 1674 En las Redes definidas por software (Software-defined Networks, SDN) los 1675 dispositivos de red (switches, routers, etc) no tienen funciones asignadas como 1676 en las redes tradicionales, si no que un controlador centralizado les asigna una 1677 función. En términos conceptuales, se puede decir que en una red definida por 1678 software el plano de control de una red esta administrado por un solo 1679 controlador. 1680 1681 Por definición una red se dice definida por software si el plano de control esta 1682 separado físicamente del plano de datos, y se tiene un único plano de control 1683 para controlar todos los dispositivos de forwarding. 1684 1685 Un flujo describe un conjunto de paquetes transferidos desde un dispositivo de 1686 la red a otro dispositivo. 1687 1688 Policy-Based Routing (PBR) es un mecanismo de configuración en dispositivos 1689 tradicionales, mientras que SDN (Software-Defined Networking) es una 1690 arquitectura completa de red con separación explícita entre control y datos. 1691 1692 PBR permite que el router tome decisiones de encaminamiento basadas en políticas 1693 distintas a la tabla de ruteo normal. 1694 1695 #### Interfaz norte 1696 1697 La interfaz norte es una API que permite tener acceso a información de la 1698 topología de bajo nivel de red (dispositivos, enlaces y hosts), y proporcionan 1699 una variedad de abstracciones para afectar el estado de la red. 1700 1701 <!-- 1702 Es la interfaz norte (Northbound Interface) que comunica el Controlador SDN con 1703 las Aplicaciones de Red. 1704 1705 Función: Permite que los desarrolladores "le digan" a la red qué quieren que 1706 pase, sin saber nada del hardware. Es como el panel de control donde el 1707 administrador programa políticas de seguridad, balanceo de carga o calidad de 1708 servicio (QoS). 1709 1710 Protocolos comunes: Generalmente utiliza REST APIs (JSON/XML). 1711 1712 La interfaz norte es una API que permite tener acceso a información de la 1713 topología de bajo nivel de red (dispositivos, enlaces y hosts), y proporcionan 1714 una variedad de abstracciones para afectar el estado de la red. 1715 --> 1716 1717 #### Interfaz sur 1718 1719 La interfaz sur es una API a través de la cual el núcleo del controlador 1720 interactúa con el entorno de red. Ejemplos de esta interacción son por ejemplo 1721 la obtención de estadísticas y la modificación del comportamiento de los 1722 switches. Los dos protocolos que pueden realizar esta función son OpenFlow y P4. 1723 1724 <!-- 1725 Es la interfaz sur (Southbound Interface) que comunica el Controlador SDN con 1726 los Dispositivos Físicos (Switches y Routers). 1727 1728 Función: Traduce las políticas generales del controlador en instrucciones 1729 técnicas que el hardware entiende para mover los paquetes. Aquí es donde se 1730 "empujan" las reglas a las tablas de flujo. 1731 1732 Protocolos comunes: OpenFlow, NETCONF, P4Runtime, SNMP o BGP. 1733 1734 Analogía: Es el gerente bajando a la fábrica para decirle a cada máquina 1735 exactamente qué tornillo apretar. 1736 1737 Es una API a través de la cual el núcleo del controlador interactúa con el 1738 entorno de la red. Ejemplos de esta interacción son por ejemplo la obtención de 1739 estadísticas y la modificación del comportamiento de los switches. Los dos 1740 protocolos que pueden realizar esta función son OpenFlow y P4. 1741 --> 1742 1743 ### OpenFlow 1744 1745 El protocolo OpenFlow opera entre un controlador SDN y un conmutador controlado 1746 por SDN u otro dispositivo que implemente la API OpenFlow. El protocolo OpenFlow 1747 funciona sobre TCP, siendo su número de puerto predeterminado el 6653. 1748 1749 ### P4 1750 1751 P4 es un lenguaje de programacion diseñado especificamente para controlar planos 1752 de reenvío de paquetes en dispositivos de red, como routers y switches. 1753 1754 La API P4Runtime es una especificación del plano de control para controlar los 1755 elementos del plano de datos de un dispositivo definido o descrito por un 1756 programa P4. 1757 1758 ### Tablas de flujos 1759 1760 La Tabla de Flujos (Flow Table) es el componente fundamental dentro de un switch 1761 (como uno que soporte OpenFlow) que le dice exactamente qué hacer con cada 1762 paquete que llega. 1763 1764 Si en una red tradicional el switch decide por su cuenta basándose en la 1765 dirección MAC o IP, en SDN el switch lo hace basandose en las reglas que el 1766 controlador ha instalado en estas tablas. En la tabla \ref{tab:ej-tabla-flujo} 1767 se muestra un ejemplo de tabla de flujo. 1768 1769 \begin{table}[h] 1770 \centering\small 1771 \setlength{\arrayrulewidth}{0.5pt} 1772 \begin{tabularx}{\linewidth} 1773 {|>{\centering\arraybackslash}p{55pt}| 1774 >{\centering\arraybackslash}p{53pt}| 1775 >{\centering\arraybackslash}p{30pt}| 1776 >{\centering\arraybackslash}X|} 1777 \hline 1778 \textbf{Match} & \textbf{Action} & \textbf{Priority} & \textbf{Counter} \\ \hline 1779 ip\_src=10.*.*.* & forward(eth1) & 100 & \\ \hline 1780 in\_port=eth0 & drop & 100 & \\ \hline 1781 \end{tabularx} 1782 \caption{Ejemplo de tabla de flujo} 1783 \label{tab:ej-tabla-flujo} 1784 \end{table} 1785 1786 ## Nivel de enlace 1787 1788 Para que un datagrama pueda ser transferido desde el host de origen al de 1789 destino, debe moverse a través de cada uno de los enlaces individuales que 1790 forman la ruta extremo a extremo. En un determinado enlace, un nodo transmisor 1791 encapsula el datagrama en una trama de la capa de enlace y transmite la trama a 1792 través del enlace. En su mayor parte, la capa de enlace se implementa en un 1793 adaptador de red, también denominado a veces tarjeta de interfaz de red (Network 1794 Interface Card, NIC). A los adaptadores de red se les asigna una dirección de la 1795 capa de enlace, un host o un router con múltiples interfaces de red tendrá 1796 asociadas, por tanto, múltiples direcciones de la capa de enlace. 1797 1798 A las direcciones de la capa de enlace se las denomina de multiples formas, como 1799 **dirección LAN**, **dirección física** o **dirección MAC**, siendo esta ultima 1800 la mas utilizada. En la mayoría de las redes LAN la dirección MAC tiene 6 bytes 1801 de longitud y se suelen expresar en notación hexadecimal, indicándose cada byte 1802 mediante una pareja de números hexadecimales y cada pareja separada por dos 1803 puntos o guiones, por ejemplo `00:1A:2B:3C:4D:5E` o `1A-23-F9-CD-06-9B`, pero 1804 existen otros formatos validos. 1805 1806 ### ARP 1807 1808 Dado que existen tanto direcciones de la capa de red (por ejemplo, direcciones 1809 IP de Internet) como direcciones de la capa de enlace (es decir, direcciones 1810 MAC), surge la necesidad de una traducción entre ellas. En Internet, esta tarea 1811 la lleva a cabo el protocolo ARP (Address Resolution Protocol, Protocolo de 1812 resolución de direcciones) 1813 1814 Un módulo ARP en el host emisor toma como entrada cualquier dirección IP de la 1815 misma LAN y devuelve la dirección MAC correspondiente. En nuestro ejemplo, el 1816 host emisor 222.222.222.220 proporciona a su módulo ARP la dirección IP 1817 222.222.222.222 y el módulo ARP devuelve la correspondiente dirección MAC 1818 49:BD:D2:C7:56:2A. 1819 1820 Un mensaje ARP de consulta se envía dentro de una trama de difusión, la cual a 1821 nivel de enlace es, FF:FF:FF:FF:FF:FF, esto hace que la reciban todas las 1822 interfaces dentro de esa misma red, el mensaje ARP de respuesta se envía dentro 1823 de una trama estándar. 1824 1825 Un paquete ARP se encapsula dentro de una trama de la capa de enlace y así se 1826 sitúa, arquitectónicamente, encima de la capa de enlace. Sin embargo, un paquete 1827 ARP dispone de campos que contienen direcciones de la capa de enlace, por lo que 1828 se podría decir que es un protocolo de la capa de enlace, pero también contiene 1829 direcciones de la capa de red y, por tanto, podría también argumentarse que es 1830 un protocolo de la capa de red. 1831 1832 <!-- 1833 ### Comprobación de errores 1834 1835 Quizá la forma más simple de detección de errores sea el uso de un único bit de 1836 paridad. 1837 --> 1838 1839 ### Redes LAN 1840 1841 Las redes de area local (Local Area Network, LAN) son redes de computadoras que 1842 históricamente cubren un área geográfica pequeña, como una habitación, una casa, 1843 un edificio o un campus reducido y utiliza tecnologías de alta velocidad como 1844 Ethernet o Wi-Fi. 1845 1846 Para acceder al medio en una red alámbrica existe un mecanismo denominado 1847 mecanismo de acceso múltiple por detección de portadora con detección de 1848 colisiones (Carrier Sense Multiple Access with Collision Detection, CSMA/CD) 1849 1850 Una **colisión** puede ocurrir al comienzo de la transmisión, cuando dos estaciones 1851 desean transmitir al mismo tiempo, censan el medio y detectan que el canal 1852 no esta ocupado, comienza a transmitir y se produce la colisión. Es por esto que 1853 por convención se considera que solo puedo ocurrir una colisión de este estilo 1854 durante la transmisión de los primeros 512 bits de la trama, ya que si no 1855 ocurrió una colisión en esos bits es correcto asegurar que no habrá colisión al 1856 transmitir los siguientes bits. Tomar por convención los primeros 512 bits de la 1857 trama fija una distancia maxima de enlace, la cual esta determinada por la 1858 velocidad de propagación de los bits por el enlace. Un host debe estar censando 1859 el medio por el tiempo que tarda la propagación de los 512 bits hasta el otro 1860 extremo de la red y vuelta. 1861 1862 Una retransmisión (algoritmo de back-off) solo ocurre si se detecta una 1863 colisión. Si un receptor detecta algún error en la trama **no** se retransmite, 1864 si no que se descarta esa trama. 1865 1866 Redes LAN como dominio de broadcast y red LAN de medio compartido son dos 1867 conceptos diferentes, el primero hace referencia a una misma red en la que tiene 1868 alcance una misma trama de broadcast, mientras que en la red de medio compartido 1869 se hacer referencias a las redes que acceden al mismo medio, por ejemplo 1870 mediante un Hub o porque están conectados mediante cable coaxial. La red LAN 1871 de medio compartido también se conoce como dominio de colisión. 1872 1873 #### Ethernet 802.3 1874 1875 Para transmitir en el protocolo Ethernet 802.3 half-duplex se siguen los 1876 siguientes pasos: 1877 1878 1. Se censa la red, si la red no esta disponible se espera a que lo esté. 1879 2. Luego de detectar que la red esta disponible se espera un Interframe Gap 1880 (IFG) el cual por convención es una transmisión de 96 bits, este tiempo esta 1881 determinado por la velocidad de la red, por ejemplo para 100 Mbps se tiene 1882 0.96 microsegundos $\frac{96\ bits}{100\ bits/s}$ 1883 3. Se deshabilita la detección de colisiones. 1884 4. Se transmite el preámbulo y delimitador de inicio de trama (start of frame 1885 delimiter, SFD). El preámbulo son 7 bytes de la forma 10101010 repetidos y 1886 el SFD es 10101011. 1887 5. Se habilita la detección de colisiones. 1888 6. Se transmiten los primeros 512 bits de la trama y durante este tiempo se 1889 detectan colisiones. Si ocurre una colisión se detiene la transmisión y se 1890 transmite una señal de Jam (señal de 32 bits) lo que hace que todas las 1891 estaciones en la red detecten la colisión y descarten la trama. Si no se 1892 detecta colisión durante estos primeros 512 bits, se deshabilita la detección 1893 de colisiones y se transmite el resto de la trama. 1894 1895 1896 Si la red es full-duplex, el comportamiento cambia de forma fundamental respecto 1897 a Ethernet half-duplex. 1898 1899 1. No existe CSMA/CD: 1900 En full-duplex: 1901 No hay detección de portadora previa obligatoria. 1902 No existen colisiones. 1903 No se usa señal de jam. 1904 No hay backoff exponencial. 1905 CSMA/CD solo aplica a medios compartidos (bus o hubs). 1906 1907 2. Por qué no hay colisiones: 1908 En full-duplex el enlace es: 1909 Punto a punto (host ↔ switch). 1910 Con canales físicos separados: 1911 Un par para transmisión (TX). 1912 Un par para recepción (RX). 1913 Ambos dispositivos pueden transmitir simultáneamente sin interferencia eléctrica. 1914 No hay dominio de colisión. 1915 1916 En los switches modernos todas las interfaces trabajan en modo full-duplex. 1917 1918 La longitud de la trama minima en Ethernet es de 64 bytes (o 512 bits) esto se 1919 impuso históricamente en medios con CSMA/CD para prevenir colisiones y aun 1920 hoy en día en redes modernas sin CSMA/CD se sigue utilizando para mantener 1921 compatibilidad con redes antiguas. La longitud de trama minima esta fijado para 1922 las longitud de redes y velocidades convencionales pero puede cambiar (siempre 1923 que se utilice CSMA/CD en half-duplex) para grandes extinciones de enlace. Lo 1924 que se debe asegurar es que el tiempo de transmisión de la trama $T_{trama}$ 1925 debe ser mayor o igual al tiempo de ida y vuelta de propagación (RTT). Entonces 1926 la condición fija lo siguiente para un enlace de longitud $L$ y velocidad de 1927 propagación $v$. 1928 1929 \vspace{-1em} 1930 $$T_{trama} \ge T_{RTT} = 2\cdot \frac{L}{v} 1931 \Rightarrow T_{trama} \ge 2\cdot \frac{L}{v}$$ 1932 1933 Si la trama tiene $N$ bits y el enlace tiene velocidad $R$ (en bits por 1934 segundo), entonces el tiempo de la trama en el cable resulta: 1935 1936 \vspace{-1em} 1937 $$\text{si } T_{trama} = \frac{N}{R}\quad \Rightarrow N_{min} = \frac{NRL}{v}$$ 1938 1939 ### VLAN 1940 1941 Las redes de area local virtuales (Virtual Local Area Network, VLAN) permiten 1942 usar la infraestructura existente para dar servicio a multiples redes (o 1943 dominios de broadcast). Se pueden implementar en uno o más switches aunque 1944 existen routers que también permiten implementarlas. Estas redes virtuales 1945 permiten crear redes aisladas utilizando la misma infraestructura e incluso los 1946 mismos enlaces. Las redes VLAN crean dominios de broadcast separados y si se 1947 desean interconectar dos redes VLAN diferentes se debe recurrir a dispositivos 1948 de nivel de red, routers, ya que es la única manera de conectar redes de acceso. 1949 1950 Las redes VLAN se identifican entre switches (dispositivos de la capa de enlace) 1951 para esto utilizan un formato especifico de trama Ethernet. Los puertos entre 1952 switches pueden ser de tipo troncal (trunk) o de acceso (access). A través de 1953 los enlaces de tipo troncal los switches se comunican utilizando tramas Ethernet 1954 con un campo especifico de VLAN, mientras que a través de los enlaces de acceso 1955 se comunican utilizando tramas Ethernet convencionales (sin un campo para VLAN). 1956 1957 ### Spanning Tree Protocol 1958 1959 Spanning Tree Protocol (STP) y la version más moderna Rapid Spanning Tree 1960 Protocol (RSTP) sirven para evitar enlaces redundantes en redes Ethernet 802.3. 1961 Si se detecta un ciclo extra entre switches se ejecuta un algoritmo que 1962 deshabilita ese enlace redundante. Los bridges o switches que ejecutan el 1963 algoritmo intercambian información con mensajes de control denominados Bridge 1964 Protocol Data Unit (o BPDU). El BPDU siempre tiene dirección de destino 1965 01:80:C2:00:00:00. 1966 1967 * Detectan posibles ciclos entre switches. 1968 * Construyen una topología lógica sin bucles (en forma de árbol). 1969 * Bloquean enlaces redundantes. 1970 * Reactivan enlaces alternativos si falla el principal. 1971 1972 La diferencia principal entre ambas versiones es que la version RSTP converge 1973 mucho más rápido a la topología sin bucles que STP, ya que es más eficiente. 1974 1975 El **bridge identifier** (BID) es un identificador de cada bridge (o switch) que 1976 ocupa 8 bytes y se determina por la dirección MAC del bridge (6 bytes) y un 1977 numero de prioridad (2 bytes) configurable. 1978 1979 El **root bridge** (o switch) es el switch con el menor BID (aquel con el valor más 1980 bajo) y puede haber solo un root bridge por dominio broadcast. 1981 1982 El **root path cost** es el camino con menor costo desde un switch, o segmento 1983 de red, hasta el root bridge. Se calcula sumando el costo de cada enlace. Todos 1984 los switches y enlaces de red tienen un root path cost asociado, y por 1985 convención el del root bridge es cero. 1986 1987 #### Estados de los puertos 1988 1989 El algoritmo RSTP asigna a cada puerto uno de tres estados: 1990 1991 * Discarding (D): no participa en la topología de la red y no aprende direcciones 1992 MAC. 1993 * Learning (L): se aprenden las direcciones MAC pero no envía ni recibe tramas. 1994 * Forwarding (F): aprende direcciones MAC y envía y recibe tramas. 1995 1996 #### Roles de los puertos 1997 1998 El algoritmo RSTP asigna a cada puerto un rol: 1999 2000 * Root port (RP): es el puerto donde se enviarán y recibirán tramas en dirección 2001 al root bridge. 2002 * Designated port (DP): es el puerto que envía el mejor BPDU al segmento donde 2003 esta conectado, en otras palabras, es el puerto que tiene el mejor camino 2004 hacia el Root Bridge dentro de ese segmento. 2005 * Alternate port (AP): provee un camino alternativo al provisto por el RP en 2006 dirección al root bridge. 2007 * Backup port (BP): provee un camino alternativo al provisto por el DP en 2008 dirección al root bridge. 2009 * Disabled port (DP): no se utiliza en la operación de RSTP. No recibe ni 2010 transmite BPDUs. 2011 2012 ### Redes inalámbricas 2013 2014 En redes inalámbricas los estándares que predominan son los del Instituto de 2015 Ingenieros Eléctricos y Electrónicos (Institute of Electrical and Electronics 2016 Engineers, IEEE). En particular el estándar 802.11 de 1997 y todas sus 2017 modificaciones, como 802.11a, 802.11b, 802.11g, 802.11n, 802.11ac, etc. Por lo 2018 general los medios de transmisión inalámbricos son de naturaleza half-duplex. 2019 2020 #### Puntos de acceso 2021 2022 Un punto de acceso (Access Point, AP, o también Wireless Access Point, WAP) es 2023 un dispositivo de red que actúa como puente entre dispositivos inalámbricos 2024 (como celulares, laptops, etc.) y una red cableada, por lo general una red 2025 Ethernet. 2026 2027 Para que un dispositivo inalámbrico pueda transmitir datos en una red 2028 debe haber sido asociado y autenticado en la red por el AP. 2029 2030 En primer lugar el dispositivo sin autenticar y sin estar asociado comienza a 2031 mandar tramas de gestión (o probe requests) los cuales se envían en todos los 2032 canales y en todas las bandas un canal y una banda a la vez, de esta forma se 2033 descubren las redes inalámbricas. 2034 2035 Cuando un Access Point (AP) está en modo **infraestructura**, significa que 2036 opera como punto central de comunicación y permite que los dispositivos 2037 inalámbricos se conecten a una red cableada o a otros dispositivos a través de 2038 él. Los clientes inalámbricos no se comunican directamente entre sí. Todo el 2039 tráfico pasa por el AP. El AP normalmente está conectado a un switch o router. 2040 2041 Otros modos incluyen, bridge, repetidor, mesh y monitor. En el modo **bridge** 2042 se interconectan redes cableadas mediante un enlace inalámbrico, y no se acepta 2043 la conexión de otros clientes inalámbricos (es una conexión punto a punto). En 2044 el modo **repetidor**, dos puntos de acceso se conectan de manera inalámbrica de 2045 manera tal de extender el rango del enlace inalámbrico, es decir, se retransmite 2046 la señal del AP original. El modo **mesh** es similar al modo repetidor pero se 2047 pueden interconectar más de un AP, y no se tiene un AP principal si no que las 2048 rutas entre diferentes APs inalámbricos es dinámica. Por ultimo en el modo 2049 **monitor** el AP solo escucha el trafico inalámbrico de la red. 2050 2051 #### Sistema distribuido 2052 2053 En el estándar 802.11, el sistema distribuido (o Distributed System, DS) es el 2054 sistema que interconecta múltiples puntos de acceso (APs) y permite que las 2055 distintas redes inalámbricas funcionen como una sola red. 2056 2057 #### MAC 802.11 2058 2059 El estándar MAC 802.11 impone un mecanismo de acceso al medio que permite el 2060 acceso justo y equitativo a todas las estaciones que lo deseen. En este estándar 2061 se utiliza acceso múltiple por detección de portadora con evitación de 2062 colisiones (Carrier Sense Multiple Access with Collision Avoidance, CSMA/CA) en 2063 lugar de CSMA/CD para acceder al medio, esto porque los puntos de acceso (Access 2064 Point, AP) no tienen la posibilidad de detectar colisiones como si ocurre en los 2065 medios por cable. Puesto que no se pueden detectar las colisiones, el mecanismo 2066 CSMA/CA implementa un sistema en el que cada AP debe transmitir una trama de 2067 reconocimiento (Acknowledge, ACK) cuando recibe una trama. 2068 2069 Los principales mecanismos que hacen al estándar 802.11 son: el censado de 2070 portadora (Carrier Sense, CS), la función de coordinación distribuida 2071 (Distributed Coordination Function, DCF), las tramas de reconocimiento 2072 (Acknowledgment Frames, ACK) y las peticiones de envió y recepción (Request to 2073 Send/Clear to Send, RTS/CTS). 2074 2075 El mecanismo de **acceso múltiple por detección de portadora** con **evitación 2076 de colisiones** (Carrier Sense Multiple Access with Collision Avoidance, 2077 **CSMA/CA**) es un mecanismo que permite a un dispositivo inalámbrico verificar 2078 si el medio de transmisión esta libre antes de enviar datos. La principal 2079 diferencia con CSMA/CD utilizado en Ethernet 802.3 es que con CSMA/CA se 2080 verifica el estado de la red previo a enviar información, mientras que en 2081 CSMA/CD se envían los datos y se detecta si hubo colisión durante la 2082 transmisión. 2083 2084 Además del mecanismo CSMA/CA para acceder al medio se utiliza otro mecanismo de 2085 "censado virtual" el cual se denomina **vector de asignación de red** (Network 2086 Allocation Vector, **NAV**) con este mecanismo las tramas MAC 802.11 llevan un 2087 campo de duración en el que se especifica cuanto tiempo se necesitará para 2088 transmitirla y por consiguiente por cuanto tiempo el medio estará ocupado. Las 2089 estaciones escuchando el medio inalámbrico leen también ese campo de duración y 2090 actualizan su timer interno de NAV el cual les indica por cuanto tiempo deberán 2091 esperar al medio. 2092 2093 El **problema del nodo oculto** ocurre cuando dos nodos en una misma red no se 2094 escuchan entre si y por tanto no pueden actualizar el timer NAV. 2095 2096 ##### DCF 2097 2098 La **función de coordinación distribuida** (Distributed Coordination Function, 2099 **DCF**) es un método de acceso al medio que utiliza los mecanismos de CSMA/CA y 2100 NAV para regular como dispositivos acceden a una red inalámbrica de manera tal 2101 que no haya colisiones. 2102 2103 En DCF cada estación que desee transmitir una trama debe esperar un intervalo 2104 especifico de tiempo antes de que el medio este disponible. Este intervalo de 2105 tiempo se conoce como espacio de inter-frame distribuido (Distributed 2106 Inter-Frame Space, **DIFS**). 2107 2108 \begin{table}[h] 2109 \centering\small 2110 \setlength{\arrayrulewidth}{0.5pt} 2111 \begin{tabularx}{\linewidth} 2112 {|>{\centering\arraybackslash}p{75pt}| 2113 >{\centering\arraybackslash}p{60pt}| 2114 >{\centering\arraybackslash}X|} 2115 \hline 2116 \textbf{Standard} & \textbf{Slot Time ($\mu$s)} & \textbf{DIFS ($\mu$s)} \\ \hline 2117 802.11b & 20 & 50 \\ \hline 2118 802.11a & 9 & 34 \\ \hline 2119 802.11g & 9 or 20 & 28 or 50 \\ \hline 2120 802.11n (2.4 GHz) & 9 or 20 & 28 or 50 \\ \hline 2121 802.11n (5 GHz) & 9 & 34 \\ \hline 2122 802.11ac & 9 & 34 \\ \hline 2123 \end{tabularx} 2124 \caption{Valores de tiempo de slots y DIFS de acuerdo al estandar 802.11} 2125 \label{tab:ieee-80211-times} 2126 \end{table} 2127 2128 Luego de que termine el DIFS todas las estaciones que deseen transmitir deben 2129 competir por el medio, para competir cada estación selecciona una cantidad de 2130 slots de tiempo aleatorio entre 0 y el valor de **la ventan de contención** 2131 (Contention Window, CW). El valor de la ventana de contención es dinámico, y 2132 cambia según el éxito o fracaso de las transmisiones. Se fijan dos limites para 2133 la ventana de contención el mínimo y el máximo, estos limites dependen del 2134 estándar, pero típicamente se fijan en 15 slots y 1033 slots, respectivamente. 2135 La ventana crece mediante un algoritmo denominado **retroceso exponencial 2136 binario** (Binary Exponential Backoff, BEB) en el cual si al terminar los slots 2137 de tiempo se transmite y no se recibe un ACK por parte del AP se duplica el 2138 valor de la ventana, se vuelven a elegir slots de tiempo aleatorios y se vuelve 2139 a retransmitir. Esto puede ocurrir por ejemplo si dos estaciones obtienen el 2140 mismo numero de slots, o si dos estaciones terminan sus slots al mismo tiempo. 2141 2142 \begin{figure}[ht] 2143 \centering 2144 2145 \begin{tikzpicture}[ 2146 box/.style={draw, very thick, minimum height=0.6cm, minimum width=0.65cm}, 2147 sifs/.style={draw, very thick, minimum height=0.6cm, minimum width=1.20cm}, 2148 pifs/.style={draw, very thick, minimum height=0.6cm, minimum width=1.85cm}, 2149 difs/.style={draw, very thick, minimum height=0.6cm, minimum width=2.50cm} 2150 ] 2151 2152 % Parámetros de separación 2153 \def\hsep{0.3} 2154 \def\vsep{1.0} 2155 2156 % --- Slot Time --- 2157 \node[box, anchor=west] (slot) at (0,0) {}; 2158 \node at (2.0,0) (slottxt) {\textbf{Slot}}; 2159 \draw[->, very thick] (slottxt.west) -- ($(slot.east)+(0.20,0)$); 2160 2161 % --- SIFS --- 2162 \node[sifs, anchor=west] at (0,-\vsep) {\textbf{SIFS}}; 2163 2164 % --- SIFS + Slot = PIFS --- 2165 \node[sifs, anchor=west] (sifs2) at (0,-2*\vsep) {\textbf{SIFS}}; 2166 \node at ($(sifs2.east)+(\hsep,0)$) {\Large\textbf{+}}; 2167 \node[box] at ($(sifs2.east)+(0.9,0)$) {}; 2168 \node at ($(sifs2.east)+(1.5,0)$) {\Large\textbf{=}}; 2169 \node[pifs] at ($(sifs2.east)+(3.0,0)$) {\textbf{PIFS}}; 2170 2171 % --- SIFS + 2 Slots = DIFS --- 2172 \node[sifs, anchor=west] (sifs3) at (0,-3*\vsep) {\textbf{SIFS}}; 2173 \node at ($(sifs3.east)+(\hsep,0)$) {\Large\textbf{+}}; 2174 \node[box] at ($(sifs3.east)+(0.9,0)$) {}; 2175 \node at ($(sifs3.east)+(1.5,0)$) {\Large\textbf{+}}; 2176 \node[box] at ($(sifs3.east)+(2.1,0)$) {}; 2177 \node at ($(sifs3.east)+(2.7,0)$) {\Large\textbf{=}}; 2178 \node[difs] at ($(sifs3.east)+(4.2,0)$) {\textbf{DIFS}}; 2179 2180 \end{tikzpicture} 2181 2182 \caption{Relacion entre slots de tiempo} 2183 \label{fig:fig-slots} 2184 \end{figure} 2185 2186 2187 ##### RTS/CTS 2188 2189 Según el estándar no es obligatorio implementarlo en el AP, pero en ciertos 2190 casos, como en el problema del nodo oculto, resulta útil para evitar colisiones. 2191 2192 Básicamente el procedimiento sigue siendo el mismo hasta llegado el momento de 2193 transmitir los datos, es decir, luego de censar el medio esta libre, habiendo 2194 esperado un DIFS y consumido los slots; en este punto teniendo este mecanismo 2195 habilitado se debe enviar una pequeña trama de control al AP 2196 2197 ##### PCF 2198 2199 La **función de coordinación de punto** (Point Coordination Function, **PCF**) 2200 es un modo libre de contienda, esto es, las estaciones no compiten por el medio 2201 para transmitir, si no que es el AP quien decide quien transmite y quien no, 2202 esto lo hace mediante la interrogación periódica (Polling) a todos los 2203 dispositivos de la red por si deseen trasmitir. 2204 2205 En este modo no hay colisiones ya que el AP interroga uno por uno a las 2206 estaciones de la red. 2207 2208 ##### Fragmentación 2209 2210 La fragmentación también es posible en el estándar 802.11 pero al igual que 2211 ocurría con RTS/CTS no es obligatorio su implementación. 2212 2213 La fragmentación tiene la desventaja que cada fragmento tiene su cabecera 2214 propia, lo que implica una carga adicional de bytes. También entre fragmentos se 2215 debe esperar un SIFS y un ACK, por lo que también se agrega tiempo muerto que no 2216 se puede usar para transmitir datos útiles. 2217 2218 Cuando se desea enviar una trama MAC 802.11 fragmentada, solo el primer 2219 fragmento debe competir por el medio, una vez que se tiene acceso al medio los 2220 datos se envían en ráfagas de segmentos uno atrás de otros, solamente separados 2221 por segmentos de validación y los respectivos intervalos de tiempo SIFS. 2222 2223 La fragmentación solo se aplica a tramas unicast, las tramas broadcast o 2224 multicast no se fragmentan. 2225 2226 ## Nivel físico 2227 2228 ### Modulación 2229 2230 La modulación es la modificación de uno o varios parámetros de la señal 2231 portadora, esta señal portadora (o también llamada Carrier) típicamente es una 2232 señal periódica, sinusoidal, que se utiliza como base sobre la cual se modula 2233 información mediante la variación controlada de alguno de sus parámetros 2234 (amplitud, frecuencia o fase). La señal portadora permite que la señal 2235 resultante sea adecuada para propagarse eficientemente en el medio, y la 2236 elección de la frecuencia no es arbitraria si no que depende del medio, alcance 2237 deseado, capacidad de penetración y regulaciones del espectro. 2238 2239 Algunos ejemplos de modulación incluyen modulación en amplitud (AM), modulación 2240 en frecuencia (FM), modulación digital de amplitud (ASK), fase (PSK) y 2241 frecuencia (FSK), modulación de amplitud en cuadratura (QAM), entre otros. 2242 2243 ### Multiplexación 2244 2245 La multiplexación se utiliza para compartir un enlace que no esta siendo 2246 utilizado en su totalidad para aumentar su eficiencia. 2247 2248 ### Teoremas de Nyquist y Shannon 2249 2250 El teorema de Nyquist establece el límite máximo de tasa de transmisión en un 2251 canal sin ruido y con ancho de banda limitado. Para un canal sin ruido con ancho 2252 de banda B (en Hz) se define como la maxima tasa de símbolos (en Baud) como: 2253 2254 \vspace{-1em} 2255 $$C \le 2B$$ 2256 \vspace{-1em} 2257 2258 Y ademas si cada símbolo puede representar M niveles (o símbolos) distintos, 2259 entonces la velocidad de transmisión en bits resulta: 2260 2261 \vspace{-1em} 2262 $$C = 2\ B\ log_{2}\left(M \right)$$ 2263 \vspace{-1em} 2264 2265 Por ejemplo para un modem telefónico con ancho de banda 4 KHz la velocidad de 2266 transmisión maxima (para niveles lógicos 0 y 1) resulta: 2267 2268 \vspace{-1em} 2269 $$C = 2\cdot 4KHz\ log_{2}\left(2 \right) = 8 Kbps$$ 2270 \vspace{-1em} 2271 2272 Mientras que para 32 niveles resulta: 2273 2274 \vspace{-1em} 2275 $$C = 2\cdot 4KHz\ log_{2}\left(32 \right) = 8 Kbps$$ 2276 \vspace{-1em} 2277 2278 El teorema de Shannon amplía el teorema de Nyquist a canales con ruido, y dice 2279 que la capacidad máxima (C) de un canal depende de su ancho de banda (B) y de 2280 cuanto influye el ruido en la señal (Signal to Noise Ratio, SNR; en veces, no en 2281 dB). Es la capacidad máxima para el receptor, luego de pasar por el canal con 2282 ruido. 2283 2284 \vspace{-1em} 2285 $$C=B\ log_{2}(1+SNR) = B\ log_{2}\left(1+\frac{S}{R}\right)$$ 2286 \vspace{-1em} 2287 2288 ### Ruido térmico 2289 2290 El ruido térmico (también llamado ruido Johnson-Nyquist) es el ruido eléctrico 2291 generado por la agitación térmica de los electrones en cualquier conductor o 2292 dispositivo físico que tenga una temperatura mayor que 0 K. Es un fenómeno 2293 fundamental, inevitable y presente en todos los sistemas electrónicos. 2294 2295 La potencia de ruido medida en Watts ($W$) en un ancho de banda ($B$) es: 2296 2297 \vspace{-1em} 2298 $$N = kTB$$ 2299 \vspace{-1em} 2300 2301 Donde $k$ es la constante de Boltzmann $1.38*10^{-23}\nicefrac{J}{K}$, $T$ 2302 la temperatura absoluta en Kelvin. 2303 2304 ### Diagrama de constelación 2305 2306 Un diagrama de constelación (o también llamado diagrama de símbolos) es una 2307 representación gráfica que muestra los símbolos posibles de una señal digital 2308 modulada en un plano complejo. En el eje horizontal se representa la componente 2309 I (In-phase) y en el vertical la componente Q (Quadrature). 2310 2311 La distancia al origen representa la amplitud. El ángulo con respecto al eje 2312 real representa la fase. Cada símbolo corresponde a una combinación específica 2313 de I y Q. 2314 2315 \begin{figure}[H] 2316 \centering 2317 \includegraphics[width=0.60\columnwidth]{img/diagrama_constelacion_8PSK_gray.png} 2318 \caption{Diagrama de constelación} 2319 \label{fig:ej-diagrama-de-constelacion} 2320 \end{figure} 2321 2322 2323 ### Decibeles 2324 2325 Para potencia se toma 2326 2327 \vspace{-1em} 2328 $$G_{dB} = 10 * log\left(\frac{P_{out}}{P_{in}}\right);\qquad 2329 \frac{P_{out}}{P_{in}} = 10^{\textstyle \frac{G_{dB}}{10}}$$ 2330 2331 Para tensión, corriente, campo eléctrico, etc: 2332 2333 \vspace{-1em} 2334 $$G_{dB} = 20 * log\left(\frac{V_{out}}{V_{in}}\right);\qquad 2335 \frac{V_{out}}{V_{in}} = 10^{\textstyle \frac{G_{dB}}{20}}$$ 2336 2337 Al medir una potencia en decibeles, se debe adoptar una referencia de potencia 2338 para indicar respecto de qué potencia se mide. Para expresarlo se le agrega una 2339 letra a las unidades dB. 2340 2341 Si la potencia de referencia es 1W se emplea el dBw: 2342 2343 \vspace{-1em} 2344 $$G_{\text{dBW}} = 10 \cdot \log \left( \frac{P}{1\text{ W}} \right); \qquad 2345 \frac{P}{1\text{ W}} = 10^{\textstyle \frac{G_{\text{dBW}}}{10}}$$ 2346 2347 Si la referencia es 1 mW la unidad es el dBm: 2348 2349 \vspace{-1em} 2350 $$G_{\text{dBm}} = 10 \cdot \log \left( \frac{P}{1\text{ mW}} \right); \qquad 2351 \frac{P}{1\text{ mW}} = 10^{\textstyle \frac{G_{\text{dBm}}}{10}}$$ 2352
