Ano Lectivo 2012/2013 * 2º Semestre Licenciaturas em Engenharia Informática (5378) Tecnologias e Sistemas da Informação (6625) Aula 3, 8/3/2013 Nuno M. Garcia, ngarcia@di.ubi.pt
Coisas para fazer: Descrever as funções de cada uma das camadas do modelo OSI Ler as páginas seguintes (comparar as versões em Português e em Inglês) http://en.wikipedia.org/wiki/internet_protocol http://en.wikipedia.org/wiki/ipv4 Fizeram isto??? http://en.wikipedia.org/wiki/ipv6 http://pt.wikipedia.org/wiki/rede_de_computadores (NÃO É PRECISO entregar estas revisões, é trabalho privado) Na próxima aula: como funciona o protocolo HTTP? 2
Agenda: Dia do profissional (follow up) Semana da UBI / Jornadas NINF Revisões de conceitos importantes o padrão HTTP
R Addressing Scheme + Common Protocols + Format Negotiation 4
Endereço 1 Endereço 2 Endereço 3 R Endereço n pacotes de dados 5
Endereços IP (IP = Internet Protocol) IPv4: endereços no formato FF.FF.FF.FF (hex) por exemplo: 193.136.66.5 R 6
R Endereços IPv6 têm o formato FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF (oito grupo de 2 bytes cada) por exemplo: 3ffe:1900:4545:3:200:f8ff:fe21:67cf 7
Em resumo: cada computador que está ligado à Internet tem um endereço único, que lhe permite comunicar com todos os outros computadores. Esse endereço é um endereço IP. Certo? nem por isso... IPv4 = endereços públicos e endereços privados IPv6 = possibilidade de existência apenas de endereços públicos R PORQUÊ? 8
R 9
Genericamente, como são transmitidos os dados sobre um pacote IP? R 10
R Existem computadores na Internet cuja função é manterem as tabelas de relação entre um endereço IP e o seu nome de domínio. Essas máquinas integram aquilo que se chama a estrutura de DNS (Domain Name Servers). 11
R 12
R Anatomia de um nome Internet (URI) http://www.server.org/folder/document.txt http: - especificação do protocolo www - especificação do sub-domínio server - especificação do nome do servidor org - especificação do domínio de topo (Top Level Domain) folder - nome da pasta onde se encontra o documento document.txt - identificação do documento. 13
R Exemplo de URIs http://www.di.ubi.pt/~ngarcia/index.html http://193.136.66.5/~ngarcia/index.html 14
R Exemplos de atribuição entre nomes e endereços IP www.ubi.pt 193.136.66.209 www.di.ubi.pt 193.136.66.5 penhas.di.ubi.pt 193.136.66.27 ninf.ubi.pt 193.136.64.183 www.parlamento.pt 80.251.167.27 www.google.pt 209.85.227.147 15
O Protocolo de Transferência de Hiper-Texto HyperText Transfer Protocol (HTTP) É definido colaborativamente pela World Wide Web Consortium (W3C http://w3c.org) e pela Internet Engineering Task Force (IETF http://www.ietf.org) O HTTP 1.1 está definido na RFC 2616 (Junho de 1999) (http://tools.ietf.org/html/rfc2616) 16
1989 - Tim Berners-Lee, a trabalhar no CERN (European Organization for Nuclear Research), propôs criar um novo projecto com o objectivo de facilitar a troca de informação entre cientistas, usando um sistema de hipertexto. 1990 - Berners-Lee escreve dois: um browser chamado WorldWideWeb; um servidor de hipertexto, o primeiro servidor www conhecido como CERN httpd, instalado num computador NeXTSTEP. 1994 - Tim Berners-Lee constitui o World Wide Web Consortium para regular o desenvolvimento e criar padrões das tecnologias envolvidas (HTTP, HTML, etc.). 17
Numa comunicação HTTP, existe um cliente e um servidor.!!! O servidor é um computador que se situa na Internet, que tem um IP público, e que corre um software de serviço HTTP. Além disso, este computador tem acesso às páginas que tem que disponibilizar aos clientes que as solicitem. O cliente comunica com o servidor, pede uma página, e interpreta os comandos que essa página contém, exibindo o resultado no ecrã. 18
Exemplos de softwares que são servidores de HTTP: > APACHE (http://www.apache.org) > Microsoft (Microsoft Personal Web Server, Microsoft Internet Information Server,...) >... outros... > + de 150.000 resultados no Google para free HTTP server (muitos são Open Source) 19
Exemplos de softwares que fazem de clientes HTTP (entre outros protocolos) - BROWSER Mosaic Firefox Internet Explorer Chrome Safari Opera (... cada plataforma pode ter um cliente específico) 20
The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. HTTP has been in use by the World-Wide Web global information initiative since 1990. The first version of HTTP, referred to as HTTP/0.9, was a simple protocol for raw data transfer across the Internet. HTTP/1.0, as defined by RFC 1945, improved the protocol by allowing messages to be in the format of MIME-like messages, containing metainformation about the data transferred and modifiers on the request/response semantics. However, HTTP/1.0 does not sufficiently take into consideration the effects of hierarchical proxies, caching, the need for persistent connections, or virtual hosts. In addition, the proliferation of incompletelyimplemented applications calling themselves "HTTP/1.0" has necessitated a protocol version change in order for two communicating applications to determine each other's true capabilities. This specification defines the protocol referred to as "HTTP/1.1". This protocol includes more stringent requirements than HTTP/1.0 in order to ensure reliable implementation of its features. (in http://www.w3.org/protocols/rfc2616/rfc2616-sec1.html#sec1.1) 21
Cliente HTTP Servidor HTTP 22
Cliente HTTP Servidor HTTP IP www.ubi.pt? Servidor DNS 23
Cliente HTTP Servidor HTTP Servidor DNS IP www.ubi.pt = 193.136.66.209 24
Cliente HTTP Servidor HTTP telnet 193.136.66.209 80 Servidor DNS 193.136.66.209:80 25
Cliente HTTP Servidor HTTP OK Servidor DNS 193.136.66.209:80 26
Cliente HTTP Servidor HTTP GET / HTTP/1.1 Host: www.ubi.pt Servidor DNS 193.136.66.209:80 27
Cliente HTTP Servidor HTTP Servidor DNS HTTP/1.1 200 OK Date: Sun, 07 Mar 2010 18:23:09 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET 28
Pedido Resposta.......... V 29
Isto é quando as coisas correm bem... recordar mensagem: HTTP/1.1 200 OK E quando correm mal? Erros HTTP: erros da classe 4xx e da classe 5xx e.g. 404 Not Found, 505 HTTP Version Not Supported 30
Que pedidos é que um cliente HTTP pode fazer a um servidor HTTP? Já vimos um dos pedidos: GET /folder/document.html HTTP/1.1 Host: www.website.com 31
Pedidos HTTP: GET HEAD PUT... alguns outros (é matéria de TPC) 32
Um comando HTTP tem o seguinte formato genérico: <linha inicial, diferente para pedido e resposta> Header1: valor1 Header2: valor2 Header3: valor3 <linhas opcionais que contêm o corpo da mensagem. pode ter qualquer comprimento e incluir dados que não sejam de texto. o tamanho é controlado pela opção Content-Length no cabeçalho e o tipo de dados é controlado pela opção Content-Type também do cabeçalho> 33
Exemplo de um POST POST /userlogin.jsp HTTP/1.1 Host: www.samplesite.com User-Agent: Mozilla/4.0 Content-Length: 29 Content-Type: application/x-www-form-urlencoded userid=john&password=test1234 34
Outro exemplo de um POST POST /path/datascript.cgi HTTP/1.0 From: john@samplesite.com User-Agent: HTTPTool/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 32 home=nuno&favoritecolor=yellow 35
Existem outras formas de enviar dados ao servidor de HTTP. Em vez de usar um POST, podem enviar-se pedidos ao servidor usando o URL. GET /path/script.cgi?field1=valor1&field2=valor2 HTTP/1.0 Por exemplo: http://www.youtube.com/watch?v=ttaulpclhco :-) 36
HTML 4.01 (in http://www.w3.org/tr/html401/) This specification defines the HyperText Markup Language (HTML), the publishing language of the World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 and HTML 2.0), HTML 4 supports more multimedia options, scripting languages, style sheets, better printing facilities, and documents that are more accessible to users with disabilities. HTML 4 also takes great strides towards the internationalization of documents, with the goal of making the Web truly World Wide. 37
HTML 4.0 Internacionalização (suporte para conjuntos de caracteres nacionais, sentido de escrita de texto, etc...) Acessibilidade melhorada Novo modelo de tabelas Documentos compostos (elemento Object) Folhas de estilo (Style Sheets) Scripting (smart forms) Impressão de documentos complexos (elemento Link) 38
SGML e HTML Standard Generalized Markup Language Hypertext Markup Language O SGML é um sistema para definir uma Linguagem com Marcação (Markup Language). Numa linguagem com marcação os autores marcam os seus documentos por forma a incluir informação estrutural, de apresentação e informação semântica integrada no conteúdo do documento. O HTML é um uma SGML. 39
Uma linguagem com marcação definida em SGML é dita uma aplicação de SGML. Uma aplicação de SGML é geralmente caracterizada por ter: uma declaração SGML: define que caracteres e delimitadores podem aparecer na aplicação Uma definição de tipo de documento (Document Type Definition - DTD). O DTD define a sintaxe das construções de marcação. Pode incluir definições adicionais como referências de identidade de caracteres (< == <). A especificação da semântica da marcação. Esta especificação impõe restrições à sintaxe. Instâncias do documento contendo dados e marcações. Cada documento contém referência ao DTD usado para o interpretar. 40
Exemplo de HTML 41
Construtores de SGML presentes no HTML Elementos. Cada elemento é composto normalmente por três partes: etiqueta de início, conteúdo, etiqueta de fim. Há elementos que podem omitir a etiqueta final, como por exemplo, a etiqueta <p> e a etiqueta <li>. Há elementos que podem omitir a etiqueta inicial, como por exemplo a etiqueta <head> e <body>. Os nomes de elementos não são agnósticos em relação às maiúsculas. 42
etiquetas que podem ser omitidas equivalentes 43
Construtores de SGML presentes no HTML Elementos. Esta é a lista de todos os elementos usáveis em HTML 4.01: http://www.w3.org/tr/html401/index/ elements.html 44
Construtores de SGML presentes no HTML Elementos. Atributos. Os elementos podem ter propriedades associadas, denominadas atributos. Os atributos são definidos na etiqueta de definição do elemento, antes do sinal de >. Os nomes dos atributos são agnósticos quanto ao uso de maísculas. Os valores dos atributos são geralmente agnósticos quanto às maíusculas. Os valores de atributos estão compreendidos entre ou. 45
Construtores de SGML presentes no HTML Atributos. Esta é a lista de todos os atributos usáveis em HTML 4.01: http://www.w3.org/tr/html401/index/attributes.html 46
Construtores de SGML presentes no HTML Elementos. Atributos. Referências a caracteres. Permitem a inclusão de caracteres no documento ">" representa o sinal > """ representa o caracter " "å" (em decimal) representa a letra a com um pequeno circulo em cima "水" (em hexadecimal) representa o ideograma Chinês para água 47
Construtores de SGML presentes no HTML Referências a caracteres. Esta é a lista de todas as referências a caracteres usáveis em HTML 4.01: http://www.w3.org/tr/html401/sgml/entities.html 48
Construtores de SGML presentes no HTML Elementos. Atributos. Referências a caracteres. Comentários. Os comentários não interpretam o texto. Os comentários têm este aspecto: 49
A estrutura global de um documento HTML: http://www.w3.org/tr/html401/struct/ global.html Os tipos básicos de dados em HTML: http://www.w3.org/tr/html401/types.html 50
Ligações com informação adicional http://www.w3.org/tr/html401/ http://www.w3.org/protocols/rfc2616/ rfc2616.html http://www.jmarshall.com/easy/http/ http://developers.sun.com/mobility/midp/ ttips/httppost/ 51
TPC (não é para entregar!) Ver o sítio http://www.jmarshall.com/easy/http/ Tentar usar o programa TELNET para conectar com o sítio do DI (www.di.ubi.pt) ou do NINF (ninf.ubi.pt). Na próxima aula: vamos continuar a ver a estrutura de um documento HTML 4.01, e vamos ver exemplos de HTML 5.0