Redes de Computadores Protocolo Internet Gustavo Reis [email protected] - Protocolos de Internet Mensagem M Aplicação HTTP, SMTP, FTP, DNS Segmento Ht M Transporte TCP, UDP Hr Ht M Rede Hr Ht M Enlace Datagrama Quadro He Física UDP Ethernet, PPP - Protocolos de Internet Arquitetura cliente-servidor Servidor: • Hospedeiro sempre ativo • Endereço IP permanente • Fornece serviços solicitados pelo cliente Clientes: • Comunicam-se com o servidor • Pode ser conectado intermitentemente • Pode ter endereço IP dinâmico • Não se comunicam diretamente uns com os outros - Protocolos de Internet Arquitetura P2P pura • Nem sempre no servidor • Sistemas finais arbitrários comunicam-se diretamente • Pares são intermitentemente conectados e trocam endereços IP Altamente escaláveis mas difíceis de gerenciar - Protocolos de Internet Híbrida cliente-servidor e P2P Napster • Transferência de arquivo P2P • Busca centralizada de arquivos: • Conteúdo de registro dos pares no servidor central • Consulta de pares no mesmo servidor central para localizar o conteúdo Instant messaging • Bate-papo entre dois usuários é P2P • Detecção/localização centralizada de presença: • Usuário registra seu endereço IP com o servidor central quando fica on-line • Usuário contata o servidor central para encontrar endereços IP dos vizinhos - Protocolos de Internet Processos de Endereçamento • Para um processo receber mensagens, ele deve ter um identificador • Um hospedeiro possui um único endereço IP de 32 bits • P.: O endereço IP do hospedeiro onde o processo está executando é suficiente para identificar o processo? • R.: Não, muitos processos podem estar em execução no mesmo hospedeiro. • O identificador inclui o endereço IP e o número da porta associada ao processo no hospedeiro • Exemplos de números de porta • Servidor HTTP: 80 • Servidor de Correio: 25 - Protocolos de Internet O protocolo da camada de aplicação define • Tipo das mensagens trocadas, mensagens de requisição e resposta • Sintaxe dos tipos de mensagem: os campos nas mensagens e como são delineados • Semântica dos campos, ou seja, significado da informação nos campos • Regras para quando e como os processos enviam e respondem às mensagens Protocolos de domínio público • Definidos nas RFCs • Recomendados para interoperabilidade • Ex.: HTTP, SMTP Protocolos proprietários • Ex.: KaZaA - Protocolos de Internet De qual serviço de transporte uma aplicação necessita? Perda de dados • Algumas aplicações (ex.: áudio) podem tolerar alguma perda • Outras aplicações (ex.: transferência de arquivos, telnet) exigem transferência de dados 100% confiável Temporização • Algumas aplicações (ex.: telefonia Internet, jogos interativos) exigem baixos atrasos para serem “efetivos Banda passante • Algumas aplicações (ex.: multimídia) exigem uma banda mínima para serem “efetivas” • Outras aplicações (“aplicações elásticas”) melhoram quando a banda disponível aumenta” - Protocolos de Internet Aplicação Perdas file transfer e-mail Web documents real-time áudio/vídeo sem perdas sem perdas tolerante tolerante stored áudio/video tolerante jogos interativos tolerante e-business sem perda Banda Sensível ao atraso elástica elástica elástica aúdio: 5 Kb-1 Mb vídeo:10 Kb-5 Mb igual à anterior kbps elástica não não não sim, décimo de segundo sim, alguns segundos sim, décimo de segundo sim e não - Protocolos de Internet Aplicação e-mail acesso de terminais remotos Web transferência de arquivos streaming multimídia servidor de arquivos remoto telefonia Internet Protocolo de aplicação Protocolo de transporte smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] RTP ou proprietário (ex.: RealNetworks) NSF RTP ou proprietário (ex.: Vocaltec) TCP TCP TCP TCP TCP ou UDP TCP ou UDP tipicamente UDP Camada de Aplicação - Web e HTTP Primeiro alguns jargões • Página Web consiste de objetos • Objeto pode ser arquivo HTML, imagem JPEG, Java applet, arquivo de áudio,… • A página Web consiste de arquivo-HTML base que inclui vários objetos referenciados • Cada objeto é endereçado por uma URL (Uniform Resource Locator) • Exemplo de URL: www.someschool.edu/someDept/pic.gif Nome do hospedeiro Nome do caminho - Visão geral do HTTP HTTP: hypertext transfer protocol • Protocolo da camada de aplicação da Web • HTTP 1.0: RFC 1945 • HTTP 1.1: RFC 2068 • Modelo cliente/servidor • Cliente: browser que solicita, recebe e apresenta objetos da Web • Servidor: envia objetos em resposta a pedidos - Visão geral do HTTP Utiliza TCP: • Cliente inicia conexão TCP (cria socket – canal de comunicação) para o servidor na porta 80 • Servidor aceita uma conexão TCP do cliente • mensagens HTTP (mensagens do protocolo de camada de aplicação) são trocadas entre o browser (cliente HTTP) e o servidor Web (servidor HTTP) • A conexão TCP é fechada HTTP é “stateless” • O servidor não mantém informação sobre os pedidos passados pelos clientes - Conexões HTTP HTTP não persistente • No máximo, um objeto é enviado sobre uma conexão TCP • O HTTP/1.0 utiliza HTTP não persistente HTTP persistente • Múltiplos objetos podem ser enviados sobre uma conexão TCP entre o cliente e o servidor • O HTTP/1.1 utiliza conexões persistentes em seu modo padrão - HTTP não persistente Usuário entra com a URL: (contém texto,referências a 10 imagens jpeg) www.someSchool.edu/someDepartment/home.index 1a. Cliente HTTP inicia conexão TCP ao servidor HTTP em www.someschool.edu. Porta 80 é a default para o servidor HTTP. 1b. Servidor HTTP no hospedeiro www.someschool.edu esperando pela conexão TCP na porta 80. “Aceita” conexão, notificando o cliente 2. Cliente HTTP envia HTTP request message (contendo a URL) para o socket da conexão TCP Tempo 3. Servidor HTTP recebe mensagem de pedido, forma response message contendo o objeto solicitado (someDepartment/home.index), envia mensagem para o socket - HTTP não persistente 4. Servidor HTTP fecha conexão TCP. 5. Cliente HTTP recebe mensagem de resposta contendo o arquivo html, apresenta o conteúdo html. Analisando o arquivo html, encontra 10 objetos jpeg referenciados Tempo 6. Passos 1-5 são repetidos para cada um dos 10 objetos jpeg. - Modelagem do tempo de resposta Definição de RTT (Round Trip Time): tempo para enviar um pequeno pacote que vai do cliente para o servidor e retorna. Tempo de resposta: • Um RTT para iniciar a conenexão TCP • Um RTT para requisição HTTP e primeiros bytes da resposta HTTP para retorno • Tempo de transmissão de arquivo Total = 2RTT+ tempo de transmissão - HTTP persistente Características do HTTP persistente: – Requer 2 RTTs por objeto – Os browsers freqüentemente abrem conexões TCP paralelas para buscar objetos referenciados HTTP persistente – Servidor deixa a conexão aberta após enviar uma resposta – Mensagens HTTP subseqüentes entre o mesmo cliente/servidor são enviadas pela conexão Persistente sem paralelismo (pipelining): – O cliente emite novas requisições apenas quando a resposta anterior for recebida – Um RTT para cada objeto referenciado Persistente com paralelismo: – Padrão no HTTP/1.1 – O cliente envia requisições assim que encontra um objeto referenciado - Tipos de métodos HTTP/1.0 • • • GET: principal método de requisição de documentos HEAD: pede para o servidor deixar o objeto requisitado fora da resposta POST: usado para fornecer alguma informação ao servidor HTTP/1.1 • • • GET, POST, HEAD PUT: envia o arquivo no corpo da entidade para o caminho especificado no campo de URL DELETE: apaga o arquivo especificado no campo de URL do servidor - Mensagem HTTP request HTTP request message: ASCII (formato legível para humanos) Linha de pedido (comandos GET, POST, HEAD ) GET /somedir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Linhas de Accept: text/html, image/gif,image/jpeg cabeçalho Accept-language:fr Carriage return, (extra carriage return, line feed) line feed indica fim da mensagem - Mensagem HTTP response Linha de status (protocolo código de status frase de status) Linhas de cabeçalho Dados, ex.: arquivo html HTTP/1.0 200 OK Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ... - Códigos de status de resposta Na primeira linha da mensagem de resposta (servidor cliente) Alguns exemplos de códigos: 200 OK: • Requisição bem-sucedida, objeto requisitado a seguir nesta mensagem 301 Moved permanently: • Objeto requisitado foi movido, nova localização no cabeçalho Location: da mensagem de resposta. O software do clinete recuperará automaticamente o novo URL. 400 Bad request • Código genérico de erro: mensagem de requisição não compreendida pelo servidor 404 Not Found • Documento requisitado não encontrado neste servidor 505 HTTP version not supported • A versão do protocolo HTTP requisita não é suportada pelo servidor - Correio eletrônico Três componentes principais: – Agentes de usuário – Servidores de correio – Simple mail transfer protocol: SMTP Agente de usuário – “leitor de correio” – Composição, edição, leitura de mensagens de correio – Ex.: Eudora, Outlook, Netscape Messenger – Mensagens de entrada e de saída são armazenadas no servidor - Correio eletrônico Servidores de correio – – Caixa postal contém mensagens que chegaram (ainda não lidas) para o usuário Fila de mensagens contém as mensagens de correio a serem enviadas Protocolo SMTP permite aos servidores de correio trocarem mensagens entre si – – Cliente: servidor de correio que envia “servidor”: servidor de correio que recebe - Correio eletrônico • Usa TCP para transferência confiável de mensagens de correio do cliente ao servidor, porta 25 • Transferência direta: servidor que envia para o servidor que recebe • Três fases de transferência • Interação comando/resposta • Handshaking (apresentação) • Transferência de mensagens • Fechamento • Comandos: texto ASCII • Resposta: código de status e frase • Mensagens devem ser formatadas em código ASCII de 7 bits - Cenário: Alice envia e-mail para Bob 1) Alice usa o agente de usuário (UA) para compor a mensagem e “para” [email protected] 2) O agente de usuário dela envia a mensagem para o seu servidor de correio; a mensagem é colocada na fila de mensagens. 3) O lado cliente do SMTP abre uma conexão TCP com o servidor de correio do Bob. 4) O cliente SMTP envia a mensagem de Alice pela conexão TCP. 5) O servidor de correio de Bob coloca a mensagem na caixa de correio de Bob. 6) Bob invoca seu agente de usuário para ler a mensagem. - DNS: Domain Name System DNS: Domain Name System RFC: 1034 e 1035 Porta: 53 (normalmente UDP) Pessoas: muitos identificadores • RG, nome, passaporte Nome x 128.11.25.41 P.: Como relacionar nomes com endereços IP? Domain Name System: • Base de dados distribuída implementada numa hierarquia de muitos servidores de nomes • Protocolo de camada de aplicação hospedeiro, roteadores se comunicam com servidores de nomes para resolver nomes (translação nome/endereço) • Nota: função interna da Internet, implementada como protocolo da camada de aplicação - Base de dados distribuída e hierárquica Cliente quer o IP para www.amazon.com: • Cliente consulta um servidor de raiz para encontrar o servidor DNS com • Cliente consulta o servidor DNS com para obter o servidor DNS amazon.com • Cliente consulta o servidor DNS amazon.com para obter o endereço IP para www.amazon.com - Servidores Raiz • São contatados pelos servidores de nomes locais que não podem resolver um nome • Servidores de nomes raiz: • Buscam servidores de nomes autorizados se o mapeamento do nome não for conhecido • Conseguem o mapeamento • Retornam o mapeamento para o servidor de nomes loca Existem 13 servidores de nomes raiz no mundo - Servidores TLD e autoritários Servidores top-level domain (TLD): responsáveis pelos domínios com, org, net, edu etc e todos os domínios top-level nacionais uk, fr, ca, jp. • • Network Solutions mantém servidores para o TLD “com” Educause para o TLD “edu” Servidores de nomes com autoridade: servidores DNS de organizações, provêm nome de hospedeiro autorizado para mapeamentos IP para servidores de organizações (ex.: Web e mail). • Podem ser mantidos por uma organização ou provedor de serviços - Servidores de nomes local • Não pertence estritamente a uma hierarquia • Cada ISP (ISP residencial, companhia, universidade) possui um • Também chamado de “servidor de nomes default” • Quando um hospedeiro faz uma pergunta a um DNS, a pergunta é enviada para seu servidor DNS local • Age como um proxy, encaminhando as perguntas para dentro da hierarquia - Exemplo • O hospedeiro em cis.poly.edu quer o endereço IP para gaia.cs.umass.edu - Resolvendo nomes Consulta recursiva: • Transfere a tarefa de resolução do nome para o servidor de nomes consultado Consulta encadeada (iterativa): • Servidor contatado responde com o nome de outro servidor de nomes para contato - Resolução recursiva edu 3 2 5 fh.edu 1 6 Cliente 4 csu.edu - Resolução Iterativa edu “eu não sei isto, mas pergunte a este servidor” 3 4 fh.edu 1 5 2 Cliente csu.edu 6 - Exemplo Resolução recursiva ou iterativa? • O hospedeiro em cis.poly.edu quer o endereço IP para gaia.cs.umass.edu - DNS: protocolo e mensagem Protocolo DNS: mensagem de consulta e resposta , ambas com o mesmo formato de mensagem Cabeçalho da msg • Identificação: número de 16 bits para consulta, resposta usa o mesmo número • Flags: • • • • Consulta ou resposta Recursão desejada Recursão disponível Resposta é autorizada Camada de Transporte - Protocolos e serviços de transporte • Fornecem comunicação lógica entre processos de aplicação em diferentes hospedeiros • Os protocolos de transporte são executados nos sistemas finais • Lado emissor: quebra as mensagens da aplicação em segmentos e envia para a camada de rede • Lado receptor: remonta os segmentos em mensagens e passa para a camada de aplicação • Há mais de um protocolo de transporte disponível para as aplicações • Internet: TCP e UDP - Camada de transporte vs camada de rede • Camada de rede: comunicação lógica entre os hospedeiros • Camada de transporte: comunicação lógica entre os processos • Depende dos serviços da camada de rede Analogia com uma casa familiar: 12 crianças enviam cartas para 12 crianças • Processos = crianças • Mensagens da aplicação = cartas nos envelopes • Hospedeiros = casas • Protocolo de transporte = Anna e Bill • Protocolo da camada de rede = Serviço Postal - Protocolos da camada de transporte da Internet • Confiável, garante ordem de entrega: TCP • Controle de congestionamento • Controle de fluxo • Orientado à conexão • Não confiável, sem ordem de entrega: UDP • Extensão do “melhor esforço” do IP - Mecanismo de endereçamento Aplicação HTTP DNS SMTP x 80 53 25 n TCP / UDP Transporte TRANSPORTE VIRTUAL e-mail web ftp - Mecanismo de endereçamento •Número de porta •Número de porta destino: identifica o endereço de entrega •Número de porta origem: identifica o endereço de resposta •Discrimina entre os muitos processos que podem rodar simultaneamente •Identificado por números inteiros de 16-bits (0 a 65535) •IANA (Internet Assigned Number Authority) •Portas conhecidas ou permanentes: 0 a 1023 •Portas registradas: 1024 a 49151 •Portas dinâmicas: 49152 a 65535 •Alguns portas bem conhecidas – RFC 1700 •HTTP: porta 80 •SMTP: porta 25 - Mecanismo de endereçamento ‑Identificado por números inteiros de 16-bits (0 a 65535) 0 1023 1024 49.152 65.535 49.151 ‑IANA (Internet Assigned Number Authority) ‑Portas conhecidas ou permanentes: 0 a 1023 As portas com números bem conhecidos são atribuídas e controladas pelo IANA e são as portas públicas conhecidas. ‑Portas registradas: 1024 a 49151 As portas registradas não são atribuídas ou controladas pelo IANA e podem ser registradas por empresas comerciais junto ao IANA para evitar duplicação. ‑Portas dinâmicas: 49152 a 65535 As portas dinâmicas ou temporárias não são controladas nem registradas e podem ser utilizadas por qualquer processo. - Exemplo de endereçamento SOCKET: portas pelas quais dados passam da rede para o processo e do processo para a rede (KUROSE, 2006). Este é o pedido Processo Socket Cliente Porta Fonte 50.001 Porta Fonte 25 Porta destino 50.001 Porta destino 25 Servidor - UDP checksum Objetivo: detectar “erros” (ex.: bits trocados) no segmento transmitido Transmissor: • Trata o conteúdo do segmento como seqüência de inteiros de 16 bits • Checksum: soma (complemento de 1 da soma) do conteúdo do segmento • Transmissor coloca o valor do checksum no campo de checksum do UDP Receptor: • Computa o checksum do segmento recebido •Verifica se o checksum calculado é igual ao valor do campo checksum: • NÃO - erro detectado • SIM - não há erros. Mas, talvez haja erros apesar disso? - Soma de verificação UDP RFC 1071 Suponha 3 palavras de 16 bits 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 (I) (II) (III) A soma das duas primeiras palavras de 16 bits é + 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 (I) (II) 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 (IV) Adicionando a terceira palavra à soma (IV), temos: + 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 (IV) (III) (V) - Soma de verificação UDP RFC 1071 • Note que: • Ao se adicionar números, um vai um do bit mais significativo deve ser acrescentado ao resultado. 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 wraparound sum checksum (IV) (III) 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 (V) - Tabela hexa vs binário Hexadecimal Binário 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 - Exercício Qual a palavra a ser inserida no campo checksum, se o segmento contém as seguintes palavras: 4465, 7477, 6F72, 6B73 Camada de Rede - A camada de rede - Transporta segmentos do hospedeiro transmissor para o receptor - No lado transmissor encapsula os segmentos em datagramas - No lado receptor, entrega os segmentos à camada de transporte - Protocolos da camada de rede em cada hospedeiro, roteador - Roteador examina campos de cabeçalho em todos os datagramas IP que passam por ele - Funções-chave da camada de rede - Comutação: mover pacotes da entrada do roteador para a saída apropriada do roteador - Roteamento: determinar a rota a ser seguida pelos pacotes desde a origem até o destino - Algoritmos de roteamento Analogia: - Roteamento: processo de planejar a viagem da origem ao destino - Comutação: processo de passar por um determinado caminho - Funções-chave da camada de rede Entidade de rede em roteadores ou hospedeiros: Camada de Transporte: TCP, UDP Camada de rede protocolo de roteamento - Escolha de caminhos - RIP, OSPF, BGP Tabela de rotas protocolo IP - Endereçamento - Formato dos datagramas - Tratamento de pacotes protocolo ICMP - Aviso de erros - Sinalização de rotas Camada de enlace Camada física - Funções-chave da camada de rede 32 bits versão do protocolo IP tamanho do header (bytes) (Type of Service) classe de serviço número máximo de saltos protocolo da camada superior ver head. TOS len length fragment 16-bit identifier flgs offset TTL protocol Internet checksum 32 bit endereço IP de origem 32 bit endereço IP de destino Opções (se houver) data (tamanho variável, tipicamente um segmento TCP ou UDP) tamanho total do datagrama (bytes) para fragmentação/ remontagem Fragment offset (múltiplo de 8 bytes) Soma de verificação do cabeçalho Ex.: marca de tempo,registro de rota lista de roteadores a visitar. - Endereçamento IP - Endereço IP: identificador de 32 bits para interfaces de roteadores e hospedeiros - Interface: conexão entre roteador ou hospedeiro e enlace físico - Roteador tem tipicamente múltiplas interfaces - Hospedeiros podem ter múltiplas interfaces - Endereços IP são associados com interfaces, não com o hospedeiro ou com o roteador 223.1.1.1 = 11011111 00000001 00000001 00000001 Notação decimal separada por ponto 223 1 1 1 - Endereçamento IP Prefixo e sufixo Cada endereço IP de 32 bits é dividido em duas partes: prefixo e sufixo. - Prefixo: identifica a rede física (NetID) - Sufixo: identifica o computador da rede (HostID) Propriedades - a cada computador é atribuído um endereço único - o número de rede é coordenado globalmente - os sufixos poder ser atribuídos localmente - Endereçamento IP - conhecido como endereçamento IP de classes (classfull IP Addressing) - convenção utilizada nos protocolos TCP/IP - Classe A - Classe B Classes primárias - Classe C - Classe D Multicast - Classe E Reservado Identificação de Classe 1 1o. 1o.bit? bit? 0 Classe ClasseAA 1 2o. 2o.bit? bit? 0 Classe ClasseBB 1 3o. 3o.bit? bit? 0 Classe ClasseCC 4o. 4o.bit? bit? 11 0 Classe ClasseDD Classe ClasseEE - Endereçamento IP Classe A: 1.0.0.0 até 127.0.0.0 - Permite até 16.777.216 de computadores em cada rede (máximo de 127 redes); Classe B: 128.0.0.0 até 191.255.0.0 - Permite até 65.536 computadores em uma rede (máximo de 16.384 redes); Classe C: 192.0.0.0 até 223.255.255.254 - Permite até 256 computadores em uma rede (máximo de 2.097.150 redes); Classe D: 224.0.0.0 até 239.255.255.255 - multicast Classe E: 240.0.0.0 até 255.255.255.255 multicast reservado