Please enable JavaScript.
Coggle requires JavaScript to display documents.
Princípios de aplicações de rede, A Web e o HTTP, DNS, P2P, fluxos de…
Princípios de aplicações de
rede
Paradigma cliente-servidor
Servidor: Sempre ligado, IP permanente, usado em data centers
Cliente: não são sempre ligados, IP dinâmicos, não se comunicam com outros clientes, se comunicam com o servidor
Paradigma peer-peer (p2p)
Pares se comunicam com outros pares, afim de pegar e compartilhar informações
endereço de IP variavel
Servidores não estão sempre conectados, uma vez que não é necessário ser intermediário em todas as situações, pois os dispositivos finais podem se comunicar entre eles
Sockets
Socketes recebem e enviam mensagens para a camada de aplicação, como se fosse uma porta
um socket é análogo a uma porta
processo transmissor envia a mensagem através da porta
assume existencia de infra do outro lado para q a mensagem chegue ao socket do processo receptor
Endereçamento de processos
IP
O endereço IP é um número único que identifica um dispositivo conectado a uma rede, como um computador, smartphone, roteador, entre outros.
Numero de portas
s portas de rede são números que identificam um processo ou serviço específico em um host.
endereçar processos
Serviços de transporte
TCP
Prove: transporte confiável, controle de fluxo, controle de congestionamento, orientado a conexão:
não provê: garantia temporal, banda mínima e segurança
Podemos colocar criptografia nos sockets para gerar uma segurança ao tcp
TLS:
criptografa mensagens TCP
Integridade dos dados
autenticação dos pontos terminais
UDP
transferência de dados não confiável
Não provê:
controle de congestionamento
garantias temporais
controle de fluxo
confiabilidade
garantia de vazão
segurança
É RAPIDO
TCP/UDP:
Sem criptografia
A Web e o HTTP
Visão geral do HTTP
Protocolo da camada de aplicação
Linguagem de hyper texto
Http com cliente servidor:
Cliente:
Solicita, recebe e apresenta objetos web
Servidor:
Servidor web que responde pedidos e envia objetos web
Utiliza TCP
Porta 80 por padrão
Sem estado
servidor não mantém informação sobre pedidos anteriores do cliente
Mensagem de requisição HTTP
método GET
Para solicitar acesso a um URL. Ex: Quando um usuário clica em um link ou digita um URL, o navegador faz uma soliciação GET. Sempre envia os parÂmetros na URL
método HEAD:
Semelhante ao método get, mas retorna somente o cabeçalho da resposta, sem o corpo. Geralmente é usado para verificar se um recurso existe no servidor e para obter informações sobre ele, sem realmente baixar o conteúdo completo
método POST:
Conteudo é enviado do cliente para o servidor no corpo da mensagem. Envia parâmetros da solicitação no corpo da mensagem HTTP.
método PUT:
Ele é usado para atualizar ou criar recursos no servidor. O método PUT envia o conteúdo dos recursos atualizado no corpo da mensage HTTP e especifica o local onde o recurso deve ser atualizado
Divisão dentro da mensagem
Linhas de cabeçalho
Line feed(indica o final da mensagem)
Mensagem de requisição
Códigos de resposta HTTP
200 = ok
301: movido permanentemente
400: servidor não entendeu a msg
404 = documento não esta no server
505 = versão não suportada
Cookies
Mantém estados
guardado em um bd de retarguada
enviado no cabeçalho de uma mensagem de requisição http
Usados para:
Compras
Recomendações
Autorização
estado da sessão do usuário
GET Condicional
não envia o objeto se há uma versão mais atualizada no cache,
sem atraso de transmissão do objeto
menor utilização do enlace
Cliente
especifica data da cópia no
cache no pedido HTTP
Servidor
resposta sem objeto se
cópia no cache estiver atualizada:
totalmente relacionado com o cache web
Caches Web
atender pedido do cliente sem envolver servidor de origem
O servidor cache vai guardar Objetos de sites que o usuario ja acessou anteriormente para que se ele acessar novamente, nao precise ir ao servidor principal, evitando sobrecarga do mesmo
Funionamento
se objeto estiver no cache: cache retorna o objeto para o cliente
caso contrário cache solicita ao servidor e armazena o objeto no cache web
Age tanto como servidor como cliente, podendo enviar ou pedir arquivos
Vantagens
Reduz o tempo de resposta ao pedido de clientes
Pois nao precisaremos acessar o servidor principal,
Reduz o risco de congestionamento no servidor principal
Versões do HTTP
HTTP(1.1):
Respostas em ordem
Multiplos gets em série
FCFS
Recuperação de perdas
HTTP persistente
HTTP(2):
Divide objeto em várias partes e intercala o envio
Envia objetos não solicitados
Ordem de transmissão utiliza critérios do usuário
HTTP(3):
controle de erro, congestionamento
Adiciona segurança
Estilos
HTTP não-persistente
Abre a conexão TCP, envia no máximo um arquivo, e encerra-se a conexão TCP, precisando fazer várias conexões TCPs para acessar um site completo
RTT
é perceptível a diferença entre nos dois RTTs, sendo o RTT o tempo de ida e volta para troca de pacotes, como no não persistente temos que fazer uma nova conexão a cada envio, terão inúmeros RTTs a mais que o persistente, que só precisa de um para abrir a conexão TCP
HTTP persistente
Como o nome ja diz, so precisamos abrir uma conexão TCP para enviar todos os arquivos necessarios
DNS
Formato RR(Resource Record)
Valor: é o valor que está sendo associado ao nome do domínio. O formato e o conteúdo do valor dependem do tipo de registro de recurso (RR) em questão.
TTL (Time-to-Live): é a quantidade de tempo em segundos que o RR pode ser armazenado em cache por outros servidores DNS antes que precise ser atualizado
Nome: é o nome do domínio que está sendo mapeado para um valor
Tipo:Isso define o tipo de informação que está sendo mapeado para o nome do domínio.
tipo=NS
nome é o domínio (ex., foo.com)
valor è o nome de hospedeiro do servidor de nomes com autoridade pra esse dominio
tipo=CNAME
Nome: é o apelido para o nome real
Valor: é o nome real do hospedeiro
tipo=A
nome é o nome do hospedeiro
valor é o seu endereço IP
tipo=MX
Nome: é o dominio
Valor: é o nome do servdor associado a esse nome
é o formato de resposta DNS
Geral
Serviços
apelidos para hospedeiros(aliasing)
apelidos para servidores de e-mail
distribuição de carga
protocolo da camada de aplicação
tradução de nome do
hospedeiro para endereço IP
Hierarquia
Domínio de topo(TLD)
responsáveis por .com, .org, .net, .edu, .aero, .jobs, .museums, e todos os
domínios de topo de países,
DNS com autoridade
servidores DNS das organizações,
mapeamentos oficiais entre nomes
de hospedeiros e endereços IP
Onde está o endereço de fato. Os outros apenas filtram os caminhos
Root DNS Servers
Cliente o consulta primeiro para acessar endereços como .com, .edu, ...
OBS: serviços muito acessados como o .com são armazenados em caches para que não seja necessario consultar o DNS raiz todas as vezes
Poucos no mundo
DNS locais:
não pertence estritamente à hierarquia
"Guarda" no cache as tuplas(endereço/ip) dos sites que já foram acessados por esse cliente, para que não precise acessar o servidor principal
Consulta iterativa x recursiva
Recursiva passa a responsabilidade para os outros servidores DNS, sem devolver as informações para o local(apenas no final), enquanto no iterativa em toda etapa de troca de servidor a informação volta para o DNS local
Segurança
ataque DDos
Bombardeia os servidores raiz com tráfego
bombardeio a servidores TLD
Ataque de falsificação
P2P
Arquitetura peer to peer
Sistemas finais se comunicam entre eles sem necessariamente um intermedio do servidor
Pares que estão a trocar pacotes podem solicitar pacotes para outros pares
Servidores nem sempre ligados
Ex: Compartilhamento de arquivos 2P2(BitTorrent), streaming(KanKan), VoIP(skype)
Temporização C/S e P2P
C/S
Vai ser maior igual que o tempo maximo entre:
Servidor deve enviar N copias
tempo para enviar N cópias:
cada cliente deve baixar uma copia do arquivo
tempo de dowload para o usuário com menor taxa
P2P
Vai ser maior igual que o tempo maximo entre:
cada cliente deve baixar uma cópia do arquivo
tempo de dowload para usuário com menor taxa
Servidor deve enviar pelo menos uma cópia
tempo para enviar uma cópia
Clientes: Devem baixar NF arquivos
taxa máx de upload (limita a taxa máxima de download) é us + Sui
Sendo Us a taxa da upload do server o Sui o somatorio das taxas de upload de todos os clientes
BitTorrent
Geral
pares numa torrente enviam/recebem blocos do arquivo
Enquanto os pares trocam blocos entre eles, também podem enviar e receber blocos de outros pares, dependendo da sua necessidade
par pode mudar os parceiros com os quais troca os blocos
arquivos divididos em blocos de 256kb
quando o par obtiver todo o arquivo, ele pode (egoisticamente) sair ou
permanecer (altruisticamente) na torrente
Pedindo e enviando arquivos
Pedindo blocos:
Periodicamente, um par pode pedir blocos a um par vizinho, uma vez que em determinado instante pares distintos tem diferentes blocos
Enviando blocos: toma la da ca
Envia-se blocos aos 4 vizinhos que estejam enviando pacotes a uma taxa mais elevada
Reavalia esses 4 a cada 10sec
A cada 30sec seleciona aleatoriamente um outro par para enviar arquivo
fluxos de vídeo e redes de
distribuição de conteúdos
Streaming de vídeo armazenado
Desafios
Como a taxa da internet é variavel, pode acontecer de congestionamento no cliente
Perda de pacotes e atrasos, ocasionando num video pessimo
interatividade do cliente:
bufferização no lado do cliente
Com ajuda de um buffer, podemos minimizar as perdas, pois mesmo se a banda do cliente variar, ainda haverá pacotes no buffer pra ser usado, evitando atrasos
Multimídia
imagem digital: matriz de pixels, e cada pixel é representado por bits
codificação: usa redundância dentro e entre imagens para diminuir # bits usados para codificar a imagem
vídeo: sequência de imagens apresentadas a uma taxa constante
Tipos
CBR
codificação de vídeo a uma taxa constante
VBR
taxa de codificação muda com a necessidade/redundância temporal e espacial
Multimídia DASH
servidor
cada pedaço é armazenado e codificado em diferentes taxas
codificações em taxas diferentes são armazenadas em arquivos diferentes
divide o arquivo de video em vários pedaços
arquivos replicados em diversos nós CDN
arquivo de manifesto
provê URL aos pedaços
cliente
mede periodicamente a banda entre servidor e cliente
consulta manifesto, solicita um pedaço por vez
escolhe a taxa máxima suportada pela largura de banda atual
pode escolher diferentes taxas de codificação em instantes diferentes
Streaming vídeo = codificação + DASH + bufferização
para reprodução
è o protocolo para transferencia de arquivos multimidia
Protocolo de streaming de vídeo baseado em HTTP
Redes distribuição de contéudos(CDNs)
Local que armazena/disponibiliza múltiplas cópias do vídeo em sites distrbuídos geogrficamente
ir fundo
colocar servidores CDN em muitas redes de acesso(dentro das redes de acesso)
levar pra casa
menor número (10´s) de grandes clusters em POPs próximos das redes de acesso(fora das redes de acesso)
E-mail
Componentes Principais
Servidores de correio(mail)
Armazena as mensagens de entrada e saída
caixa de correio (mailbox): contém
mensagens recebidas pelo usuário
fila de mensagens: contém mensagens
de saída (a serem enviadas)
SMTP
Protocolo pra transmitir emails
Usa o TCP na porta 25
Como funciona a linha do tempo de tranferencia de arquivos?
Inicia a conexão TCP
OBS: essa conexão TCP é aberta entre o "cliente servidor' e o "servidor servidor"
HandShaking
Transferencia dos arquivos
Encerramento SMTP
servidor: servidor de correio que recebe
cliente: servidor de correio que envia
Comandos em ASCII
Agente do Usuário
compõe, edita, lê mensagens de correio
ex., Outlook, cliente de mail do iPhone
'leitor do correio'
Formato da mensagem
Linha em branco: Para separar o cabeçalho do corpo
Corpo: é a mensagem em si
cabeçalho: São os comandos que ditam o que vai ocorrer na mensagem
HTTP X SMTP
HTTP puxa e SMTP envia
programação de sockets com
UDP e TCP
Sockets
porta entre o processo de aplicação e o ptrocolo de transporte fim-a-fim
Dois tipos do sockets
UDP: diagrama não confiavel
Não tem 'conexão' entre cliente e servidor
não tem saudação antes de enviar os dados
remetente coloca explicitamente endereço IP e porta destino em cada pacote
receptor deve extrair endereço IP e núm da porta do remetente do datagrama recebido
Cliente cria um socket, assim como o servidor, e trocam pacotes por esses sockets
TCP: confiavel, orientado a fluxo de bytes
Primeiro o servidor se comunica por um socket inical com o cliente, especificando endereço de IP e porta
Servidor cria o socket final, que vai definitivamente efetuar a troca de arquivos entre CS
Deve ter uma saudação antes do envio dos arquivos
Servidor
cria socket TCP de recepção -> servidor inicia a escuta por
solicitações TCP -> servidor espera no accept() por solicitações,
um novo socket é criado no retorno -> lê bytes do socket (mas não precisa
ler endereço como no UDP) -> fecha conexão para este cliente (mas
não o socket de recepção)