Nivel de Aplicación Teorı́a de la Comunicaciones 12 de Junio de 2012 Aplicaciones Las aplicaciones necesitan sus propios protocolos. Estas aplicaciones tienen dos aspectos: 1 2 Por un lado, son Aplicaciones tradicionales. En el sentido en que interactúan con el sistema operativo y con el usuario. Por otro lado, son Protocolos de red. En el sentido en que deben intercambian mensajes (con datos de Control y Usuario). Nivel de Aplicación - Teorı́a de la Comunicaciones Aplicaciones Es importante distinguir entre los programas del nivel de aplicación y los protocolos del nivel de aplicación. HTTP vs Apache, Firefox, wget, . . . FTP vs Filezilla, lftp, . . . SMTP vs qmail, Outlook, sendmail, . . . DNS vs BIND, . . . BitTorrent vs Transmission, µTorrent . . . Nivel de Aplicación - Teorı́a de la Comunicaciones Aplicaciones: World Wide Web Es la red de contenidos más grande del mundo y usa internet como su medio fı́sico El diseño original es de el año 1989, bastante despues de surgida internet (TCP/IP: 1979) El objetivo era brindar la posibilidad de organizar y extraer información, diseñada en hypertext (markup y links). Nivel de Aplicación - Teorı́a de la Comunicaciones Aplicaciones: World Wide Web Esta red de contenidos, ası́ como la red IP, también está interconectada por enlaces. Se puede pensar como un conjunto de servidores y clientes que intercambian información hablando el mismo lenguaje: HTTP. Los puntos de acceso a dicha información son las URI: scheme://domain:port/path?query#fragment Nivel de Aplicación - Teorı́a de la Comunicaciones HTTP: HyperText Transfer Protocol Está orientado a cliente-servidor y funciona mediante un esquema de request-response. TCP/80 Hay dos versiones: HTTP/1.0 (rfc 1945) y HTTP/1.1 (rfc 2616) Plataforma por excelencia de servicios Web Implementaciones de servidores: Apache (Apache Foundation) IIS (Microsoft) nginx (Igor Sysoev) GWS (Google) Resin (Caucho Technology) lighttpd (lighttpd) Nivel de Aplicación - Teorı́a de la Comunicaciones HTTP: Mecanismo La comunicación en HTTP (1.0) consiste en: 1. Un Cliente establece una conexión TCP con el Servidor. 2. El Cliente envı́a un Request. 3. El Servidor envı́a un Response. 4. Se cierra la conexión. 5. Se parsea el contenido del recurso y se vuelve a 1 Nivel de Aplicación - Teorı́a de la Comunicaciones HTTP: Mensajes de Requests Nivel de Aplicación - Teorı́a de la Comunicaciones HTTP: Result Codes Nivel de Aplicación - Teorı́a de la Comunicaciones HTTP: Ejemplo Request del cliente HEAD / HTTP/1.0 Host: www.dc.uba.ar Response del Servidor HTTP/1.1 200 OK Date: Tue, 12 Jun 2012 19:11:44 GMT Server: Zope/(Zope 2.10.6-final, python 2.4.5, linux2) ZServer/1.1 Plone/3.1.5.1 Content-Length: 625 Accept-Ranges: none Last-Modified: Tue, 12 Jun 2012 19:11:44 GMT Content-Type: text/html Via: 1.0 www.dc.uba.ar Vary: Accept-Encoding Connection: close Nivel de Aplicación - Teorı́a de la Comunicaciones HTTP: Formato de Mensajes START LINE <CRLF> MESSAGE HEADER <CRLF> MESSAGE BODY <CRLF> Basado en MIME: RFC 822 Donde MESSAGE HEADER son opciones de la forma: key: value<CRLF> MESSAGE BODY es contenido ASCII donde no aparece la secuencia <CRLF> y <CRLF> es \r \n Nivel de Aplicación - Teorı́a de la Comunicaciones HTTP: 1.1 La comunicación en HTTP (1.1) consiste en: 1. Un Cliente establece una conexión TCP con el Servidor. 2. El Cliente envı́a un Request. 3. El Servidor envı́a un Response. 4. Se parsea el contenido del recurso y se vuelve a 2 5. Se cierra la conexión. Nivel de Aplicación - Teorı́a de la Comunicaciones HyperText Transfer Protocol: Headers Los headers son la piezas fundamentales en una comunición HTTP y con ellos se pueden implementar muchos features, que en principio no son nativos de HTTP. Caches - Last-Modified o If-Modified-Since Virtual Hosting - Host Redirecciones - Location Autenticaciones - WWW-Authenticate y Authorization Nivel de Aplicación - Teorı́a de la Comunicaciones FTP: File Transfer Protocol Está orientado a cliente-servidor. Result Codes (1xx, 2xx, 3xx, 4xx, 5xx) TCP/21 y TCP/20 Usa dos conexiones: Una para comandos de control y otra para transmitir datos. Nivel de Aplicación - Teorı́a de la Comunicaciones File Transfer Protocol: Comandos USER - Para enviar el nombre de usuario. PASS - Para enviar la clave. CWD - Cambiar de directorio. PASV - Entrar en modo pasivo. PORT - Para anunciar el puerto en modo activo. RETR - Para bajar un archivo. LIST - Para listar los contenidos de un directorio. QUIT - Para finalizar la conexión. Nivel de Aplicación - Teorı́a de la Comunicaciones FTP: Modo Activo Nivel de Aplicación - Teorı́a de la Comunicaciones FTP: Modo Pasivo Nivel de Aplicación - Teorı́a de la Comunicaciones