Introducción Correo Electrónico HTTP Introducción a Aplicaciones Capa de Aplicación Guido Chari DC - FCEyN - UBA 11 de Junio de 2013 Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Menú del dı́a 1 Introducción Problemática Objetivos Diseño 2 Correo Electrónico Introducción MIME Enviar Recibir 3 HTTP Introducción Implementación Eficiencia Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Problemática Objetivos Diseño ¿Qué resuelve la capa de aplicación? Analogı́a con nivel de red Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Problemática Objetivos Diseño ¿Cómo interpretamos el dato que llega? Definimos un lenguaje común Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Problemática Objetivos Diseño Presentación ¿Qué forma tienen los datos? Se necesita convenir sobre los tipos de datos (largo de enteros, endianess, etc.). Ídem pero para los datos más representativos de las transmisiónes actuales (MPEJ, JPEG, etc). Los datos multimedia imponen la necesidad de encontrar buenas (eficientes) formas de representarlos (congestión, perdida, factibilidad, ahorro de recursos). Marshalling Representa la codificación de los datos de manera estándar, o adaptandose a alguna convención, para la correcta interpretación por diferentes entidades. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Problemática Objetivos Diseño Objetivos Especı́ficos de la capa de aplicación Aplicaciones son software (Sistemas Operativos, procesos) Aspectos conceptuales y abstracciones comunes. Tipo de servicio de las capas inferiores. Arquitecturas de comunicación. Paradigma cliente - servidor. Paradigma P2P. Hı́bridos. RPC. Syntaxis y semántica de los mensajes. Abstracción común más utilizada Sockets Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Problemática Objetivos Diseño Diseño NETWORK ASSOCIATES GUIDE TO COMMUNICATIONS PROTOCOLS DHCP BOOTP NTP TFTP Dynamic Host Bootstrap Network Trivial File Configuration Protocol Time Transfer Protocol Protocol Protocol APPLICATION LAYER X Windows System (X10 / X11) • Provides interface to end-user processes • Provides standardized services to applications CMOT (CMIP over TCP/IP) (see also ISO) ARPA Services PRESENTATION LAYER SNMP DNS Domain Name System ND Network Disk Simple Network Mgmt. Protocol v1, v2, v2c To ISO-TP ISO-DE ISO Development Environment TRANSPORT LAYER • Manages network layer connections • Provides reliable packet delivery mechanism TCP Transmission Control Protocol RPC Remote Procedure Call To VFRP Burst Mode Application Filing Mail Printing Virtual Support Terminal VINES Application Services ACSE ACSE ACSE ACSE GAP Gateway Access Protocol From SPP From ISO From NBP AFP AppleTalk Filing Protocol Postscript ASP AppleTalk Session Protocol PAP Printer Access Protocol To Oracle TNS SMB To NetBIOS Data Flow Control Connection-oriented Session Protocol ISO NetBIOS To VFRP To NetBIOS Keiwet Session Protocol Bulk Data Transfer Protocol SCS To NetBIOS To NetBIOS From UDP To IP To DDP To IPX ZIP Zone Information Protocol NetBEUI To ARP TPO, TP1, TP2, TP3, TP4 Transmission Control LAVC UDP User Datagram Protocol NLSP RIP Routing NetWare Information Link Protocol Services Protocol X.25 Packet Level Protocol SSP Switch to Switch Protocol From TCP/IP TCP From SDLC Synchronous Data Link Control From ISO TP4 ATP NBP AEP Name AppleTalk AppleTalk Transaction Binding Echo Protocol Protocol Protocol VIPC VINES Interprocess Communications Protocol RIP Routing Information Protocol RTMP AURP Routing AppleTalk Table Update-based Maintenance Routing Protocol Protocol VRTP/VSRTP VINES (Sequenced) Routing Update Protocol Error Echo Protocol Protocol NETWORK PROTOCOL QLLC Qualified Logical Link Control ADSP AppleTalk Data Stream Protocol SPP PEP Sequence Packet Packet Exchange Protocol Protocol ES-IS End System to Intermediate System DRP DECnet Routing Protocol CONP CLNP Connection- Connectionless oriented Network Network Protocol Protocol Path Control DLSw Data Link Switching IPX WAN 2 From VIPC From CDP IS-IS Intermediate Dual System to IS-IS Intermediate System HPR APPN High Advanced Performance Peer-to-Peer Routing Networking To NetBIOS & SMB IPX – Internetwork Packet Exchange ICMP Internet Control Message Protocol IP Internet Protocol LAT Local Area Transport Protocol NSP Network Services Protocol DNA From VIPC IDP Internetwork Datagram Protocol VIP VINES Internet Protocol DDP Datagram Delivery Protocol From VIPC AARP AppleTalk Address Resolution Protocol X-25 Packet Level Protocol Apple - LAP Link Access Protocol VFRP VINES Fragmentation Protocol Internetwork (via X.25) (Not through X.25) Sub Network Access Protocol (SNAP) • Frames packets • Controls physical layer data flow Ethernet Data Link Control Ethernet V.2 PHYSICAL LAYER • Interfaces between network medium and network devices • Defines electrical and mechanical characteristics IEEE 802.3 CSMA/CD Media Access Control 1 BASE5 StarLAN 10 BROAD 36 10 BASE-T Twisted Pair 10 BASE5 Thick 10BASE2 Thin 10 BASE-F (A or P) Fiber Type 2 Connection Service Type 3 ACK Connectionless Service IEEE 802.5 Token Passing Ring Media Access Control FDDI Token Passing Ring Media Access Control ANSI Token Ring Ethernet Ethernet 50 ohm coax Thin Wire 50 ohm coax Broadband 75 ohm coax IEEE 802.12 VG-AnyLAN 100 BASET 100 BASEX Fiber Optic Shielded Twisted Pair 4/16 Mbps UTP 4/16 Unshielded Twisted Pair ATM To SMDS 802.2 Logical Link Control Type 1 Connectionless Service AAL ATM - Adaption Layer SDDI Shielded Copper CDDI Copper Twisted Pair SNI Subscriber Network Interface DSO PLCP - 64 Kbps G.703 PLCP DS1 PLCP - T1 - 1.544 Mbps ISDN-D 16 Kbps BRI 64 Kbps PRI DSI, DS3 SONET ISDN H 384 Kbps BRI - Basic Rate Interface PRI - Primary Rate Interface DS3 PLCP - T3 - 45 Mbps SONET PPP Point to Point LAP -A ISDN-B 64 Kbps To SMDS FDDI FDDI Fiber Optic HDLC LAPB (ISO) 7776) High-level Data Link Control Link Access Procedure ISDN Integrated Services Digital Network ATM - Layer Asynchronous Transfer Mode IEEE 802.6 Metropolitan Area Network DQDB Media Access Control SMDS Frame Relay ISDN DSI, DS3 SONET AAL1 AAL2 AAL3/4 AAL5 VLANs CBR VBR Data Virtual LANs H11 1.536 Mbps H12 1.92 Mbps To Frame Relay V.35 RS-449 EIA RS-232D or RS-423 RS-422-A V.24 Unbalanced Balanced SMDS Switched Multi-megabit Data service From IPX From SNI ANSI T-1.617 NXD Frame Format From Broadband ISDN From IP WANs SIP SMDS Interface Protocol From PPTP Modem Standards V.21 AT&T V.22 AT&T AT&T 209 V.22 bis V.26 V.26 bis 9600 bps 2400 bps 2400 bps 2400 bps 103 212 300 bps 1200 bps V.42 V.42 bis V.27 bis V.32 bis V.29 V.32 4800 bps 9600 bps 9600 bps 14.4 kbps Error Correction Data Compression via MNP5 or LAPM using L-Z derivative Introducción a Aplicaciones From UDP SDLC Synchronous Data Link Control From ATM IBM Channel Guido Chari VSPP VINES Sequenced Packet Protocol VARP/VSARP VINES (Sequenced) Address Resolution Protocol Ethernet V.2 LANs NAMED PIPES for OS/2 VINES NETRPC XNS Courier SCP DNS Distributed Session Control Name Protocol Server 802.2 DATA LINK LAYER 3270 Data Stream XNS Courier Message Object Block Stream Stream Stream FOUND Foundation Services From VIPC From IPX From NSP CTERM Network Command Terminal X.25 PAD Packet Assembler/ Disassembler Connection-oriented Protocol Presentation Protocol X.3, X.28, ASN.1 X.29 LU6.2 Logical Unit StreetTalk, Mail(IM-III), Network Mgmt., Server Service, PC Backend, VINES Security, Echotest, File Service, Talk, Async, STDA, Deflector, Diagnostic, NetBIOS over VINES, Print Service, Semaphore, SNA Service, SX Service TRANSPORT PROTOCOL CSLIP SLIP Serial Line Compressed Slip IP From VIPC From TCP/ IP ACSE NICE Network Information and Command Exchange Protocol IPDS SCS 3270 Intelligent SNA Data Printer Stream Character Data Stream Stream SPX, SPX2 Sequenced Packet Exchange To VFRP RSVP Resource Reservation Protocol • Addresses and routes packets ACSE ACSE Banyan VINES AppleTalk XNS Application Services MOP Maintenance Operations Protocol DAP Data Access Protocol RTSE From TCP Presentation Services SAP Service Advertising Protocol To VINES NETRPC ROSE ACSE - Association Control Service Element ROSE - Remote Operation Service Element RTSE - Reliable Transfer Service Element From VSPP From IPX NetBIOS To IPX To VFRP ARP RARP Address Reverse Resolution ARP Protocol ROSE SMB Server Message Block RPL Remote Program Load NetWare Lite To VFRP IGMP Internet Group Mgmt. Protocol CMIP DS MHS FTAM MMS ODA Common Directory Mail File Office VT Mgmt. Services Transfer Handling Manufacturing Messaging Document Virtual Information X.500 Access Service Service Architecture Terminal Protocol X.400 and Mgmt. Named Pipes Print NCP NetWare Core Protocol OSPF IGRP/EIGRP GGP RIP BGP EGP Open Shortest Interior Gateway Routing Exterior Border Path First Gateway to Routing Routing CISCO Gateway Gateway Gateway Information DVMRP Distance Vector Multicast Routing Protocol NDS NetWare Directory Services XDR External Data Representation To NetBIOS To DLSw SSP NETWORK LAYER Browse File RUNIX Remote UNIX Services LPP Lightweight Presentation Protocol DAP Lightweight Directory Access Protocol SESSION LAYER To PPTP DDM DCA SNA/DS SNA/MS DIA SNA/FS Distributed Document SNA SNA Document File Data Content Services Interchange Distributed Mgmt. Mgmt. Architecture Architecture Services Services From IPX From DECnet NSP XNS Xerox Network System DECnet Phase IV SNA Transaction Services SUN Network Services PMAP NIS YP NFS Port Network Network File System Information Mapper System NLM Statd Network Status Mount Lock Mgr. Daemon Ipr login rsh rexec rcp Remote Remote Remote Remote Remote Print Copy Execution Login Shell SMTP HTTP FTP TELNET Simple HyperText File Mail Transfer Transfer Virtual Protocol Protocol Terminal Transfer Protocol • Specifies architectureindependent data transfer format • Encodes and decodes data; encrypts and decrypts data; compresses data ISO IBM Protocols Novell NetWare TCP/IP Hewlett-Packard Network Services RFA Network Remote Remote Remote Virtual File Database File Process Transfer Access Access Comm. Terminal VICP VINES Internet Control Protocol Introducción Correo Electrónico HTTP Problemática Objetivos Diseño Requerimientos Una aplicación de red implica diseñar o usar un protocolo existente. Para esto es fundamental conocer los diversos protocolos de las diferentes capas para poder elegir el que mejor se atenga a nuestro requerimientos. Confiabilidad, seguridad, etc. Aplicaciones tradicionales Arquitectura de tipo Request / Reply de mensajes entre cliente y servidor. Aplicación versus protocolo Ejemplo: HTTP (Protocolo) ! = Firefox (Aplicación). Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir SMTP, POP3, IMAP, Webmail, MIME Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir Simplicidad del correo Estrategia Los protocolo de correo electrónico son considerablemente simples debido en gran parte a que delegan la interpretación de los datos en otros protocolos o convenciones. En los mensajes se transfiere solo texto en formato ASCII. La interpretación queda del lado del RFC822 y las extensiones MIME. Formato de mensaje estándar Header (Comandos Separados por CRLF). From:. To:, Cc:, etc. Body (ASCII plano). Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir Extensiones al formato de mensaje Multimedia Con el advenimiento de mejores enlaces y la profusión de internet se extiende el formate de mensaje para poder tranferir contenido multimedia sin modificar los protocolos básicos. Extensiones Nuevos campos del header (MIME-Version:, Content-Type:). Definiciones de tipos y subtipos (Imágenes, Videos, Documentos). Encodings para codificar los distintos tipos de datos en ASCII (base64). Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir Ejemplo Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir SMTP Propiedades esenciales La implementación más conocida es sendmail. Las casillas de correo son analogı́as de los buzones. Nos podrı́amos conectar directo con el host donde reside la casilla del destinatario y enviarle el correo con el protocolo SMTP. En general nos conectamos con nuestro proveedor y luego el correo pasa por varios gateways antes de llegar al destino. ¿Por qué no enviarlo directo al destino?. Para más información, RFC 2821. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir Ejemplo Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir POP3 Client oriented Se descargan los correos y administran localmente. No hace falta estar conectado para acceder a los correos. El espacio de alamacenamiento lo define el usuario. Contenido local, ¿Más inseguro?. Responsabilidad de backup del lado del usuario. Sencillo, fácil de usar y configurar. Para más información, RFC 1939. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir Ejemplo Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir POP3 Mensajes LIST. STAT. DELE n. QUIT. RETR n. Sencillo, fácil de usar y configurar. Para más información, RFC 1939. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir Ejemplo Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción MIME Enviar Recibir IMAP Server oriented Es el protocolo de acceso más complejo y potente. Sirve cuando se accede a la misma casilla desde distintos hosts. Permite administrar carpetas del lado del servidor. Permite guardar estado. Busqueda del lado del servidor. Webmails y celulares lo utilizan. ¿Más lento? Para más información, RFC 3501. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Conceptos fundamentales Generales Usa TCP (puerto 80). Un archivo ı́ndice con referencia a los diversos objetos. Browser y servidor se intercambian mensajes HTTP (HEADER:BODY). Cada objeto se referencia por un identificador único (URL). HTTP no mantiene estado. Versiones HTTP 1.0 es NO persistente. HTTP 1.1 sı́ lo es. Muchos objetos pueden ser transmitidos por una única conexión. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Ejemplo Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Modelo HTTP Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia HTTP persistente ¿Por qué? 2 ∗ RTT ∗ Objeto. Muchas conexiones, sobrecarga OS. Congestion Window. Pipelining Espera completar los pedidos antes de envı́ar nuevos requests. Con PL, envı́a request apenas encuentra referencias (default en 1.1). Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Petición HTTP Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Tipos de peticiones HTTP 1.1 GET. HEAD. POST. PUT. DELETE. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Respuesta HTTP Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Algunos campos del encabezado Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Técnicas de cacheo Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Cacheo HTTP Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Otras técnicas Mirroring estático Consiste en replicar el contenido para distribuir la carga. Se puede distribuir de varias formas siendo la geográfica la más utilizada. Flash Crowds Picos de tráfico efı́meros y luego tráfico estable. Por ejemplo, diarios ante situaciones crı́ticas (ataques terroristas, muerte de celebridades, etc). Solución: Mirroring dinámico. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia Para profundizar Otros temas Web dinámica (CGI). Dinamismo del lado del server (PHP) o del cliente (Javascript). Cookies para mantener estado. Wireless Web (WAP). Web Sockets. Guido Chari Introducción a Aplicaciones Introducción Correo Electrónico HTTP Introducción Implementación Eficiencia ¿Repasando...? ¿Dudas?, ¿Preguntas? Guido Chari Introducción a Aplicaciones