Redes y Com. - Teoricas.pdf
Document Details
Uploaded by AdventurousRhodochrosite
Tags
Related
- Computer Network Systems Chapter 1 PDF
- Data Communications and Networking, With TCP/IP Protocol Suite (PDF)
- Wk1 Introduction To Data Communications PDF
- Chapter 1 Introduction to Data Communications and Networking PDF
- Chapter 10: Network and Internet Protocols PDF
- Questions_Ch4_Ch_5 PDF - Exam Questions
Full Transcript
06/08 —--------------------------------------------------------------------------------------------------------------- Internet Internet es una red de computadoras que se encuentran interconectadas a nivel mundial para compartir información. Se trata de un conjunto de equipos que se relacionan entr...
06/08 —--------------------------------------------------------------------------------------------------------------- Internet Internet es una red de computadoras que se encuentran interconectadas a nivel mundial para compartir información. Se trata de un conjunto de equipos que se relacionan entre sí a través de la utilización de un lenguaje universal. La interconexión de Internet se logra mediante diversos protocolos y servicios. Los protocolos son elementos que permiten la unión de la red y la transmisión de información, puesto que fragmentan, unen y traducen los mensajes para que los datos lleguen correctamente de una computadora a otra. Por su parte, los servicios son los que permiten a los usuarios crear, enviar, recibir y acceder a la información. Los más conocidos son el correo electrónico, los chats, las redes sociales y la web, es decir, el conjunto de sitios en línea. Además, existen diferentes tipos de conexión a Internet, esto es, distintos medios por los que las personas pueden conectarse a la red de redes. El primero de ellos fue la conexión por dial-up o acceso telefónico, es decir, aquel que se realizaba con un módem y una línea telefónica. Luego surgieron otros tipos más modernos, como la banda ancha por ADSL, la fibra óptica y la conectividad 3G, 4G (LTE) y 5G para dispositivos móviles. Para acceder a los billones de páginas web disponibles en la gran red de redes, se utilizan los navegadores web. Los más reconocidos son Google Chrome, Internet Explorer, Mozilla Firefox y Safari. Todos fueron desarrollados por distintas compañías tecnológicas. Sniffing Utilizaremos una herramienta de captura de tráfico (sniffer). La idea es familiarizarnos con el wireshark, ver intercambios protocolares y poder explicarlos. Vamos a probar como se ve el tráfico al navegar una página web, e intentaremos responder: que pasa en la red cuando yo abro el navegador y pongo una url? ¿Qué se ve? Que no se ve? ¿por qué? Vamos a usar una API muy sencilla. 07/08 —--------------------------------------------------------------------------------------------------------------- Fundamentos de Comunicación de Datos y Redes ¿Cuál es la finalidad de una red de datos? ➔ Permitir que se intercambien datos entre sistemas extremos. Sistemas extremos = END SYSTEMS. Ejemplos de ES: ◆ PCs, Notebooks, Printers, Phones ◆ Servidores ◆ ISs management entity (en algunos casos se incluyen como end systems a los sistemas intermediarios. Todo depende de donde esté analizando el sistema). ➔ INTERMEDIATE SYSTEMS ◆ Repeaters, Hubs, Media Converters ◆ Bridges, Switches ◆ Routers ◆ Proxies, Gateways Además de permitir el intercambio de datos, la red nos permite identificar que los sistemas extremos necesitan de sistemas intermediarios. Data Comms & Computer Networks Un switch es una caja con conectores. A estos conectores se conectan cables que permiten conectar dispositivos como computadoras. La función de un switch es hacer switching. El switch trabaja en capa 2 y el router en capa 3 (es una convención). LAN (Local Área Network, que traduce Red de Área Local) a una red informática cuyo alcance se limita a un espacio físico reducido, como una casa, un departamento o a lo sumo un edificio. Ejemplo de un sistema de clase: Topología de red En la computadora y en el servidor hay procesos corriendo. No solo nos interesa la comunicación entre la computadora y el server sino también entre los procesos de la computadora y los procesos del server. Las aplicaciones hablan como si hubiese un canal directo entre ellas, los end systems lo mismo (comunicación host-to-host). Esa es la abstracción que se genera. Si bien los mensajes pasan por todo el sistema que hay debajo, a las capas de arriba no les interesa, no se enteran. Sistema paralelo: tienes dos o más CPUS que están corriendo simultáneamente y ejecutan código distinto. El fuertemente acoplado es una computadora que tiene muchos cores, mientras que el débilmente acoplado serían dos computadoras interconectadas. Decimos fuerte y débil porque es más rápido que se comuniquen dentro de la misma computadora que cuando se trata de computadoras distintas. ¿Por qué se necesitan sistemas intermediarios?: Desafíos en la comunicación entre sistemas extremos (usuarios de la red) - Atenuación - Interferencias - Interconexión de múltiples ESs - Fallas - Congestión - Etc. ¿Qué pasa si se atenúa la señal? → Una posible solución sería amplificarla. Sin embargo esto también amplifica el ruido, y a medida que se sigue atenuando y seguimos amplificando perdemos la señal original. Pero después se introduce la señal digital que desacopla la señal del ruido y nos facilita el trabajo. La interferencia genera errores en la señal, y hay que generar sistemas de codificación para corregir estos errores. Otro desafío es la interconexión de múltiples ESs (En el campus de udesa a cientos de dispositivos a interconectar. Hay aspectos de la tecnología de redes que tienen que hacer frente a este desafío). Las fallas no son lo mismo que las interferencias. Con fallas nos referimos a, por ejemplo, que se corte algún cable, que se rompa algo, etc. Para solucionar esto podríamos tener una topología de red con redundancia. Otro desafío es la congestión. Puedo tener por ejemplo 1500 usuarios queriendo pasar por un mismo sistema intermediario (un router). Se soluciona usando colas. En conclusión, frente a todos estos desafíos surgen sistemas intermediarios que cumplen distintas funciones. En el caso de las redes analógicas hay que hacer amplificaciones mediante sistemas intermedios. En el caso de las redes digitales hay que hacer codificaciones. Store and Forward (S&F) El mensaje de A es recibido por el router (o otro equipo que haga S&F), lo almacena en memoria y luego lo re transmite. Cómo lo va a transmitir por un enlace que es compartido por otros, lo hace mediante una cola (por lo general FIFO). Lo importante es entender que reciben mensajes y no lo repiten directamente dejándolo pasar como si nada (a lo que se conoce como repeating). Lo reciben, lo almacenan y luego lo re transmiten. Esto permite recibir mensajes con una velocidad y enviarlos con otra distinta. Además, se decodifica y codifica (para almacenarlo y luego para seguir transmitiendo). Esto permite comunicar cosas distintas (algo de fibra óptica y no sé qué más). Si bien tiene beneficios, el S&F puede traer problemas: delay (packet delay) en la transmisión y además pérdida de datos (packet loss) (cuando las colas llegan a un límite). Permite no propagar mensajes con errores en el caso en que agregue chequeo de errores en los dispositivos que hacen S&F. Agrega delay además porque tenemos que perder tiempo guardando la información antes de re transmitirla. Conmutación y multiplexado Conmutación = Switching = Forwarding En telecomunicación, la multiplexación es la técnica de combinar dos o más señales, y transmitirlas por un solo medio de transmisión. La principal ventaja es que permite varias comunicaciones de forma simultánea, usando un dispositivo llamado multiplexor. Se conmuta en las cruces rojas y se multiplexa en las líneas azules. La rotonda vial es un típico ejemplo de conmutación de paquetes. En la conmutación de paquetes por lo general se hace S&F. Cuando hacemos multiplexado (por lo general se usa STDM) hacemos que funcione un recurso que es compartido por múltiples usuarios. TDM es más determinístico, mientras que STDM es más probabilístico. El último permite tener un mejor sharing del recurso. El FDM (tengo una banda de frecuencia que puedo usar, la divido en bandas y le asignó una banda a cada usuario. Esto se ve en los antiguos conceptos de televisión). WDM es como el caso de FDM pero con la longitud de onda de la luz. El concepto es el mismo. Se multiplexa por longitud de onda. Tanto conmutación como multiplexado son una forma de hacer que varios usuarios compartan recursos. En la conmutación se permite que se compartan los sistemas intermediarios, mientras que en el multiplexado se permite que se comparta el enlace entre sistemas. Las redes IP y las LAN son todas redes que hacen Packet Switching con Mux STDM. Capacidad de canal El throughput se mide en bits por segundo. El Bit Rate es la velocidad de ‘rafaga’, que se refiere a la velocidad en la que puedo transmitir un mensaje. Es la velocidad a la que insertar mensajes en un enlace (enlace serial). pero no puedo transmitir todo el tiempo. Entonces, el throughput es la velocidad en que transfiero las cosas entre sistemas (si bien el Bitrate puede ser muy alto, a veces hay cosas que hacen que se enlentezca la transmisión y por eso el throughput es más lento). Network Impairments Un paquete es un mensaje. El término genérico que usamos para los mensajes es ‘Paquete’. Delay → Tengo que insertar la trama/paquete en un enlace, luego lo recibe un sistema intermediario, lo re transmiten, pasa por otro enlace, lo recibe otro sistema intermediario, etc. Así se genera un delay. Además de este delay que se genera, ocurre que no siempre se tiene el mismo tiempo de retraso (lo que se conoce como delay jitter), que entorpece luego algunos programas o aplicaciones que esperan cierto flujo de los datos. El tiempo de retraso no es predecible (culpa del jitter). Tiempo de propagación → cantidad de bits / bit rate Tiempo de procesamiento/conmutación → se tarda aunque no haya cola, es lo que tarda el sistema intermediario en recibir, almacenar y retransmitir. Tiempo de cola → cantidad de paquetes en la cola * tiempo que tarda en sacar cada paquete (igual varia segun la caracteristica de cada paquete) Entonces tenemos muchas cosas para tener en cuenta para determinar el tiempo que tarda un paquete en llegar de una punta a la otra. Además del delay tenemos el packet loss. Las principales causas: - Interferencia/Ruido → cuando se hace el chequeo de la trama y la trama vino con error, se tiene que descartar el paquete. - Congestión → cuando no hay más lugar en la cola, se tiene que dropear el paquete y se pierde. Circuit vs Packet Switching En circuit switching al tener recursos dedicados y no compartidos no hacen S&F, por lo que tiene muchos beneficios. En packet switching se usan recursos compartidos, por lo que se empeora la red bastante (tenemos todos los contras que se ven arriba). entonces, ¿por qué se usa packet switching? → porque es muy caro tener todos los recursos dedicados. Circuit switching is a communication method where a dedicated communication path, or circuit, is established between two devices before data transmission begins. The circuit remains dedicated to the communication for the duration of the session, and no other devices can use it while the session is in progress. Packet switching is a communication method where data is divided into smaller units called packets and transmitted over the network. Each packet contains the source and destination addresses, as well as other information needed for routing. The packets may take different paths to reach their destination, and they may be transmitted out of order or delayed due to network congestion. Errores Single bit es cuando se modifica un solo bit → ocurre cuando no se respetan los criterios de construcción del enlace (cuando un enlace está pensado para cierta distancia y los hiciste más largo. No es una interferencia, sino que se empezó a atenuar la señal y se mezcla con ruido blanco. Esto hace que de vez en cuando pierdas un bit). Burst error es cuando se modifican muchos bits. Formas de solucionarlo: - CRC: un algoritmo complejo pensado para detectar sobre todo errores de tipo burst. Recuperación de errores: - ARQ (Automatic repeat and query) → Me llega un mensaje, y lo vuelvo a mandar. Así, el que me está mandando mensajes sabe si me llego el mensaje, y si me llego bien. De esa forma continua con el siguiente mensaje y espera a que yo le mande ese segundo mensaje, y así. El tema es que esto puede ser muy lento (ir mandando mensajes de a uno). Para solucionarlo se puede usar una ventana → mando de a x mensajes a la vez y espero a que me envíen la confirmación de esos x mensajes para enviar más. Clasificación de las redes por su extensión La PAN serían conexiones bluetooth y cosas del estilo. Medios de transmisión Tanto los cables coaxiales como los trenzados son cables de cobre. Multimodo para distancias cortas y Monomodo para distancias más largas (que obviamente sale más caro). Topologías de conectividad Modos de transmisión Duplex significa que se puede transmitir en ambos sentidos. Full duplex es que se puede transmitir en ambos sentidos de forma simultánea, mientras que en half duplex se puede transmitir en ambos sentidos, pero de un sentido a la vez. 14/08 —--------------------------------------------------------------------------------------------------------------- Arquitectura en capas Modularizar tiene muchos beneficios: escalabilidad, reutilización del trabajo que ya hice, organización, etc. Una capa logra comunicarse con otra capa de otro sistema gracias a los servicios que le dan las capas de abajo. La única que tiene comunicación física es la capa de abajo. En esa capa es en donde se produce la conexión física (ya sea eléctrica, magnética, etc.) Entonces construimos una solución en capas, y las capas dialogan. Lo que dialoga en cada capa se lo llama entidad, y dialogan mediante protocolos. ¿Cómo se comunican? → Mediante interfaces de servicio. Los mensajes se van encapsulando desde la capa N hasta llegar a la capa física, y una vez que el mensaje llega a la última capa (la física), el mensaje es entregado a un intermediario para que el otro sistema lo reciba. Una vez que recibe el mensaje lo tiene que desencapsular para que llegue a la capa deseada. A una capa y la misma capa (número N) de otro sistema, se las llama entidades pares. Al mensaje que se va a enviar se lo suele llamar mensaje protocolar, o protocol data unit (PDU). Las entidades pares → se comunican a través de protocolos Las entidades que no son pares → se comunican a través de interfaces de servicio (de APIs → interfaz de servicio a través de la cual dos entidades dentro de un mismo sistema se comunican. No todo son APIs, a más bajo nivel, por ejemplo, se usan Syscalls). Los sockets que vimos ayer son APIs que permiten conectar nuestra aplicación con los medios de transporte de comunicación del sistema operativo. Vamos a ver un modelo que se llama OSI: Pero primero veamos vocabulario técnico que necesitamos usar: Habíamos visto que PDU era el protocolo mediante el cual se comunicaban las entidades pares. En el diagrama se puede ver eso. Podemos pensar que las entidades pares están conectadas por un ‘hilo virtual’ y podemos pensarlo como que se comunican directamente. Si la capa N se quiere comunicar con otra capa, manda su mensaje para la capa (N-1). La capa más chica agarra el PDU de la capa N y le agrega el header (PCI en terminología OSI) de la capa N-1. El header son los primeros bits de un mensaje. Si tiene que irse más abajo, pasa lo mismo con las otras capas. Este es un diagrama completo del modelo en capas. Los primeros datos (el bloque ‘Data’ que vemos más arriba) es el mensaje que quiero enviar. A medida que se va encapsulando para llegar a la capa física, se van agregando headers y se termina agrandando ese mensaje. Cuando llegue el mensaje al otro lado, se debe desencapsular (o sea ir sacando todos los headers). Cada mensaje tiene: El header sirve para lo que vimos, y está adelante. El trailers va al final. Y el data payload sería el cuerpo del mensaje, que es el mensaje que realmente quiero mandar. Tenemos dos paquetes de definiciones: - Modelo: define solamente la cantidad de capas, sus nombre, y las funciones de cada capa - Arquitectura: define el modelo, pero además define los protocolos y las interfaces de servicios La arquitectura de red es lo que define todo. Pero cuando hablamos de modelo, nos referimos estrictamente a la definición de las capas. OSI Reference Model Un sistema abierto es aquel en el cual no hay un propietario (ej: puedo tener un dispositivo de cada marca conectado en mi red). Osi es un modelo de referencia para interconexión de sistemas abiertos. Tiene 7 capas: - Aplicación - Presentación - Sesión - Transporte - Red - Enlace de datos / Data link - Fisica En general los intermediate systems trabajan hasta la capa 3 (tipo los routers, switches, etc.) Funciones de cada capa - Física: específica lo necesario para conectar los dos sistemas (para que se puedan transmitir los bits) - Data link: divide los streams de bits en mensajes. Tiene que haber un mecanismo (‘framing’) que permite dividir esos mensajes. Además, si el medio es compartido, hay que controlar el acceso al medio: MAC - medium access control (en el mismo medio hay distintos nodos, y tengo que poder direccionar el mensaje al nodo al que quiero mandar mi mensaje). Necesita algún algoritmo de control de acceso al medio (CCASMD, CCMACA, etc.). También hay funciones de detección de errores (descarta los mensajes con errores) → para detectar errores se usa información que está en el trailer. - Network: interconecta sistemas (permite que nos conectemos a sistemas que no están en el área local. Usan las underlying networks para comunicar los end systems de una punta a la otra. Para resolver ese internetworking necesito definir un nuevo esquema de direccionamiento (la MAC adress me permite llegar a otra máquina, pero no a otro servidor. Para eso usamos la IP address, y hacemos direccionamiento lógico). Además, tenemos fraccionamiento y redireccionamiento (se fragmentan los mensajes para que puedan viajar). Por último, hay muchos caminos para mandar el mensaje, y se debe elegir uno. Esta capa hace eso, y se lo conoce como ruteo. - Transport: para la capa de transporte, todo lo que está abajo no le importa, es todo una nube. Manda algo y no le importa cómo llega. Pero, cuando llega el mensaje al servidor de google (que llegó gracias a la dirección IP), necesita saber a qué proceso dentro de ese servidor tiene que ir. Aca hay un segundo redireccionamiento, que se hace usando el port number (normalmente le decimos solo port). El transporte es lo que permite multiplexar en procesos. El socket es la interfaz que la capa de transporte le ofrece a las capas de arriba. Está el protocolo UDP y el TCP (que además del multiplexado agrega más funciones). Vimos los dos ayer en la tutorial, pero los dos son protocolos de transporte. De la capa de transporte para abajo es todo sistema operativo (todo hardware). De la capa está para arriba, ya estamos en el mundo de las aplicaciones. Por eso es que se usan los sockets en esta capa para comunicar estos dos ‘mundos’. - Aplicación: email, navegación web, etc. - Presentación: permite resolver que el código que se ejecuta en una de las máquinas que se está comunicando sea entendible por la otra máquina que se está comunicando (ej: si una máquina tiene little-endian y la otra big-endian. Esta capa se encarga de resolver estos problemas). - Sesión: mecanismos de binding (permite que un peer (un cliente por ejemplo) de una aplicación se conecte con un servidor). Otra función son los puntos de sincronismo. Cuando transmitimos mucha información lo hacemos mediante un servicio de transporte. Si el servicio se corta tengo que volver a mandar todo de nuevo. Para evitar eso se establece arriba de ese servicio otro servicio que va mandando de a poco y mantiene un control de lo que se fue asiento. Entonces, si se corta el servicio de transporte retomo desde donde me quede. TCP/IP Protocol Suite Algunos acrónimos necesarios: El modelo TCP/IP (también conocido como DoD/DARPA): Definieron un modelo en 4 capas. Comparación de los modelos: Básicamente es lo mismo, las mismas funciones, pero con distintos nombres y agrupado de otra forma. Veamos ahora los protocolos en cada capa: En la capa de network tenemos además, por ejemplo, LAN y WAN. Tanto UDP como TCP son end-to-end. El UDP solo provee multiplexado entre procesos (con los ports que dijimos antes). El TCP además agrega complejidad en comparación con el UDP, pero agrega también muchas funcionalidades. TCP/IP PDU Encapsulation Acá vemos lo que habíamos dicho antes en el otro modelo. Se van encapsulando y cada capa va agregando su header correspondiente. Obs: no hay footer en todas las capas. En general en el único lugar donde agregamos algo al final es en la última capa, y se usa para detectar errores de forma rápida. PDU (protocol data unit) → unidad protocolar. Es lo mismo que protocol message. La comunicación (una tira serial de bits) en el nivel más bajo se está haciendo mediante Ethernet. A partir de cierta capa, el diálogo es end-to-end. Vemos que hay distintos niveles de comunicación. Los que vemos que tienen solo link e internet podemos decir que es conexión entre ‘vecinos’. Paso por esos vecinos para que se pueda establecer la conexión host-to-host. Direccionamiento en cada capa - La MAC address es para direccionamiento local → primera capa (network/link) - IP address: tenemos las versiones 4 y 6. Ambas son protocolos para la capa de internet. Permiten identificar un ‘host’ (término que se le da a los end systems) en la internet - Cuando ya trabajamos a nivel de los sistemas que son multi-processing tenemos que diferenciar los procesos. Para esto usamos los port numbers. Internetworking devices Repeaters/ Hubs/ Media Converters - Trabajan en capa física - No hacen S&F (por lo que no agregan delay, pero tampoco tiene las ventajas) → recién el mensaje y solo lo decodifica y recodifican (no lo almacenan ni lo analizan) - No adaptan velocidades, pero sí pueden adaptar distintos medios. - El repeater se usa cuando queremos interconectar cosas en capa física a larga distancia. Bridges / LAN Switches - Hacen S&F - Hacen transparent bridging. Routers Es hacer forwarding pero en capa 3 (de OSI, que para TCP/IP es el protocolo IP). Se hace routing por dirección destino, que tiene la ventaja que en una red mallada (con muchos posibles caminos) puedo elegir el mejor camino. Gateways / Proxies Hace el forwarding en la capa más alta. Internet Es una red de redes que usa una arquitectura TCP/IP. Las empresas que se encargan de dar servicio y conectividad a todas estas networks se llaman ISPs. Pero, a su vez, los ISPs tienen cierta jerarquía: Internet Service Providers - Tier 1 ISPs - IXPs - Regional ISPs - Access ISPs - Content providers Autoridades IPC: Inter Process Communication ¿Cuál es el fin último de las redes de computadoras? → interconectar procesos. No importa donde están los procesos, yo quiero conectarlos. No me importa si es un proceso de mi misma máquina o no, quiero poder conectarme siempre de la misma manera. Para conectar procesos necesitamos poder conectar hosts → necesitamos de una tecnología como IP que me permita conectar mediante sistemas intermediarios a los distintos hosts. Modelos de IPC 1) Peer to peer → los proceso hablan como pares 2) Client / server → el modelo más usado (yo soy cliente del mail de google, y google es el servidor. El cliente es el que pide un servicio, y el servidor lo brinda. La comunicación la inicia el cliente, y el servidor solamente contesta). 3) Publisher / Subscriber → parecido al client/server. (client/server es yo ir a comprar todos los domingos el diario al puesto. Publisher/subscriber es suscribirme a que me traigan todos los domingos el diario, independientemente de que yo lo pida o no). Multiplexado de flujos de datos Por un lado tenemos las direcciones IP de los end systems. Se multiplexan porque hay que distinguir si son TCP o UDP, con el protocol number (si es para TCP se lo pasó a la entidad TCP de la máquina, y si no a la de UDP). Un multiplexado se hace entre dos endpoints. Mecanismos de binding Tengo dos end systems. Cada end system tiene un proceso. El cliente usa un port que es > 1024, mientras que el servidor escucha por un port < 1024 → Esto ocurre en los well-known services. Si el servidor es el de HTTP, el puerto en el que va a escuchar es en el 80, y así. 21/08 —--------------------------------------------------------------------------------------------------------------- DNS – ¿Para qué sirve DNS? ¿Cómo es la IP de la página de UdeSA? → Ni idea. ¿Cómo es el número de teléfono de un amigo mio? → tampoco sé, lo que sí me acuerdo es su nombre, y con eso lo busco. Lo que nos interesa es tener nombres en lugar de números. DNS hace eso: Resolución de nombres - nslookup no solo me devuelve el registro (el número de IPv4) asociado a un nombre dado, sino que me da mas info, como la IPv6 - En el caso de UdeSA vemos que nos devuelve 2 direcciones IPv6 (son de 128 bits), y una de IPv4 (de 32 bits). - Fundamentos DNS es una base de datos única y distribuida Registros de información: Resource Records (RRs) (los registros son una estructura de datos con valores de distintos tipos). Indexado: FQDN → Full Qualified Domain Name (es un árbol lexicográfico. El FQDN es el index del registro. Con un FQDN se accede a un registro) Es un servicio client/server: “ns resolver” y “ns server”. Hay una federación de servers distribuidos que en conjunto brinda el servicio DNS ABMs (altas, bajas y modificaciones): la autoridad de cada zona es la que se encarga de hacer las ABMs de esa zona. Protocolo DNS → sobre UDP y TCP El FQDN se lee de derecha a izquierda: lo más importante (lo que tiene más autoridad) es el punto ‘invisible’ de más a la derecha → es el root. - Ns Lookups Dado un nombre quiero saber la IP. Hago una query usando el FQDN y el servidor me devuelve la IP correspondiente. El cliente usa un puerto efímero (que se usa durante un pequeño lapso de tiempo. Se le asigna y cuando termina la comunicación se libera para darle a otro). El servidor, en cambio, usa un puerto reservado (que son debajo de 1024). - RFCs (request for comment) Son documentos que describen estándares. Son una serie de publicaciones del grupo de trabajo de ingeniería de internet que describen diversos aspectos del funcionamiento de Internet y otras redes de computadoras, como protocolos, procedimientos, etc. y comentarios e ideas sobre estos. - FQDN (full qualified domain name) Domain Name Space Los datos se estructuran según un árbol lexicográfico n-ario, no balanceado. Los nodos del árbol llevan labels Existe una forma estandarizada de denominar cada nodo del árbol: se utiliza la secuencia de las etiquetas obtenidas de recorrer el árbol partiendo del nodo hacia el nodo raíz ROOT. Las etiquetas se concatenan separándolas con un punto, y el punto final se incluye implícitamente. Árbol lexicográfico: Se estableció que cada país tendría un top-level domain con 2 letras (el nuestro es ‘ar’). Comentario: tenemos por ejemplo, com.ar que NO es lo mismo que el com → El ‘com’ fue uno de los primeros TLDs, y después cuando se crearon los TLDs de los países, hubo que hacer debajo del ‘ar’ un ‘com’ más. Cada label es lo que va entre puntos. Estructura ‘ar’, ‘es’, ‘fr’, etc. → son TLDs geográficos. - Authority Zones El árbol del DNS se divide en zonas. La entidad administrativa que tiene autoridad sobre una zona de nombres puede: agregar, eliminar o cambiar RRs dentro de esa zona. Una zona comienza en un cierto nodo, e incluye todos los nodos descendientes de éste, excepto los nodos pertenecientes a sub-zonas cuya autoridad haya sido previamente delegada a otras entidades. Domain vs Zone - Dominio: es la totalidad de los nodos descendientes de un cierto nodo ( el dominio de ‘edu.ar’ incluye a ‘udesa’, a ‘uba’, etc, etc.) - Zona: es la porción de un dominio, administrada por una entidad. Los límites de las zonas están establecidos por la forma en la que se particiona y distribuye la autoridad sobre la base de datos distribuida. (‘edu.ar’ no tiene autoridad sobre ‘udesa.edu.ar’ si bien este último pertenece al dominio de ‘edu.ar’). - RRs (resource records) El registro es una estructura que tiene distintos campos, cada uno de un tipo distinto: - ‘Name’ es un FQDN - ‘Type’ nos dice el tipo de RR (los vamos a diferenciar más adelante) - ‘TTL (time to live)’: tiempo en segundos que puedo guardar esta info en caché. - Dependiendo el tipo de RR, varía lo que hay en ‘RDATA’ Tipos de RR CNAME: canonical name (apunta a otro FQDN, que ese FQDN es el verdadero host). El uso de los alias es bueno porque, supongamos que hoy el webserver de UdeSA está en la máquina X, pero si mañana cambio la máquina no voy a tener problema. Uso el mismo CNAME pero hago que ahora apunte a esa nueva máquina. SOA: Es un registro único para la zona y tiene información importante, por ejemplo, para el zone transfer. PTR: es para usarlo al revés, dada una IP quiero saber el nombre asociado a esa IP. - Registros NS Se utilizan en las zonas padre para delegar subdominios a servidores autoritativos para sus zonas child (edu.ar necesita saber cuales son los name servers de ‘udesa’, por ejemplo.). Se especifican en las zonas child para indicar que servers forman el grupo autoritario para la zona. Los registros NS que figuran en la zona parent deben ser los mismos que figuran en la zona child → Debe evitarse la delegación incorrecta (‘lame delegation’). Tipos de registros comunes Un mismo FQDN puede tener más de un registro A (una IPv4) → Ejemplo: google.com tiene varias. ¿Cuál usa?, cualquiera. - Messages format Header flags AA: cuando pregunto por un FQDN, si el que me responde es un servidor de esa zona, me va a decir que es autoritativo. Si el que me responde NO es de la zona, me dice que no es autoritativo. RD: una consulta puede ser recursiva o iterativa. Si se pide que la respuesta sea recursiva (que el que es consultado no me dice a quien más tengo que consultar, sino que se encarga él de todo). RA: Me dice si hay recursividad disponible o no. RCODE: cuando es una respuesta, puede haber algún error. Si es 0 es que no hubo error, etc. - Sistema distribuido El DNS es uno de los sistemas distribuidos más grandes del planeta → está repartido en muchos servidores. El name resolver corre en una computadora, y el name server esta corriendo en un servidor. El servidor de udesa es: Authoritative NSs Servidores DNS que administran los RRs de una zona: - PS: Primary server (hay solo uno por zona) - SS: Secondary Server Los RRs del PS se copian ‘automáticamente’ a los SSs via un ‘zone transfer’ Cache NS Del lado cliente, la resolución suele ser mediada por un recursive and caching-only nameserver, en el cual no se configura información sobre ninguna zona. En estos servers se configuran solamente las direcciones de IP de los ‘root nameservers’. Cuando desde una máquina le pido información al servidor de udesa, el name server de udesa sale a buscar la información de forma iterativa. Cuando la consigue, se la entrega al cliente que la pidió. Comentario: como los root servers son los que más querys reciben, no permiten que se les pida con recursividad. Lo que guarda en el caché un name solver es mucho menos que lo que guarda en el caché un name server. Ejemplo: direct address lookup En este caso es una consulta recursiva. Primero le pregunta a root, root devuelve que le pregunte a ‘ar’. ‘ar’ devuelve que se le pregunte a ‘uba.ar’, etc. En todos los primeros casos las respuestas eran registros NS (porque nos devolvieron que le preguntamos a otro name server). La última respuesta es un registro de tipo A (una dirección IPv4). Ahora quiero ver el ejemplo al revés, dado una IP queiro saber el nombre: Voy a armar el FQDN usando la IP de la cual quiero saber el nombre, y voy poniendo los números en sentido inverso (de 157.92.49.38 paso a 38.49.92.157). Le pregunto a root por ese PTR, root me manda a ‘arpa’, y así. Eventualmente vemos que tengo que preguntarle a un NS que tiene los dos números más altos de la IP de la cual estoy consultando (en este caso usa 92.157). El pointer (PTR) que nos devuelve al final de todo, tiene adentro un FQDN (el nombre asociado a esa IP). - Zone transfer Dentro de una misma zona hay 1 PS y varios SSs. Los SSs se sincronizan mediante ‘zone transfer’. What are DNS Zone Transfers? Now, let’s imagine you get to the subway station, and the screen showing the map is unavailable. How do you know where to go? That subway station likely has multiple map screens as a redundancy method. Multiple screens ensure no map is overwhelmed with viewers, and additional maps are available if one is down. When updates are required, all the screens can display those updates simultaneously. DNS zone transfers work similarly by copying data from one DNS zone (known as a zone file) to another. This helps keep data accurate and up to date in case a DNS zone is unreachable. Si soy el secundario y le tengo que preguntar al primario, ¿cuándo le pregunto? Cada {refresh} segundos (según lo que esté configurado). Si no me contesta? Le vuelvo a preguntar después de {retry} segundos. Si no me contesta mas? Después de cuanto me tengo que dar por vencido y dejar de ser servidor autoritativo secundario de esa zona? Después de {expire} tiempo. En este caso por ejemplo, vemos los parámetros de la configuracion de la zona de fi.uba.ar SOA: único registro para cada zona. El SOA es el identificador de la zona, me dice la información relevante que me identifica una zona. En las slides muestran cómo ejecutar los comandos para ver la captura negra de arriba: - Delegación de autoridad La delegación necesita que los name servers que declara la zona hija estén funcionando correctamente. En este caso, lo de arriba a la izquierda, tenemos el archivo de configuración de la zona ‘uba.ar’, pero tenemos NSs de la zona hija (‘fi.uba.ar’). Vemos que en la zona hija están los mismos dos NSs que estaban en la zona padre declarados como de la zona hija. Lame Delegation Cuando en la zona padre se apunta a varios NS de la zona hija, de los cuales alguno/s de ellos no funciona o están mal. Cuando le preguntas a la zona padre, que va y le pregunta a la zona hija, se encuentra con que esos NSs no funcionan, entonces tiene que usar otro de los que tiene guardados. Todo eso lleva tiempo, y se ve como una conexión lenta. Registration Mail – - Sistema Mail address: todo usuario del sistema de correo electrónico está unívocamente identificado con una dirección de mail usuario@dominio donde dominio es una FQDN de DNS. MailTool o MUA: El usuario interactúa con el sistema de correo electrónico desde su estación de trabajo utilizando alguna herramienta de correo. Esta herramienta permite al usuario leer y almacenar los mensajes recibidos, así como redactar y enviar mensajes a otros usuarios. - Envío de mails SMTP → Simple message transfer protocol Para saber a qué servidor mandarle el mensaje, el mailhost consulta el registro MX de la dirección destino. Ejemplo de una consulta MX: Hay 4 registros MX, con misma preferencia (son todos iguales). Quiere decir que cuando le mandas un mail a [email protected] se va a conectar a alguno de los servidores que se indica ahí. - Recepción de mails El de número preference más chico es al primero al que se debe intentar conectar. Si ese no responde, se intenta con los demás, que se llaman relay Mail host server. Esos Relay Mail host servers en realidad no contestan, solo guardan tu consulta y cuando se libera el host server se lo mandan. 28/08 —--------------------------------------------------------------------------------------------------------------- SMTP (Simple Message Sample Protocol) El protocolo SMTP es un protocolo de red para el envío de mensajes de correo electrónico entre dispositivos - entre hosts de IP estableciendo conexiones TCP al port 25. Se basa en 3 protocolos: La entidad SMTP que envía los mensajes (cliente) de correo establece una conexión TCP al puerto 25 de la entidad SMTP receptora (servidor). El receptor SMTP puede ser el destino final (mailbox server) o un gateway intermediario (mailhost, relay mailhost). El cliente usa un puerto efímero (mayor a 1024). Comentario: en TCP se establece una conexión, en UDP no (no se hace un seguimiento de estados y eso). Comandos SMTP El mensaje de e-mail está compuesto por tres partes: Lo que le interesa (la información relevante) es lo que está en el envelope, lo del body es solo un conjunto de bits que va a enviar. MIME (Multipurpose Internet Mail Extension) Si quiero meter mensajes que no se pueden codificar con el ascii de 7 bits (tipo texto en negrita, imágenes, video, etc.), tengo que usar MIME. MIME es un estándar que soluciona estas limitaciones de SMTP. MIME no es un protocolo, es un estándar de definición de cómo encapsular en información de SMTP cosas que no se pueden codificar en ascii de 7 bits. POP e IMAP Son dos protocolos para conectarse a mail. POP POP funciona poniéndose en contacto con su servicio de correo electrónico y descargando todos los mensajes nuevos desde él. Una vez descargados en su PC o Mac, se eliminan del servicio de correo electrónico. Esto significa que después de descargar el correo electrónico, solo se puede acceder a él con el mismo equipo. Si intenta obtener acceso a su correo electrónico desde un dispositivo diferente, los mensajes que se hayan descargado anteriormente no estarán disponibles. → El correo enviado se almacena localmente en su PC o Mac, no en el servidor de correo electrónico. IMAP (internet message access protocol) IMAP le permite acceder a su correo electrónico desde cualquier lugar y desde cualquier dispositivo. Cuando lee un mensaje de correo electrónico mediante IMAP, en realidad no lo descarga ni almacena en el equipo; En su lugar, lo está leyendo en el servicio de correo electrónico. Como resultado, puedes comprobar el correo electrónico desde diferentes dispositivos, en cualquier parte del mundo: tu teléfono, un equipo, el equipo de un amigo. IMAP solo descarga un mensaje cuando hace clic en él y los datos adjuntos no se descargan automáticamente. De esta forma, podrá comprobar los mensajes mucho más rápidamente que POP. El IMAP es una mejora respecto al POP. Siempre nos conviene usar IMAP. Mail Security Los registros MX me decían a qué dirección de mail tengo que mandar las cosas. Ponele que me conecto a google y digo que quiero mandar un mail desde el dominio juanperez.com.ar, yo estoy mandando el mail en forma genuina desde ese dominio o me estoy haciendo pasar por ese dominio? El que administra el servidor de la zona en donde está el dominio que yo digo que supuestamente estoy usando, tiene un registro de las IP habilitadas para mandar mails. SPF (Sender Policy Framework) DKIM (Domain Keys Identified Mail) DMARC HTTP (HyperText Transfer Protocol) Protocolo de capa de aplicación para la transferencia de recursos u objetos Arquitectura Client - Server ○ Web Browser (client) realiza la petición ○ Web Server responde Opera sobre TCP ○ Reserved port: 80 (si es https escucha en el 443) URL (Uniform Resource Locator) Ahora, una cosa es lo que ponemos en el browser, pero eso no es lo que viaja en la red. Una vez que se establece la conexión TCP, el cliente manda: Y el servidor contesta con la misma estructura. Veamos cómo es cada una de las partes del mensaje HTTP: HTTP Methods El head es para consultar sobre un objeto/recurso (ej: que info hay sobre ese recursos para ver si lo necesito traer o no) Diferencia entre el post y el put: el post se usa más en la navegación web (completar formularios, etc.), el put es cuando tenemos aplicaciones que se conectan vía REST APIs. En el post, si usa el ‘body’. Cuando decimos recurso/objeto nos referimos a = hipertexto, imágenes, audio, archivos, video, etc. HTTP Headers Content length y content type se usan cuando mandamos un body. Los puntos me indican en dónde puedo llegar a encontrar cada header. HTTP Response Codes Es un número que indica que paso con el request. HTTP Proxy Lo importante es que en todo el proceso, además el proxy hace de caché. Si hay otro browser que pide lo mismo, lo saca del caché. Además, puede hacer un control granular del HTTP. Cuando vos accedes a una página web, accedes a un montón de cosas (imágenes, etc.). Si esas cosas ya están cargadas en el cache del proxy se ahorra mucho. Caching HTTP Versions Hosts virtuales Conexiones persistentes Por cada objeto se establece una conexión TCP, que cada una lleva mucho tiempo (un round-trip-time) Stateless En cada conexión tenemos: tiempo de conexión (1 round trip time) + tiempo de desconexión (1 round trip time) + el tiempo de la comunicación (minimo otro round trip time). Cuando la conexión es persistente, nos ahorramos los 2 round trip times de conexión y desconexión. Las cookies surgen para que podamos hacer un seguimiento de estado de las transacciones (abris una pagina, pones ciertos datos, y seguis haciendo click y click. La idea es que no te vuelva a preguntar lo que ya pusiste. Para eso tiene que poder hacer relaciones de las cosas que se fueron haciendo. Para esto se usan las cookies). Cookies El servidor le da al navegador la cookie, y el navegador puede usar esa misma cookie reiteradas veces, y de esa forma se entiende que hay relación entre esas conexiones. HTTPS (HTTP Secure) DHSP (Dynamic Host Configuration Protocol) El protocolo DHCP (Dynamic Host Configuration Protocol, protocolo de configuración de host dinámico) sirve principalmente para distribuir direcciones IP en una red. Trabaja sobre UDP y no sobre TCP tiene los puertos reservados: ○ 67 para el server ○ 68 para el cliente El DHCP server es el que me da una IP, una máscara, etc. Todo lo que veo cuando hago ‘ipconfig’ en la consola, todas esas cosas me las asigna el DHCP server. Lease Time - El servidor me da los parámetros, y me dice ‘los podes usar por tanto tiempo’. entonces dentro de ese tiempo no tengo que estar pidiendo de nuevo los parámetros. Release - Cuando apago la computadora y me desconecto. Aplicaciones distribuidas WKS = Well known servers TELNET (TELetype NETwork) Yo abro una ventana, abro un TELENET, y todo lo que escribo en esa ventana es enviado al servidor al que me conecto, y todo lo que escriba el servidor se me envia a mi. TELNET es un protocolo de la capa de aplicación de tipo cliente-servidor. Es un ‘WKS’, que corre sobre TCP, y el servidor escucha en el puerto 23. El SSH es parecido a TELNET, pero más seguro. SSH Es para una emulación de terminal, no es para intercambiar objetos como HTTP. FTP (File Transfer Protocol) TFTP (Trivial File Transfer Protocol) 04/09 —--------------------------------------------------------------------------------------------------------------- Capa de Transporte Para identificar la máquina uso la dirección IP. Ahora, si quiero diferenciar dos procesos distintos dentro de una misma máquina, ya tengo que usar los port numbers (source port number y destination port number). Protocolos de Transporte Son ambos protocolos “end to end”, por lo que no intervienen sistemas intermediarios. PDU: protocol data unit, en criollo le decimos “mensaje”. La forma en la que se envía el mensaje es distinta en TCP que en UDP. En el servicio UDP (orientado a mensajes), no hay confirmación de llegada del mensaje, nada. A lo sumo hay una verificación de integridad con el checksum. En TCP es distinto. TCP no es orientado a mensaje, sino a bytes. Ya no tengo forma de delimitar mensajes. Lo que se manda es un stream de bytes. Pero la red no está hecha para mandar streams de bytes, sino paquetes. Por eso hay que segmentar el stream de bytes para ir mandandolos. UDP User Datagram Protocol ¿Qué tipo de transporte ofrece UDP? → Servicio de datagrama. Provee un mecanismo de transporte extremo a extremo Es simple, no conectado (no ofrece otra funcionalidad más allá del multiplexado Tiene un overhead mínimo Se encapsula sobre IP UDP ofrece a las aplicaciones un acceso directo a IP, con multiplexado de tráfico IPC mediante Logical Port Numbers. El programa aplicativo sobre UDP será el responsable de asegurar la confiabilidad y el control de flujo. Veamos como es el mensaje que se manda por UDP: El length es de 16 bits → 2^16 -1 (65565 bytes). Ese es el tamaño máximo del mensaje que puedo mandar Checksum: campo para detectar errores. Va haciendo la suma de todos los datos del datagrama. La suma la hace siempre sobre registros de 16 bits. Suma todos los octetos del datagrama. Una vez que tiene la suma le hace la inversa (los 0 los pone en 1 y viceversa). Lo importante es que detecta errores de un solo bit. Si hay más errores no los detecta! Si se detecta algún error, se descarta! Y qué pasa entonces con el datagrama que se estaba queriendo enviar? → Es tarea del protocolo que corre por encima qué acción se toma si no se efectiviza lo que estaba pidiendo (ej: volver a mandarlo). WKS (well known services) sobre UDP DNS → port 53 TFTP → port 69 DHCP → ports 67 y 68 SNMP → ports 161 y 162 SIP → ports 5060 y 5061 RTP → ports efímeros entre 16384 y 32767 TCP Transmission Control Protocol Al igual que UDP es “extremo a extremo” → No hay intermediarios que intervengan en el mensaje protocolar (recordemos que los sistemas intermediarios llegaban hasta la capa 3 → la de transporte) Es transmisión confiable (UDP no es que NO es confiable, solo que no hace nada para asegurar la confiabilidad) Es byte-stream oriented → orientado a bytes y no a mensajes. Es connection-oriented → Tiene que ver con lo que vimos de conexión lógica. ¿Para qué sirve la conexión lógica? Para poder acceder al historial. para hacer un seguimiento de un historial hace falta poder hacer una conexión lógica (dio el ejemplo de cuando vas al banco y pides 1M de pesos. Te van a pedir tu número de cuenta - conexión lógica- y con eso acceden a tu historial - saber si tienes saldo o no-). Con esto puede ir chequeando si los mensajes se están enviando bien o no, si se están mandando en orden, si están llegando todos, etc. TCP considera que las capas inferiores no ofrecen servicios confiables de transporte o transmisión de datos de extremo a extremo. Funciones y Mecanismos: - Multiplexado de tráfico IPC con port number - Transmisión byte-oriented - Segmentación - TRansmisión Full Duplex (ida y vuelta, simultáneamente) - COntrol de secuencia - ARQ Sliding Window → (es un mecanismo que implementa muchas funciones) - Control de errores - Control de flujo explícito - Control de gestión implícito. Byte-stream oriented & segmentacion El Data Stream es enviado en Segmentos TCP. Cada segmento TCP se encapsula sobre IP. Del otro lado, los segmentos se van guardando en un buffer a medida que van llegando. Para control de secuencia se usa un Sequence Number (SN). MMS (Maximum Segment Size) - No puede ser mayor que el máximo payload de un Datagrama IP (porque viaja encapsulado en IP). (Se van acumulando bytes, hasta llegar al MMS. El MMS me lo define el del otro lado). Formato del segmento TCP Aparece el sequence number → 32 bits. Me sirve para identificar el segmento que se está enviando. Ojo, no es número de segmento, sino de secuencia. Lo que me dice es el número del primer byte en la secuencia, del segmento que estoy recibiendo. Ej: lo primero que me mandan va a ser un 1. Si en ese segmento entraron 10 bytes, en el segundo segmento el sequence number va a ser 11, no 2. Esto es porque el primer byte de la segunda secuencia que me mandan es el byte número 11 en la secuencia total. Podemos enumerar muchos bytes (2^32 - 1). Es cíclico. Una vez que me quede sin números, arranco de nuevo. El acknowledge number : número de secuencia del próximo byte que se espera recibir. Al igual que en UDP, en TCP hay checksum. Lo que cambia es que en UDP es opcional y depende de la aplicación que está arriba, en TCP es obligatorio hacer el chequeo. W Advertised Window → cantidad máxima de bytes que se pueden seguir recibiendo a partir del AN. Full-Duplex Orientado a conexión Los datos en un sentido llevan ‘a caballo’ los datos del otro sentido. ¿Cómo se sincronizan las máquinas de estado? → Con el 3 way handshake. - El host 1 llama al host 2 enviando un segmento con lo necesario. - El MSS que manda host 1 es el del transmisor del host 1 ( osea que le dice ‘vos me podes mandar mensajes de hasta MSS bytes’) ¿Cómo se termina de establecer la conexión? → Cuando se envía un ACK de ambos lados. En qué estado se intercambian los datos full-duplex? → Una vez que ya está establecido. 11/09 —--------------------------------------------------------------------------------------------------------------- HACER NOTAS 18/09 —--------------------------------------------------------------------------------------------------------------- IPv4: Fundamentos La capa de interred viene a solucionar el problema de la heterogeneidad de las redes (WAN, LAN, etc.). IP agrega una capa que resuelve todos los problemas de la gran heterogeneidad de las redes subyacentes. ¿Cuáles son los problemas que viene a resolver? - Direccionamiento (usar direcciones que no dependan del direccionamiento de cada una de las redes que están debajo. Ej: las WAN usan la MAC Address) - Ruteo - Fragmentación En este diagrama se puede ver la gran heterogeneidad que se puede tener en una red de redes. ¿Qué protocolos propone en esta capa la Arquitectura TCP/IP? Funciones Finalidad: 1) Interconectar hosts de extremo a extremo 2) A través de múltiples redes heterogéneas LAN y WAN 3) Encapsulando/desencapsulando datagramas IP en las tramas de capa 2. Funciones: - Direccionamiento (me dice a donde tengo que ir) - Ruteo (elegir un camino para llegar a destino - el mejor camino) - Fragmentación (en cada uno de los enlaces hay un MTU. Hay que fragmentar para poder pasar los datos por todos los enlaces) Toda esta información está en el header del datagrama IP: Las direcciones IP tienen 32 bytes. La longitud tiene 16 bytes → está expresado en octetos. 16 bytes son 2^16-1 octetos, que en kibibytes son 2^6 kibibytes (1 kibibyte = 2^10). TOS → se usa como las balizas de las ambulancias, bomberos, etc. → para indiciar que hay que darle un tratamiento particular a un datagrama que está viajando por la red. El TTL va decreciendo a medida que va pasando por los saltos (que va pasando por routers). El header checksum lo verifica cada router en el camino. Si esta mal el checksum, el router descarta el datagrama → Vemos otro motivo por el cual puede un datagrama no llegar a destino. Las opciones casi no se usan en IP. - Time Stamp: cada vez que el datagrama pasa por el router, el router agrega en el datagrama su dirección y en qué fecha y hora paso por ese router (casi no se usa porque no tenemos mucho lugar entonces no se puede agregar info de todo el camino). Direccionamiento Direcciones IPv4 → 32 bits (4 bytes) DNN (Decimal Dot Notation) Notación decimal → separan la dirección por octetos, y las dividimos con un punto. Cada número decimal puede valer entre 0 y 255 (2^8-1) En IP lo que tiene dirección es la interfaz, NO el equipo (host). Aca vemos por ejemplo equipos que tienen 1 sola IP (end systems), y otros con más de 1 IP (routers). ¿Puede haber end systems con más de una IP? Si → multihosts. Pero serían end systems que no hacen forwarding/routing, sino que solo reciben. Network Address Dijimos que las direcciones IP, a diferencia de las MAC address por ejemplo, tienen información topológica. Con la dirección IP puedo obtener información de dónde está el host con esa IP. Dentro de la IP tengo la dirección de la red en la que está ese host. Cuando la parte que identifica al host está toda en 0 → esa es la dirección de red. Cuando la parte que identifica la host está toda en 1 → esa es la dirección de broadcast. Todas estas cosas se simplifican con el uso de las máscaras. Netmask interfaces - Es un número de 32 bits, que tiene los n bits más significativos en 1 y el resto en 0 Si hago un AND de la dirección IP con la máscara me da la dirección de red Si hago un OR de la dirección IP con la máscara negada me da la dirección de broadcast. Clases de direcciones IPv4 - Las direcciones se dividen en clases en función de los bits más significativos - Las de clase A, B y C se descomponen en ‘Network Number’ y ‘Host Number’ - Las de clase D se usan para multicast (cuando quiero enviar a varios, pero a algunos y no a todos. Broadcast es cuando mando directamente a todos) Entonces cuando vemos una dirección IP tenemos que ver el primer octeto (byte 3 - B3), y con eso identificamos la clase a la que pertenece: Y en función de la clase, hay un NetNumber y un host number que tienen longitudes distintas para cada clase. Si me dan una dirección de clase C, puede tener 256 combinaciones. La 0 es la red, la 256 es la de broadcast, y las restantes 256-2=254 son para darle a interfaces. Pero tal vez no necesito tener 254 hosts. Pero con este sistema no se aprovechan eficientemente los recursos. Asi es que aparece el subneting Hoy en día ya no se usan las clases. Pero es importante entenderla. Hacer subnetting es usar una máscara que es más larga que las máscaras de las clases normales. El subnetting lo hacemos para racionalizar mejor el espacio de direccionamiento. Sino lo desperdiciamos mucho. El subnetting lo podemos hacer de máscara de longitud fija o máscara de longitud variable. En la clase A el net number está determinado por el octeto más significativo, en la clase B por los dos octetos más significativos, etc. Entonces, en el caso de clase B tenemos 16 bits para el net number, y 16 bits para el host number. Pero, podríamos tomar los 8 bits más significativos de los 16 bits que definen el host number, y usarlos para determinar la subred. Y los 8 bits restantes serían para identificar a los hosts dentro de esa red. Todos usan la misma dirección de red, pero vemos que tienen distintas longitudes de máscara. La subred que más hosts permite tener es la que usa la /23 porque tiene la máscara más corta, por lo tanto más bits para especificar hosts. VLSM es usar distintas longitudes de máscara para un mismo net number. La sumarización es cuando dos rutas con direcciones contiguas, las puedo juntar/colapsar con una máscara más corta. Ruteo Es el proceso de encaminamiento de un datagrama desde un host a otro a través de nodos intermedios (routers) - Se basa en la dirección destino DABR (destination address based routing) - Emplea una routing table para elegir la mejor ruta (interfase, next stop) Classful Routing - Solo soporta FLSM CIDR: Classless Inter Domain Routing - Soporta FLSM, VLSM y sumarización (agregación) de rutas Los parámetros que estamos buscando cuando ruteamos son 2: interfaz y next stop (por que interfaz mando lo que quiero mandar, y a quien se lo mando). Estas tablas de routeo las tienen todos los equipos de IP. (Dice verdana la tabla pero en realidad iba ‘métrica’) Si no tuviésemos una ruta a nuestra red local tendríamos que tener en la tabla tantas entradas como hosts en nuestra red local. ¿Cómo sabemos que es una ruta indirecta? → porque tiene métrica != 0 y porque tiene next hop. No es lo mismo ruta default que default gateway. La default route me da como next hop la default gateway. Ruteo Classfull CIDR Classless Internet Domain Routing Entonces tenemos las máscaras de interfaz y máscaras de ruta. Ya no hablamos de máscaras de longitud fija, porque si es classless significa que soporta todo (si o si tiene que ser variable). El destination address está en el datagrama que voy a mandar. La route destination es la que saco de la tabla en la columna ‘destination’ A diferencia del DABR (destination address best routing), el PBR puede rutear no solo por dirección destino sino por otros criterios. 25/09 —--------------------------------------------------------------------------------------------------------------- Fragmentación ¿Por qué fragmentar? IP soporta un tmanano maximo de datagrama de 64 kiB (kiribits. 1Kib = 2^10, pero al tener la B y no minuscula, estamos hablando de bytes y no bits.). Los datagramas son enviados sobre redes heterogéneas (LAN/WAN/Ethernet/WIFI) y cada una tiene distintos MTU (maximum transfer unit). ¿Cuándo se fragmenta? Cuando el datagrama tiene mayor longitud que el MTU de la red por la cual se debe realizar el forwarding. A veces puede pasar que se haga una primera fragmentación al comienzo, y luego se tenga que volver a hacer otra fragmentación en el camino. Es distinto que la segmentación. Se hacen en una capas distintas: TCP recibe un stream de bytes y lo tiene que enviar a través de la red, por lo que lo divide en pedazos de tamaño MSS. ¿Quién fragmenta? El primero que fragmenta es el host origen. Pero como dijimos anteriormente, también puede pasar que tenga que hacerse una fragmentación en el camino → por lo que fragmenta el router. Esto último sólo ocurre en IPv4. En IPv6 sólo se puede fragmentar en el host origen, no en los routers del camino (para saber si es suficiente la fragmentación que está haciendo y si va a entrar en todo el camino, hace un proceso de ‘discovery’ antes de fragmentar). ¿Quién reensambla? Se hace únicamente en el host destino. El host destino inicializa un reassembly timer. Si dicho timer expira antes que todos los fragmentos hayan sido recibidos, descarta todos los fragmentos. Activa un timer porque puede pasar que un fragmento se pierda, entonces no se va a quedar esperando eternamente a algo que nunca va a llegar. ¿Cómo se fragmenta? El proceso de fragmentación utiliza el campo de ‘offset’ y el flag ‘more fragments’ del header IP. El offset es respecto del mensaje original. Si el offset es 0 es el primer fragmento del mensaje. Si el offset es distinto de cero entonces no es el primero. Como en ningún lado me dice cuál es la longitud del mensaje final, la forma de decirle al destinatario que es el último es con el bit MF (more fragment). Si MF está en 1, entonces NO es el último. Si MF está en 0, entonces es el último fragmentado. El offset está en octetos. Entonces se donde poner el fragmento en el buffer. El mensaje original tiene n octetos. Cada fragmento tiene que ser múltiplo de 8, pero el último puede no serlo. ¿Cómo sé si un mensaje no fue fragmentado? → tiene offset 0 y MF = 0. Ejemplo: - Tengo un mensaje original - Lo tengo que mandar por un enlace de MTU = 900 bytes - Pero no puedo mandar fragmentos de 900 bytes, porque 900 no es múltiplo de 8. Por lo tanto, tengo que mandar fragmentos de 896. Entonces el offset del primer fragmento es 0, el del segundo es 896, el del tercero 2*896, etc. - El último fragmento probablemente me quede de un tamaño distinto, porque probablemente el mensaje no es múltiplo de 896 y no me van a entrar una cantidad entera de fragmentos de 896 bytes. El último fragmento puede tener un largo NO múltiplo de 8, porque como no hay fragmento que le siga no va haber offset en un fragmento que le sigue, por lo que no tengo que ponerme a pensar en evitar que no sea múltiplo de 8 (lo que me pone esa restricción es el offset. Por lo que si no hay offset no hay problema). Pero en realidad eso no está del todo bien. Algo que tenemos que tener en cuenta es que dentro de cada fragmento va el header IP (de 20 bytes). *** DIBUJO ANITA *** ARP (Address Resolution Protocol) Para una determinada dirección IP quiero averiguar cuál es la MAC address asociada. La trama MAC es la trama de Ethernet (de la capa 2, que todavía no vimos). La MAC address solo la quiero cuando tengo que mandar algo dentro de la red local. Si quiero mandar algo a hong kong, lo mando al router y de ahí sigue. ARP PDU Hardware address length → MAC address por ejemplo. Hace esto porque es multiprotocolo de capa 2 y 3 → asocia protocolos de capa 2 con los de capa 3. Ejemplo: Otros usos: ICMP (Internet Control Message Protocol) - Se usa para pasar mensajes de error de error y de control en una red IP. - ICMP es parte integral de IP - Es encapsulado en un datagrama IP (Protocol: 0x01) (O sea que viaja dentro de IP). - ICMP sólo reporta errores al host remitente del datagrama - No se generan mensajes nuevos ICMP a partir de mensajes ICMP (salvo caso Echo). O sea, solo se manda cuando un mensaje IP tuvo error. ICMP PDU En datos suele ir el header o los primeros bytes del datagrama IP que causó el error (aunque no siempre). Tipos de mensaje ICMP Pero además de tipo tenemos el ‘code’, que me genera como un sub-tipo. Se suele usar para hacer diagnóstico de la red. Se manda un ping y se mide el RTT, etc. Type Destination Unreachable Host Destination Unreachable (Bajarme de nuevo las slides. la versión que tengo no tiene esto). Terminar notas