Prévia do material em texto
ARQUITETURA TCP/IP Andrei Luiz Demétrio e Silva Tecnólogo em Redes de Computadores Esp. Engenharia de Redes de Telecomunicações História da Redes 1960-1972: Rede telefônica, era a rede de comunicação que dominava o mundo; Comutação de pacotes; ARPANET; IMPs – Interface Message Processor; Universidade da Califórnia Los Angeles; Logo após: Staford Research Institute, Universidade da Califórnia (Santa Barbara) e Universidade de Utah. 1972: ARPAnet possuía 15 nós. História da Redes L. Kleinrock e um IMP (UCLA) História da Redes 1972: Conferencia Internacional sobre Comunicação por Computadores; Primeiro protocolo fim a fim (Network-Control Protocol – NCP); RFC 001; Ray Tomlinson: Escreve o primeiro programa de e-mail; História da Redes 1972 - 1980: ARPAnet – Rede Isolada; Para se comunicar com uma máquina era preciso estar ligado a um outro IMP dessa rede; ALOHAnet – micro-ondas ligando universidades do Havaí – 1970 – satélite -1978 e rádio – 1978; Telenet – Rede comercial, BBN fundamentada pela ARPAnet; Cyclades, Rede Francesa; Tymmet e GE Infromation Services – final de 60 e inicio de 70; Rede SNA, IBM (1969 – 1974); História da Redes História da Redes 1972 - 1980: Primeiras versões do protocolo TCP; Metcalfe e Boggs criam o Ethernet; História da Redes 1980 – 1990 Final da década de 1970, aproximadamente 200 máquinas conectadas; Final da década de 1980 alcançaria 100 mil máquinas conectadas; 1981 – O TCP/IP foi adotado como protocolo oficial; História da Redes 1990: ARPAnet deixa de existir; Surgimento da World Wide Web; Serviços surgiram: Email, a Web; Mensagem Instantânea; Compartilhamento peer-to-peer; História da Redes Antes da internet se tornar tão popular os protocolos de comunicação mais importantes eram o TCP/IP, NETBEUI, IPX/SPX, Xerox Network System (XNS) e o Apple Talk. Modelo OSI Quando as redes de computadores, as soluções era, na maioria das vezes, proprietárias; Para Facilitar a interconexão, a ISO(International Organization for Standartization) desenvolveu um modelo referência teórico chamado OSI (OpenSystem Interconnection); O Modelo possui 7 camadas; Em teoria cada camada seria responsável por um protocolo especifico; Na prática a maioria dos protocolos existentes não seguem este modelo; Modelo OSI Modelo OSI Na transmissão de um dado, cada camada pega informações passadas pela camada superior, acrescenta informações; Encapsulamento; Modelo OSI Modelo OSI As camadas podem ser dividas em três grupos: Aplicação Transporte Rede Rede: Transmissão e recebimento de dados na rede; Transporte: Pega os dados recebidos pela rede e repassa a camada de aplicação; Aplicação: Colocam os dados em um padrão compreensível ao programa; Modelo OSI Modelo OSI: Camada de Aplicação Modelo OSI: Camada de Aplicação Interface entre a pilha de protocolos e a aplicação que pediu ou receberá a informação; Exemplo: E-mail; Modelo OSI: Camada de Apresentação Modelo OSI: Camada de Apresentação Também chamada de tradução; Converte o dado recebido pela camada de aplicação; Também pode ser usado compressão e criptográfica nesta camada; Modelo OSI: Camada de Sessão Modelo OSI: Camada de Sessão Permite que aplicações estabeleçam uma sessão de comunicação; Aplicações definem como será feita a transmissão; Se por ventura a rede falhar, os computadores reiniciam a partir da ultima marcação; Modelo OSI: Camada de Transporte Modelo OSI: Camada de Transporte Nesta camada pacotes de dados são chamados de segmento de dados; Informação sobre o protocolo; Controle de fluxo; Verificação de Erros; Verificação perda de pacotes (se houver); Verificação de pacotes duplicados; Qualidade do Serviço esperada; Modelo OSI: Camada de Rede Modelo OSI: Camada de Rede Responsável pelo endereçamento lógico; Tradução de endereços (Lógico x Físico); Pacotes de dados podem ter prioridades distintas; Pacotes precisam usar dois tipos de endereço (lógico e Físico); Endereçamento lógico independe da arquitetura utilizada; Modelo OSI: Camada de Rede Para trafegar em cada segmento, os pacotes precisam conhecer o endereço físico de origem e de destino; Este endereço é gerado pela camada 2 (Enlace); Em todo o percurso o endereço lógico de destino permanece inalterado; Modelo OSI: Camada de Enlace de Dados Modelo OSI: Camada de Enlace de Dados Endereço Físico: Endereço da placa de origem e Endereço da placa de destino; Dados de controle; Dados de correção de erro (checksum ou CRC); Pode haver fragmentação dos pacotes; Verifica se o meio está disponível; Modelo OSI: Camada Física Modelo OSI: Camada Física Codificação e Modulação; Transmissão por: sinais elétricos, luminosos ou de radiofrequência; Arquitetura TCP/IP Atualmente a mais utilizada; Popularização da Internet; “Roteável”; Arquitetura Aberta; Arquitetura TCP/IP: Camada de Aplicação Aplicações são a razão de ser de uma rede de computadores; Correio eletrônico, acesso remoto; Navegação, P2P, IPTV, etc. Arquitetura TCP/IP: Camada de Aplicação Arquitetura de rede X arquitetura de software; Arquitetura Cliente-Servidor; Servidor: IP fixo; Web, FTP, Telnet e E-mail; Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura P2P: Confiança mínima (Ou nenhuma) nos servidores; Comunicação direta entre pares de hospedeiros conectados alternadamente; Pares são controlados por usuários de mesas e laptops; Pares se comunicam sem passar por nenhum servidor dedicado; Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Socket: Interface entre o processo da aplicação e o protocolo de camada de transporte; Arquitetura TCP/IP: Camada de Aplicação Serviços de transporte disponíveis para aplicações: Transferência confiável de dados; Vazão; Temporização; Segurança; Arquitetura TCP/IP: Camada de Aplicação Até a década de 90, a Internet era conhecida apenas no âmbito acadêmico; Inicio da década de 90: Surgimento da World Wide Web; Arquitetura TCP/IP: Camada de Aplicação Durante os anos 70, Arpanet era uma pequena comunidade de algumas centenas de hosts; HOSTS.TXT; Este arquivo continha nome para endereçar cada host conectado a ARPANET Arquitetura TCP/IP: Camada de Aplicação Durante os anos 70, Arpanet era uma pequena comunidade de algumas centenas de hosts; HOSTS.TXT; Este arquivo continha nome para endereçar cada host conectado a ARPANET Arquitetura TCP/IP: Camada de Aplicação DNS (Domain Name System); Endereços IP não são tão fáceis de serem recordados; Quando acessamos uma página o browser se comunica com um servidor DNS; O DNS está especificado no RFC 1034 e no RFC 1035; Porta 53; Arquitetura TCP/IP: Camada de Aplicação Apelidos (aliasing) de hospedeiro. Apelidos de servidor de correio. Distribuição de carga; Datragramas IP; Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação HTTP - Protocolo de Transferência de Hipertexto (HyperText Transfer Protocol); RFC 1945 e 2616; Programas Cliente e Servidor; Uma página WEB (documento) é constituída de objetos; Um objeto é apenas um arquivo; Ex.: http://flags.fmcdn.net/data/flags/w580/br.png Arquitetura TCP/IP: Camada de Aplicação O HTTP define como os clientes requisitam páginas aos servidores e como eles as transferem aos clientes;Arquitetura TCP/IP: Camada de Aplicação Conexões persistentes e não persistentes; Arquitetura TCP/IP: Camada de Aplicação Formato da mensagem HTTP; Mensagem de requisição HTTP: GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu Connection: close User-agent: Mozilla/5.0 Accept-language: fr Arquitetura TCP/IP: Camada de Aplicação Formato da mensagem HTTP; Mensagem de resposta HTTP: HTTP/1.1 200 OK Connection: close Date: Tue, 09 Aug 2011 15:44:04 GMT Server: Apache/2.2.3 (CentOS) Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT Content-Length: 6821 Content-Type: text/html (dados dados dados dados dados ...) Arquitetura TCP/IP: Camada de Aplicação Formato geral de uma mensagem de requisição HTTP: Arquitetura TCP/IP: Camada de Aplicação Formato geral de uma mensagem de resposta HTTP: 200 OK: requisição bem-sucedida e a informação é entregue com a resposta. 301 Moved Permanently: objeto requisitado foi removido em definitivo; novo URL é especificado no cabeçalho Location: da mensagem de resposta. O software do cliente recuperará automaticamente onovo URL. • 400 Bad Request: código genérico de erro que indica que a requisição não pôde ser entendida pelo servidor. • 404 Not Found: o documento requisitado não existe no servidor. • 505 HTTP Version Not Supported: a versão do protocolo HTTP requisitada não é suportada pelo servidor. Arquitetura TCP/IP: Camada de Aplicação Formato geral de uma mensagem de resposta HTTP: Arquitetura TCP/IP: Camada de Aplicação Interação usuário-servidor: cookies; É sempre bom que um site identifique usuários; Cookies, definidos no [RFC 6265], permitem que sites monitorem seus usuários; Arquitetura TCP/IP: Camada de Aplicação Interação usuário-servidor: cookies; Arquitetura TCP/IP: Camada de Aplicação Interação usuário-servidor: cookies; tecnologia dos cookies tem quatro componentes: (1) uma linha de cabeçalho de cookie na mensagem de resposta HTTP; (2) uma linha de cabeçalho de cookie na mensagem de requisição HTTP; (3) um arquivo de cookie mantido no sistema final do usuário e gerenciado pelo navegador do usuário; (4) um banco de dados de apoio no site. Arquitetura TCP/IP: Camada de Aplicação Caches Web: Também denominado servidor proxy; entidade da rede que atende requisições HTTP em nome de um servidor Web de origem Arquitetura TCP/IP: Camada de Aplicação Caches Web: Arquitetura TCP/IP: Camada de Aplicação Caches Web: Cache é, ao mesmo tempo, um servidor e um cliente; Arquitetura TCP/IP: Camada de Aplicação GET condicional: Fazer cache introduz um novo problema: a cópia de um objeto existente no cache pode estar desatualizada; (1) usar o método GET; (2) possuir uma linha de cabeçalho If-Modified-Since:. Arquitetura TCP/IP: Camada de Aplicação GET condicional: GET /fruit/kiwi.gif HTTP/1.1 Host: www.exotiquecuisine.com If-modified-since: Wed, 7 Sep 2011 09:23:24 Arquitetura TCP/IP: Camada de Aplicação GET condicional: HTTP/1.1 304 Not Modified Date: Sat, 15 Oct 2011 15:39:29 Server: Apache/1.3.0 (Unix) Arquitetura TCP/IP: Camada de Aplicação HTTPS(Hyper Text Transfer Protocol Secure): Porta 443; Utiliza o protocolo SSL(Secure Socket Layer) ou TLS (Transport Layer Security); Arquitetura TCP/IP: Camada de Aplicação HTTPS(Hyper Text Transfer Protocol Secure): Arquitetura TCP/IP: Camada de Aplicação Atividade: Realizar uma pesquisa a respeito da versão 2.0 do protocolo HTTP; Quais as principais diferenças em relação a versão 1.1? Manuscrito; Arquitetura TCP/IP: Camada de Aplicação FTP (File Transfer Protocol): FTP usa duas conexões TCP paralelas para transferir um arquivo: uma conexão de controle e uma conexão de dados; A primeira é usada para enviar informações de controle entre os dois hospedeiros; RFC 959 Arquitetura TCP/IP: Camada de Aplicação FTP (File Transfer Protocol): Arquitetura TCP/IP: Camada de Aplicação FTP (File Transfer Protocol): Os comandos, do cliente para o servidor, e as respostas, do servidor para o cliente, são enviados por meio da conexão de controle no formato ASCII de 7 bits; Para separar comandos sucessivos, um “carriage return” e um “line feed” encerram cada um Um comando é constituído de quatro caracteres ASCII maiúsculos, alguns com argumentos opcionais. Arquitetura TCP/IP: Camada de Aplicação USER username: usado para enviar identificação do usuário ao servidor. PASS password: usado para enviar a senha do usuário ao servidor. LIST: usado para pedir ao servidor que envie uma lista com todos os arquivos existentes no atual diretório remoto. A lista de arquivos é enviada por meio de uma conexão de dados (nova e não persistente), e não pela conexão TCP de controle. Arquitetura TCP/IP: Camada de Aplicação RETR filename: usado para extrair (isto é, obter) um arquivo do diretório atual do hospedeiro remoto. Ativa o hospedeiro remoto para que abra uma conexão de dados e envia o arquivo requisitado por essa conexão. STOR filename: usado para armazenar (isto é, inserir) um arquivo no diretório atual do hospedeiro remoto. Arquitetura TCP/IP: Camada de Aplicação Há, em particular, uma correspondência direta entre o comando que o usuário gera e o comando FTP enviado pela conexão de controle; Cada comando é seguido de uma resposta, que é enviada do servidor ao cliente. As respostas são números de três dígitos com uma mensagem opcional após o número: Arquitetura TCP/IP: Camada de Aplicação 331 Nome de usuário OK, senha requisitada 125 Conexão de dados já aberta; iniciando transferência 425 Não é possível abrir a conexão de dados 452 Erro ao escrever o arquivo Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação Listando arquivos ls - Listagem simples de arquivos; dir - Listagem com informações mais completas sobre os arquivos, como tamanho do arquivo em bytes, data de alteração e nome do arquivo; ls -la - Semelhante ao dir, mas lista também arquivos ocultos (como .htaccess); Arquitetura TCP/IP: Camada de Aplicação Acessando diretórios Para acessar um determinado diretório, execute cd Nome_do_diretório Para voltar um nível de diretório, execute cd .. Arquitetura TCP/IP: Camada de Aplicação Upload e Download de arquivos Para realizar o upload de um determinado arquivo, execute o seguinte comando: put "Caminho Completo do Arquivo" (entre aspas duplas) Para realizar o Download de um determinado arquivo, após já ter acessado o diretório onde o mesmo se encontra alocado, execute o seguinte comando: get "Nome do Arquivo" Arquitetura TCP/IP: Camada de Aplicação Encerrando a conexão FTP Execute o comando bye Arquitetura TCP/IP: Camada de Aplicação Correio eletrônico na Internet: Existe desde o início da Internet; Meio de comunicação assíncrono; Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação O SMTP é o principal protocolo de camada de aplicação do correio eletrônico da Internet; Usa o serviço confiável de transferência de dados do TCP; RFC 5321; Esse protocolo transfere mensagens de servidores de correio remetentes para servidores de correio destinatários; Porta 25; Arquitetura TCP/IP: Camada de Aplicação Muito mais antigo que o HTTP. Utiliza ASCII de 7 bits; Arquitetura TCP/IP: Camada de Aplicação 1. Alice chama seu agente de usuário para e-mail, fornece o endereço de Bob (por exemplo, bob@someschool.edu), compõeuma mensagem e instrui o agente de usuário a enviá-la. 2. O agente de usuário de Alice envia a mensagem para seu servidor de correio, onde ela é colocada em uma fila de mensagens. 3. O lado cliente do SMTP, que funciona no servidor de correio de Alice, vê a mensagem na fila e abre uma conexão TCP para um servidor SMTP, que funciona no servidor de correio de Bob. Arquitetura TCP/IP: Camada de Aplicação 4. Após alguns procedimentos iniciais de apresentação (handshaking), o cliente SMTP envia a mensagem de Alice pela conexão TCP. 5. No servidor de correio de Bob, o lado servidor do SMTP recebe a mensagem e a coloca na caixa postal dele. 6. Bob chama seu agente de usuário para ler a mensagem quando for mais conveniente para ele. Arquitetura TCP/IP: Camada de Aplicação S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes.fr> S: 250 alice@crepes.fr ... Sender ok C: RCPT TO: <bob@hamburger.edu> S: 250 bob@hamburger.edu ... Recipient ok C: DATA S: 354 Enter mail, end with “.” on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection Arquitetura TCP/IP: Camada de Aplicação POP3; Protocolo de acesso de correio de extrema simplicidade; RFC 1939; Curto e bem fácil de ler (funcionalidade limitada); Porta 110; Arquitetura TCP/IP: Camada de Aplicação O POP3 começa quando o agente de usuário (o cliente) abre uma conexão TCP com o servidor de correio (o servidor) na porta 110; O protocolo passa por três fases: autorização, transação e atualização; Arquitetura TCP/IP: Camada de Aplicação Em uma transação POP3, o agente de usuário emite comandos e o servidor, uma resposta para cada um deles; Há duas respostas possíveis: +OK (às vezes seguida de dados do servidor para o cliente), usada pelo servidor para indicar que correu tudo bem com o comando anterior e –ERR, que o servidor usa para informar que houve algo errado com o comando anterior; Arquitetura TCP/IP: Camada de Aplicação A fase de autorização tem dois comandos principais: user <username> e pass <password>; Arquitetura TCP/IP: Camada de Aplicação telnet pop3.bol.com.br110 +OK POP3 server ready user andreidemetrio +OK pass aula0202 +OK user successfully logged on Arquitetura TCP/IP: Camada de Aplicação Se você escrever um comando errado, o POP3 responderá com uma mensagem –ERR; Um agente de usuário que utiliza POP3 com frequência pode ser configurado (pelo usuário) para “ler-e-apagar” ou para “ler-e-guardar”; Arquitetura TCP/IP: Camada de Aplicação Arquitetura TCP/IP: Camada de Aplicação IMAP: RFC 3501; Porta 143; Organização por pastas; Arquitetura TCP/IP: Transporte Posicionada entre a de aplicação e a de rede; Desempenha o papel fundamental de fornecer serviços de comunicação diretamente aos processos de aplicação que rodam em hospedeiros diferentes; Arquitetura TCP/IP: Transporte Um protocolo da camada de transporte fornece comunicação lógica entre processos de aplicação que rodam em hospedeiros diferentes; Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte No lado remetente, a camada de transporte converte as mensagens que recebe de um processo de aplicação remetente em pacotes de camada de transporte, denominados segmentos de camada de transporte na terminologia da Internet; Arquitetura TCP/IP: Transporte Mais de um protocolo de camada de transporte poderão estar disponíveis às aplicações de rede; Internet possui dois protocolos — TCP e UDP; Arquitetura TCP/IP: Transporte A camada de transporte se situa logo acima da de rede na pilha de protocolos; Fornece comunicação lógica entre processos; De maneira mais geral, a rede TCP/IP — disponibiliza dois protocolos de transporte distintos para a camada de aplicação. Arquitetura TCP/IP: Transporte Um deles é o UDP (User Datagram Protocol — Protocolo de Datagrama de Usuário), que oferece à aplicação solicitante um serviço não confiável, não orientado para conexão; TCP (Transmission Control Protocol — Protocolo de Controle de Transmissão), que oferece à aplicação solicitante um serviço confiável, orientado para conexão Arquitetura TCP/IP: Transporte Multiplexação e Demultiplexação: Arquitetura TCP/IP: Transporte Multiplexação e Demultiplexação: Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte Transporte não orientado para conexão: UDP; RFC 768; Faz apenas quase tão pouco quanto um protocolo de transporte pode Fazer; Multiplexação/demultiplexação; Verificação de erros simples; Arquitetura TCP/IP: Transporte Melhor controle no nível da aplicação sobre quais dados são enviados e quando; Não há estabelecimento de conexão; Não há estados de conexão; Pequeno excesso de cabeçalho de pacote; Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte Segmento UDP Arquitetura TCP/IP: Transporte Soma de verificação UDP: Serve para detectar erros; Em outras palavras, é usada para determinar se bits dentro do segmento UDP foram alterados; Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte Princípios da transferência confiável de dados: Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte O paralelismo gera as seguintes consequências para protocolos de transferência confiável de dados: A faixa de números de sequência tem de ser ampliada; Os lados remetente e destinatário dos protocolos podem ter de reservar buffers para mais de um pacote; A faixa de números de sequência necessária e as necessidades de buffer dependerão da maneira como um protocolo de transferência de dados responde a pacotes perdidos, corrompidos e demasiadamente atrasados; Arquitetura TCP/IP: Transporte Duas abordagens básicas em relação à recuperação de erros com paralelismo podem ser identificadas: Go-Back-N e repetição seletiva. Arquitetura TCP/IP: Transporte Protocolo Go-Back-N (GBN): Remetente é autorizado a transmitir múltiplos pacotes (se disponíveis) sem esperar por um reconhecimento; fica limitado a ter não mais do que algum número máximo permitido, N, de pacotes não reconhecidos na “tubulação”; protocolo de janela deslizante (sliding-window protocol); Arquitetura TCP/IP: Transporte Arquitetura TCP/IP: Transporte http://www.ccs-labs.org/teaching/rn/animations/gbn_sr/