Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Protocolos de comunicação que fazem parte da web

Protocolos de comunicação que fazem parte da web

Qual a importância da livre troca de mensagens entre dois pontos de conexão? Entenda do TCP e HTTP e saiba da necessidade e uso de protocolos adicionais como WebSockets.

Jean Carlo Emer

November 19, 2013
Tweet

More Decks by Jean Carlo Emer

Other Decks in Technology

Transcript

  1. PROCESSO DE COMUNICAÇÃO Transmissão de informação entre um emissor e

    um receptor que decodifica uma determinada mensagem.
  2. WORLD WIDE WEB Sistema de documentos interligados por links que

    podem ser acessadas através da internet.
  3. Envio de mensagens destinadas à máquina cujo endereço de IP

    consta no cabeçalho do pacote. INTERNET PROTOCOL (IP)
  4. Não há garantia de tempo despendido e até mesmo se

    a mensagem chegará ao destino INTERNET PROTOCOL (IP) A B
  5. GET VERBOS DE REQUISIÇÃO Mais comum, solicita um objeto para

    o servidor. PUT Escrever registro com propriedade de idempotência. Ex: x = 5 POST Escrever registro sem propriedade de idempotência. Ex: x++ DELETE Remove algum registro.
  6. 200 STATUS DE RESPOSTA Ok, tudo certo. 301 Redirect permanente.

    404 Não encontrado ou desconhecido. 500 Erro no servidor. 201 Registro criado. 304 Registro não modificado. http://httpstatus.es
  7. HTTP: QUERYSTRING Pela URL consigo identificar uma busca e até

    mesmo um usuário através de um código. http://website/?user=j8d21nd9k0m1nd9ja1n3
  8. A B Iniciar 
 conexão TCP GET /index.html HTTP/1.1 Fechar

    
 conexão TCP GET /main.css
 HTTP/1.1 KEEP ALIVE
  9. A B Iniciar 
 conexão TCP GET /index.html HTTP/1.1 Fechar

    
 conexão TCP GET /main.css
 HTTP/1.1 A B Iniciar 
 conexão TCP GET /main.js HTTP/ 1.1 GET /image.jpg
 HTTP/1.1 CRIAR MÚLTIPLAS CONEXÕES
  10. 1. CAMADA DE REDE 2. CAMADA DE TRANSPORTE 3. CAMADA

    DE APLICAÇÃO IP (IPv4 IPv6), OSPF, ICMP , ICMPv6, ECN, IGMP , … TCP, UDP , DCCP , SCTP , RSVP , … DNS, FTP , HTTP, WebSokets, IMAP , SSH, POP , SMTP , …
  11. http://conferenciaweb.w3c.br/conheca-a-especificacao- websockets-e-suas-possibilidades-com-jean-carlo-emer O cenário começa a mudar a partir do

    momento em que o servidor [e mesmo o cliente] não tem disponível toda a informação que possa nos interessar em um dado instante. Jean Carlo Emer
  12. • Lance a lance de uma partida de futebol. •

    Cobertura ao vivo do lançamento de novos gadgets. • Painel real-time do Google Analytics. • Ferramentas de edição colaborativa. • Jogos multiplayer.
  13. XML HTTP 
 REQUEST (XHR) API JavaScript que permite que

    os navegadores requisitar objetos ao servidor através de chamadas HTTP .
  14. SERVIDOR HTTP É UM OUVINTE Não existe maneira de o

    servidor iniciar uma conexão com um cliente ou responder sem que haja requisição.
  15. SERVER-SENT 
 EVENTS (SSE) API que permite ao cliente receber

    notificações do servidor através de eventos. https://developer.mozilla.org/en-US/docs/Server- sent_events/Using_server-sent_events - 6 9 5 11
  16. • Lance a lance de uma partida de futebol. •

    Cobertura ao vivo do lançamento de novos gadgets. • Painel real-time do Google Analytics. • Ferramentas de edição colaborativa. • Jogos multiplayer.
  17. TCP É FULL-DUPLEX O protocolo permite a troca de informações

    na direção cliente para servidor ao mesmo tempo e vice-versa.
  18. "EXTENSÃO" DO HTTP Protocolo independente cujo handshake é via HTTP

    . É compatível com a infraestrutura já utilizada pela web.
  19. var ws = new WebSocket('ws://localhost:8001'); ws.onmessage = function (event) {

    document.writeln('<p>' + event.data); } CLIENT .JS Apenas recebe mensagens e imprime na tela.
  20. var ws = new WebSocket('ws://localhost:8001'); ws.onopen = function () {

    var i = 0; setInterval(function () { ws.send(i++); }, 1000); }; CLIENT .JS Envia mensagens periodicamente.
  21. NODE.JS Ideal para aplicações de rede suportando mais de um

    milhão de conexões concorrentes com uma latência a cerca de 70ms. Servidor assíncrono: não bloqueia esperando por I/O. http://blog.caustik.com/2012/08/19/node-js-w1m- concurrent-connections
  22. NODE.JS - WS Módulo que implementa o protocolo WebSocket 13

    - RFC-6455. https://github.com/einaros/ws npm install ws
  23. var WebSocketServer = require('ws').Server; var server = new WebSocketServer({ port:

    8001 }); server.on('connection', function (socket) { socket.on('message', function (message) { socket.send('Server received: ' + message); }); socket.send('Welcome!'); }); SERVER.JS COM WS Cumprimenta novos clientes e responde a suas mensagens.
  24. NODE.JS - SOCKET .IO Camada de transporte com suporte a

    WebSocket, FlashSockets e Long-polling. Versão 1.0 (beta) depende do engine.io. https://github.com/learnboost/socket.io npm install socket.io
  25. var socket = new io.connect(); socket.on('connect', function () { socket.send('Hello

    to server!'); socket.on('message', function (data) { document.writeln('<p>' + data + '</p>'); }); }); CLIENT .JS COM SOCKET .IO <script src="/socket.io/socket.io.js"></script>
  26. NODE.JS - EXPRESS Framework para fazer aplicações web. Auxilia na

    definição de rotas, tratamento de cookies e muito mais. https://github.com/visionmedia/express npm install express
  27. var app = require('express')(); var server = require('http').Server(app).listen(8003); var io

    = require('socket.io').listen(server); app.configure(function(){ app.use(require('express').static(__dirname)); }); io.on('connection', function (socket) { socket.on('message', function (message) { socket.send(message); }); socket.send('Welcome!'); }); SERVER.JS COM SOCKET .IO
  28. SOCKET .IO: JSON socket.json.send({ num: i++ }); O formato mais

    popular para troca de informações na interwebs.
  29. SOCKET .IO: EVENTOS socket.emit('welcome', 'Welcome!'); socket.emit('response', ':)'); socket.on('welcome', function (data)

    { // ... }); socket.on('response', function (data) { // ... }); Tratar a comunicação entre cliente e servidor como uma troca através de eventos.
  30. SOCKET .IO - 1.0 Nova engine e suporte a dados

    binários. http://socket.io/blog/introducing-socket-io-1-0
  31. SOCKET .IO - ENGINE.IO Camada de transporte com suporte a

    WebSockets (com módulo ws), FlashSockets e Long-polling. https://github.com/LearnBoost/engine.io npm install engine.io
  32. Redes de computadores e a Internet
 James F. Kurose e

    Keith W. Ross HTTP - The Definitive Guide
 David Gourley e Brian Totty High-Performance Browser Networking
 Ilya Grigorik http://chimera.labs.oreilly.com/books/1230000000545