1 / 27

Usamos las reglas del protocolo para mandar información de un sitio a otro

Usamos las reglas del protocolo para mandar información de un sitio a otro sin garantía de entrega en destino y sin garantía de orden Ejemplo: si primero mando un bloque B1 y luego B2 el protocolo IP no garantiza la llegada al destino en ese orden.

Télécharger la présentation

Usamos las reglas del protocolo para mandar información de un sitio a otro

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Usamos las reglas del protocolo para mandar información de un sitio a otro • sin garantía de entrega en destino y sin garantía de orden • Ejemplo: si primero mando un bloque B1 y luego B2 el protocolo IP no garantiza la llegada al destino en ese orden. • Ni siquiera garantiza la entrega, (probabilidad de pérdida muy baja) • TENEMOS que CONFIAR en que el protocolo transporte la información ¿Cómo se implementa el protocolo? • Como un conjunto de rutinas que son capaces de capturar información y enviarla donde nosotros le digamos • El S.O. necesita saber a quién enviar y qué enviar • Coge los datos a enviar los empaqueta y las rutinas (software) del protocolo envían la información por la red, encaminándolo hasta que llegue al destino • ¿Para qué aplicaciones es útil? • Aplicaciones básicas que no requieran alta fiabilidad, p.eje: correo electrónico • Por encima del protocolo IP están otros protocolos que organizan el problema de comunicación 1. El protocolo de red IP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  2. El protocolo UDP es un recubrimiento de IP básico • En cada máquina podemos tener varios procesos en ejecución • Supongamos 2 máquinas cada una con diferentes procesos: • M1: P1 y P2 M2: P3 y P4 • Si un proceso en M1 intenta mandar información a M2 el protocolo UDP se ocupará de la manera de organizar el envío • El SO de M2 recibe la información pero no sabe a quien entregársela • Si algún proceso de M2 avisa al SO que se hace cargo de atender la comunicación (tarea de recepción) no habrá problema • Si varios procesos de M2 quieren atender la tarea el SO no sabrá a quien asignarla: • A los dos • A uno de los dos arbitrariamente • Un trozo a cada uno • Alguien debe decidir que proceso acepta las peticiones de comunicación • Más complejo: ¿qué pasa si varios procesos de M1 mandan información a M2? Los protocolos de transporte Curso 2002-2003 - Redes (IS20) -Capítulo 5

  3. El protocolo UDP permite organizar el problema: Añade dos puertos: puerto de origen y puerto de destino (nº de 16 bits) La información va a tal máquina con tal puerto de origen y tal puerto de destino La identificación de máquina y puertos incluida en la información que envío • Permite multiplexar sobre la misma conexión diferentes comunicaciones • El SO de M2 mira la información recibida de M1 y mira el puerto de destino que ESTARA ASOCIADO A UN PROCESO de M2 • Si el puerto asignado está ocupado el SO podrá asignar otro • También puede estar asignado un puerto a varios procesos estos compiten por la información. El SO lo asigna al primero que la pida. • Los procesos tienen que reservar los puertos que quieran utilizar ¿Qué ocurre si quiero entrega de paquetes (nivel de red) ordenada? • Nuevo protocolo TCP, garantiza la entrega y en orden • Ejemplo: • en una aplicación que lea fotogramas de video y los envía a otro, si cada 30 sg se pierde un fotograma no ocurre nada (USO DE UDP) • Si quiero que no se pierda nada aunque el sistema sea más lento (USO TCP) Los protocolos de transporte Curso 2002-2003 - Redes (IS20) -Capítulo 5

  4. Recordemos: • IP servicio sin conexión (conexión virtual usando protocolo) • UDP sabemos dirección origen, dirección destino, puerto origen (proceso que manda) y puerto destino (proceso que recibe) • El SO sabe a quien (proceso que tiene asignado puerto) darle la información • El puerto será un “descriptor de archivo” Los protocolos de transporte Curso 2002-2003 - Redes (IS20) -Capítulo 5

  5. ¿Cómo funciona TCP? • Si al cabo de un tiempo la información no llega avisa • Garantiza entrega fiable (se entrega y en orden) • No hay comunicación real es ficticia, SO crea unas estructuras de datos para manejar la información • Conexión virtual—Sistema Operativo: • Fase inicial de conexión P1 quiere conectarse con P3. SO envia un paquete a M2 para asegurarse que existe la máquina. • M2 contesta enviando un paquete de confirmación a M1 • SO en M1 manda paquete a M2 para indicar que está conectado (devuelve un descriptor de archivo) • SO de M2 se informa de que alguien se ha conectado y confirma la conexión (devuelve un descriptor de archivo) • Conexión establecida: • P1 escribe en el descriptor y aparece información en M2 • P3 escribe en su descriptor y aparece información en M1 • Estos descriptores se conocen como SOCKET Los protocolos de transporte Curso 2002-2003 - Redes (IS20) -Capítulo 5

  6. Para asegurarnos de la entrega de información ordenada existen mecanismos (protocolos) especiales: • Acuse • Incluir acuse en la trama de vuelta para optimizar el uso del canal..etc • La desconexión segura tiene 4 fases: • Inicio de desconexión: M1 paquete indicando que ya no mando nada más • M2 contesta yo tampoco te mando más • M1 dice adios • M2 dice adios • Todas estas facilidades las ofrece el sistema operativo como llamadas al sistema • ¿Quién empieza la conexión? ¿Quién acepta la conexión? • Si alguien quiere conectarse alguien debe estar dispuesto a oirle NODO PASIVO: servidor, que está dispuesto a que alguien se conecte a el NODO ACTIVO: cliente que quiere conectarse a alguien Los protocolos de transporte Curso 2002-2003 - Redes (IS20) -Capítulo 5

  7. SERVIDOR: Pide un socket al SO (punto o puerto de conexión a un proceso) • Llamada al sistema: s=socket(dominio, tipo, protocolo) • Dominio: AF_UNIX rutas de ficheros (especifica conexión local en la misma máquina) y AF_INET para direcciones de internet (en máquina remota) • Tipo: para mandar datagramas SOCK_DGRAM o orientado a conexión SOCK_STREAM • Protocolo: 0 indica IP, SOCK_STREAM para TCP y SOCK_DGRAM UDP • El SO devuelve ese sockets que es un descriptor de archivo asociado al proceso que lo creo y con las propiedades que se pasan como argumento Informar al SO que estoy dispuesto a recibir conexiones • Llamada al sistema: bind(descriptorsocket, dirección, longitud) • Especifica al SO la dirección asignada al socket por donde puedo recibir cosas (puerto 7000) Servidor Curso 2002-2003 - Redes (IS20) -Capítulo 5

  8. SERVIDOR: Tabla para guardar peticiones pendientes: • Llamada al sistema: estado=listen(descriptorsocket, longitud) • Reserva de zona de memoria para guardar peticiones que llegan para atenderlas posteriormente Resumen: El proceso servidor • Quiero recibir • en tal puerto • sino puedo atender guarda petición en memoria • Además debe esperar que alguien se conecte para ello usa la llamada: Nuevo socket=accept(antiguosocket, direccion, longitud) • El descriptor nuevo socket (que es el usado para comunicar) es idéntico al antiguosocket. Recibe la dirección del socket activo (el del cliente) en direccion • Si no conexiones pendientes antiguosocket bloquea al proceso hasta que lleguen • Al acabar se debe cerrar nuevo socket close() para dar fin a comunicación • El antiguosocket sigue abierto por si llegan otras peticiones, close() para fin de peticiones (fin de conexión) • Para intercambiar información llamadas: read, write, ..... Servidor Curso 2002-2003 - Redes (IS20) -Capítulo 5

  9. CLIENTE: Pide un socket al SO (punto o puerto de conexión a un proceso) • Llamada al sistema: r=socket(dominio, tipo, protocolo) • Llamada al sistema: connect(descritorsocketactivo, direccion, longitud) • Establece la conexión entre socket activo y el pasivo para mandarle información • Direccion y longitud se refieren al socketpasivo o de destino • En el boletín de prácticas se nos dan dos programas: client.c server.c • Estudiar el programa intentando identificar su funcionamiento • Compilar primero servidor, ejecutarlo en una terminal de vuestro ordenador • Compilar el cliente y ejecutarlo en otra terminal de vuestro ordenador pasandole los parámetros necesarios: • Nombre máquina a la que quiero conectar • Puerto donde escucha el servidor • Palabra o frase (si es frase entre comillas dobles) a enviar • ¿Por qué aparecen unos caracteres extraños? Cliente Curso 2002-2003 - Redes (IS20) -Capítulo 5

  10. Próxima sesión de prácticas Programa que envíe un pequeño correo Basado en el programa del cliente En web de asignatura enlaces a tutorial de SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  11. Hemos visto la relación cliente-servidor ¿qué significa realmente el concepto cliente-servidor? • La arquitectura cliente servidor intenta descargar la actividad de servidor. • El servidor tiene que atender a multitud de clientes o nodos (con listen creaba una lista de espera) • A mayor potencia de un servidor mayor coste • Objetivo: minimizar número de nodo que requieren servicio del servidor. • Si número de nodos (peticiones de cliente) disminuye el servidor aliviará su carga ya que no tiene que poner en marcha tantos servicios. SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  12. La separación entre los procesos que corren en el servidor y cliente ha evolucionado con el tiempo: • Inicialmente clientes grandes, y con el tiempo se redujo el tamaño • Ejemplo: pasarela web para proporcionar servicios (avance tecnológico para optimizar sistema cliente-servidor) • Pasarela web para correo: • conectamos cliente a servidor • vemos las páginas con mensajes que están en el servidor. • El cliente no las descarga • Protocolo en navegador web se adaptan con el tiempo a estas funciones • Navegador web permite conexión a servidor para mostrar información • Permiten servicio directo sin necesidad de software específico • La separación cliente-servidor para correo será: • Cliente pide a servidor  servidor contesta • Después de separadas las tareas cliente-servidor vimos que hay que establecer comunicación • ¿Quién hace open pasivo? Nodo PASIVO ?? • ¿Quién hace open activo? Nodo ACTIVO ?? SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  13. Nodo PASIVO SERVIDOR ejecuta accept • Nodo ACTIVO  CLIENTE ejecuta connect • ¿Cómo enviamos un correo? • Conexión a “estafeta” (máquina que corre software específico de envío y recepción de correo) • Necesarias direcciones de origen y destino y cuerpo del mensaje a enviar • Protocolo específico de envío de correo SMTP (Simple Mail Transfer Protocol), recuperación de mensajes POD (post office protocol), otros MIME (Multipurpose Internet Mail Extensions) • Se usa el puerto 25 de recepción de correo ¿Qué es un protocolo? • Una forma de entendernos definida por unas reglasEstándar • Ejemplo: • alumno-profesor (cliente-servidor) • Servicio: tutorías • Protocolo: • alumno pregunta: es hora de tutorías • Profesor responde: • Si, alumno entra y se sienta • No, alumno se va SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  14. Un protocolo se basa en un intercambio de mensajes • Hay mensajes inteligibles para el usuario • Ejemplo, pasos de conexión a un servidor: • Cliente se conecta • Servidor dice Hello 200 (el 200 indica que ha funcionado conexión) • Servidor se bloquea esperando peticiones • Hay situaciones del protocolo opcionales: Ej: • Alumno pregunta hay tutorías-profesor contesta si • Alumno entra en tutorías • Alumno en tutorías pegunta si puede fumar (opcional, puede no estar estandarizado) • Veremos luego que el cuerpo del mensaje DATA --- texto <<ENTER>> ---- texto <<ENTER>> . Punto que indica final mensaje <<ENTER>> • A partir de las reglas y los servicios que quiero obtener se genera un programa del cliente. • Si servidor usa el mismo estándar (protocolo) funcionará SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  15. El protocolo SMTP es un protocolo sencillo hay una negociación previa mínima • Para más eficiencia la negociación debe ser más fina • Ej: si se comparte ancho de banda y se quiere mandar un archivo grande rápidamente debe hacer una negociación que optimice la velocidad de transferencia. • SMTP no necesita identificador de usuario, • en el mail recibido aparentemente no se indica el emisor. • Generalmente se preserva la dirección IP desde donde se manda • Detección de anónimosresponsabilidad • Veamos el problema de envío de correo ¿Qué hará el cliente, open pasivo o activo? SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  16. Análisis del programa: • Comprobación de número de argumentos argc (número de argumentos 1) • Cliente crea conexión, s=socket(dominio, tipo, protocolo) • Dominio: AF_UNIX rutas de ficheros especifica conexión local (en la misma máquina y AF_INET para direcciones de internet en máquina remota • Tipo: para mandar datagramas SOCK_DGRAM o orientado a conexión SOCK_STREAM • Protocolo: 0 indica IP, SOCK_STREAM para TCP y SOCK_DGRAM UDP • Hace open activo: connect(descritorsocketactivo, direccion, longitud) • Establece conexión entre socket activo (s) y pasivo para mandarle información • Dirección y longitud se refieren al socketpasivo o de destino • Dirección del puerto 25 se construye la estructura ADDR que rellena los datos para connect. SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  17. Análisis del programa: • RESULTADO: El sistema devuelve un socket y se conecta al servidor que hemos pasado como argumento LEER HELLO-DECIR HELLO • Se lee del socket un vector (buffer) de 256 bytes • Strcpy(&buffer[leidos], “\0”) termina la cadena leída (long<=256bytes) • Printf para ver lo que hemos leído (mensaje del servidor) ¿qué vemos? • Formar el string que queremos enviar (cadena)= texto+terminación • IMPORTANTE: el protocolo espera como terminador del mensaje \r\n • “\r\n” equivale a pulsar ENTER (retorno carro y salto de línea) • Con write se escribe cadena en el socket • Leo respuesta de servidor (256 bytes) y la imprimo ¿qué vemos? SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  18. ENVIAR MAIL • Formar el string que queremos enviar (cadena)= texto+terminación\r\n • Con write se escribe cadena en el socket (mensaje de quién soy) • Leo respuesta de servidor (256 bytes) y la imprimo ¿qué vemos? • Se construye el cuerpo del mensaje DATA --- texto <<ENTER>> ---- texto <<ENTER>> . Punto que indica final mensaje <<ENTER>> • Leo respuesta servidor y la imprimo ¿qué vemos? DESPEDIDA • Formar el string que queremos enviar (cadena)= texto+terminación\r\n • Con write se escribe cadena en el socket (mensaje de quit) • Leo respuesta servidor y la imprimo ¿qué vemos? • Cierro el socket del cliente SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  19. Compilar y ejecutar programa • Hay que pasar como argumento al programa la máquina a la que me quiero conectar anubis.uji.es • Probar programa enviándote un mail a tu cuenta en anubis • Modificar el programa para que nos pida por teclado o le pasemos como argumento la dirección de correo donde quiero enviar el mail SMTP Curso 2002-2003 - Redes (IS20) -Capítulo 5

  20. Próxima sesión de prácticas Problema de conexión simultanea de un Host (con 2 tarjetas de red) a 2 ordenadores Curso 2002-2003 - Redes (IS20) -Capítulo 5

  21. Supongamos un Host M con 2 tarjetas de red que quiere hablar (proceso P) con dos ordenadores diferentes (procesos P1 y P2 en máquinas M1 y M2) • P se conecta con P1 abre un socket s1 • P se conecta con P2 abre un socket s2 • Orden de llegada de información a M procedente de M1 y M2 es aleatoria. • No hay un método de sincronización que especifíque quien debe enviar • Si P hace read en uno de los socket se queda bloquea hasta que haya algo que leer ¿cómo escoger cual de los socket debo inspeccionar primero? Select Curso 2002-2003 - Redes (IS20) -Capítulo 5

  22. La única forma de recuperar información de un socket es hacer read • Si no hay datos se bloquea • Los socket tienen una opción para indicar lectura no bloqueante • Así sino hay datos se devuelve el control • Podemos saltar de uno a otro proceso hasta que en alguno haya datos • Consumo innecesario de CPU • Otra solución: crear dos procesos P y P’ uno lee de P1 y el otro de P2 • Cada proceso atiende a un nodo • Los procesos tienen espacios de memoria disjuntos • Nuestro espacio de datos es comúnespacio de memoria compartidarequiere semáforo • Otra solución: usar threads: procesos con memoria compartida, necesito un semáforo Select Curso 2002-2003 - Redes (IS20) -Capítulo 5

  23. Problema: Tenemos un escenario en el que un proceso tiene varios socket abiertos y debe manejar los datos de entrada o salida en ellos. • No sabemos si llegan o no datos ni el orden en que llegaran por los socket. (puede haber bloqueos de lectura o escritura). Solución: Usar la llamada al sistema select para chequear el estado de varios descriptores de archivo (descriptores de los socket) a la vez y en diferentes modalidades: lectura, escritura, excepción. Hay que monitorizar socket en lectura, escritura y excepciones Parámetros: select(n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout ) • 3 listas: • Lista de descriptores de archivo que queremos monitorizar en lectura • Descriptores de archivo que quiero monitorizar en escritura • Lista de descriptores en los que se produjo alguna excepción (ejemplo: estoy leyendo un archivo y se cierra la conexión) • Una estructura: • Indica tiempo que queremos que este esperando a que uno de sus descriptores cambie de estado (listo para leer o escribir) Select Curso 2002-2003 - Redes (IS20) -Capítulo 5

  24. Parámetros: select(n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout ) • Último parámetro puntero a una estructura compuesta por dos punteros largos, en una segundos y en otra microsegundos. • Especifica cuanto tiempo estará monitorizando los descriptores sin que se produzca ningún evento • Si queremos siempre bloqueado hasta evento, usamos NULL • Argumentos 2,3,4: son punteros a (fd_set) un vector de bits • En cada posición del vector de bits un 1 o 0 indica si se desea monitorizar el descriptor que ocupa esa posición: 1 SI , 0 NO • Para la monitorización de vectores de bit disponemos de Macros: FD_CLR (int fd, fd_set *set) pone a cero la posición del vector de bit de fd FD_ISSET (int fd, fd_set *set) indica si la posición de fd está o 1 o 0 FD_SET (int fd, fd_set *set) pone a uno la posición del vector de bit de fd FD_ZERO (fd_set *set) pone a cero todo el vector de bits fd_set • Primer argumentos: hace referencia a: • 1+ el descriptor más alto que queremos monitorizar • Ej: para un vector de bit de 8 bits 01234567 • monitorizar 5 descriptores 01001111 • Primer argumento 7+1=8 Select Curso 2002-2003 - Redes (IS20) -Capítulo 5

  25. Programa: • Actúa como servidor: accepta 2 conexiones e inmediatamente ejecuta select para determinar la conexión por donde llegán antes los datos • PUERTO SERVIDOR 7000 • Crea dos conexiones sc0, sc1 Socket -> bind -> 2 accept (2 clientes) • Sólo se podrán conectar Inicialización de vector de bit usando FD_ZERO • Se pone a 1 los dos descriptores sc0,sc1 para monitorizarlos • Ponemos un tiempo de tv para el desbloqueo aunque no lo usamos ponemos NULL: siempre bloqueado hasta evento • Ejecutamos select: nos devuelve un entero que indica si hay o no descriptores para ser leídos • Si se desbloquea por llegada de algo será positivo • Si se desbloquea por timeout devuelve cero • Testeo retval!=0 • Miro si bit asociado al sc0 está a 1 • Si, escribimos mensaje “datos en descriptor del primer socket” • No, “datos en el segundo socket • Cerrar socket y acabar Select Curso 2002-2003 - Redes (IS20) -Capítulo 5

  26. Funcionamiento: • Escribir programa select.c, compilar y ejecutar (sin argumentos) • Ejecutar dos clientes que quieran mandar cosas al servidor • telnet labtecxx.act.uji.es 7000 (ejecutar en dos shells diferentes) • El primero en que escriba algo y pulse ENTER desbloqueara a select y se imprimira el mensaje. Modificación: • Cambiar o añadir lo necesario para que el servidor con dos conexiones • si recibe algo por sc0 lo envíe (escriba) en sc1 • si recibe algo por sc1 lo envíe (escriba) en sc0 while (1) { FD_ZERO.... ........... Else printf(“No hay datos\n”); } Al ejecutar lo que envío por cliente 0 se escribe en cliente 2 y viceversa Select Curso 2002-2003 - Redes (IS20) -Capítulo 5

  27. Utilidad: • Por ejemplo tres redes conectadas por routers • Quiero comunicar la de un extremo con el otro extremo pero está es una red privada • No permitirá conexiones de entrada desde internet (SEGURIDAD) Solución: • Usar un servidor en la red intermedia de forma que las conexiones de las redes extremas son de salida de las mismas y entrada a la red central y no se viola la seguridad Select Curso 2002-2003 - Redes (IS20) -Capítulo 5

More Related