Informática para Ciências
e Engenharias
2014/15
Na aula de hoje...
Introdução às redes de computadores e
à Internet:
•
Redes de computadores e seus protocolos•
Obtenção de dados da Internet usando MATLAB/Octave.
Métodos de Monte Carlo
Redes de computadores
Um conjunto de computadores pode ser
interligado com o objectivo de trocar
informação e partilhar recursos,
transferindo dados entre si.
•
Exemplo: pesquisa no Google•
enviamos os termos a pesquisar, usamos osrecursos do motor de pesquisa, obtemos de volta o resultado.
Redes de computadores
Numa transferência intervêm dois
computadores e a rede.
•
Nó emissor : produz uma sequência de bytes (mensagem)•
Nó receptor : recebe essa sequência de bytes•
A rede, a infraestrutura que inclui•
Meios de interligação: cabos, atmosfera, …•
Computadores dedicados a encaminhar aRelação Cliente Servidor
Programa Cliente Programa ServidorPedido (request)
Resposta (response)
Um servidor pode servir vários clientes em simultâneo. Por exemplo, Browser Por exemplo, Servidor WebRelação Cliente Servidor
O servidor gere um recurso e fornece um serviço aos clientes
manipulando esse recurso.
Um servidor Web pode gerir recursos com dados ou programas
que executa por conta dos clientes.
•
Um Servidor FTP ou de email funciona de forma análoga.3. Servidor envia a resposta Recurso 2. Servidor processa o pedido 4. Cliente processa a resposta
1. Cliente envia pedido
Programa Cliente
Programa Servidor
Relação Cliente Servidor
Exemplo
•
O browser pede uma página de um blog•
O servidor do blog recebe o pedido, obtém o conteúdo da base de dados•
Texto, comentários, imagens, etc•
O servidor envia essa informação, devidamente estruturada•
O browser processa a informação e apresenta a página.Relação entre pares
Ligação peer-to-peer
•
(par-a-par, P2P)•
Neste tipo de relação, todos os participantes funcionam como clientes e como servidores•
O esforço é partilhado, não exigindo servidores com capacidades especiais•
Napster foi o primeiro exemplo notório (mas era centralizado)•
BitTorrent é um dos mais conhecidos, e pode ser descentralizado.Redes de computadores
Nos nós terminais
•
Placa ethernet•
sinais por cabo•
Placa Wi-Fi•
sinais por ondas rádio
Rede local
•
LAN, Local Area Network•
~1km; os computadores estão ligados directamente.Redes de computadores
LAN
•
Cobre um edifício, ou edifícios próximos WAN
•
Wide Area Network•
Liga redes locais Encaminhador
•
Router (ou gateway)•
máquina dedicada que liga redes diferentes (e.g. LAN a WAN)12
Redes de computadores
Nó Nó Nó Router Nó Nó Router Nó Router Ethernet ou WiFI Ethernet ou WiFiLigação via satélite
Ligação fibra óptica
Duas LAN ligadas por 3 encaminhadores
Redes de computadores
Poder enviar sinais não basta.
É preciso saber
•
Remetente e destinatário•
Controlar o tráfego•
Como interpretar o conteúdo, etc.Protocolos Internet
Nível físico
•
Sinais entre os nós da rede•
Modulação e conversãoProtocolos Internet
Nível físico
Nível da ligação
•
Transmissão de conjuntos de bits entre nós da redeProtocolos Internet
Nível físico
Nível da ligação
Nível IP (Internet Protocol)
•
Gere os pacotes de bytes, endereçamento e reencaminhamento•
A informação é dividida em pacotes (sequênciasde bytes), encaminhados individualmente ao destino.
•
Cada máquina tem um endereço e cada pacoteProtocolos Internet
Internet Protocol (IP)
•
o protocolo IP (versão 4) especifica um endereço único com 32 bits para cada máquina•
(128 bits no IPv6)•
mas permite redes privadas•
e.g. em cada casa o router doméstico cria uma rede comos endereços 192.168.0.(0 – 255), e o ISP fornece um outro endereço para toda essa rede.
Protocolos Internet
Nível físico
Nível da ligação
Nível IP (Internet Protocol)
Nível de transporte (TCP).
•
Gere o transporte de dados, encarregando-se da gestão de pacotes e detecção eProtocolos Internet
Nível físico
Nível da ligação
Nível IP (Internet Protocol)
Nível de transporte (TCP).
Nível da aplicação
•
Protocolos destinados a gerir a comunicação entre aplicações ou com o utilizador.Protocolos Internet
Normalmente não vemos endereços IP
Usamos endereços simbólicos
•
Strings associadas aos endereços IP•
e.g. www.google.com•
O DNS (Domain Name System) é um sistema hierárquico de servidores que mapeia osTop level domains
Top Level Domain Utilização
biz Negócios
com Comercial (EUA)
edu Educação (EUA)
info Informação
gov Governo (EUA)
mil Militar (EUA)
net Rede
Top level domains
Fora dos Estados o TLD é o código (com 2 letras) do país.
País TLD pt Portugal uk Reino Unido es Espanha fr França nz Nova Zelândia cn China … …
Domain Name System
Domínio raiz Top-level
domains edu gov com … uk pt …
utl unl cmu cs fe fct di google ibm
Protocolos Internet
Endereços simbólicos, exemplo
•
nslookup (no command prompt ou consola)~$ nslookup fct.unl.pt ...
Name: fct.unl.pt
Nome do nó
asc.di.fct.unl.pt
Top level domain
(TLD)
Organização
Nome da
máquina
~$ nslookup asc.di.fct.unl.pt ... asc.di.fct.unl.ptcanonical name = di78.di.fct.unl.pt. Name: di78.di.fct.unl.pt
Nome do nó
Exemplo:
•
Em Março 2015 vários ISP bloquearam o acesso ao site thepiratebay.se por ordem judicial.•
Fizeram-no configurando os seus servidores DNS para não resolver este nome emendereço IP
•
Mas o “bloqueio” pode ser facilmente contornado usando outro servidor DNSInternet
Reenvio de pacotes
•
O remetente envia cada pacote ao router na sua rede.•
Cada router reenvia os pacotes ao router que (estima) está mais próximo do destinatário•
Pelo endereço IP e tempos de transmissão•
Este processo é dinâmico, permitindo gerir o tráfego econtornar falhas pontuais na rede.
•
Eventualmente, o pacote chega a um router que o envia ao destinatárioInternet
Programas servidores
Nos servidores há programas que esperam
por pedidos (programas servidores)
•
São executados em background, sem interacção directa com utilizadores (deamons)•
Aguardam pedidos dirigidos a portas específicas•
Uma porta é um endereço dentro da própria máquina•
Exemplos•
Servidor Web (porta 80)Programas servidores
Exemplos:
•
Servidor Web (porta 80)•
Recursos: ficheiros, programas, páginas dinâmicas•
Serviços: obter ficheiros e executar programas CGI a pedido do cliente.•
Servidor FTP (portas 20 e 21)•
Recursos: ficheiros•
Serviços: leitura e escrita de ficheiros•
Servidor de Mail (porta 25, SMTP)•
Recursos: ficheiro spool de email.Programas clientes
Exemplos:
•
Browser, ftp, ssh,
Encontra o programa servidor
•
Pelo endereço da máquina onde o programa servidor está a ser executado•
Pela porta associada ao protocolo e serviço•
e.g. O browser contacta a máquina com aquele endereço IP na porta 80 para o protocolo HTTP.World Wide Web
1989
•
Tim Berners-Lee (no CERN) escreve uma proposta para desenvolver um sistemadistribuído de hiper-texto. Ligar uma “web of notes with links” para ajudar os físicos do CERN a partilhar informação em grandes projectos.
1990
•
Tim B-L escreve um browser com interface gráfica.World Wide Web
A Web (teia)
•
Documentos interligados e sofware para consultar e manipular essa informação. Protocolos da Web
•
Protocolos de aplicação que gerem a partilha da informação. Página Web
•
Documento com dados e, normalmente, ligações (link) a outros documentos. Link (elo)
World Wide Web
Site Web
•
Conjunto de páginas Web relacionadas e, geralmente, armazenadas na mesma máquina. Servidor Web - servidor
•
Programa, na máquina que aloja a informação, que responde a pedidos de acesso às páginas Web. Browser Web - cliente
•
Ferramenta que pede páginas Web e as mostra.World Wide Web
A Web não é a Internet
•
a Internet inclui muito mais do que a Web•
a Web existe sobre a Internet
Três elementos centrais da Web são
•
Uniform Resource Locator•
(ou endereço Web)•
HTML•
linguagem das páginas Web•
HTTPURL: Uniform Resource Locator
http://asc.di.fct.unl.pt/~pm/index.html
Protocolo Máquina Endereço IP:x.x.x.x Nome DNS Ficheiro /home/pm/public-html/index.html
Forma normalizada de especificar a
localização de um recurso na Web.
•
Protocolo (pode ser omitido);•
Nome da máquina;HTML
Hypertext Markup Language (HTML)
•
Linguagem usada para criar páginas Web.•
é uma markup language porque usa marcas (tags) para anotar a informação.
Tags (marcas)
•
Especificam a interpretação do conteúdo•
A forma concreta como a informação éHTML
Código fonte da página, HTML
HTML
Representação da página pelo browser
HTML
Marcas (tags)
•
Colocadas entre os símbolos < e >•
A marca final distingue-se da inicial pela </..>
Elementos
•
Os elementos da página são definidos por uma marca inicial e final ladeando o conteúdo.•
e.g. <TITLE>Título</TITLE>HTML
Exemplos
•
<P> ... </P> especifica um parágrafo separado.•
<BR> indica uma mudança de linha.•
<CENTER> ... </CENTER> centra o conteúdo.•
<I> … </I> conteúdo em itálico.•
<B> … </B> conteúdo em negrito (bold).•
<HR> insere um separador horizontal a toda a largura da página (mudança de contexto).HTML
Exemplos
•
<UL> … </UL> define uma lista de itens.•
<LI>…</LI> define um item.•
<H1> … </H1> Formatação do texto no estilo H1 –relevo máximo (dimensão das letras …).•
…•
<H8> … </H8> Formatação do texto no estilo H8 – relevo mínimo.HTML
Nota:
•
No standard HTML5 a ênfase é na semântica e não no aspecto visual.•
Várias tags foram delegadas para folhas de estilo (e.g. CENTER) ou têm significadoHTML
A tag pode ter também atributos
•
informação adicional acerca do elemento.•
nome-do-atributo="valor"
Exemplo
•
Imagem:HTML
Links (hiper-ligação)
•
Tag A (âncora) Exemplo
<A HREF = "http://ssdi.di.fct.unl.pt/ice/b/praticas.html"> página das práticas de ICE-B</A>Protocolo HTTP
Browser Servidor
Pedido
Resposta
GET /index.html HTTP/1.1
Linhas com informação sobre o pedido e o browser Linha em branco
Mais linhas opcionais
200 OK HTTP/1.1
Linhas com informação sobre a resposta e o servidor Linha em branco
Mais linhas opcionais
<html>
…
</html>
Pedidos e respostas são
World Wide Web
Utilizador especifica URL, o browser pede o recurso ao servidor, este envia os dados com o texto, imagens, etc.
Conteúdo estático
O conteúdo pode ser estático
•
é enviado um ficheiro que existe no servidor•
Exemplos: ficheiros HTML, imagens, audio clips.•
URLs para conteúdos estáticos:•
http://www.cs.cmu.edu:80/index.html•
http://www.cs.cmu.edu/index.html•
http://www.cs.cmu.edu•
Identificam o ficheiro index.html gerido pelo servidor em www.cs.cmu.edu à escuta na porta 80.Conteúdo dinâmico
O conteúdo pode ser dinâmico
•
Quando é pedido um recurso dinâmico, o servidor executa um programa que o gera no momento.Acesso a recursos remotos
O MATLAB (e Octave) inclui funções para
aceder a recursos pelo URL
[conteudo, sucesso] = urlread( url )
•
A função urlread acede ao URL url e retorna:•
na string conteudo o conteúdo obtido;•
no booleano sucesso o valor true (1), se a operaçãoteve sucesso, e o valor false (0), se a operação não teve sucesso.
Acesso a recursos remotos
[nComp,sucesso]=urlwrite(url,nomeFich)
•
A função urlwrite acede ao URL url, grava o conteúdo no ficheiro nomeFich e retorna:•
na string nComp o nome completo do ficheiro local,incluíndo o caminho;
•
no booleano sucesso o valor true (1), se a operação tevesucesso, e o valor false (0), se a operação não teve sucesso.
Exemplo: pauta
As notas dos trabalhos e testes estão
num servidor:
• http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasAC.txt
50123 12.5 14.1 16.4 9.9; 50224 8.1 10.3 5.5 8.2; 51001 7.7 4.4 15.1 12.0
Exemplo
Compreender o problema Caracterizar:
•
Entrada: URL•
Saída: pauta com as avaliações Tarefas
•
Obter os dados remotos (urlread) e converter numamatriz (Já vamos ver como...)
•
Calcular a pautaExemplo
Assinaturas das funções
•
Ler as notas•
function notas=lenotas(url)•
Da aula 4•
function pauta = calculapauta(notas)•
function nota = calculanota(notas)•
function res=arredonda(valor,casasDec)•
Juntar tudoExemplo
Converter string em números:
•
str2num octave:11> a=str2num(s)a = 123 octave:12> a+1 ans = 124 octave:13> mStr='1,2,3;4,5,6;7,8,9' mStr = 1,2,3;4,5,6;7,8,9 octave:14> m=str2num(mStr) m = 1 2 3 4 5 6 7 8 9 octave:9> s='123' s = 123 octave:10> s+1 ans = 50 51 52
Exemplo
Os dados no servidor são fáceis de
converter:
50123 12.5 14.1 16.4 9.9; 50224 8.1 10.3 5.5 8.2; 51001 7.7 4.4 15.1 12.0
Exemplo
octave-3.6.4.exe:3>ns=lenotas('http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasA.txt') Falhou a leitura do URL http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasA.txt
ns = [](0x0)
octave-3.6.4.exe:4>ns=lenotas('http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasAC.txt') ns =
5.0123e+004 1.2500e+001 1.4100e+001 1.6400e+001 9.9000e+000 5.0224e+004 8.1000e+000 1.0300e+001 5.5000e+000 8.2000e+000 5.1001e+004 7.7000e+000 4.4000e+000 1.5100e+001 1.2000e+001
Exemplo
Testar calculapautaurl:
> url='http://ctp.di.fct.unl.pt/~mm/ice/teoricas/notasAC.txt' > pauta=calculapautaurl(url) pauta = 50123 13 50224 7 51001 -1Nota: http:// ou file://
O URL pode ser usado para designar
um ficheiro local
•
Nesse caso o protocolo não será http mas sim file.Nota: http:// ou file://
Por exemplo, guardamos notasAC.txt
na pasta de trabalho:
octave:11> url='file://notasAC.txt'; octave:12> pauta=calculapautaurl(url) pauta = 50123 13 50224 7 51001 -1Monte Carlo
Nome cunhado pelo matemático
Nicholas Constantine Metropolis
•
(1915-1999)
Conjunto de métodos baseados em
Estimar π
Círculo de raio 1, área = π
•
quadrado área = 1•
quarto, área = π/4Estimar π
Algoritmo (Monte Carlo)
•
N pontos ao acaso•
contar d dentro•
π ~ (d/N)*4Calculo de áreas por MC
Em geral
•
N pontos ao acaso numa região conhecida que inclua a região de interesse•
pseudo aleatórios•
contar quantos incidem na área de interesse•
a área de interesse será essa fracção, aproximadamente, da área conhecida•
funciona melhor quanto maior for N e quanto maior for a fracção na área de interesse.Calculo de áreas por MC
Função estimapi
•
recebe o número de pontos a gerar para a estimativa•
devolve•
o valor estimado de pi•
duas matrizes com os pontos (x,y) que calharam dentroe fora da área de interesse, para o gráfico.
Assinatura da função:
Cria os vectores de saída (no máximo N linhas) e os
contadores que indicam
quantos pontos e em que linha vamos, em cada caso.
Ciclo principal para disparar N pontos
Função rand simula números aleatórios (pseudo-aleatória) 0 <= rand < 1 octave:46> rand ans = 0.30517 octave:47> rand ans = 0.73012 octave:48> rand ans = 0.76470 octave:49> rand ans = 0.083024
O ponto gerado a cada iteração conta dentro se a distância à origem não ultrapassar a unidade, fora se ultrapassar.
Incrementando as variáveis ixDentro e ixFora mantemos a contagem e o índice do ponto na matriz respectiva.
O resultado, a estimativa de π, é o quádruplo da área estimada pela proporção de pontos dentro.
É preciso também
redimensionar as matrizes dos pontos de acordo com o número efectivo de pontos (N linhas era o máximo possível, para evitar
redimensionar as matrizes muitas vezes durante o ciclo).
Estimar π
Script de
Estimar π
N=100
Estimar π
N=500
Estimar π
N=5000
Estimar π
N=25000
Estimar π
Mais pontos,
Perigo de incêndio
Incêndio
•
Simulação aleatória•
Cada simulação dá um resultado diferente•
Monte Carlo:•
Fazer muitas, tirarPerigo de incêndio
Simulação de incêndio (aula 5)
function novoEstado=propaga(estado, ... mapa,probPropagar,efeitoDeclive)
function estado=extingue(estado,probApagar)
function incendio(mapa,focoInicial, probPropagar, ... probApagar,efeitoDeclive,iteracoes)
Perigo de incêndio
Objectivo
•
Obter um mapa com as probabilidades doincêndio chegar a cada ponto em certo tempo
•
O tempo é o número de iterações•
As probabilidades são estimadas peloPerigo de incêndio
Algoritmo
•
Para um certo número N de iterações:•
Correr várias vezes a simulação•
A cada vez, marcar onde o incêndio chegouPerigo de incêndio
Como implementar
•
Correr várias vezes a simulação•
Criar uma função, com um ciclo for•
A cada vez, marcar onde o incêndio chegou•
Precisamos do resultado da simulação do incêndio•
Contar quantas vezes chegou a cada sítio•
Na função que corre várias vezes a simulação,Perigo de incêndio
Assinaturas:
•
As funções propaga e extingue são as da aula 5, sem modificação:function novoEstado=propaga(estado,mapa, ... probPropagar, efeitoDeclive)
Perigo de incêndio
Assinaturas:
•
Mas temos de alterar a função incendio:function incendio(mapa,focoInicial,probPropagar, ... probApagar,efeitoDeclive,iteracoes)
•
Precisamos que devolva o estado final dasimulação, para saber onde chegou o fogo
•
Não queremos que desenhe o gráfico, porquedemora mais e é desnecessário
function estado=incendio(mapa,focoInicial, ...
Perigo de incêndio
Assinaturas:
•
Depois precisamos de uma função quecalcule o perigo de incêndio pela contagem, simulando vários incêndios
•
Recebe os argumentos de que a simulaçãoprecisa, mais o número de repetições
function contagens=perigo(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive, ... iteracoes,repeticoes)
Perigo de incêndio
Implementação:
•
Modificar a função incêndio•
Devolver o estado final•
Não desenhar os gráficos, porque vamos ter de aPerigo de incêndio
Implementação:
•
Modificar a função incêndio•
Devolver o estado final•
Não desenhar os gráficos, porque vamos ter de aPerigo de incêndio
Implementação:
•
Criar a função perigo, para obter a contagem por cada ponto do mapa.function contagens=perigo(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive, ... iteracoes,repeticoes)
Perigo de incêndio
Implementação:
•
Criar a função perigo, para obter a contagem por cada ponto do mapa.function contagens=perigo(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive, ... iteracoes,repeticoes)
Perigo de incêndio
Implementação:
•
Criar a função perigo, para obter a contagem por cada ponto do mapa.function contagens=perigo(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive, ... iteracoes,repeticoes)
Para cada repetição, corremos a simulação de um incêndio, guardando o estado final.
Perigo de incêndio
Implementação:
•
Criar a função perigo, para obter a contagem por cada ponto do mapa.function contagens=perigo(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive, ... iteracoes,repeticoes)
Depois, contamos 1 em cada localização que esteja a arder ou tenha ardido, numa matriz que começou a 0.
Perigo de incêndio
Implementação:
•
Criar a função perigo, para obter a contagem por cada ponto do mapa.function contagens=perigo(mapa,focoInicial, ... probPropagar,probApagar,efeitoDeclive, ... iteracoes,repeticoes)
Isto serve apenas para seguirmos o progresso do cálculo, porque demora algum tempo.
O disp(f) escreve o valor de f na consola, e o comando fflush(stdout) obriga o
interpretador a actualizar a consola imediatamente.
Perigo de incêndio
Testes
•
Para correr a função perigo e ver o resultado precisamos do mapa, da matriz depropagação e de criar o gráfico.
•
Podemos criar um script de testes•
Ou fazer outra função, mas normalmente paraPerigo de incêndio
Testes
•
Para correr a função perigo e ver o resultado precisamos do mapa, da matriz depropagação e de criar o gráfico.
•
Podemos criar um script de testes•
Ou fazer outra função, mas normalmente paraNota
Truques úteis mas opcionais:
•
fflush(stdout) para mostrar informação naconsola durante a execução
•
more off para não interromper quando hámais do que um ecrã de informação
•
print('nome.jpg') para gravar imagens•
Scripts de testesPerigo de incêndio
Aplicação:
•
Cada hora de incêndio são 10 iterações•
Queremos incêndios de 1 a 15 horas, com 100 repetições para cada simulação.•
Corremos o programa com vários valores para o número de iterações da simulação.•
(podia ser mais eficiente se fossemos guardandoos resultados intermédios durante a simulação, mas isso exigiria alterações mais profundas).
Perigo de incêndio
Implementação:
•
Correr o programa com vários valores para o número de iterações da simulação.•
(podia ser mais eficiente se fossemos guardandoos resultados intermédios durante a simulação, mas isso exigiria alterações mais profundas).
•
Vamos imaginar que cada hora de incêndio corresponde a 10 iterações, e fazer para incêndios de 1 a 15 horas, com 100Perigo de incêndio
Aplicação:
•
Incêndios de 1 a 15 horas de duração•
100 repetições de cada simulação.•
Com e sem vento
Isto demora várias horas a calcular
•
Mas vamos gravando as imagens e vemos o resultado no final
1 hora simulada (10 iterações)
Perigo de incêndio
5 horas simuladas (50 iterações)
Perigo de incêndio
10 horas simuladas (100 iterações)
Perigo de incêndio
1 a 15 horas simuladas
Perigo de incêndio
Métodos de Monte Carlo
Resumindo:
•
Usamos um algoritmo não determinista (aleatório) para simular algo•
Amostramos o espaço de possibilidadesTrabalho Prático 1
Obter dados de um servidor (URL)
Processar os dados
•
matrizes, cálculos, …
Gerar gráficos
Trabalho Prático 1
Aulas práticas
•
Apoio nas próximas semanas