ADEMAR FELIPE FEY RAUL RICARDO GAUER INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2ª edição Caxias do Sul Ademar Felipe Fey 2014 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Resumo: As redes de computadores surgiram a partir da década de 1970 do século passado. Na década seguinte, dois importantes modelos de protocolos de interconexão de redes surgiram: o modelo TCP/IP e o modelo OSI. Este livro pretende apresentar os principais fundamentos conceituais desses dois conjuntos de protocolos de comunicação utilizados em redes de computadores, oportunizando aos leitores a construção de uma base de conhecimento sólida para avançar na compreensão de estudos mais complexos nessa área. Fey, Ademar Felipe. Gauer, Raul Ricardo. Introdução às Redes de Computadores: modelos OSI e TCP/IP / Ademar Felipe Fey - 2. ed - Caxias do Sul: 2014 ISBN 978-85-916931-8-4 © Ademar Felipe Fey e Raul Ricardo Gauer Todos os direitos reservados. Proibida a reprodução parcial ou total sem autorização por escrito dos autores Nota: apesar dos cuidados e revisões, podem ocorrer erros de digitação, ortográficos e dúvidas conceituais. Em qualquer hipótese, solicitamos a comunicação para o email ademar.fey.aff@gmail.com, para que possamos esclarecer ou encaminhar a questão. Nem o editor nem os autores assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens, originados do uso desta publicação. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 2 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP APRESENTAÇÃO Este livro é um esforço de pesquisa, tradução de artigos, anotações em sala de aula, confecção de apresentações para nossas disciplinas de Redes de Computadores no ensino presencial e no curso on-line de Fundamentos de Redes de Computadores, no qual procuramos abordar os assuntos que consideramos mais importantes para compor a base conceitual para os estudantes na área de redes de computadores. Procuramos incluir os principais tópicos sobre os quais percebemos uma carência de aprendizado de nossos alunos, presenciais ou à distância, nesses 12 anos de docência no ensino técnico e ensino superior. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 3 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP NOTA DA 2ª EDIÇÃO Após o lançamento da 1ª edição deste livro percebemos a necessidade da inclusão de um capítulo específico sobre o modelo OSI, devido a importância teórica do seu conhecimento e a carência de um material de estudo mais consistente sobre esse assunto. Além disso, procedemos a uma revisão geral sobre o texto da 1ª edição deste livro. Com essas melhorias, nossa expectativa é que o livro traga ainda mais conhecimento para o leitor e se torne bastante útil para o estudante e profissional da área de Redes de Computadores. Sugestões, críticas e pedidos de informações podem ser enviados para o e-mail ademar.fey@gmail.com. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 4 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP AVISOS Esta publicação pode conter imprecisões ortográficas e técnicas ou erros tipográficos. Periodicamente são feitas alterações nas informações aqui contidas; essas alterações serão incorporadas em novas edições da publicação. Os autores podem fazer melhorias e/ou alterações nesta publicação a qualquer momento sem aviso prévio. As informações contidas nesta publicação são de caráter informativo e introdutório, sendo da responsabilidade do leitor buscar aprofundamento no assunto desta publicação em que desejar aplicar numa situação prática na área de sua atuação profissional. A reprodução parcial ou completa é proibida sem autorização escrita dos autores. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 5 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CONVENÇÕES UTILIZADAS NESTE LIVRO • • • • • • • Utilizamos a grafia de sub-rede, de acordo com a nova ortografia portuguesa. Utilizamos a grafia sub-net da língua inglesa. Em algumas palavras-chave ou termos chaves usamos e abusamos de artifícios gráficos, tais como, negrito, aspas, colorido, primeira letra em maiúscula, fonte do caractere aumentada, no intuito de chamar a atenção dos leitores. Pedimos desculpas se elas ferem algumas regras ortográficas. O plural de algumas palavras estrangeiras foi feito utilizando a letra “s” logo após essas palavras (como exemplo, a palavra Bits ou a palavra Hosts), sem usar o apóstrofo, portanto. As citações estão no texto com números sobrescritos que remetem à obra citada nas referências bibliográficas (conceito10, exemplificando). Na explanação sobre o endereço IP (composto por 4 octetos ou bytes), consideramos o 1º octeto como sendo o da esquerda (o mais significativo) e o 4º Octeto como sendo o da direita (o menos significativo). Esse 1º octeto também foi considerado como sendo o 1º campo da representação do endereço IP. Nos exemplos de conversão binária e cálculos de sub-redes, nos capítulos correspondentes, em algumas situações usamos referenciar a posição dos bits como do 1º ao 8º bit (considerando o 1º bit, o mais da direita, ou seja, o menos significativo) sem levar em consideração a convenção padrão (que nomeia os bits como sendo de bit 0 a bit 7, sendo o bit 0 o de menor peso, ou seja, o mais da direita). Utilizamos esse artifício por consideramos mais didático, conforme o caso específico, mas sempre salientando a metodologia usada. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 6 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CONSIDERAÇÕES INICIAIS. Após 12 anos no ensino de Redes de Computadores, percebemos que alguns conceitos devam fundamentar o conhecimento técnico dos profissionais que trabalham na área de infraestrutura de redes. Começando com uma visão geral e histórica do modelo de interconexão de redes OSI e do modelo TCP/IP. Depois desse alicerce de conhecimento estabelecido, é hora de avançar para conhecer as camadas ou níveis de cada um desses modelos. Ali devemos nos focar nas funções, protocolos, PDUs e equipamentos que rodam em cada uma dessas camadas. Querer ir adiante para um conceito mais avançado sem conhecer os fundamentos, equivale a começar a construção de uma edificação pelo telhado e não pelas fundações. A construção pode ruir ou apresentar falhas graves. O objetivo deste livro é este: estabelecer os conceitos fundamentais das redes de computadores. A partir desses fundamentos, o leitor pode projetar para alçar voo para conhecimentos avançados. Para atingir tal objetivo, o livro foi estruturado da seguinte forma: No Capítulo 1 fazemos uma introdução às redes de computadores, explanando sobre os conceitos básicos da área e iniciando o estudo dos modelos OSI e TCP/IP. O Capítulo 2 trata especificadamente sobre o modelo de referência OSI de protocolos de comunicação, contendo sua conceituação básica e a explicação sobre cada uma de suas sete camadas, de forma introdutória. O tópico sobre a Camada de Apresentação é baseado, em parte, no livro da referência 46, ou seja, ASN.1 Communication between Heterogeneous Systems, do autor Olivier Dubuisson, o qual recomendamos a leitura para quem desejar se aprofundar no assunto. No Capítulo 3 tratamos da introdução ao modelo de referência TCP/IP de protocolos de comunicação, incluindo sua conceituação básica e a explanação básica sobre cada uma de suas cinco camadas (modelo híbrido adotado neste livro). O Capítulo 4 trata da Camada Física do TCP/IP, suas funções, sua PDU chamada de Bit e os equipamentos que rodam nela. Todos os capítulos posteriores abordam as demais camadas do modelo TCP/IP de 5 camadas. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 7 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP No Capítulo 5 abordamos a Camada de Enlace do TCP/IP, suas funções, sua PDU chamada de Frame ou Quadro, o protocolo Ethernet e os equipamentos que nela trabalham. No Capítulo 6 analisamos a Camada de Rede do TCP/IP, a sua PDU chamada de Pacote ou Datagrama, a função do roteamento e as sub-redes. Esse é um capítulo importante para o profissional de TI em geral. Por isso ele merece um destaque especial. Já no Capítulo 7, explanamos sobre a Camada de Transporte do TCP/IP e sua importante função de estabelecer comunicação entre máquinas finais. Da mesma forma que nas camadas anteriores, as funções, a PDU (Segmento) e os protocolos dessa camada são estudados neste capítulo. Uma parte do Capítulo 7 foi baseada na tradução livre do capítulo da camada de transporte do livro eletrônico Red Book da IBM4, sendo os créditos do(s) seu(s) autor(es). A obra citada é recomendada para quem desejar aprofundar os conceitos apresentados no capítulo específico e também nos demais assuntos deste livro. Por último, no Capítulo 8 estudamos a Camada de Aplicação do TCP/IP, a que recebe maior número de protocolos e a que serve de interface com os aplicativos e usuários finais. Além das questões citadas e estudadas nos outros capítulos, fazemos uma descrição dos principais protocolos da camada de aplicação e dos principais utilitários do TCP/IP. Esperamos que este livro traga para o leitor a compreensão dos conceitos fundamentais das redes de computadores, atingindo com isso nosso objetivo proposto. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 8 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 9 SUMÁRIO CAPÍTULO 1 INTRODUÇÃO ÀS REDES DE COMPUTADORES ................................ 18 INTRODUÇÃO ............................................................................................................... 18 1.1 SISTEMA BÁSICO DE COMUNICAÇÃO ................................................................. 18 1.2 HISTÓRICO DA COMPUTAÇÃO E DAS REDES DE COMPUTADORES .............. 22 1.3 DOS MAINFRAMES ATÉ A INTERNET: O SURGIMENTO DAS REDES ............... 25 1.4 TIPOS DE REDES DE COMPUTADORES .............................................................. 27 1.4.1 Rede LAN de Computadores ................................................................................ 27 1.4.2 Rede MAN de Computadores ............................................................................... 28 1.4.3 Rede WAN de Computadores ............................................................................... 28 1.5 A NECESSIDADE POR UM PADRÃO DE PROTOCOLOS DE COMUNICAÇÃO ... 29 1.6 ORIGEM DO MODELO DE INTERCONEXÃO DE REDES TCP/IP ......................... 29 1.7 ORIGEM DO MODELO DE INTERCONEXÃO DE REDES OSI .............................. 32 1.8 TRAÇANDO UM PARALELO ENTRE A ORIGEM DO MODELO TCP/IP E OSI ..... 33 1.9 RESUMO DO CAPÍTULO ........................................................................................ 34 CAPÍTULO 2 MODELO DE REFERÊNCIA DE INTERCONEXÃO OSI ........................ 35 INTRODUÇÃO ............................................................................................................... 35 2.1 O MODELO OSI/ISO ................................................................................................ 35 2.2 RESUMO DA FUNÇÃO DE CADA NÍVEL (CAMADA) DO PROTOCOLO OSI ....... 37 2.3 COMO AS CAMADAS SE COMUNICAM................................................................. 38 2.4 CAMADAS DO MODELO OSI.................................................................................. 40 2.4.1 Camada Física do Modelo OSI ............................................................................. 40 2.4.1.1 Funções internas da camada física .................................................................... 41 2.4.1.2 Serviços prestados para a camada de enlace de dados .................................... 41 2.4.1.3 Protocolos da camada física do modelo OSI...................................................... 42 2.4.2 Camada de Enlace do Modelo OSI ....................................................................... 42 2.4.2.1 Funções interna da camada de enlace de dados ............................................... 43 2.4.2.2 Serviços prestados à camada de rede ............................................................... 44 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 10 2.4.2.3 Protocolos da camada de enlace no modelo OSI .............................................. 44 2.4.3 Camada de Rede do Modelo OSI ......................................................................... 44 2.4.3.1 Normas da camada de rede do modelo OSI ...................................................... 45 2.4.3.2 Arquitetua Interna da Camada de Rede ............................................................. 46 2.4.3.3 Serviço da Camada de Rede Sem Conexão (Connectionless) .......................... 47 2.4.3.4 Serviço da Camada de Rede Com Conexão...................................................... 48 2.4.3.5 Endereços da Camada de Rede ........................................................................ 48 2.4.3.6 Funções da Camada Rede................................................................................. 49 2.4.3.7 Serviços prestados à Camada de Transporte .................................................... 50 2.4.4 Camada de Transporte do modelo OSI ................................................................. 50 2.4.4.1 Classes de Serviços dos Protocolos da Camada de Transporte........................ 52 2.4.4.2 Normas da Camada de Trasporte do modelo OSI ............................................. 54 2.4.4.3 Funções internas da camada de transporte ....................................................... 54 2.4.4.4 Serviços prestados para a camada de sessão ................................................... 54 2.4.4.5 Protocolos da camada de transporte do modelo OSI: ........................................ 54 2.4.5 Camada de Sessão do modelo OSI ...................................................................... 54 2.4.5.1 Funções da camada de sessão.......................................................................... 56 2.4.5.2 Funções e responsabilidades da camada de sessão ......................................... 57 2.4.5.3 Exemplo de uso da camada de sessão .............................................................. 58 2.4.5.4 Protocolos da camada de sessão ...................................................................... 60 2.4.5.5 A camada de sessão nos aplicativos atuais (TCP/IP) ........................................ 61 2.4.6 Camada de Apresentação ..................................................................................... 61 2.4.6.1 Introdução .......................................................................................................... 61 2.4.6.2 Papel da Camada de Apresentação ................................................................... 62 2.4.6.3 Funções da Camada de Apresentação .............................................................. 64 2.4.6.3.1 Conversão interna dos dados (codificação) .................................................... 64 2.4.6.3.2 Compressão de dados .................................................................................... 66 2.4.6.3.3 Criptografia de dados ...................................................................................... 66 2.4.6.4 Exemplo de Uso da Camada de Apresentação.................................................. 67 2.4.6.5 Serviço de Conversão de Código da Camada de Apresentação ....................... 67 2.4.6.5.1 Sintaxe (Linguagem) Abstrata e Sintaxe (Linguagem) de Transferência ........ 68 2.4.6.6 Introdução ao ASN.1 .......................................................................................... 70 2.4.6.7 ASN.1 e BER...................................................................................................... 73 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 11 2.4.6.7.1 ASN.1 .............................................................................................................. 73 2.4.6.7.2 BER ................................................................................................................. 74 2.4.6.8 Contrastando o ASN.1 e o BER ......................................................................... 75 2.4.6.9 A XML................................................................................................................. 75 2.4.6.10 Tradutor ASN.1 para XML ................................................................................ 76 2.4.6.11 Os Padrões e Recomendações da Camada de Apresentação ISO/ITU-T ....... 76 2.4.6.12 Protocolos da Camada de Apresentação ......................................................... 76 2.4.6.12.1 Exemplos de protocolos no modelo OSI ....................................................... 77 2.4.6.12.2 Exemplos de protocolos de formatação ........................................................ 77 2.4.6.12.3 Exemplos de protocolos de codificação ........................................................ 77 2.4.6.13 Camada de Apresentação em redes modernas ............................................... 77 2.4.7 Camada de Aplicação do modelo OSI .................................................................. 78 2.4.7.1 Papel da camada de aplicação .......................................................................... 79 2.4.7.2 Processo de Construção de Entidades de Aplicação no OSI ............................. 79 2.4.7.3 Serviços da camada de aplicação ...................................................................... 81 2.4.7.4 Funções da camada de aplicação ...................................................................... 81 2.4.7.5 Classificação dos Protocolos da camada de aplicação. ..................................... 82 2.4.7.6 Padrões de Elementos de Serviço de Aplicação de Propósito Geral ................. 82 2.4.7.7 Padrões de Elementos de Serviço de Aplicação de Propósito Específico ......... 83 2.4.7.8 Implementações de protocolos da camada de aplicação no modelo OSI ......... 84 2.4.7.9 A camada de aplicação nos aplicativos atuais (TCP/IP) .................................... 85 2.5 USO DO MODELO OSI NA ATUALIDADE .............................................................. 85 2.6 RESUMO DO CAPÍTULO ........................................................................................ 87 CAPÍTULO 3 INTRODUÇÃO AO MODELO DE INTERCONEXÃO TCP/IP.................. 89 INTRODUÇÃO ............................................................................................................... 89 3.1 CONCEITOS DO TCP/IP ......................................................................................... 91 3.1.1 Camada Física/Enlace (Host/Rede) ...................................................................... 92 3.1.2 Camada de Rede (Inter-Rede) .............................................................................. 92 3.1.3 Camada de Transporte.......................................................................................... 92 3.1.4 Camada de Aplicação ........................................................................................... 93 3.1.5 Modelo TCP/IP de 5 camadas (modelo híbrido).................................................... 93 3.2 CONCEITOS FUNDAMENTAIS DA DIVISÃO POR CAMADAS .............................. 94 3.2.1 Encapsulamento .................................................................................................... 94 3.2.2 Desencapsulamento .............................................................................................. 94 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 12 3.2.3 Multiplexação ........................................................................................................ 94 3.2.4 Demultiplexação .................................................................................................... 94 3.2.5 Fragmentação ....................................................................................................... 95 3.3 COMPARAÇÃO ENTRE OS MODELOS DE REFERÊNCIA OSI E TCP/IP ............ 95 3.4 CRÍTICAS AOS MODELOS DE REFERÊNCIA ....................................................... 98 3.5 MODELO DE REFERÊNCIA DE PROTOCOLOS ADOTADO NO LIVRO ............... 98 3.6 RESUMO.................................................................................................................. 98 CAPÍTULO 4 CAMADA FÍSICA .................................................................................. 100 INTRODUÇÃO ............................................................................................................. 100 4.1 MEIO DE TRANSMISSÃO ..................................................................................... 100 4.1.1 Par metálico ........................................................................................................ 101 4.1.2 Cabo coaxial........................................................................................................ 101 4.1.3 Fibra ótica............................................................................................................ 102 4.1.4 Rádio transmissão ............................................................................................... 103 4.1.5 Satélite ................................................................................................................ 103 4.2 INTERFACES DE DADOS E VOZ PADRÕES DE MERCADO.............................. 105 4.2.1 V24 ...................................................................................................................... 105 4.2.2 V35 ...................................................................................................................... 106 4.2.3 V36 ...................................................................................................................... 107 4.2.4 G703.................................................................................................................... 107 4.2.5 RJ-45 ................................................................................................................... 108 4.2.6 RJ-11 ................................................................................................................... 109 4.2.7 V-21 ao V-92 ....................................................................................................... 109 4.3 INTERFACES DTE E DCE..................................................................................... 110 4.4 EQUIPAMENTOS QUE OPERAM NA CAMADA FÍSICA....................................... 111 4.4.1 Modems............................................................................................................... 112 4.4.2 Multiplexador ....................................................................................................... 112 4.4.3 Repetidor de Sinal ............................................................................................... 113 4.4.4 Hub ...................................................................................................................... 113 4.5 TOPOLOGIA UTILIZANDO OS CONCEITOS DA CAMADA FÍSICA ..................... 114 4.6 RESUMO................................................................................................................ 115 CAPÍTULO 5 CAMADA DE ENLACE ......................................................................... 116 INTRODUÇÃO ............................................................................................................. 116 5.1 FUNÇÃO DA CAMADA DE ENLACE ..................................................................... 116 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 13 5.2 QUADRO OU FRAME ............................................................................................ 117 5.3 MODELO TCP/IP ................................................................................................... 117 5.4 PROTOCOLOS DA CAMADA DE ENLACE........................................................... 118 5.4.1 Ethernet ............................................................................................................... 119 5.4.1.1 Quadro Ethernet ............................................................................................... 119 5.4.1.2 Funcionamento do protocolo Ethernet.............................................................. 121 5.4.1.3 Notação Hexadecimal ...................................................................................... 122 5.4.1.4 ARP ou Address Resolution Protocol ............................................................... 125 5.4.1.5 Padrões Ethernet e tipo de cabeamento .......................................................... 125 5.4.1.6 Evolução da Ethernet ....................................................................................... 127 5.4.1.7 Topologias Ethernet ......................................................................................... 128 5.4.1.8 Método de acesso ao meio .............................................................................. 129 5.4.1.9 Colisão ............................................................................................................. 129 5.4.1.10 Desenvolvimento do padrão Ethernet ............................................................ 129 5.4.1.11 Hub ................................................................................................................. 130 5.4.1.12 Switch ............................................................................................................. 130 5.4.1.13 Informação complementar sobre o protocolo Ethernet ................................... 131 5.4.2 PPP ..................................................................................................................... 131 5.4.2.1 Quadro PPP ..................................................................................................... 131 5.4.3 HDLC................................................................................................................... 132 5.4.3.1 Quadro HDLC................................................................................................... 132 5.4.4 Frame Relay ........................................................................................................ 133 5.4.4.1 Características ................................................................................................. 134 5.4.4.2 Quadro Frame Relay ........................................................................................ 135 5.4.4.3 Descrição dos campos do cabeçalho do Frame Relay..................................... 136 5.5 RESUMO................................................................................................................ 136 CAPÍTULO 6 CAMADA DE REDE .............................................................................. 137 INTRODUÇÃO ............................................................................................................. 137 6.1 CONCEITOS BÁSICOS DA CAMADA DE REDE .................................................. 137 6.1.1 Função ................................................................................................................ 137 6.1.2 Funcionamento.................................................................................................... 137 6.1.3 Protocolos da Camada de Rede ......................................................................... 138 6.2 FUNCIONAMENTO DO PROTOCOLO ROTEÁVEL IP ......................................... 138 6.2.1 Cabeçalho IP ....................................................................................................... 140 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 14 6.2.2 Campos do Cabeçalho IP.................................................................................... 140 6.2.3 Importância dos Campos de Endereço do cabeçalho IP ..................................... 142 6.3 ENDEREÇAMENTO IP .......................................................................................... 143 6.3.1 Formato do endereço IP ...................................................................................... 144 6.3.2 Conversão binária para decimal .......................................................................... 144 6.3.3 Determinando a Rede de um endereço IP .......................................................... 147 6.3.4 Aplicando a Máscara ........................................................................................... 148 6.3.5 Classes de Endereçamento IP ............................................................................ 149 6.3.6 Identificando a Classe de um endereço IP .......................................................... 152 6.3.7 Endereços IP Especiais e Reservados................................................................ 154 6.3.8 Exemplos de topologias de redes IP ................................................................... 155 6.3.9 Endereços de Sub-Rede ..................................................................................... 157 6.3.10 Criando Sub-Redes ........................................................................................... 157 6.3.11 Classificação dos endereços IP ........................................................................ 163 6.3.12 Roteador............................................................................................................ 163 6.4 IPv6 ........................................................................................................................ 164 6.4.1 Introdução ao IPv6. ............................................................................................. 164 6.4.2 Comparação entre cabeçalhos do IPv4 e do IPv6 .............................................. 164 6.4.3 Melhorias no cabeçalho IPv6 .............................................................................. 168 6.4.4 Cabeçalhos de extensão ..................................................................................... 168 6.4.5 Fragmentação no IPv6 ........................................................................................ 170 6.4.6 Estrutura do Endereçamento IPv6 ...................................................................... 171 6.4.7 Alocação de Endereço IPv6 ................................................................................ 172 6.4.8 Sub-redes no IPv6 ............................................................................................... 172 6.4.9 Representação dos Endereços no IPv6 .............................................................. 173 6.4.10 Terminologia técnica do IPv6 ............................................................................ 174 6.4.11 O escopo do Endereçamento no IPv6 ............................................................... 174 6.4.12 Tipos de endereços IPv6 ................................................................................... 175 6.4.13 Conjunto de Endereços de Interface ................................................................. 175 6.4.14 Tipos de Prefixo de Endereçamento ................................................................. 176 6.4.15 Roteamento no IPv6 .......................................................................................... 176 6.5 OUTROS PROTOCOLOS DA CAMADA DE REDE ............................................... 178 6.5.1 ICMP ................................................................................................................... 178 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 15 6.5.2 ARP ..................................................................................................................... 179 6.6 PROTOCOLOS DE ROTEAMENTO ...................................................................... 182 6.6.1 Rotas Estáticas e Dinâmicas ............................................................................... 182 6.6.2 Roteamento Dinâmico ......................................................................................... 183 6.6.3 Distâncias Administrativas................................................................................... 183 6.6.4 Classe dos Protocolos de Roteamento ............................................................... 184 6.6.5 Vetor distância..................................................................................................... 185 6.6.5.1 RIP (Router Information Protocol) .................................................................... 185 6.6.6 Estado do Link..................................................................................................... 186 6.6.6.1 OSPF (Open Shortest Path First) ..................................................................... 186 6.6.7 Algoritmo de protocolos de roteamento híbrido ................................................... 187 6.6.7.1 EIGRP (Enhanced Interior Gateway Routing Protocol) .................................... 187 6.6.7.2 Diffusion Update Algorithm ............................................................................... 188 6.7 Resumo .................................................................................................................. 188 CAPÍTULO 7 CAMADA DE TRANSPORTE................................................................ 190 INTRODUÇÃO ............................................................................................................. 190 7.1 CONCEITOS BÁSICOS DA CAMADA DE TRANSPORTE.................................... 190 7.2 Modelo cliente-servidor. ......................................................................................... 191 7.2.1 Servidores ........................................................................................................... 192 7.2.2 Cliente ................................................................................................................. 193 7.2.3 Principais protocolos da camada de transporte................................................... 193 7.3 PORTAS E SOCKETS ........................................................................................... 194 7.3.1 Portas .................................................................................................................. 195 7.3.2 Sockets................................................................................................................ 198 7.4 USER DATAGRAM PROTOCOL (UDP) ................................................................ 201 7.4.1 Formato do datagrama UDP ............................................................................... 203 7.4.2 Interface de programação de aplicativos do UDP ............................................... 204 7.4.3 Aplicações padronizadas que usam o protocolo UDP ......................................... 206 7.5 PROTOCOLO DE CONTROLE DE TRANSMISSÃO (TCP) .................................. 206 7.5.1 Conceitos do TCP ............................................................................................... 207 7.5.2 Formato do segmento TCP ................................................................................. 210 7.5.3 Comparação entre os protocolos UDP e o TCP .................................................. 212 7.5.4 Controle de fluxo pelo TCP ................................................................................. 213 7.5.4.1 O princípio da janela......................................................................................... 215 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 16 7.5.4.2 O princípio da janela aplicado ao TCP ............................................................. 218 7.5.4.3 Troca de dados normal (sem retransmissões) ................................................. 221 7.5.4.4 Reconhecimentos e retransmissões ................................................................ 222 7.5.4.5 Estabelecimento de uma conexão TCP ........................................................... 224 7.5.4.6 Interface de programação de aplicativos do TCP ............................................. 227 7.5.5 Algoritmos de controle de congestionamento do TCP ........................................ 229 7.5.6 Aplicações padronizadas que utilizam o protocolo TCP ...................................... 230 7.5.7 Relação de portas bem conhecidas de aplicações Internet ................................ 230 7.6 CONSIDERAÇÕES FINAIS DA CAMADA DE TRANSPORTE .............................. 231 7.7 RESUMO................................................................................................................ 231 CAPÍTULO 8 CAMADA DE APLICAÇÃO ................................................................... 233 INTRODUÇÃO ............................................................................................................. 233 8.1 PROTOCOLOS DA CAMADA DE APLICAÇÃO .................................................... 235 8.1.1 HTTP (HyperText Transfer Protocol) ................................................................... 235 8.1.1.1 Formato do pacote de dados de solicitação HTTP ........................................... 237 8.1.1.2 Formato do pacote de dados de resposta HTTP.............................................. 238 8.1.1.3 Versões do HTTP ............................................................................................. 239 8.1.2 Telnet (Telecommunication Networking) ............................................................. 239 8.1.3 FTP (File Transfer Protocol) ................................................................................ 244 8.1.3.1 Comandos e mensagens do FTP ..................................................................... 247 8.1.3.2 Exemplos de comandos do FTP ...................................................................... 247 8.1.3.3 Códigos de respostas (mensagens) do FTP .................................................... 248 8.1.4 SMTP (Simple Mail Transfer Protocol) ................................................................ 249 8.1.4.1 Enviando mensagens pelo SMTP .................................................................... 250 8.1.4.2 Texto de mensagem enviada pelo SMTP......................................................... 252 8.1.4.3 Códigos de Respostas do Protocolo SMTP ..................................................... 254 8.1.4.3.1 Primeiro Dígito do Código de Respostas....................................................... 254 8.1.4.3.2 Segundo Dígito do Código de Respostas...................................................... 254 8.1.4.3.3 Terceiro Dígito do Código de Respostas ....................................................... 254 8.1.4.4 Localizando mensagens no SMTP ................................................................... 254 8.1.4.5 Comandos adicionais no SMTP ....................................................................... 255 8.1.5 POP3 (Post Office Protocol) ................................................................................ 255 8.1.5.1 Para Acessar o Servidor de e-mail ................................................................... 257 8.1.5.2 Deletando mensagens lidas pelo POP ............................................................. 259 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 17 8.1.5.3 Benefícios do protocolo POP e SMTP.............................................................. 259 8.1.6 IMAP.................................................................................................................... 260 8.1.7 SNMP (Simple Networking Management Protocol) ............................................. 260 8.1.7.1 Base de Gerenciamento (MIB) do SNMP ......................................................... 262 8.1.7.2 Comandos de gerenciamento do SNMP .......................................................... 262 8.1.7.3 Objetos gerenciados pelo SNMP ..................................................................... 263 8.1.7.4 Mensagens do SNMP....................................................................................... 264 8.1.8 DNS (Domain Name Protocol) ............................................................................ 265 8.1.8.1 Introdução ........................................................................................................ 265 8.1.8.2 Registros do DNS ............................................................................................. 266 8.1.8.3 Funcionamento genérico do DNS .................................................................... 267 8.1.8.4 Navegando na WEB usando o Sistema de Nomes de Domínio (DNS) ............ 268 8.1.9 Protocolo e Serviço de compartilhamento de arquivo SMB................................. 269 8.1.10 Protocolo DHCP ................................................................................................ 271 8.1.10.1 Tipos de Mensagem DHCP ............................................................................ 273 8.1.10.2 Troca de mensagens DHCP ........................................................................... 274 8.2 UTILITÁRIOS DA CAMADA DE APLICAÇÃO........................................................ 275 8.2.1 Ipconfig ................................................................................................................ 276 8.2.2 Ipconfig /all .......................................................................................................... 277 8.2.3 Ping ..................................................................................................................... 278 8.2.4 Hostname ............................................................................................................ 278 8.2.5 Arp –a .................................................................................................................. 279 8.2.6 Netstat ................................................................................................................. 279 8.2.7 Route ................................................................................................................... 280 8.2.8 Tracert (Trace route no Linux) ............................................................................. 281 8.2.9 Nslookup ............................................................................................................. 281 8.3 CONSIDERAÇÕES FINAIS DA CAMADA DE APLICAÇÃO .................................. 282 8.4 RESUMO................................................................................................................ 282 CONCLUSÃO .............................................................................................................. 283 REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................ 284 APÊNDICE A – Cadastro no blog Infraestrutura de Redes ..................................... 289 APÊNDICE B – Indicações de cursos on-line e e-books por assunto ................... 290 APÊNDICE C – Outras obras dos autores ................................................................ 292 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CAPÍTULO 1 INTRODUÇÃO ÀS REDES DE COMPUTADORES INTRODUÇÃO Este capítulo visa introduzir os conceitos básicos utilizados nas redes de computadores. 1.1 SISTEMA BÁSICO DE COMUNICAÇÃO Os seres humanos perceberam, desde o início da humanidade, que a sua sobrevivência dependia da comunicação. Desde então os homens buscam aperfeiçoar os sistemas de comunicação. Exemplos dos sistemas de comunicação utilizados são: sinais de fumaça, telégrafo, telefone, redes de computadores. Todos estes sistemas possuem cinco elementos, no mínimo, que são comuns: • • • • • Transmissor; Mensagem; Protocolo; Meio de transmissão; Receptor. A figura abaixo exibe as características básicas de um sistema básico de comunicação. Figura 1.1 Sistema de Comunicação Básico.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 18 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Os especialistas em telecomunicações e de redes de computadores perceberam também que a informação que deve ser transmitida à distância não pode ser “inserida”” no meio de transmissão sem uma adaptação. As adaptações do sinal dos computadores, que sabemos ser um sinal digital, ao meio de transmissão, podem ser feitas de duas maneiras: através da modulação ou através de codificação. A modulação insere os sinais digitais oriundos do com computador putador num sinal analógico (portadora) de forma que o sinal resultante (portadora modulada ou onda modulada) consiga percorrer o meio de transmissão com maior facilidade. Um exemplo de equipamento de comunicação de dados que utiliza a modulação é o chamado do modem analógico (“modem” é uma contração de duas palavras: “mod” de modulador e “dem” de demodulador), utilizado para troca de dados entre computadores e para acesso à Internet, entre outras aplicações. Figura 1.2 Modem analógico analógico.1 A codificação, por or sua vez, altera os sinais digitais oriundos do computador num sinal pseudo-analógico analógico (pseudo (pseudo-portadora) portadora) de forma que o sinal resultante, que é um sinal codificado, consiga percorrer o meio de transmissão com maior facilidade, de certa forma “enganando” o meio de transmissão, fazendo-o o supor que se trata realmente de um sinal analógico (ou sinal eletromagnético). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 19 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 1.3 Modem Digital Digital.1 Um exemplo de equipamento de comunicação de dados que utiliza a codificação é o chamado modem digital, largamente utilizado pelas operadoras de telecomunicação para montar os circuitos de comunicação de dados, que interliga a rede local de computadores (LAN)) em empresas e escritórios até o seu backbone de comunicação de dados (um circuito dedicado de acesso à Interne Internet, t, por exemplo, utiliza um par de modems digitais). Para interligar fisicamente o seu ponto de presença ao cliente, a operadora utiliza diversos meios físicos, entre eles o par metálico, a fibra óptica e o rádio ponto a ponto. Para cada meio físico desses a operadora utilizará um modem específico. Figura 1.4 Conexão da rede local ao provedor Internet (via modem digital).1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 20 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Na figura anterior o modem digital que está no provedor Internet foi omitido. Os modems sempre trabalham aos pares. É importante também destacar a técnica chamada de multiplexação. Esta técnica multiplexa (ou “mistura”) vários sinais oriundos de dispositivos de comunicação num único meio de transmissão. A multiplexação, portanto, otimiza o meio de transmissão, oportunizando às operadoras reduzirem os custos de investimentos nos meios de transmissão. A B C D Figura 1.5 Multiplexação.1 Podemos citar as técnicas de multiplexação analógicas FDM e OFDM e as digitais TDM, CDM, GSM, etc. Voltando ao sistema básico de comunicação, convém destacar que a mensagem não pode também ser enviada no seu conteúdo original de um computador para outro. Ocorre que para os computadores trocarem dados entre si eles precisam utilizar procedimentos, protocolos e códigos de formatação dos dados padrões para que a mensagem seja entendida de forma correta. Podemos traçar um paralelo ao que acontece quando um americano deseja falar com um chinês e nenhum dos dois interlocutores conhece o idioma do outro. Valese, nesse caso, de um tradutor que controla os procedimentos e estabelece Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 21 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP protocolos para a tradução da mensagem e entrega ao destino, de forma íntegra e correta. Dois estudiosos que pesquisaram o efeito do meio de transmissão (também chamado de meio físico) sobre a velocidade que as informações podem ser transmitidas nesse meio foram Nyquist (1928) e Shannon (1948).6 Eles criaram fórmulas que nos permitem calcular a quantidade de bits (menor unidade de informação manipulada pelos computadores) possíveis de serem transmitidos num meio de transmissão, por segundo. Nyquist considerou o meio de transmissão como sendo ideal, não sofrendo, portanto, interferência de sinais indesejáveis à comunicação de dados. O sinal indesejável ao meio é chamado de ruído. L C = 2.W.log2 bps Onde C é a capacidade de transmissão em bits por segundo, bps, e W é largura de banda de um meio de transmissão (frequências aceitas no meio de transmissão) e L é quantidade de bits codificados num ciclo da onda portadora Shannon, por outro lado, considerou que em todo meio de transmissão existe a interferência de ruído, em menor ou maior escala. Ele considerou, portanto, um sistema de comunicação do mundo real. C = W.log2 (1+S/N) Onde S/N é a relação sinal ruído (quantas vezes o nível do sinal, dado em decibéis, é maior do que o nível do ruído). Quanto maior a relação, maior a qualidade do meio de transmissão. Através da análise das duas fórmulas acima podemos concluir que a capacidade de um meio de transmissão (bits por segundo transmitido no meio) é diretamente proporcional à largura de banda daquele meio físico (faixa de frequência aceita pelo meio físico). Após esta introdução aos conceitos básicos de um sistema de comunicação vamos conhecer um breve histórico das redes de computadores. 1.2 HISTÓRICO DA COMPUTAÇÃO E DAS REDES DE COMPUTADORES O conflito da 2ª. Guerra Mundial acabou acelerando os progressos na computação e, consequentemente, das redes de computadores. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 22 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP No entanto, os experimentos com máquinas para cálculos matemáticos começaram séculos atrás com o Ábaco (3.500 AC), máquina de calcular de Pascal (1642), máquina de calcular de Babbage (1833), a máquina do censo de Hollerith (1890), o qual em 1924 cria a IBM, o computador Zuse (1938), entre outras máquinas. Baseado nos livros de Jason Patterson em The History Of Computers During My Lifetime e de Raúl Rojas e Ulf Hashagen, 2000, em The First Computers—History and Architectures, além da apresentação dos 100 anos da IBM28, nós podemos citar o seguinte retrospecto da história da computação de 1940 até os nossos dias: Nos anos de 1940: O Colossus (1943), o ENIAC (1945), o Baby (1948) e o EDSAC (1949), todos experimentos computacionais de grande porte. Nos anos de 1950: O IBM 701 (1952), primeiro computador totalmente digital. Nos anos de 1960: A IBM lança o mainframe S/360 no mercado28. Figura 1.6 Mainframe.28 Nos anos de 1970: O primeiro microcomputador, o Apple II, que foi um dos mais populares microcomputadores no Mundo, o Commodore PET e o TRS-80. O UNIX, a programação de linguagem C, os minicomputadores VAX e o Cray 1. Incluo aqui o surgimento do modelo de referência de protocolos TCP/IP, utilizado para interconexão de computadores (lançado oficialmente em 1973). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 23 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 1.7 Minicomputador.8 Nos anos de 1980: O Commodore 64, o IBM PC, o Apple Macintosh e o Commodore Amiga. A interface Gráfica de usuário e o nascimento da multimídia. O Intel 80386. A linguagem C++. A arquitetura RISC. A SPARC station 1, o Silicon Graphics IRIS e o NeXT. Figura 1.8 IBM PC.28 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 24 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Incluo aqui o surgimento do modelo de referência de protocolos OSI, utilizado para interconexão de computadores, da rede WAN X.25 e das redes locais de computadores (LAN). Figura 1.9 Rede Local de Computadores - sistema barramento.1 Nos anos de 1990: O Microsoft Windows 3. A realidade virtual. O Alpha, o PowerPC e o Pentium. O Power Macintosh. A Internet e o World Wide Web. O OS/2 Warp. O Windows '95. O Toy Story. Nos anos de 2000: A Internet comercial com grande crescimento mundial, a computação em nuvem, o Sistema operacional Linux se firma nos ambientes de servidores. A Microsoft avança nos ambientes corporativos de redes locais. A rede sem fio começa a ser protagonista juntamente com a rede cabeada,, tanto nas redes LANs como nas Redes MANs. 1.3 DOS OS MAINFRAMES ATÉ A INTERNET: O SURGIMENTO DAS REDES Durante a Guerra fria (período após a 2ª. Guerra Mundial) o exército americano sentiu a necessidade de interligar os computadores de suas principais bases militares. Até então os computadores de grande porte, chamados de mainframe, operavam de forma isolada. Os trabalhos eram submetidos ao computador e o resultado dos processos era entregue aos interessados, impressos ou gravados em mídia de alguma espécie (cartão perfurado, fitas magnéticas, etc.). Em outras palavras, os computadores não estavam interligados. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 25 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP No final dos anos de 1960 ocorreram os sistemas multiusuários de tempo compartilhado (time sharing). Usando terminais interativos (teclado e vídeo ou terminais “burros”), os usuários se revezavam na utilização do computador central. A IBM reinava sozinha no mercado de computadores de grande porte daquela época. Em 1965 houve a primeira conexão entre computadores (EUA) realizada por Lawrence Roberts e Thomas Merril. A interligação foi efetuada por linha telefônica de baixa velocidade (56 Kbps), entre os centros de pesquisa de Massachusetts e Califórnia. A partir de 1970 sugiram os primeiros minicomputadores de 32 bits (IBM, HP e Digital), o que levou ao surgimento de um planejamento para distribuir o poder de processamento dos mainframes. O minicomputador VAX da Digital, lançado em 1977, já estava implementado para criar uma estrutura de uma rede de computadores. Figura 1.10 Minicomputador VAX.27 Neste meio tempo, o sistema operacional Unix, desenvolvido em 1969, nos laboratórios da Bell, tornou-se popular nas universidades e centros de pesquisa a partir de 1974. Implementado na linguagem C, o Unix possuía características de portabilidade e modulariedade, podendo rodar em vários tipos de computadores (de diferentes fabricantes). Aplicativos como e-mail, Telnet e FTP foram agregados ao Unix e a partir daí se tornaram a base dos serviços para a atual rede Internet. Em 1972, Robert Metcalfe recebeu a incumbência de criar um sistema que permitisse a conexão de estações de trabalho da Xerox, em Palo Alto, Califórnia, com os servidores da mesma empresa. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 26 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 1.11 Rede Local de Computadores.1 Nasceu deste trabalho de Metcalfe a tecnologia Ethernet, sucesso absoluto na interligação de computadores em ambientes de redes locais (que começariam a ser implantadas na década seguinte). Com a proliferação das redes locais de computadores (LAN) começou a surgir a necessidade de interligação das LANs entre si. Em seguida vamos distinguir os vários tipos de redes de computadores e depois vamos abordar como surgiram os protocolos de comunicação de dados que permitiram a interligação dessas redes de computadores. 1.4 TIPOS DE REDES DE COMPUTADORES Tradicionalmente, as redes de computadores são divididas nos seguintes tipos, referente à sua distância geográfica: 1.4.1 Rede LAN de Computadores Normalmente compreende a rede de computadores de um escritório, empresa ou prédio, numa única localização. Atinge alguns metros de distância. Na atualidade a tecnologia dominante nesse tipo de rede é a Ethernet. Figura 1.12 Rede Local de Computadores (LAN).1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 27 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 1.4.2 Rede MAN de Computadores Normalmente compreende a rede de computadores de uma empresa que possui vários pontos de atendimento (sites) numa mesma cidade, tais como matriz e unidades de fabricação, ou mesmo uma universidade e vários campus interligados. Atinge alguns quilômetros de distância. Figura 1.13 Rede Metropolitana Computadores (MAN).1 1.4.3 Rede WAN de Computadores Atinge dezenas a milhares de quilômetros de distância. A Internet é um exemplo desse tipo de rede. Normalmente as redes WANs estão sob cuidados das operadoras. Outros exemplos desse tipo de rede são: E1, X.25, Frame Relay, MPLS, etc. (consulte nosso curso sobre Redes WAN). Na prática, a rede WAN consiste de um grande número de redes LAN interligadas pelo meio de transmissão ou meio físicos das operadoras de telecomunicações ao núcleo central da rede WAN (backbone). Figura 1.14 Rede de Computadores de Longa Distância (WAN).11 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 28 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 1.5 A NECESSIDADE POR UM PADRÃO DE PROTOCOLOS DE COMUNICAÇÃO Na década de 1980 havia uma pressão muito alta para a conexão das redes locais de computadores entre sites geograficamente separados. O lançamento dos PCs favorecia a expansão das redes locais de computadores. As soluções de conexão eram vistas como ilhas isoladas e proprietárias. Como exemplo podemos citar o modelo de interconexão de computadores SNA da IBM, o DECNET da Digital, o Netware da Novell e o NEtBIOS da Microsoft. Duas soluções de padronização para estes softwares de comunicação de computadores foram propostas pela comunidade internacional: 1) Um sistema aberto de interoperabilidade da ISO, chamado de modelo OSI de interconexão, introduzido em 1984 através da ISO 7498 e pelo ITU-T X-200 2) Uma família de protocolos de interconexão TCP/IP, adotado pela rede ARPANET em 1983 (que por sua vez foi derivada do projeto do exército americano de interligação das bases militares a partir da década de 1960) A seguir vamos resumir o histórico da origem do modelo OSI e do modelo TCP/IP, obtido por pesquisa em documentos disponíveis na Internet, devidamente referenciados. 1.6 ORIGEM DO MODELO DE INTERCONEXÃO DE REDES TCP/IP O modelo TCP/IP surgiu da colaboração de vários segmentos da sociedade americana, como as universidades, os centros de pesquisa e o exército americano. Podemos dizer que o modelo TCP/IP seguiu uma linha de padronização desprovida de formalidades burocráticas das entidades de padronizações existentes na época (até se formar o IETF). Segundo Zimmermann63, as primeiras redes de computadores foram a Arpanet e a Cyclades, como podemos constatar na seguinte citação: O desenvolvimento inicial das redes de computadores havia sido promovido por redes experimentais como ARPANET [11] ou CYCLADES [2], imediatamente seguido por fabricantes de computadores [3], [4]. Enquanto as redes experimentais foram concebidas como heterogêneas, desde o início, cada fabricante desenvolveu seu próprio conjunto de padrões de protocolos para interconectar seus próprios equipamentos, referindo-se a isso como sua "arquitetura de rede" (ZIMMERMANN, 1980, p. 1, tradução nossa). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 29 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A rede Cyclades era uma rede francesa de pesquisa baseada em comutação por pacotes projetada e dirigida por Louis Pouzin.62 Ela foi demonstrada pela primeira vez em 1973, servindo como alternativa para o projeto da rede ARPANET e para suportar redes de pesquisa genericamente. É possível que conceitos tecnológicos usados na rede Cyclades tenham sido utilizados também nas redes TCP/IP (19731978) e nas redes X.25 (1976), esta última concebida pela antiga CCITT, atual ITUT, antes de o modelo OSI ter sido oficializado. Por outro lado, a rede Arpanet (Advanced Research Projects Agency Network) nasceu de uma parceria entre o departamento de defesa americano e 4 universidades daquele mesmo país, tornando-se conhecida como a primeira rede de pacotes do mundo e a predecessora da internet. A Arpanet iniciou suas operações em 1969 (PELKEY, 2007) e utilizava o protocolo chamado NCP (Network Control Protocol) para interligar os computadores chamados na época de IMP (Interface Message Processor). 61 O protocolo NCP foi o embrião do modelo TCP/IP, sendo que utilizava as camadas Hosts/IMP, Host/Host, ICP, Telnet, FTP, RJE e alguns protocolos ad hoc (citados da camada mais baixa para a mais alta). Blank (2002, cap. 1, p. 7), em seu livro sobre a origem do TCP/IP e da Internet, reitera a informação de Pelkey ao nos comunicar: 57 "Em 1978, testes e desenvolvimento desta linguagem levou a um novo conjunto de protocolos chamado Transmission Control Protocol/ Internet Protocol (TCP/IP). Em 1982, decidiu-se que TCPIP iria substituir o NCP como a linguagem padrão da ARPAnet. A RFC 801 descreve como e por que a transição do NCP para o TCP aconteceu. Em 1 de Janeiro de 1983 a ARPAnet migrou para o TCP/IP e a rede continuou a crescer exponencialmente " (tradução nossa). Por sua vez, Kozierok (2005, p. 122) assim nos salienta a origem do TCP/IP na rede Arpanet, corroborando com as duas citações anteriores: 58 Os protocolos TCP/IP foram desenvolvidos inicialmente como parte da rede de pesquisa desenvolvida pela Agência de Projetos de Pesquisa Avançada da Defesa dos Estados Unidos (DARPA ou ARPA). Inicialmente, esta rede incipiente, chamado de ARPAnet, foi projetada para usar uma série de protocolos que foram adaptados a partir de tecnologias existentes. No entanto, todos eles tinham falhas ou limitações, seja no conceito ou em questões práticas, tais como a capacidade, quando usado na ARPAnet. Os desenvolvedores da nova rede Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 30 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP reconheceram que a tentativa de usar estes protocolos existentes poderia eventualmente levar a problemas com a ARPAnet escalada para um tamanho maior e (eles) foram adaptados para novos usos e aplicações (tradução nossa). O mesmo Kozierok (2005, p. 122) nos auxilia com datas representativas do início da utilização do TCP/IP no mundo das redes de computadores, deixando claro que a Arpanet rodava principalmente baseada no protocolo TCP, deixando nas entrelinhas a informação de que o protocolo IP foi adicionado posteriormente ao TCP, formando o modelo de referência para protocolos de interconexão de redes heterogêneas agora chamado de TCP/IP: Em 1973, o desenvolvimento de um sistema completo de protocolos de internetworking para a ARPAnet começou. O que muitas pessoas não percebem é que nas primeiras versões dessa tecnologia, havia apenas um protocolo central: o TCP. E, na verdade, essas letras iniciais nem sequer definem o que elas fazem hoje, elas eram iniciais para o Programa de Controle de Transmissão. A primeira versão deste antecessor do TCP moderno foi escrito em 1973, depois revisado e formalmente documentado na RFC 675, Especificação do Programa de Controle de Transmissão da Internet, em dezembro de 1974 (tradução nossa). A adição do protocolo IP no final dos anos de 1970 foi necessária devido à implementação de protocolos não orientados à conexão, no caso o UDP, pela necessidade de algumas aplicações em não haver a retransmissão de pacotes proporcionada pelo protocolo TCP, conforme nos é relatado a seguir: No entanto, o esforço inicial para implementar o TCP resultou numa versão que somente permitiu circuitos virtuais. Esse modelo funcionou bem para transferência de arquivos e aplicações de login remoto, mas alguns dos primeiros trabalhos avançados sobre aplicações de rede, em particular pacotes de voz na década de 1970, deixou claro que, em alguns casos, a perda de pacotes não deve ser corrigido pelo TCP, mas deve ser deixado a cargo da aplicação gerenciar. Isso levou a uma reorganização do TCP original em dois protocolos em separado, o IP simples que fornecia apenas o endereçamento e encaminhamento de pacotes individuais e o TCP, que estava preocupado com as características de serviços, tais como o controle de fluxo e recuperação de pacotes perdidos. Para as aplicações que não queriam os serviços do TCP, uma alternativa chamada User Datagram Protocol (UDP) foi Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 31 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP adicionada a fim de fornecer acesso direto ao serviço básico do IP (LEINER, 2011, p. 3, tradução nossa). 60 1.7 ORIGEM DO MODELO DE INTERCONEXÃO DE REDES OSI O modelo OSI foi criado a partir do movimento de organizações internacionais de padronização, especialmente a ISO e o ITU-T. Podemos dizer que o modelo OSI seguiu uma padronização dentro de linhas formais e burocráticas adotada nessas organizações. Zimmermann (1980, p. 1), cita que, em 1977, a ISO (International Organization for Standardization) reconheceu a crucial importância de se criar um protocolo de comunicações para redes de computadores heterogêneas e criou um subcomitê para esse propósito, chamado de SC6 (subcomitê 6). Larmouth (1977, cap. 1, p. 1), em seu livro sobre o modelo de referência OSI, informa o início do trabalho do OSI para criação deste padrão mundial aberto para interconexão de redes, bem como os anos da sua maturação: 59 "O trabalho sobre o OSI foi iniciado no final de 1970, e chegou a um nível de maturidade no final de 1980 e início de 1990. No momento em que escrevo este texto, há muitos padrões OSI no mercado, e implementações dos padrões mais populares estão disponíveis como produtos comerciais. A compra em larga escala e uso de uma ampla gama de produtos OSI, contudo, ainda não é uma realidade, com o software livre da Internet (baseado no TCP/IP) ainda continuando a ter a maior participação de mercado " (tradução nosssa). Por outro lado, Kozierok (2005, p. 82), no seu guia on-line sobre o TCP/IP, confirma a narrativa de Larmouth na citação a seguir, no entanto nos relata que tanto a ISO como o antigo CCITT (atual ITU-T) iniciaram projetos independentes para criar o modelo OSI: "No final de 1970, dois projetos começaram independentemente, com o mesmo objetivo: definir um padrão unificador para a arquitetura de sistemas de redes. Um deles foi administrado pela Organização Internacional de Normatização (ISO), enquanto o outro foi realizado pelo Comitê Consultivo de Telegrafia e Telefonia, ou CCITT (a sigla é a partir da versão francesa do nome). Esses dois organismos internacionais de normatização desenvolveram cada um seu próprio documento que definia modelos de redes semelhantes” (tradução nossa). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 32 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Continua Kozierok (2005, p. 82), informando a data da publicação de documentos que elucidam a questão investigada: Em 1983, esses dois documentos foram unificados para formar um padrão chamado de Modelo Básico de Referência para Interconexão de Sistemas Abertos. Isso é um bocado de palavras, de modo que o padrão é geralmente referido como o Modelo Referência de Interconexão de Sistemas Abertos, ou apenas de modelo de referência OSI, ou mesmo apenas de modelo OSI. Foi publicado em 1984, tanto pela ISO, chamado de padrão ISO 7498, como pelo renomeado CCITT (agora chamado União Internacional de Telecomunicações, ou ITU-T ), chamado de padrão X.200" (tradução nossa). Portanto, fica claro que o modelo OSI (X.200) foi oficialmente divulgado em 1984, conjuntamente pela ISO e o atual ITU-T (antigo CCITT). Cabe lembrar que editar uma norma não corresponde a termos a sua implementação aplicada. A partir da divulgação do padrão OSI, a comunidade internacional começou a verificar a possibilidade de sua implantação prática nos computadores e sistemas operacionais da época. Da mesma forma, deve-se recordar que no início de 1983 a Arpanet estava migrando sua rede para o TCP/IP (KOZIEROK, 2005). 1.8 TRAÇANDO UM PARALELO ENTRE A ORIGEM DO MODELO TCP/IP E OSI É interessante, para estabelecermos esta comparação entre os dois modelos de referência estudados neste trabalho, citarmos os principais acontecimentos citados nas seções anteriores: • • • • • • • • • • 1959 O Departamento de Defesa Americano cria a ARPA (Advanced Research Projects Agency) 1969 A Arpanet é ativada com 4 computadores interligados via protocolo NCP 1973 A RFC 675 tratando do protocolo TCP foi documentada 1976 Documentos do CCITT (atual ITU-T) sobre o X.25 são publicados 1977 A ISO reconhece a necessidade de um padrão aberto no mundo redes 1978 O conjunto de protocolos chamado de TCP/IP é testado. 1982 A Arpanet decide adotar o TCP/IP. 1983 O protocolo TCP/IP substitui o protocolo NCP na Arpanet 1983 ISO e CCITT juntam-se para editar o documento “The Basic Reference Model for Open Systems Interconnection” 1984 A recomendação conjunta OSI/CCITT do modelo OSI foi publicada (X.200) Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 33 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Verifica-se, nas datas acima exibidas, que a origem dos dois protocolos é distinta, assim como o próprio percurso para o seu amadurecimento tecnológico. Parece claro, no entanto, que o modelo TCP/IP foi o primeiro deles a ser efetivamente implementado em redes de computadores, a partir dos dados coletados e analisados. 1.9 RESUMO DO CAPÍTULO Um sistema de comunicação depende basicamente de cinco componentes: transmissor, informação, meio de transmissão, protocolo e receptor. A informação é inserida num sinal que percorre o meio. O meio de transmissão pode sofrer a ocorrência de um sinal indesejável chamado de ruído. Os computadores de grande porte começaram a ser construídos entre 1940 e 1950. Os minicomputadores apareceram próximo a 1970 e os microcomputadores e as redes locais de computadores surgiram aproximadamente em 1980. A internet se tornou comercial em 1995 no Brasil. Em redes de computadores, dois modelos de referência de protocolos de comunicação predominam: o modelo OSI e o modelo TCP/IP. O modelo TCP/IP surgiu em 1973 e o modelo OSI foi oficializado em 1984. O modelo OSI serve como referência no ensino e o modelo TCP/IP se transformou num modelo de fato. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 34 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CAPÍTULO 2 MODELO DE REFERÊNCIA DE INTERCONEXÃO OSI INTRODUÇÃO Este capítulo aborda o modelo de referência de protocolos de comunicação OSI (Open Systems Interconnection). Esse modelo é a base teórica conceitual de redes de computadores. 2.1 O MODELO OSI/ISO No final da década de 70 do século passado havia uma situação agravante no cenário da comunicação de dados, ocasionada pela necessidade da interligação dos computadores: a adoção das redes de computadores estava em crescimento, mas computadores de diferentes fabricantes não se comunicavam entre si, pois cada fabricante adotava um modelo de software de comunicação proprietário, a parte da estrutura do computador chamada de Comunicação (Rede) exibida na figura a seguir. Figura 2.1 Arquitetura de um computador Von Neumann.3 Os governos dos países, juntamente com as operadoras de telecomunicações, precisavam interligar as suas redes de comunicação de forma segura, obedecendo a algum padrão internacional e repassaram esta necessidade aos fabricantes de computadores e aos órgãos de padronização internacionais. Para atender a solicitação mencionada, a ISO (International of Standardization Organization) em 1977 propôs o modelo OSI (Open Systems Interconnection). Em 1984, a ISO, juntamente com o ITU-T (International Telecommunication Union – Telecommunication Standardization Sector) publicaram oficialmente o padrão X.200 (modelo OSI). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 35 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Para descrever os problemas referentes ao processo de comunicação entre equipamentos em rede, a ISO criou um modelo de referência - o OSI – padrão mundial aberto. O OSI, como veremos a seguir, é um modelo que divide a complexa tarefa de comunicação entre dois computadores em sete etapas, que chamaremos de sete camadas ou sete níveis. A figura a seguir especifica estas sete camadas. Figura 2.2 Modelo OSI.1 O OSI é uma proposta para a interconexão de sistemas abertos, onde os especialistas têm acesso às especificações e podem fazer implementações. Visa prover uma base comum de informações, para a coordenação do desenvolvimento de padrões voltados para a interconexão de sistemas de redes de computadores. Este modelo obedece a uma estrutura hierárquica de níveis, ou camadas, o que incentiva a modularização do software de suporte às redes. Cada módulo forma um nível no modelo e é responsável por prover determinados serviços aos níveis superiores. Cada camada implementa os serviços de acordo com suas funções, e faz uso dos serviços oferecidos pelos níveis inferiores. A divisão deste modelo em camadas simplifica tanto o processo de desenvolvimento de novos protocolos como a manutenção de eventuais Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 36 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP problemas que venha a surgir, pois ele será delimitado pela atuação do protocolo problemático em certa camada do modelo OSI. 2.2 RESUMO DA FUNÇÃO DE CADA NÍVEL (CAMADA) DO PROTOCOLO OSI O nível físico fornece as características mecânicas, elétricas, funcionais e de procedimento para ativar, manter e desativar conexões físicas para a transmissão de bits entre duas máquinas. Isto é, cabe ao projetista deste nível definir como representar os níveis de sinais em 0s e 1s, quantos microssegundos durará um bit, quantos pinos possuirá o conector da interconexão da rede, etc. O objetivo do nível de enlace é estabelecer a conexão entre dois dispositivos físicos (vizinhos entre si) que compartilham o mesmo meio físico. Detecta e opcionalmente pode corrigir erros que ocorram no nível físico, tornando este canal de transmissão mais confiável. A função de correção de erros, seja por retransmissão ou por bits de redundância, é opcional neste nível de protocolo. A tarefa principal do nível de rede é rotear os pacotes da origem para o destino. Gerencia também os endereços lógicos dos hosts. As rotas são caminhos a serem seguidos pelos pacotes de dados e podem ser fixas ou dinâmicas. Se forem dinâmicas, as rotas variam dependendo da condição da linha de transmissão, no que tange ao volume de tráfego e às suas condições de largura de banda, entre outros itens. O controle de congestionamento (excesso de pacotes) na rede também pode ser gerenciado por esta camada. O nível de rede não garante necessariamente que a cadeia de bits chegue a seu destino. O nível de transporte, através de protocolo específico, fornece uma comunicação fim a fim verdadeiramente confiável, controlando o fluxo e a sequência de pacotes. A principal função do nível de sessão é fornecer a conexão entre dois processos. Melhora a forma de endereçamento, permitindo a referência a endereços na rede por nomes simbólicos. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 37 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A função do nível de apresentação é a de realizar transformações adequadas nos dados, antes de seu envio para a camada de aplicação. Como exemplos de transformações nos dados, podemos citar: compressão de textos, criptografia, conversão de padrões de terminais, etc. Por último, o nível de aplicação, por ser o mais alto nível do modelo OSI, oferece seus serviços a usuários (ou aplicativos propriamente ditos) e não a níveis superiores de protocolos. O propósito deste nível é o de servir como janela ou interface entre usuários (aplicativos) que querem se comunicar através desse modelo. 2.3 COMO AS CAMADAS SE COMUNICAM Uma maneira bastante fácil e simplista de se enxergar a funcionalidade de um modelo em camadas, como o modelo OSI, é imaginar que cada camada tem como função adicionar um cabeçalho aos dados do usuário a serem transmitidos para outro sistema (veja a figura a seguir). Deste modo, a função de cada camada do outro sistema é exatamente a inversa, ou seja, retirar os cabeçalhos dos dados que chegam e entregar os dados ao usuário em sua forma original. Figura 2.3 Encapsulamento e Transferência de Dados entre Camadas.1 Veja na figura anterior como cada camada adiciona o seu cabeçalho e como estes cabeçalhos são inseridos um após o outro, desde a camada superior (aplicação) até a camada inferior (enlace), já que a última camada (física) tem a função de Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 38 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP transformar os dados em bits e adaptá adaptá-los los para serem transmitidos ao meio de transmissão. No lado do equipamento que está recebendo as mensagens, imagine que os cabeçalhos são retirados um a um um,, desde a camada de enlace até a camada da aplicação, onde finalmente os dados da aplicação são entregues para o aplicativo propriamente dito. Esse é o conceito chamado de encapsulamento na transferência dos dados entre camadas, na transmissão, e de desencapsulamento,, no repasse dos dados para cada camada, na recepção. Observe que em cada camada é inserido um cabeçalho antes do conjunto de dados que devam ser transmitidos para outro equipamento. A esse conjunto do cabeçalho mais os dados encapsulados chamamos genericamente de PACOTE PACOTE, que constitui a unidade básica de transmissão de dados na rede. Nesse modelo, cada camada além de se comunicar com suas camadas adjacentes também se comunica logicamente com suas camadas pares do outro computador (através de protocolos). Em função de cada camada de origem, o pacote recebe um nome específico. Este nome é chamado, em inglês, de PDU (Protocol Data Unit) e abaixo temos a designação das PDUs de cada camada do modelo OSI: Figura 2.4 PDUs das camadas no modelo OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 39 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A PDU pode ser entendida como uma espécie de “matéria “matéria-prima” prima” trabalhada em cada camada. A seguir iremos abordar cada uma das sete camadas do modelo OSI com maiores detalhes. 2.4 CAMADAS DO MODELO OSI 2.4.1 Camada Física do Modelo OSI A Camada Física é a de número um no o modelo OSI e pertence às chamadas camadas inferiores. A camada física atende solicitações da camada de enlace e realiza o interfaceamento com o meio físico físico. Figura 2.5 Posição da camada Física no modelo OSI OSI. A unidade de dados padrão do protocolo (PDU) da camada Física é chamada de "Bit". A camada física transfere ransfere dados na forma de dígitos binários ao longo de um meio físico, após a devida adequação ao mesmo. Ela se encarrega dos requisitos elétricos, mecânicos e funcio funcionais para essa transmissão e com o procedimento da ativação e desativação do sistema físico. Nesta camada, as normas ormas abrangendo características elétricas, elétricas níveis de tensão, equipamentos de aterramento aterramento, especificações mecânicas, pinagem inagem do conector, comprimentos de cabo, sincronismo, taxa de dados e assim por diante são razoavelmente bem estabelecidas. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 40 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A camada física transmite o fluxo de bits através da rede em nível de padrão elétrico e mecânico. Ele fornece o hardware necessário para o envio e recepção de dados sobre um circuito de comunicação de dados de uma operadora. Ela também oferece o mecanismo para um DTE (equipamento terminal de dados) transmitir dados para um DCE (equipamento de comunicação de dados); nesta camada, os dados são vistos como um fluxo de bits sem agrupamento em bytes. A camada física determina, normalmente, os seguintes padrões:56 • • • • Características Mecânicas - Definem detalhes como a disposição de pino e o tamanho e forma do conector. Características Elétricas - Especificam se a ligação eletrica é balanceada ou desbalanceada, os níveis de tensão utilizados (e as tolerâncias), valor da impedância de entrada, etc. Características Funcionais - Definem características que dizem respeito ao que o circuito realiza e qual a sua função (possivelmente com qual sincronismo). Em termos gerais, existem quatro grandes categorias de funções: dados , controle, sincronismo (clock) e aterramento. Características Processuais - Especificam procedimentos necessários para realmente usar os circuitos de interconexão. Esta camada, por exemplo, define a conexão física com o modem e pode usar as interfaces V24, X21, X21bis, V35, etc (V24 e X21bis são semelhantes, usam o mesmo conector de 25 pinos, e têm a mesma norma definida no ITU - CCITT). Os dados são enviados como um fluxo de dados serial contínuo, síncrono ou assíncrono. 2.4.1.1 Funções internas da camada física A seguir estão listadas as funções internas da camada física.56 1. ativação e desativação da conexão física; 2. transmissão de unidades de dados de serviço da camada física; 3. gerenciamento da camada física. 2.4.1.2 Serviços prestados para a camada de enlace de dados A seguir estão listados os serviços prestados pela camada física à camada de enlace:38 1. conexões físicas; 2. unidades de dados de serviço da camada física (PDU); Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 41 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 3. 4. 5. 6. 7. pontos finais para conexão física; identificação de circuito de dados; sequenciamento; condição de notificação de falhas; parâmetros de qualidade de serviço. 2.4.1.3 Protocolos da camada física do model modelo OSI V24, V35, V92, G704, X21, QAM, AMI, HDB3. 2.4.2 Camada de Enlace do Modelo OSI A Camada de Enlace é a de número dois do modelo OSI e pertence às chamadas camadas inferiores. A camada de Enlace atende solicitações da camada de rede e solicita serviço para a camada física. Figura 2.6 Posição da camada de Enlace no modelo OSI OSI. A unidade de dados padrão do protocolo (PDU) da camada de Enlace é chamada de "frame" ou “quadro”. Esta camada transfere o frame entre dois dispositivos de comunicação vizinhos entre si, separados pelo meio físico. Ela realiza a sincronização dos bits transmitidos para o nível físico e provê a técnica do bit-stuffing stuffing quando o número de bits 1 sucessivos for superior a 5, além de prover protocolos com reconhecimento conhecimento e gereciamento da transmissão de dados. dados Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 42 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A camada de enlace de dados fornece o 'enquadramento', ou seja, a determinação de quais sinais elétricos representam bits e caracteres, para transferência de dados através de uma conexão física, além de prover a detecção e recuperação de erros. Se a recuperação não for possível, a camada de rede é notificada do erro. Ela prove o controle de erro para compensar as imperfeições do meio físico e o controle de fluxo para evitar que um transmissor rápido sobrecarregue de dados um receptor lento. Tradicionalmente, os protocolos têm confiado na presença de bits adicionais no fluxo de dados para o enquadramento de caracteres (protocolos assíncronos) ou definem caracteres adicionais para a sincronização e controle (protocolos síncronos “orientados a byte", tais como o IBM BSC). Numa abordagem mais moderna, os protocolos síncronos são 'orientados a bit' com um quadro de formato fixo com comprimento em bytes variável – o frame (por exemplo, os protocolos PPP, HDLC da Cisco e SDLC da IBM são síncronos). A camada de enlace de dados pode usar mais de uma conexão física para suportar uma única conexão de enlace de dados e, em tais casos, será responsável por assegurar que os dados serão entregues à camada de rede em sequências corretas. No caso em que um meio físico conecta mais de dois sistemas finais, por exemplo, numa rede de área local (LAN), a camada de enlace de dados pode incluir uma função de roteamento básico, por exemplo, os protocolos CSMA/CD (Ethernet) e token-passing (Token Ring). 2.4.2.1 Funções interna da camada de enlace de dados A seguir estão listadas as funções internas da camada de enlace.56 • estabelecimento e liberação da conexão de enlace; • serviço de mapeamento de unidades de dados de serviço de enlace de dados; • divisão (splitting) da conexão de enlace; • formato do frame; • delimitação e sincronização do frame; • controle da sequência; • detecção de erros; • recuperação de erros; • controle de fluxo; • identificação e parâmetros de intercâmbio; • controle de interconexão de circuitos de dados; • gerenciamento da camada de enlace de dados. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 43 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.2.2 Serviços prestados à camada de rede A seguir estão listados os serviços prestados pela camada de enlace à camada de rede:38 • conexão no enlace de dados; • serviço de mapeamento d de unidades de dados de serviço de enlace (PDU); • identificação dos terminais da conexão de enlace de dados; • sequenciamento; • notificação de erro; • controle de fluxo; • parâmetros de qualidade de serviço. 2.4.2.3 Protocolos da camada de enlace no modelo OSI X.25 nível 2, PPP, HDLC, Frame Relay, ATM, IEEE 802.3. 2.4.3 Camada de Rede do Modelo OSI A Camada de Rede é a de número três do modelo OSI e pertence às chamadas camadas inferiores. A camada de rede atende solicitações da camada de transporte e solicita serviço para a camada de enlace enlace. A unidade de dados padrão do protocolo (PDU) da camada de Rede é chamada de "pacote". Figura 2.7 Posição da camada de Rede no modelo OSI OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 44 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP De uma forma geral, podemos dizer que a camada de rede fornece os meios para estabelecer, manter e encerrar conexões de rede entre sistemas abertos que se comunicam através de entidades de aplicação. Ela provê também os meios funcionais e de procedimentos para a troca de unidades de dados de serviços de rede (PDUs) entre entidades de transporte que estão utilizando conexões de rede. O conjunto de protocolos de comunicação do modelo OSI especifica dois protocolos de roteamento na camada de rede: End-System to Intermediate-System (ES-IS) e Intermediate-System to Intermediate-System (IS-IS). Além disso, a pilha de protocolos OSI implementa dois tipos de serviços de rede: 35 • • serviço não orientado a conexão (serviço sem conexão) e serviço orientado a conexão (serviço com conexão) A função básica da camada de rede é a interconexão de circuitos de comunicação de dados em uma rede global que conecta todos os sistemas abertos. Assim, a camada de rede executa tanto o endereçamento ponta a ponta como as funções de encaminhamento, para permitir que os sistemas finais troquem dados. Existem vários protocolos de rede, cada um otimizado num maior ou menor grau, para satisfazer os requisitos específicos para a transmissão de dados entre redes distintas. Redes X.21 de comutação de circuitos, redes de comutação de pacotes X.25 (RENPAC no Brasil, por exemplo) e redes de área local, são exemplos de protocolos de rede ou sub-redes nesse contexto. A camada de rede é, portanto, em última instância, responsável pelo roteamento de pacotes de uma comunicação entre os sistemas abertos envolvidos. Isso tem a implicação de que os endereços de rede (os quais identificam os pacotes) devem ser globalmente únicos. 2.4.3.1 Normas da camada de rede do modelo OSI Um protocolo frequentemente citado como estando em conformidade com o nível da camada de rede é o X.25 nível 3 (ou nível 3 do X.25). Abaixo estão relacionadas algumas das normas que especificam protocolos e serviços da camada de rede do OSI, além de documentos que descrevem outras especificações dessa camada:35 • ISO 8648 - Essa norma define a organização interna da camada de rede (Internal Organization Network Layer - IONL), dividindo a camada de rede em três subcamadas distintas para suportar diferentes tipos de sub-rede (no sentido de infraestrutura de redes WAN).56 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 45 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • • • • • a norma define o endereçamento da a camada de rede e ISO 8348 - Essa descreve os serviços orientados à conexão e sem conexão fornecidos pela camada de rede do OSI. ISO TR 9575 - Es Essa a norma descreve a estrutura, conceitos e terminologia utilizada em relação aos protocolos de roteamento do OSI. ISO 8473 – Define o p protocolo rotocolo para a prestação do serviço de rede no modo sem conexão. ISO 8878 – Estabelece o u uso de X.25 para prestar ar o serviço de rede orientado a conexão do OSI. ISO 8880 – Define a p prestação restação de serviço de rede orientado a conexão em redes de área local funcionando com o controle de link lógico tipo de 2 (LLC tipo 2). 2.4.3.2 Arquitetua Interna da Camada de Rede A camada de rede tem uma arquitetura interna definida pela ISO 8648 e está dividida em três subcamadas. Figura 2.8 Subcamadas da camada de Rede do modelo OSI OSI.56 As duas subcamadas inferiores são dependentes da sub sub-rede rede a ser utilizada, sendo que a subcamada superior é independente. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 46 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.3.3 Serviço da Camada de Rede Sem Conexão (Connectionless) Nos primeiros anos do modelo OSI, houve um pressuposto implícito de que a comunicação deveria ocorrer por meio de conexões lógicas, no modo de transferência de dados com conexão (que utiliza os “pacotes”, como será visto a seguir). Ou seja, a entidade que necessita de comunicação iniciaria a ligação (e, durante esta fase inicial, discutiria os parâmetros da interação com a entidade de destino); em seguida ocorreria a troca de dados; finalmente, na última fase, ela iria encerrar a conexão. Em muitos casos, esse era um modo conveniente de se usar (e tinha sido anteriormente utilizado em muitas redes de "circuitos virtuais"). No entanto, existe outro modo de comunicação (modo de transferência sem conexão que utiliza os "datagramas") em que um pacote de dados é transmitido de forma completamente independente de todos os outros pacotes a serem transmitidos entre as duas entidades (pelo menos ao nível da camada de rede – pois deve haver um nível mais elevado que impõe ordenação e recuperação de erro). A necessidade de tal modo surge especialmente em redes locais e na interconexão de redes em geral. O serviço da camada de rede OSI sem conexão é implementado usando o protocolo de rede sem conexão (ConnectionLess Network Protocol - CLNP) e o serviço de rede sem conexão (ConnectionLess Network Service - CLNS). O CLNP e o CLNS são descritos na norma ISO 8348.37 O CLNP é um protocolo da camada de rede do OSI que transporta dados de camadas superiores e indicações de erro em links sem conexão. O CLNP fornece a interface entre o serviço sem conexão de rede (CLNS) e as camadas superiores. O CLNS fornece serviços da camada de rede para a camada de transporte através do CLNP. O CLNS não executa a configuração da conexão ou a sua desconexão porque os caminhos são determinados de forma independente para cada pacote que é transmitido através de uma rede. Isso contrasta com o Serviço de Rede no modo com conexão (Connection-Mode Network Service - CMNS). Além disso, o CLNS prevê a entrega na base do melhor esforço, o que significa que não há garantias de que os dados não serão perdidos, corrompidos, desordenados ou duplicados. O CLNS depende de protocolos da camada de transporte para realizar a detecção e correção de erros. O CLNS pode ser comparado ao serviço sem conexão prestado pelo protocolo IP da camada de rede do modelo TCP/IP (que estudaremos no próximo capítulo). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 47 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.3.4 Serviço da Camada de Rede Com Conexão O modo de transferência com conexão era o modo preferencial para transferência de dados do OSI, o qual utiliza os pacotes na troca de dados entre sistemas finais. O serviço de rede do OSI orientado a conexão é implementado usando o Protocolo de Rede Orientado a Conexão (Connection-Oriented Network Protocol - CONP) e o Serviço de Rede Orientado a Conexão (Connection-Mode Network Service - CMNS). O CONP é um protocolo da camada de rede OSI que transporta dados da camada superior e provê indicações de erro em links orientados a conexão. O CONP baseiase na rede de pacotes X.25 - protocolo de camada de pacote (PLP), designação utilizada na rede X.25 para a camada de rede, e é descrito na norma ISO 8208, "X.25 Packet-Layer Protocol for DTE” (Protocolo X.25 da Camada de Pacote para o DTE). O CONP fornece a interface entre o CMNS e as camadas superiores . O CMNS é um serviço orientado a conexão da camada de rede, que atua como a interface entre a camada de transporte e o CONP (protocolo orientado a conexão), e é descrito na norma ISO 8878. O CMNS desempenha funções relacionadas com o estabelecimento explícito de caminhos entre entidades da camada de transporte que estão se comunicando. Estas funções incluem a configuração da conexão, manutenção e a desconexão (término da conexão). O CMNS também fornece um mecanismo para solicitar uma qualidade específica de serviço (QoS). Isso contrasta com o serviço prestado pelo CLNS (Serviço sem conexão). 2.4.3.5 Endereços da Camada de Rede O endereçamento da camada de rede OSI é implementado usando dois tipos de endereços hierárquicos: endereços de pontos de acesso de serviços de rede (network service access point - NSAP) e de títulos de entidades de rede (network entity titles - NET). Um ponto de acesso de serviços de rede (NSAP) é um ponto conceitual situado na fronteira entre as camadas de rede e de transporte. O NSAP é o local em que os serviços de rede OSI são fornecidos para a camada de transporte. Para cada entidade da camada de transporte é atribuído um único NSAP, que é endereçado individualmente em uma interconexão de redes OSI usando endereços NSAP. Por sua vez, o endereço de um título de entidades de rede (NET) é usado para identificar a camada de rede de um sistema sem associar esse sistema com uma entidade da camada de transporte específico (como um endereço NSAP faz). Os NETs são úteis para abordar sistemas intermediários (IS), como roteadores, que não interfaceiam com a camada de transporte. Um IS pode ter um único NET ou vários NETs, neste último caso ele participa em várias áreas ou domínios.35 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 48 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O NET tem função semelhante ao endereço IP de um host no modelo TCP/IP. Esta camada gerencia o encaminhamento dos dados (como enviá-los na direção certa para o destino certo em transmissões de saída e como receber transmissões de entrada no nível do pacote). A camada de rede faz o roteamento e a retransmissão dos pacotes. Em outras palavras, a camada de rede é responsável pelo encaminhamento de dados (pacotes) através de uma infraestrutura de rede; lida com o endereçamento e a entrega de dados. Esta camada fornece o controle de congestionamento, a informação para gerenciamento da rede, o roteamento, o endereçamento e várias outras funções. Algumas características importantes de protocolos da camada de rede: • • • • Preocupa-se com a transmissão de pacotes entre redes distintas. Escolhe o melhor caminho para enviar um pacote (roteamento). O encaminhamento pode ser complexo em uma grande rede. O encaminhamento de pacotes através de uma rede pode ser realizado pela utilização de rotas estáticas simples ou por meio de algoritmos dinâmicos complexos de encaminhamento. Dentro de uma rede de área local, muitas vezes não há função de rotina para a camada de rede realizar (por exemplo, em uma rede CSMA/CD todos os dados são transmitidos em broadcast). A camada de rede não se limita a uma única rede e, de fato, grande parte da sua complexidade deriva do fato de que as redes com infraestrutura diferentes podem ser ligadas à camada de rede (por conseguinte, os protocolos pertinentes são muitas vezes referidos como "os protocolos inter-redes"), de tal modo, a camada de rede deve fornecer funções de retransmissão de pacotes entre as redes (ou sub-redes). 2.4.3.6 Funções da Camada Rede A seguir estão listadas as funções internas da camada de rede.56 1. 2. 3. 4. 5. 6. 7. 8. roteamento; retransmissão (relaying); conexões de rede; multiplexação de conexão de rede; segmentação e blocagem (blocking – agrupamento de PDUs menores); detecção de erros; recuperação de erros; sequenciamento; Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 49 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 9. controle de fluxo; 10. transferência de dados acelerada; 11. reset; 12. seleção de serviços; 13. gerenciamento da camada de rede. 2.4.3.7 Serviços prestados à Camada de Transporte A seguir estão listados os serviços prestados pela camada de rede à camada de transporte:38 1. endereços de rede; 2. conexões de rede; 3. identificadores dos pontos finais da conexão de rede; 4. transferência unidades de dados de serviço de rede (PDU); 5. parâmetros de qualidade de serviço; 6. notificação de erro; 7. sequenciamento; 8. controle de fluxo; 9. transferência acelerada de unidade de dados de serviço de rede (PDU); 10. reset; 11. liberação; 12. recebimento da confirmação. 2.4.4 Camada de Transporte do modelo OSI A Camada de Transporte é a de número quatro do modelo OSI. Ela pode ser considerada uma camada pertencente às chamadas camadas inferiores. Outros autores defendem que ela seja uma camada diferenciada, ou independente, servindo como um divisor ou elo entre as camada superiores e as camadas inferiores. A camada de transporte atende solicitações da camada de sessão e solicita serviço para a camada de rede. A unidade de dados padrão do protocolo (PDU) da camada de Transporte é chamada de "segmento”. A camada de transporte é às vezes chamada de camada fim a fim pois sua preocupação básica é transferir os dados entre um sistema final de origem e um sistema final de destino. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 50 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 2.9 Posição da camada de Transporte no modelo OSI OSI.. A camada de transporte rte gerencia e controla a a transmissão de dados fim a fim (por exemplo, determina se todos os pacotes chegaram ao destino e na sequência correta),, ou seja, a comunicação entre máquinas finais, e verifica ocorrência de erros. Ela garante a transferência de dados completa e segura entre sistemas finais, sendo sua principal responsabilidade a integridade de dados,, verificando se a transmissão de dados entre hosts é realizada de forma confiável e em tempo hábil. Mensagens de grande tamanho em bytes bytes, vindas da a camada superior, superior são divididas em tamanhos menores de dados (os chamados segmentos) para serem entregues para a camada de rede, caso seja necessário, e, em seguida, implementa o controle de transmissão adequado. A camada de transporte cria uma ou mais conexões de transporte sobre uma conexão de rede, dependendo das condições. Esta camada também lida com o tipo de conexão que será criada. A camada de transporte pode ser vista como prestando um serviço fim a fim confiável, independente da infraestrutura de rede. Além disso, ela pode reduzir os custos de rede, por exemplo, provendo a multiplexação para várias conexões de transporte em uma única ca conexão de rede, ou provendo a qualidade do serviço, incluindo a capacidade de usar várias conexões de rede para transportar a carga de uma única conexão de transporte. Características importantes de camada de transporte: • • Garante arante um serviço confiável confiável; Divide a mensagem ((vinda da camada de sessão) em pacotes menores, atribui número de seq sequência e envia-os ao destino. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 51 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O conjunto de protocolos de interconexão OSI implementa dois tipos de serviços na camada de transporte: • serviço de transporte orientado a conexão; • serviços de transporte sem conexão (não orientado a conexão). 2.4.4.1 Classes de Serviços dos Protocolos da Camada de Transporte As cinco classes, também chamadas de níveis de serviço, definidas para a camada de transporte do modelo OSI são as seguintes:56 • • • • • 0 - classe simples - compatível com as recomendações para teletexto do ITUT (antigo CCITT); 1 - classe com recuperação de erro básico - com overhead mínimo, mas capaz de se recuperar de erros sinalizados na camada de rede; 2 - classe com multiplexação - permite que várias conexões de transporte sejam realizadas em uma única conexão de rede, mas sem recuperação de erros; 3 - classe com recuperação de erros e multiplexação - como a classe 2, com a capacidade de recuperar erros sinalizados na camada de rede; 4 - classe com detecção e recuperação de erros - como a classe 3, com a detecção de erros não sinalizados pela camada de rede que ocorrem como resultado de serviço de rede não confiável, por exemplo, perda de dados corrompidos, falta de seqüenciamento e duplicação. A escolha de classe pode ser negociada no momento da conexão, de acordo com a natureza das exigências des rede e dos usuários subjacentes. O Serviço de rede sem conexão é suportado apenas pela Classe de Protocolo de Transporte 4 (TP4). A Classe de Protocolo de Transporte 0 (TP0), usa o protocolo mais simples de transporte OSI e desempenha funções de segmentação e remontagem. O TP0 requer serviço de rede no modo orientado a conexão. A Classe de Protocolo de Transporte 1 (TP1) realiza segmentação e remontagem, e oferece recuperação de erro básica. A classe TP1 sequencia as unidades de dados de protocolo (PDUs) e irá retransmiti-las ou reiniciar a conexão se um número excessivo de PDUs não for reconhecido. O TP1 requer serviço de rede orientado a conexão. A Classe de Protocolo de Transporte 2 (TP2) realiza segmentação e remontagem, bem como a multiplexação e demultiplexação dos fluxos de dados ao longo de um único circuito virtual. O TP2 requer serviço de rede orientado a conexão. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 52 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 53 A Classe de Protocolo de Transporte 3 (TP3) oferece a recuperação de erros básica e executa a segmentação e a remontagem, além de multiplexação e demultiplexação dos fluxos de dados ao longo de um único circuito virtual. O TP3 também sequencia as PDUs e as retransmite ou reinicia a conexão se um número excessivo delas não for reconhecido. O TP3 requer serviço de rede orientado a conexão. A Classe de Protocolo de Transporte 4 (TP4) oferece recuperação de erros básica, realiza segmentação e remontagem e realiza a multiplexação e demultiplexação de fluxos de dados ao longo de um único circuito virtual. O TP4 sequencia PDUs e as retransmite ou reinicia a conexão se um número excessivo delas não for reconhecido. O TP4 presta serviço de transporte confiável e funciona com qualquer serviço de rede sem conexão ou orientado a conexão. Ele é baseado no Protocolo de Controle de Transmissão (TCP) na suíte de Protocolos do TCP/IP e é a única classe de protocolo OSI que suporta o serviço de rede sem conexão.35 Tabela 2.1 Resumo das classes da camada de transporte do OSI.55 Nome da Característica TP0 TP1 TP2 TP3 TP4 Rede orientada a conexão S S S S S Rede não orientada a conexão N N N N S Concatenação e separação N S S S S Segmentação e remontagem S S S S S Recuperação de erros N S S S S Reiniciar a conexão (se um número excessivo de PDUs não N forem reconhecidas) S N S S Multiplexação e demultiplexação sobre um único circuito N virtual N S S S Controle de fluxo explícito N N S S S Retransmissão no caso de timeout N N N N S Serviço de transporte confiável N S N S S A camada de transporte esconde os peculariedades da rede a serem usadas pelas camadas superiores. No caso de uma rede comutada de pacotes os seguintes detalhes seriam escondidos: 1. Limitações de tamanho de pacote (por segmentação e concatenação); Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2. Limitações de taxa de transferência (por multiplexação ou divisão); 3. Perda de dados causada por redefinições de rede e resets. 2.4.4.2 Normas da Camada de Trasporte do modelo OSI • ISO 7498 funções da camada de transporte. • ISO 8072 definição de serviços da camada de transporte. • ISO 8073 especificação do protocolo da camada de transporte. 2.4.4.3 Funções internas da camada de transporte A seguir estão listadas as funções internas da camada de transporte:56 1. 2. 3. 4. 5. mapeamento de endereço de transporte para o endereço de rede; multiplexação (fim a fim) de conexões de transporte em conexões na rede; estabelecimento e liberação de conexões de transporte; controle de sequência fim a fim em conexões individuais; detecção de erro fim a fim e qualquer monitoração necessária da qualidade de serviço; 6. recuperação de erros fim a fim; 7. segmentação fim a fim, blocagem e concatenação; 8. controle de fluxo fim a fim em conexões individuais; 9. transferência rápida de unidade de dados de serviço de transporte; 10. gerenciamento. 2.4.4.4 Serviços prestados para a camada de sessão A seguir estão listados os serviços prestados pela camada de transporte à camada de sessão:38 1. estabelecimento da conexão de transporte; 2. a transferência de dados; 3. liberação da conexão de transporte. 2.4.4.5 Protocolos da camada de transporte do modelo OSI: Protocolo de Transporte (Transport Protocol - TP) classes TP0 a TP4. 2.4.5 Camada de Sessão do modelo OSI A Camada de Sessão é a de número cinco do modelo OSI e pertence às chamadas camadas superiores. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 54 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A camada de sessão atende solicitações da camada de ap apresentação resentação e solicita serviço para a camada de transporte. Figura 2.10 Posição da camada de Sessão no modelo OSI OSI. A unidade de dados padrão do protocolo (PDU) da camada de Sessão é chamada de "dados" ou “mensagem mensagem”. Figura 2.11 Estrutura da camada de sessão. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 55 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A camada de sessão é a primeira do modelo OSI a gerenciar troca de dados entre aplicações nos sistemas finais, através do envio das PDUs (SPDU) entre eles. Figura 2.12 PDU da camada de sessão.45 2.4.5.1 Funções da camada de sessão A camada de sessão assume que uma conexão virtual confiável ponto a ponto tenha sido estabelecida (pela camada inferior, ou seja, pela camada de transporte) e contém especificações para gerenciar o diálogo entre dois sistemas fim a fim. Ela é responsável pela criação, gerenciamento nciamento e término de sessões entre sistemas aplicativos. Uma sessão pode ser descrita como um tipo de gerenciamento de conexões entre sistemas aplicativos com a finalidade de um tipo específico de comunicação. Por exemplo, uma sessão pode ser criada com a finalidade de autenticação do usuário, ou para iniciar uma transferência de um arquivo. Podemos entender também que as ssessões de comunicação consistem em pedidos e respostas que ocorrem entre aplicações. Os serviços da camada amada de sessão são comumente usados em ambientes de aplicativos que fazem uso de chamadas de procedimento remoto (RPC) (RPC). O controle de diálogo na transferência de dados é usado para determinar qual computador está realizando pedidos e qual o computador está providenciando respostas. Além disso, determina se reconhecimentos são necessários para a transmissão de dados. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 56 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A camada de sessão também é responsável pela diferenciação entre múltiplas conexões de rede, assegurando que os dados sejam enviados através da conexão correta, além de retirar os dados de uma conexão e retransmiti-los para a aplicação correta. Serviços prestados pela camada de sessão são: • • • Autenticação; Permissão; Restauração da sessão (checkpointing e recuperação). 2.4.5.2 Funções e responsabilidades da camada de sessão A seguir listamos as principais funções da camada de transporte:56 • • • • Permite a comunicação entre processos de aplicações locais e remotos, determinando o modo de comunicação entre os pontos finais (half-duplex ou full-duplex); Ela estabelece, gerencia e termina as conexões entre dois processos de aplicação; Sincroniza a comunicação, adicionando pontos de checagem de erros no fluxo de dados; Informa erros das camadas superiores para o usuário. Para executar as duas funções iniciais, comunicação entre processos finais, a camada de sessão tem que determinar se os dados permanecerão localmente a um computador ou se devem ser obtidos ou se devem ser enviados a um dispositivo de uma rede remota. No último caso, a camada de sessão inicia a conexão. Nessas mesmas funções, a camada de sessão é também responsável pela coordenação da maneira como a comunicação entre os sistemas applicativos acontece, o que é conhecido como controle de diálogo. Em algumas sessões, apenas um sistema está autorizado a transmitir num determinado período de tempo, conhecido como modo de comunicação half-duplex. A camada de sessão seria responsável por determinar de quem é a vez, nessas situações, e por quanto tempo cada sistema é permitido se comunicar. Em outros casos, dois sistemas podem transmitir ao mesmo tempo, que é também conhecido como modo de comunicação full-duplex. Se o fluxo de comunicação foi de alguma forma interrompido, a camada de sessão seria responsável por reconhecer isso e restabelecer a sessão. Ou seja, no gerenciamento de sessões, com controle de fluxo, esta camada irá determinar se a comunicação na sessão será usada em modo simplex, half-duplex ou duplex. Em cada um dos casos, é a camada de sessão quem vai controlar o fluxo Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 57 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP das transmissões de dados. Este gerenciamento pode ser feito de diversas formas. Uma das formas mais comuns é o uso de fichas, ou tokens, os quais determinam qual dos lados pode estabelecer uma comunicação em determinado momento (apenas quem possui o token pode se comunicar em determinado momento). Uma outra função, a da sincronização do trabalho de comunicação, também é importante, pois imagine o caso de comunicações de longa duração. A não existência de pontos intermediários de checagem de erros/falhas e de sincronização poderia ocasionar problemas sérios. No caso, por exemplo, de uma linha de comunicação que apresentasse um tempo médio entre falhas de uma hora, um processo de transferência de informação que demorasse duas horas, ou mais, jamais ocorreria se não existisse um trabalho de sincronização em pontos intermediários. Devido a essas características, a camada de sessão (ou nível de sessão, como também é chamado), pode ser vista como uma versão aprimorada da camada de transporte. Ela fornece uma metodologia para controle do diálogo, de forma a estabelecer qual das partes está falando, além de fornecer também facilidades para a sincronização. Está última facilidade permite aos usuários inserir pontos de controle em transferências muito longas de dados, de maneira que, na eventualidade de uma falha, seja necessário apenas retornar a transmissão para o último ponto de controle, em vez de retornar a transmissão ao seu inicio, no caso em que seria necessário retransmitir todos os dados antes da falha. É importante destacar que, enquanto a camada de transporte controla a transmissão confiável de um fluxo de bytes entre aplicativos finais, utilizando confirmações e janelas deslizantes, por sua vez a camada de sessão controla a sequência lógica na troca de mensagens entre aplicativos finais. Nesse controle de mensagens entre aplicativos, ela pode especificar parâmetros utilizados, sequências e finalizações para uma dada aplicação. Em última análise, as sessões são usadas para manter o controle de conexões individuais entre sistemas aplicativos finais. Porém, na prática, nem todas as aplicações fazem uso da camada de sessão. 2.4.5.3 Exemplo de uso da camada de sessão Um exemplo de um protocolo da camada de sessão do modelo OSI é o X.235 ou ISO 8327. Este protocolo pode tentar recuperar a conexão em caso de falha na sessão. Se uma conexão não for usada por um longo período, o protocolo da camada de sessão pode fechá-la e abri-la novamente. Portanto, ele fornece pontos de sincronização no fluxo de mensagens trocadas. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 58 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP ma analogia com relação aos sistemas atuais, sseu eu navegador é um Usando uma excelente exemplo do uso de sessões. Imagine seu navegador (um objeto de camada de aplicação)) abrindo uma página da web num determinado servidor. Essa página contém textos, gráficos gráficos, objetos Macromedia Flash e talvez até applet em Java. Os gráficos, os objetos Flash e applets Java são armazenados como arquivos separados no servidor web. Para acessá-los, um download separado deve ser iniciado. Seu navegador abre uma sessão separada para o servidor servi web para baixar todos os arquivos individuais. A camada de sessão mantém informações de quais pacotes e dados pertencem a qual arquivo e mantém o controle para onde os arquivos devem ser enviados (neste caso, para o seu navegador da web). d técnica de host Um outro exemplo da utilização da camada de sessão é a da multihoming proposta para melhorar a qualidade de serviço de aplicações através do estabelecimento de várias sessões dist distintas, ntas, conforme podemos ver na figura a 44 seguir. Figura 2.13 Arquitetura proposta para dividir a camada de sessão.44 Na figura acima vemos a arquitetura proposta44 para dividir “n” sessões iniciadas pelas aplicações, visando a melhoria da performance dos aplicativos, na qual cada sessão escolhe o serviço a ser prestado pela camada de transporte, a partir da solicitação vinda da camada de aplicação. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 59 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Para atender solicitações da camada de aplicação e para solicitar serviços à camada de transporte a camada de sessão utiliza diretivas de software. A seguir listamos algumas dessas diretivas. Tabela 2.2 Exemplo de diretivas de uma API da camada de sessão.44 Função Parâmetros Propósito session Semântica desejada Criar ponto final de socket comunicação session Descritor da Sessão, número de “Escutar” a porta local bind porta session Descritor da Sessão, endereço Estabelecer sessão com o connect remoto e número de porta host remoto session read session write session close Descritor da Sessão, flag de blocagem Descritor da Sessão, quantidade de dados, flag da blocagem Descritor da Sessão Solicitar dados da camada de sessão Entregar dados para a camada de sessão Terminar a sessão 2.4.5.4 Protocolos da camada de sessão No modelo OSI os protocolos da camada de sessão são os seguintes. X.225 ISO 8327 (Session-layer protocol - SP OSI) Definição do protocolo orientado a conexão básico (Basic connection - oriented session protocol definition). X.235 ISO 9548-1 Protocolo simples para a transferência de dados e controle de informações entre duas entidades da camada de sessão. X.215 ISO 8326 Definição do serviço orientado a conexão básico (Basic connection oriented session service definition). Seguem alguns outros protocolos que, embora não sejam do modelo OSI, realizam a função da camada de sessão desse modelo: Network File System (NFS): acesso ao sistema de arquivos em rede do Unix, o qual usa o RPC; Structured Query Language (SQL): consultas à base de dados local ou remota; Remote Procedure Call (RPC): mecanismo de comunicação cliente-servidor; AppleTalk Session Protocol (ASP): mecanismo de comunicação cliente-servidor da AppleTalk; X Windows: sessões de desktop remoto; Server Message Block (SMB): protocolo de compartilhamento de arquivos em rede; Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 60 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Network Basic Input/Output System (NetBIOS): protocolo de interconexão de aplicações de computadores numa rede LAN; Session Initiation Protocol (SIP): Protocolo de iniciação de sessão; Session Control Protocol DECnet (SCP): Protocolo de controle de sessão. 2.4.5.5 A camada de sessão nos aplicativos atuais (TCP/IP) Em aplicações cações de Internet mais modernas, a camada de sessão não existe no modelo TCP/IP, sendo absor absorvida vida pela camada de aplicação naquela pilha de protocolos (juntamente com a camada de apresentação). Muitas aplicações de rede contêm pouca ou nenhuma das especificações da camada de sessão e deixam estas decisões para a camada de aplicação. aplicação Portanto, caso aso as funções da camada de sessão do modelo OSI são exigidas, num determinado aplicativo, algum protocolo que execute essas funções é executado na camada de aplicação do TCP/IP. 2.4.6 Camada de Apresentação 2.4.6.1 Introdução A Camada de Apresentação é a de número seis do modelo OSI2 e pertence às chamadas camadas superiores superiores. A sua PDU é chamada de Dados ou Mensagem.1 Figura 2.14 Posição da camada de Apresentação no modelo OSI. OSI No modelo OSI, ela atende as solicitações de serviço da camada de aplicação e solicita serviço para a camada de sessão sessão. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 61 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 2.15 Modelo de Protocolo da Camada de Ap Apresentação resentação.45 No mundo real, as PPDUs são mensagens com regras de codificação básicas do ASN.1 (BER), mas poderiam ser primitivas da camada de aplicação mapeadas em primitivas da camada de sessão (“Phantom” PPDUs).45 2.4.6.2 2 Papel da Camada de Apresentação A camada de apresentação é a primeira das camadas do modelo OSI que provê a interoperabilidade entre mensagens trocadas entre aplicações. As primeiras cinco camadas prestam um serviço de comunicação, transferindo um conjunto de bytes, mas não abordam o significado (semântica) ou estrutura (sintaxe) da comunicação. Portanto, como veremos em seguida, a camada de apresentação tem a ver com a sintaxe axe e a semântica das mensagens, conversão de códigos entre máquinas e outros serviços de conversão de dados para que possa ocorrer a troca de informações entre aplicações finais. Quando utilizamos em nossos aplicativos e na tela de um computador caracteres caracte intermitentes, vídeo reverso, formatações especiais para entrada de dados, gráficos e outros recursos, estamos atuando exatamente na camada de apresentação. Portanto, ao executar tais tarefas, as pessoas começam a se preocupar com o que elas estão enviando ando em um nível mais avançado do que apenas usar ou transferir uma quantidade de zeros e uns. Esta camada lida com questões como quanto à forma de como as sequências são representadas – por exemplo, se elas usam o método do Visual Basic ("13, thisisastrin thisisastring") ou o método do C/C + + ("thisisastring \ Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 62 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 0"). A ideia é que a camada de aplicação deve ser capaz de apontar para os dados a serem movidos, e a camada de apresentação irá se encarregar de transferi-los corretamente. A camada de apresentação, conforme seu próprio nome diz, apresenta dados para a camada de aplicação. Ela é essencialmente um tradutor e fornece funções de codificação e conversão. A técnica de transferência de dados bem-sucedida é aquela que adapta os dados em um formato padrão antes da transmissão. Os computadores são configurados para receber esses dados genericamente formatados e, em seguida, converter os dados de volta para o seu formato nativo para uma leitura real (por exemplo, EBCDIC para ASCII). Ao fornecer serviço de tradução, a camada de apresentação assegura que os dados transferidos a partir da camada de aplicação de um sistema final possam ser lidos pela camada de aplicação de outro sistema final. O papel da camada de apresentação é transformar os dados no formato que a camada de aplicação possa aceitar. O serviço prestado pela camada de apresentação é o de lidar com os problemas de compatibilidade de representação dos dados. Esta camada converte, comprime, formata e criptografa os dados a serem enviados através de uma rede. Nesse sentido, a camada de apresentação fornece independência aos processos de aplicação contra diferenças na representação dos dados (sintaxe), permitindo que o usuário selecione o contexto da apresentação, para tentar atenuar as diferenças na representação dos dados entre os hosts. Permite processos incompatíveis na camada de aplicação se comunicar por meio da camada de sessão. A camada de apresentação é responsável pela entrega e formatação das informações para a camada de aplicação para processamento posterior ou exibição. Ela libera a camada de aplicação da preocupação com as diferenças sintáticas em representação de dados nos sistemas do usuário final. Um exemplo de um serviço de apresentação seria a conversão de um arquivo de texto com código EBCDIC para um arquivo com código ASCII. A camada de apresentação se preocupa com a representação dos dados transferidos entre as aplicações, possuindo as seguintes responsabilidades: • • Tradução (Sintaxe e semântica da Informação transmitida): gerencia informações em formato de dados para comunicações em rede; Codificação de padrões de transmissão da Informação (ASCII, EBCDIC, Unicódigo): para mensagens enviadas, ela converte os dados em um formato genérico para transmissão em rede; para as mensagens recebidas, ela converte os dados do formato de rede genérico para um formato que o aplicativo destinatário possa entender; Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 63 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • • • Compatibilização das estruturas de representação de dados para a comunicação de computadores baseados em diferentes processadores, com diferentes representações da informação, através do uso de códigos de dados abstratos (linguagem abstrata ASN.1); Criptografia e descriptografia (propósitos de segurança); Compressão e descompressão de dados (melhoria da eficiência na transmissão dos dados). 2.4.6.3 Funções da Camada de Apresentação Existem três funções básicas normalmente associadas com esta camada: • conversão interna de representação de dados (codificação), • criptografia, • compressão. Dessas funções, uma (ou mais) pode ser usada por protocolos de camada de aplicação. 2.4.6.3.1 Conversão interna dos dados (codificação) Provavelmente, a tarefa mais básica que a Camada de Apresentação do OSI é confrontada a realizar, é aquela referente com as preocupações das diferenças nas maneiras em como os dados são armazenados internamente em várias arquiteturas de computadores. Os problemas não se estendem apenas aos caracteres alfanuméricos, mas também para os dados numéricos.52 Como exemplo de incompatibilidade de representação interna de dados, podemos citar a forma como os microprocessadores da Intel e da Motorola representam seus dados: enquanto que os processadores da Intel (família 8086) representam seus bytes da direita para esquerda, ou seja, de forma invertida, os microprocessadores da Motorola (família 68000) os representam da esquerda para direita. Os PCs baseados em chips Motorola 68000 PCs compartilham muitas características com arquiteturas dos mainframes da IBM. Entre elas está o fato de que esses computadores são chamados de "big endian". Em uma arquitetura big endian, o byte mais significativo da palavra é armazenado com o menor endereço de memória. Isso significa que eles armazenam seus bytes (octetos) formalmente na memória a partir de byte 0 dentro de uma "palavra" (geralmente 32 bits). Assim, nessa arquitetura, a sequência de caracteres ASCII "cd" (63 64 em hexadecimal) é armazenada internamente como 11000011 11000100 (byte 0, byte 1). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 64 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Por sua vez, produtos baseados em chips Intel são chamados de "little endian". Numa arquitetura little endian, o byte menos significativo da palavra é armazenado com o menor endereço de memória. Assim, nessa outra arquitetura, a seqüência de caracteres ASCII "cd" (63 64 em hexadecimal) é armazenado internamente como 11000100 11000011 (byte1, byte 0) nessas máquinas. Os termos little endian e big endian vêm do livro “As Viagens de Gulliver” de Swift onde os políticos lutam guerras para definir qual extremidade do ovo deve ser quebrada em primeiro lugar. Não existe o melhor caminho; eles são apenas diferentes.52 Números inteiros são diferentes também. Alguns computadores com arquiteturas de 32 bits armazenam o inteiro "2" na memória como uma sequência de 32 bits. Isso ocorre porque o local de armazenamento de memória básico é de 32 bits de comprimento (daí o nome). Outros computadores com arquiteturas de 64 bits armazenam o inteiro na memória como uma sequência de 64 bits. Mais uma vez, não é melhor nem pior, apenas diferente. Em nenhum dos casos existe um problema com a representação interna de cadeias de caracteres e números. O problema é quando esses dados são enviados através da rede a partir de um tipo de computador para outro. Como deve ser a string "cd" e o número "2" ser representado na rede de modo que eles não cheguem como "dc" ou um "0 " seguido de um "2" ou algo ainda pior?52 Pelo exposto acima, podemos dizer que a principal tarefa desta camada é codificar dados estruturados de acordo com o formato interno do transmissor a um formato adequado para transmissão dos mesmos e depois decodificá-los de acordo com o exigido no equipamento de destino. Essa camada é responsável pela formatação de telas e de arquivos, de modo que o produto final tenha a aparência que o programador deseja. Fica claro que se os dados fossem transmitidos diretamente haveria uma grande confusão quando da comunicação e interpretação dos dados. Para evitar isso, em algum lugar deve ser feita uma conversão desses dados. Essa conversão poderia ser feita de duas maneiras: cada receptor decodificaria os dados recebidos ou o transmissor e o receptor codificariam os dados para um formato de transmissão padronizado e os decodificariam de acordo com sua representação original. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 65 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A primeira solução seria inconveniente, pois o receptor deveria ser capaz de identificar as diferenças entre ele e todos os demais processadores com os quais vai se comunicar para ser capaz de adaptar os dados recebidos a seu formato interno. Já para a segunda solução teríamos um algoritmo bem mais simples: o codificador e o decodificador poderiam se basear em uma estrutura padrão para transmissão e o formato de representação interna dos dados seria irrelevante. É neste ponto que a linguagem ASN.1 mostra sua importância, conforme veremos mais adiante neste livro. 2.4.6.3.2 Compressão de dados A compressão é um método de representação de dados com menor quantidade de bits pela remoção de redundâncias, compactando deste modo os dados originais. Como a compressão é tecnicamente uma questão de representação de dados, ela se encaixa na camada de apresentação. A compressão reduz a quantidade de bytes necessários ao armazenamento (o espaço de disco) dos dados. A largura de banda necessária para transmitir os dados também é reduzida com essa técnica. Os dados comprimidos devem ser descompactados antes do uso. Os esquemas de compressão e descompressão devem ser compatíveis, pois com a variedade de fornecedores de softwares e hardwares que precisam interoperar, deve haver normas definidas para tal tarefa. 2.4.6.3.3 Criptografia de dados A criptografia é o processo de disfarçar os dados que serão transmitidos. Aqueles que não conhecem o método de disfarce utilizado não podem decifrá-lo; aqueles que conhecem o método, podem fazê-lo. A criptografia é tecnicamente uma função de representação de dados, portanto, da mesma forma que a compressão, ela é tipicamente feita também na camada de apresentação, embora possa ser feita na camada de aplicação, de sessão, de transporte, ou na camada de rede, tendo cada uma dessas opções suas próprias vantagens e desvantagens. Com a criptografia, documentos de real importância podem ser enviados por redes de computadores sem que sejam lidos por pessoas não autorizadas. Quando é feita uma criptografia dos dados, uma unidade de criptografia é inserida entre as duas máquinas, sendo que primeiramente os dados são codificados de forma a serem entendidos por ambas as máquinas e depois são criptografados de forma que só as duas máquinas vão conseguir interpretar os dados. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 66 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.6.4 Exemplo de Uso da Camada de Apresentação Em um exemplo prático, duas empresas - A e B - implementam um sistema de intercâmbio eletrônico de dados (EDI) para compartilhar a troca de informações de compra e venda de produ produtos entre seus sistemas de computadores corporativos. Por questões de segurança e privacidade, a Empresa A e a Empresa B desejam criptografar todas as mensagens eletrônicas trocadas entre elas. el A tarefa de criptografia reside na camada de apresentação, que é responsável por todas as conversões "geralmente úteis".52 Figura 2.16 Exemplo da Camada de Apresentação.52 No cenário da Internet a exigência de criptografia é muito real. Trocas EDI frequentemente entemente envolvem a transferência de fundos monetários, bem como a entrada de um pedido. Uma série de protocolos de criptografia foram desenvolvidos para uso em aplicações d da Internet. Um que é amplamente utilizado, especialmente em sistemas baseados em PC, é chamado de Pretty Good Privacy (PGP). 2.4.6.5 Serviço de Conversão de Código da Camada de Apresentação O serviço de conversão de código da camada de apresentação pode ser realizado pela linguagem abstrata Abstract Syntax Notation One (ASN.1). Ela resolve o problema de formatos de dados inconsistente inconsistentes s suportados em vários computadores, especificando um formato de dados padrão. Nesse caso, a camada de apresentação presta um serviço de modo geral que é usado por muitos protocolos da camada de aplicação. Embora os serviços de camada de apresentação po possa ssam ser oferecidos pela camada de aplicação, eles são colocados na camada de apresentação, porque eles são gerais e devem estar disponíveis para todas as aplicações.52 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 67 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.6.5.1 Sintaxe (Linguagem) Abstrata e Sintaxe (Linguagem) de Transferência Na camada de Apresentação, considera-se que os dados do usuário são informações puras, separadas de qualquer representação. No transmissor, o protocolo da camada de apresentação gera uma string de octetos apropriados (acordados por negociação) para o serviço de sessão transportar esta informação durante a transferência de dados entre sistemas finais, e decodifica a string de octetos recebidos para produzir as informações puras no receptor, para que possam ser entregues para a camada de aplicação.46 Esse pode ser um conceito difícil de entender, principalmente para aqueles que veem as camadas como uma arquitetura de implementação. É evidente que é um pouco difícil de passar informações puras divorciadas de representação em uma interface de implementação real, e as pessoas às vezes dizem que "a Camada de Apresentação mapeia uma representação local para uma representação de transferência negociada", porque isso é o que alguma parte de código em algum lugar na implementação estará realmente fazendo. É, no entanto, um modelo impróprio, uma vez que implicaria que os (protocolos) padrões da camada de aplicação especificariam valores em alguma representação local - claramente um absurdo. Representações locais de informação são parte da implementação, e não têm visibilidade no trabalho dos padrões (OSI).46 Em outras palavras, a sintaxe de transferência fornece bitstrings que de forma inequívoca (mas não necessariamente com exclusividade) representam os valores abstratos (valores de dados de apresentação) na sintaxe abstrata com a qual eles estão associados. Onde houver mais de um bitstring na sintaxe de transferência associado com algum valor abstrato particular, então é uma opção da implementação definir qual deles usar em qualquer transferência particular. Se uma sintaxe de transferência tem um único bitstring para cada valor abstrato, chamamos isso de uma sintaxe de transferência canônica (a qual se refere a questões de segurança.) Analisando o conjunto de valores de dados de apresentação para este protocolo de aplicação podemos pensar nele como uma coleção de valores, e nós damos um nome a esta coleção. Nós a chamamos de sintaxe abstrata do protocolo. Então projetistas de protocolos na camada de aplicação especificam a sua sintaxe abstrata (de alguma forma - notação formal, Inglês comum, qualquer que seja). Uma sintaxe abstrata, então, é uma coleção de valores de dados de apresentação (às vezes chamada apenas de valores de dados, e às vezes chamada apenas de valores ou valores abstratos) a ser transferida pela camada de apresentação através da operação de algum protocolo específico. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 68 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Para que o mecanismo do protocolo de apresentação possa converter esses valores abstratos em bits para a camada de sessão poder transferir, é necessário ter associado a esta sintaxe abstrata (esta coleção de valores de dados de apresentação) um conjunto de bitst bitstrings. rings. Este conjunto de bitstrings é chamado de sintaxe de transferência para aquela sintaxe abstrata. A sintaxe de transferência (conjunto de bitstrings) para uma sintaxe abstrata tem as seguintes propriedades:47 • • Para cada valor de dados (apresentação) na sintaxe abstrata há um ou mais bitstrings na sintaxe de transferência associados a esse valor. Cada bitstring na sintaxe de transferência é distinto, e tem um valor abstrato precisamente associado a ele. Figura 2.17 Princípio da camada de Apresenta Apresentação do OSI.40 Um contexto da camada de apresentação é definido como uma associação entre uma sintaxe abstrata e uma sintaxe de transferência associada. Em outras palavras, é um conjunto de valores de dados de apresentação (aqueles na sintaxe abstrata) para o qual a sintaxe de transferência foi acordada, e que representa uma instância de uso de uma sintaxe abstrata em alguma conexão da camada de apresentação. Para cumprir os requisitos discutidos acima, nós reconhecemos que qualquer sintaxe abstrata dada p pode ode ter várias instâncias de uso (múltiplos contextos de Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 69 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP apresentação, com a mesma ou com diferentes sintaxes de transferência), e que a unidade básica de transferência de dados deve ser a transmissão de um valor dos dados de apresentação de algum contexto de apresentação identificado. Em qualquer ponto no tempo em uma conexão, um número (potencialmente ilimitado) de contextos de apresentação terá sido acordado para uso (definido), e os valores a partir de qualquer um desses contextos pode ser transferido. Este conjunto de contextos de apresentação é chamado o conjunto de contexto definido (defined context set - DCS).47 2.4.6.6 Introdução ao ASN.1 Ao contrário das camadas mais abaixo na pilha OSI, cuja função é transferir bits de um transmissor para um receptor, de forma confiável e eficiente, a camada de apresentação cuida dos significados desses bits. As mensagens não são compostas de um conjunto de bits agrupados de forma aleatória, mais sim de informação bem estruturada, tal como nomes de pessoas, endereços, saldos bancários e assim por diante. Na camada ou nível de apresentação é possível definirem-se registros contendo campos para recebimento de informação estruturada, e então fazer com que o transmissor informe ao receptor que a mensagem é composta por registros em determinados formatos. Isto facilita muito a comunicação entre máquinas com diferentes representações internas.46 A camada de apresentação estabelece um contexto entre as entidades da camada de aplicação, no qual as entidades de camadas mais altas podem usar diferentes sintaxes e semânticas se o serviço de apresentação fornecer um mapeamento entre eles. Se um mapeamento está disponível, unidades de dados de serviços de apresentação (PPDUs) são encapsuladas em unidades de dados de protocolo de sessão, e passadas para baixo na pilha. Essa camada fornece independência para a representação de dados (por exemplo, criptografia), traduzindo os formatos dos aplicativos e da rede. A camada de apresentação transforma os dados num formato que o aplicativo aceita. Esta camada formata e criptografa os dados a serem enviados através de uma rede. Por isso, às vezes a camada de apresentação é chamada de camada de sintaxe.47 Por outro lado, "Chamamos de sintaxe concreta, a representação, em uma determinada línguagem de programação, das estruturas de dados a serem transferidas. É uma 'sintaxe' porque respeita as regras lexicais e gramaticais de uma linguagem (C por exemplo); é chamada “concreta” porque é realmente manipulada por aplicativos (implementados nesta mesma linguagem) e que está em conformidade com as restrições das arquiteturas de máquinas".46 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 70 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP “A fim de se libertar da diversidade de sintaxes concretas acima mencionadas, as estruturas de dados a serem transmitidas deverão ser descritas independentemente das linguagens de programação utilizadas. Esta descrição deve também respeitar as regras lexicais e gramaticais de uma determinada língua (ou linguagem), mas deve manter-se independente da linguagens de programação e nunca ser diretamente implementada em uma máquina. Por essas razões, chamamos de sintaxe abstrata tal descrição e de Abstract Syntax Notation ou ASN a linguagem em que esta sintaxe abstrata é denotada”.46 A estrutura de apresentação original usa as regras básicas de codificação da Abstract Syntax Notation One (ASN.1), com capacidades, tais como a conversão de um arquivo de texto com código EBCDIC para um arquivo com código ASCII, ou serialização de objetos e outras estruturas de dados de e para a linguagem XML.47 Uma especificação ASN.1 é apenas uma descrição estática dos dados; ele não pode descrever as operações a ser aplicadas a esses dados. Muitas diferentes mensagens podem ser trocadas entre as aplicações. A sintaxe abstrata deve então descrever de forma mais condensada todo o conjunto dessas mensagens. Resumindo, a ASN.1 não é uma sintaxe abstrata mas uma linguagem para descrevê-las. Parece ser vantajosa uma transferência de dados quando ela é independente das arquiteturas de máquinas. Tal como para os dados recebidos na forma de fluxos de bytes ou bits, eles devem estar de acordo com uma sintaxe chamada sintaxe de transferência para que estes fluxos possam ser devidamente reconhecidos pelas máquinas pares. Naturalmente, esta sintaxe de transferência depende completamente da sintaxe abstrata, uma vez que estabelece como os dados devem ser transmitidos de acordo com esta sintaxe abstrata. Na verdade, a sintaxe de transferência estrutura e ordena os bytes que são enviados para a outra máquina. Mas ao contrário da sintaxe abstrata, é uma grandeza física e, por isso, deve ter em conta a ordenação dos bytes, o peso dos bits, etc. Sintaxes de transferências diferentes podem ser associadas com uma única sintaxe abstrata. Isto é particularmente interessante quando o rendimento aumenta e faz com que a codificação mais complexa seja necessária: nesse caso, no entanto, é possível alterar a sintaxe de transferência, sem alterar a sintaxe abstrata. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 71 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 2.18 Linguagem abstrata (ASN1) e linguagens concretas.46 Analisando a figura anterior anterior, nós verificamos existirem quatro sintaxes: uma sintaxe abstrata, duas sintaxes concretas e uma sintaxe de transferência. As setas estabelecem as ligações que existem entre a as sintaxes. A partir de uma única descrição de dados ASN.1, podemos derivar automaticamente muitas sintaxes concretas necessárias (ou seja, num maior número de linguagens l de programação), e muitos procedimentos implementando a sintaxe de transferência em codificadores (que codificam os dados em um fluxo bit bits ou de bytes) e em decodificadores, como é desejado desejado. Figura 2.19 Assimetria da linguagem abstrata (ASN1).46 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 72 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Portanto, é um compilador ASN.1 que realiza a geração automática das derivações das sintaxes concretas em abstratas, poupando, assim, considerável esforço. Além disso, torna possível a interconexão de qualquer número de máquinas. O compilador deve ser implementado com algumas regras de codificação, as quais descrevem as ligações entre a sintaxe abstrata e a sintaxe de transferência. Muitos padrões (incluindo a ISO8822 na definição de serviço de apresentação, por exemplo), por vezes, não distinguem a noção de uma sintaxe de transferência daquela de regras de codificação. 2.4.6.7 ASN.1 e BER Esta seção é a transcrição resumida do texto da Microsoft que descreve o Abstract Syntax Notation One (ASN.1) e Basic Encoding Rules (BER), e esclarece as diferenças entre os dois.48 A ASN.1 (Abstract Syntax Notation One) pode ser definida como um padrão internacional que visa especificar os dados utilizados em protocolos de telecomunicações. É uma linguagem de computação que é poderosa e complexa: ela foi projetada para modelar de forma eficiente a comunicação entre sistemas heterogêneos.46 Já o BER é um conjunto de regras para codificação de dados no ASN.1. A seguir vamos aprofundar os estudos do ASN.1 e do BER. 2.4.6.7.1 ASN.1 A Abstract Syntax Notation One (normalmente conhecido como ASN.1) é uma linguagem para definição de padrões de conversão de códigos de dados transmitidos (sintaxe abstrata) sem levar em consideração a implementação no aplicativo (sintaxe concreta). A ASN.1 pode ser considerada a linguagem de programadores padrão para a codificação dos dados a serem transferidos entre duas máquinas com arquiteturas diferentes. Imagine um arquivo que necessita ser transferido entre duas máquinas com arquiteturas diferentes. A linguagem ASN.1 vai transformar as linguagens concretas das duas máquinas em uma linguagem abstrata, definindo regras para essa tradução.48 Por exemplo, o ASN.1 define:48 • • • O que é "Tipo". O que é um "módulo" e qual deve ser sua aparência. O que é um INTEIRO. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 73 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • • • • O que é um BOOLEANO. O que é um "tipo estruturado". Qual o significado de determinadas palavras-chave (por exemplo, INÍCIO, FIM, IMPORTAR, EXPORTAR, EXTERNO e assim por diante). Como colocar um tipo entre "tags" para que possa ser devidamente codificado. O ASN.1 não leva em consideração nenhum padrão específico, método de codificação, linguagem de programação ou plataforma de hardware. É simplesmente uma linguagem para definição de padrões. Em outras palavras, padrões são programados em ASN.1.48 Como o ASN.1 é a linguagem dos padrões, é muito comum encontrar recomendações de padrões programados no ASN.1. Profissionais de suporte, consultores e especialistas em tecnologia da informação são beneficiados pelo conhecimento de ASN.1, já que isso lhes permite um aprofundamento nos padrões e na decodificação e na compreensão do conteúdo dos dados do problema que estão tentando solucionar. Os padrões mais comuns programados no ASN.1 são aqueles produzidos pela CCITT (International Telegraph and Telephone Consultative Committee) e pela ITU (International Telecommunications Union).48 No entanto, membros da IETF (Internet Engineering Task Force) estão usando cada vez mais o ASN.1 para expor sutilmente suas recomendações. O ASN.1 expõe em uma página o que ocuparia cinco ou seis páginas para ser programado em outro formato.48 A seguir está uma lista dos padrões comumente usados que são programados no ASN.1: • X.400 (Mensagens eletrônicas); • X.500 (Serviços de diretório); • X.200 (Comunicações em redes de pacotes); • Documentos de padrões Internet (RFCs) 2251-2256 do protocolo LDAP (Lightweight Directory Access Protocol - LDAP); • Muitas outras RFCs. O ASN.1 está definido nas recomendações ITU-T X.209 e X.690. 2.4.6.7.2 BER BER (pronuncia-se "burr") é o nome comum para as Regras de Codificação Básica (Basic Encoding Rules) do ASN.1. O BER está definido nas recomendações ITU-T X.209 e X.690. BER é um conjunto de regras para codificação de dados do ASN.1 para um fluxo de octetos que pode ser transmitido por um link de comunicações (sintaxe de transferência). Entre outros métodos de codificação de dados do ASN.1 estão o DER (Distinguished Encoding Rules), o CER (Canonical Encoding Rules) e o Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 74 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP PER (Packing Encoding Rules). Cada método de codificação possui sua própria aplicação, mas o BER é o método de codificação usado com mais frequência e o mais comentado.48 O BER define: • • • Métodos para codificação de valores ASN.1. Regras para decisão de quando usar um determinado método. O formato de octetos específicos nos dados. 2.4.6.8 Contrastando o ASN.1 e o BER O ASN.1 é como uma linguagem de programação (por exemplo C), enquanto o BER é como um compilador para essa linguagem. Compiladores são específicos de plataforma, enquanto muitas linguagens de programação de alto nível não o são. A linguagem C define as regras e o idioma para a programação de um programa. Um programa não é C, mas programado em C. O programa não será útil até que seja compilado para uma plataforma específica (como a Intel x86). Assim funciona com o ASN.1 e o BER. O ASN.1 é a linguagem para programação de um padrão. Um padrão não é ASN.1, mas programado em ASN.1. Os dados, gerados por um programa compatível com o padrão, podem ser chamados erroneamente de "dados do ASN.1”. Os dados ASN.1 não são úteis (ou seja, não podem ser transmitidos por uma LAN) até que os dados ASN.1 sejam codificados em um fluxo de octetos (sintaxe de transferência) que pode ser facilmente decodificado no destino.48 Profissionais de tecnologia de informação (especialista em computação, desenvolvedor de software em rede, especialista em infraestrutura de redes) que realmente desejam se destacar, precisam ter pelo menos um conhecimento básico de ASN.1 e BER. Como muitos sistemas operacionais ou sistemas de comunicação modernos implementam os padrões mencionados, acima de uma forma ou de outra, ter fluência na leitura e compreensão do ASN.1 e BER facilita a solução dos problemas nesses sistemas. 2.4.6.9 A XML Um outro exemplo de linguagem que realiza a função da camada de apresentação de representação da estrutura de dados a serem transferidos entre duas máquinas com arquiteturas distintas é a XML. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 75 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A XML (eXtensible Markup Language, ou Linguagem de Marcação Estendida) é um subconjunto da SGML (Standard Generalized Markup Language, ou Linguagem de Marcação Padrão Generalizada) que permite que uma marcação específica seja criada para especificar ideias e compartilhá-las na rede. Ela tem as virtudes da SGML e da HTML sem qualquer das limitações dessas duas últimas linguagens.50 2.4.6.10 Tradutor ASN.1 para XML A Abstract Syntax Notation One (ASN.1) é um framework (estrutura) para representar dados estruturados em árvore. É amplamente utilizada em protocolos de comunicação (por exemplo, SNMP e LDAP), protocolos de segurança (por exemplo, X.509), formatos de dados (por exemplo, PKCS # 7), e assim por diante. A ASN.1 é projetada para a eficiência e os dados são geralmente formatados em com comprimentos limitados em bytes, e, portanto, não é muito legível e é difícil de manipular. Como os dados ASN.1 são estruturados, deve ser possível representar a mesma informação em Extensible Markup Language (XML). A XML não é particularmente eficiente em termos de comprimento de dados, mas é mais legível, e tem muitas ferramentas alternativas grátis (por exemplo, processadores de XML para análise e geração, processadores XSL para renderização, editores XML para autoria e assim por diante). Por tais razões, a tradução entre ASN.1 e XML nos permitirá manipular dados ASN.1 eficientes de uma forma amigável. Existe uma biblioteca em Java para tal tradução. Utilizando a biblioteca, a ASN.1 pode ser traduzida em XML e vice-versa. O grupo do projeto da linguagem ASN.1 da ITU-T começou a trabalhar (em conjunto com a ISO) em duas iniciativas relacionadas a XML, que têm objetivos semelhantes.49 2.4.6.11 Os Padrões e Recomendações da Camada de Apresentação ISO/ITU-T O serviço da camada de apresentação do modelo OSI é definido no padrão ISO 8822 e na recomendação da ITU-T X.216. O protocolo de apresentação no OSI é definido no padrão ISO 8823 e na recomendação da ITU-T X.226. A versão sem conexão do protocolo da camada de apresentação é especificado no padrão ISO 9576. 2.4.6.12 Protocolos da Camada de Apresentação Como vimos, a camada de apresentação possui várias funções e protocolos correspondentes. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 76 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.6.12.1 Exemplos de protocolos no modelo OSI No modelo OSI os protocolos da camada de sessão são os seguintes: Presentation-layer protocol (PP OSI) – Recomendações ISO/IEC 8823, X.226; ISO/IEC 9576-1, X.236 - protocolo de apresentação do OSI que realiza negociação de contexto e de gestão entre sistemas abertos; ASN.1 – Recomendações ISO-X208; ISO-X722 - linguagem de sintaxe abstrata usada como protocolo de conversão de sintaxe; X.25 PAD (Packet Assembler/Disassembler Protocol) – usado para converter o fluxo de dados assíncronos para síncrono e vice-versa. Seguem alguns outros protocolos que, embora não sejam do modelo OSI, realizam a função da camada de apresentação do modelo OSI: 2.4.6.12.2 Exemplos de protocolos de formatação AFP, AppleTalk Filing Protocol LPP, Lightweight Presentation Protocol NCP, NetWare Core Protocol NDR, Network Data Representation XDR, eXternal Data Representation 2.4.6.12.3 Exemplos de protocolos de codificação JPEG, ASCII, EBCDIC, TIFF, GIF, PICT, encryption, MPEG, MIDI 2.4.6.12.4 Exemplo de protocolos de conversão de sintaxe XML (Extensible Markup Language) - usada como linguagem de sintaxe na representação da estrutura de dados. 2.4.6.13 Camada de Apresentação em redes modernas As funções da Camada de Apresentação, em geral, são úteis para a comunicação de dados, mas não são essenciais para o bom funcionamento da rede. A tendência no TCP/IP foi a dispersão das funções da camada de apresentação em outras camadas, principalmente na camada de Aplicação. No TCP/IP, em muitas aplicações e protocolos amplamente utilizados, não é feita qualquer distinção entre as camadas de apresentação e aplicação. Por exemplo, o HTTP, em geral, considerado como um protocolo da camada de aplicação, possui aspectos da camada de apresentação, tais como a capacidade para identificar as codificações para a conversão adequada.52 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 77 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.7 Camada de Aplicação do modelo OSI A Camada ada de Aplicação é a de número sete do modelo OSI e pertence às chamadas camadas superiores superiores. A unidade de dados padrão do protocolo (PDU) da camada de Aplicação Ap é chamada de "dados" ou “mensagem mensagem”. Figura 2.20 Posição da camada de Aplicação no modelo OSI.. A camada de aplicação licação atende solicitações dos aplicativos ou usuários finais e solicita serviço para a camada de apresentação. Figura 2.21 PDU da camada de aplicação.40 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 78 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.7.1 Papel da camada de aplicação A camada de aplicação fornece um meio para que o usuário acesse informações sobre a rede através de um aplicativo. A camada de aplicação desempenha o mesmo papel que a "interface do aplicativo" na operação de sistemas. Fornece serviços de rede para os usuários (aplicações) da rede em um ambiente de processamento distribuído. A camada de aplicação destaca o ponto onde o usuário efetivamente se comunica com o dispositivo. Utilizando um exemplo dos sistemas atuais, se num navegador da Web, você desinstalar tudo relacionado com os componentes de rede, como os protocolos do TCP/IP, placa de rede e mais alguma coisa, você ainda pode utilizar os poucos recursos de que o navegador vai dispor, por exemplo para ver o código interno de um arquivo local HTML. Mas com certeza você não terá sucesso se tentar visualizar um arquivo HTML remoto que pode ser acessado através de HTTP, FTP ou TFTP. É porque navegador vai responder a pedidos como os de tentativa de acessar a camada de Aplicação. E o que ocorre é que a camada de aplicação está funcionando como um ponto de passagem entre o programa de aplicação real, que não é parte da estrutura em camadas (como o OSI ou o TCP/IP) e a forma dada pela próxima camada (apresentação) para a informação da aplicação, descendo na pilha de protocolos. A camada de aplicação é responsável por reconhecer e criar a acessibilidade do parceiro de comunicação proposto e descobrir se existem recursos suficientes para a comunicação proposta. Principalmente nas aplicações em rede que oferecem serviços de comunicação através de grandes redes interconectadas (como a Internet), a necessidade é o rápido desenvolvimento de soluções para se chegar mais longe do que os limites da rede física.39 A camada de aplicação provê um conjunto de interfaces para os aplicativos obterem acesso aos serviços de rede, bem como para acessar todo o tipo de serviços de rede que suportem as aplicações diretamente. Finalmente, a camada de aplicação funciona como uma interface entre os programas aplicativos específicos e o modelo de referência de protocolos de comunicação OSI. 2.4.7.2 Processo de Construção de Entidades de Aplicação no OSI Embora a noção do processo de aplicação seja comum ao OSI e ao TCP/IP, suas soluções para construir entidades de aplicação são diferentes.37 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 79 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 2.22 Solução na construção de entidades de aplicação.37 A abordagem OSI, consistente com a noção generalizada de camadas, tem sido chamada de uma abordagem horizontal. Nessa abordagem as aplicações aplica de usuário final são desenvolvida as usando uma infraestrutura de desenvolvimento de 37 aplicações comum. É como se existisse uma camada adicional com a qual a entidade de aplicação deverá ser relacionar, conforme pode ser visto na figura acima. No OSI, as entidades de aplicação podem ter muitos elementos de serviço de aplicação (Application Service Elements - ASE). No TCP/IP, cada aplicação possui apenas um elemento de serviço, sendo que cada aplicação é desenvolvida independentemente, do topo para baixo. O OSI determina que aplicações distribuídas operem sobre uma hierarquia rígida de camadas e que elas são construídas a partir de um conjunto de ferramentas comum de elementos de serviço de aplicação padronizados (CASEs) e os harmoniza com elementos de serviço de aplicação que executam funções específicas (SASE) para determinado serviço requisitado pelo u usuário ou aplicativo final.37 No TCP/IP o processo de criação de aplicação é chamado de solução vertical. Cada C entidade de aplicação é composta de qualquer conjunto de funções que necessita de transporte fim a fim para suportar um serviço de comunicações distribuídas. 41 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 80 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Também no TCP/IP, a maioria desses processos de aplicação baseia-se no que ele precisa e assume apenas que um mecanismo de transporte subjacente (datagrama ou conexão) será fornecido.41 2.4.7.3 Serviços da camada de aplicação No modelo de protocolos de comunicação do modelo de Sistemas Abertos de Interconexão (OSI), a camada de aplicação fornece serviços para um programa aplicativo a fim de garantir que a comunicação eficaz com outro programa aplicativo em uma rede seja possível. A camada de aplicação não é a aplicação propriamente dita que está realizando a comunicação, mas uma camada do modelo OSI que presta os seguintes serviços: • • • • • Providencia que a outra parte seja identificada e possa ser alcançada; Se for o caso, autentica o remetente da mensagem ou o receptor, ou ambos; Providencia que existam recursos de comunicação necessários; Garante acordo em ambas as extremidades sobre os procedimentos de recuperação de erros, integridade de dados e privacidade; Determina as regras de protocolo e de sintaxe de dados no nível do aplicativo. Pode ser conveniente pensar na camada de aplicação, como um conjunto de serviços de alto nível para que o programa aplicativo ou um usuário num sistema final possa realizar a comunicação com parceiros em outro sistema final. A camada de aplicação é a camada OSI mais próxima do usuário final, o que significa que tanto a camada de aplicação como o usuário interagem diretamente com um aplicativo de software. Essa camada interage com os aplicativos de software que implementam um componente de comunicação. Tais programas aplicativos estão fora do âmbito de atuação do modelo OSI. 2.4.7.4 Funções da camada de aplicação As funções da camada de aplicação tipicamente incluem: • • • identificação de parceiros de comunicação; determinação da disponibilidade de recursos; sincronização da comunicação. Ao identificar parceiros de comunicação, a camada de aplicação determina a identidade e disponibilidade dos parceiros de comunicação para um intercâmbio de dados entre eles. Ao determinar a disponibilidade de recursos, a camada de aplicação deve decidir se existem recursos de rede suficientes para a comunicação Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 81 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP solicitada. Ao sincronizar a comunicação, a camada de aplicação gerencia a cooperação entre aplicações em sistemas finais que trocam dados entre si. 2.4.7.5 Classificação dos Protocolos da camada de aplicação. Protocolos da camada de aplicação são classificados em duas categorias: Elementos Específicos de Aplicação Comum (Common Application Specific Elements - CASE) e Elementos Específicos de Aplicação Específica (Specific Application Specific Elements - SASE). Elementos CASE são comumente necessários por elementos de serviço de aplicação de usuários (ASEs) e SASEs, enquanto os SASEs só são incluídos no processos de aplicação quando o seu serviço particular é especificamente necessário. 2.4.7.6 Padrões de Elementos de Serviço de Aplicação de Propósito Geral Os Padrões de Elementos de Serviço de Aplicação de Propósito Geral (Common Application Service Element - CASE) da camada de aplicação do OSI são os seguintes: – Association Control Service Element (ACSE) - Recomendações X.2x7. Responsável pelo gerenciamento das associações de aplicação.56 – Commitment, Concurrency and Recovery (CCR) - Recomendações X.85x. Gerencia a troca de dados entre aplicações e provê ponto de recuperação de falha na comunicação.56 – Remote Operations Service Element (ROSE) – Recomendações X.219; X.229; X.8xx. Oferece suporte a aplicações interativas (equivale ao RPC).56 – Reliable Transfer Service Element) (RTSE) – Recomendações: ISO 7498; ISO/TR 8509; ISO 8649; ISO 8650; ISO 8822; ISO 8824; ISO 8825; ISO/IEC 9066-2 (Fonte: ISO). Realiza a transferência de dados confiável através de uma associação de aplicação, oferecendo transparência em relação a todos os mecanismos de recuperação de erros adotados.56 – Transaction Processing (TP) - Recomendações: ISO/IEC 10026:1992; Modelo do processamento de transações: ITU-T X.860; definição do serviço: ITU-T X.861; Especificação do protocolo: ITU-T X.862 (Fonte: ISO). O protocolo padrão de processamento de transações do OSI (TP) define uma estrutura para o desenvolvimento de padrões de processamento de transações relacionadas ou distribuídas (U-ASES).56 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 82 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2.4.7.7 Padrões de Elementos de Serviço de Aplicação de Propósito Específico Os padrões de Elementos de Serviço de Aplicação de Propósito Específico (Especific Application Service Element - SASE) da camada de aplicação (podemos compará-los aos protocolos da camada de aplicação do TCP/IP) do modelo OSI são: – Message Handling Systems (MHS) - Recomendações X.4xx. Provê um mecanismo de transporte para aplicações de mensagens eletrônicas e outras aplicações usando serviços de armazenagem e retransmissão (store-and-forward). É um protocolo específico de correio eletrônico muito usado no EDI (troca eletrônica de documentos). No TCP/IP, protocolos equivalentes seriam o SMTP mais o POP. – File Transfer, Access and Manipulation (FTAM) - Gerenciador de transferência de arquivos entre servidores. Provê serviços de transferência de arquivos e facilidades de acesso a arquivos. – Virtual Terminal (VT) - Acesso remoto a servidores. Provê emulação de terminal que permite acesso a um sistema de computadores remoto parecendo como se ele estivesse diretamente conectado ao terminal local. – Job Transfer Management (JTM) - Gerenciamento de transferência de tarefas. – Directory Services (DS) - Recomendações X.5xx. Serviço de diretório. Serve como um diretório distribuído que é usado para o endereçamento e identificação de nós em interconexão de redes no OSI. É um protocolo específico de serviço de diretório. No TCP/IP, um protocolo equivalente é o LDAP (Light DAP). – Remote Database Access (RDA) - Acesso remoto a base de dados. – Manufacturing Message Specification (MMS) - Troca de mensagens de manufatura. Tem por objetivo a interconexão de sistemas computacionais de fabricantes distintos em ambiente de automação industrial.56 – Network Management Specification (NMS) - Gerenciamento de redes. Deve prover mecanismos que permitam monitorar, controlar, contabilizar, organizar e até planejar recursos durante a troca de comunicação entre entidades de aplicação.56 Um exemplo de protocolo específico desse grupo é o Common Management Information Protocol (CMIP), recomendação X.700. No TCP/IP, um protocolo equivalente é o SNMP (Simple Network-Management Protocol). Veja a seguir uma tabela contendo os principais protocolos das sete camadas do modelo OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 83 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Tabela 2.3 Protocolos modelo OSI por camada.43 2.4.7.8 Implementações mplementações de protocolos da camada de aplicação no modelo OSI Podemos citar o protocolo X.400 utilizado na indústria autom automobilística bilística para troca de dados de forma eletrônica (EDI) EDI) entre montadores e seus fornecedores. No Brasil o serviço STM400 da operadora EMBRATEL é uma rede padrão padrã OSI, utilizando o protocolo X.400 (atualmente chama chama-se se serviço EMVIA). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 84 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Outro padrão que pode ser citado é o X.25, usado na primeira rede de pacotes comercial, ainda em operação em alguns países. No Brasil, o nome dessa rede é RENPAC (Rede Nacional de Pacotes). 2.4.7.9 A camada de aplicação nos aplicativos atuais (TCP/IP) A camada de Aplicação recebe o mesmo nome no modelo TCP/IP, embora com diferente solução para o uso e criação do processos dessa camada, conforme visto anteriormente. Não há compatibilidade entre os protocolos criados para um modelo com o outro, aliás, como ocorre nas outras camadas. É na camada de aplicação que se constata a adoção do modelo TCP/IP como um modelo de facto, ficando o modelo OSI, que originalmente era tido como um modelo de jure, hoje mais como um modelo acadêmico e conceitual. O número de aplicações do TCP/IP é muito maior do que no modelo OSI. 2.5 USO DO MODELO OSI NA ATUALIDADE Na atualidade, é inegável que o uso principal do modelo OSI é como uma referência, principalmente na área de ensino. O modelo OSI é usado como referência porque esclarece, de forma a não deixar dúvidas e de forma global, as suas sete camadas, as funções de cada camada, a PDU de cada camada, o tipo de endereçamento de cada camada e os equipamentos que operam em cada camada. Na pratica, verifica-se também que as camadas 1 e 2 do modelo OSI são utilizadas no modelo TCP/IP de cinco camadas (chamado de modelo híbrido). Por sua vez, as camadas de sessão, apresentação e aplicação do OSI são unificadas na camada de aplicação deste mesmo modelo híbrido do TCP/IP, o qual iremos estudar nos próximos capítulos. Veja a seguir uma tabela contendo os principais conceitos do modelo OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 85 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Tabela 2.4 Comparação do Modelo OSI com outros modelos.. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 86 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A seguir apresentamos um comparativo entre os modelos OSI, TCP/IP e SNA (IBM). Tabela 2.5 Comparação do Modelo OSI com outros modelos modelos.. 2.6 RESUMO DO CAPÍTULO O modelo OSI foi editado oficialmente em 1984 conjuntamente pela ISO e ITU-T. O modelo OSI é um conjunto de protocolos de comunicação hierárquico baseado em 7 camadas bem definidas: física, enlace, rede, transporte, sessão, apresentação e aplicação. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 87 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Cada camada oferece serviços para a camada superior e solicita serviços para camada inferior. Em cada Camada temos uma Unidade de Dados Padrão de Protocolo (PDU). Cada camada possui um ou mais protocolos específicos. Implementações do modelo OSI bem sucedidas são o X.25, X.400 e o X.500. Hoje o modelo OSI serve como referência no ensino. Concluímos aqui este capítulo que teve por objetivo uma introdução ao modelo OSI de interconexão. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 88 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CAPÍTULO 3 INTRODUÇÃO AO MODELO DE INTERCONEXÃO TCP/IP INTRODUÇÃO No final dos anos 1960s, a Agência de Projeto de Pesquisa Avançada (ARPA) nos EUA desejava conectar seus computadores (posteriormente, a ARPA ficou conhecida como a Agência de Pesquisa de Projeto de Defesa Avançada - DARPA). A rede produzida ficou conhecida como a ARPAnet. Esta rede Interligou universidades e agências de governo. Outra necessidade da ARPAnet, pretendida pelas forças armadas dos USA na época, era que, em caso de guerra, com a possibilidade de uma parte da rede ser parcialmente destruída, as demais conexões pudessem ser mantidas e serviços como transferência de arquivos e de voz não fossem afetados. É importante citar que a ARPANET era essencialmente um projeto de hardware. O Departamento Americano de Defesa (DOD) estava fortemente envolvido na fundamentação nessa fase. O protocolo inicial usado pela ARPANET foi chamado de NCP. Não se havia pensado na época quanto à expansão dessa rede. Porém, na metade da década de 1970, o protocolo NCP já não podia lidar com o tamanho da rede e foi substituído então pelo Suíte Internet Protocol. O Suíte Internet Protocol foi nomeado posteriormente como TCP/IP, devido aos seus dois protocolos principais. A partir de janeiro de 1983 a todos os computadores que desejassem se conectar à ARPANET era exigido deles o uso dos protocolos TCP/IP. Também em 1983, o Departamento de Defesa separou a rede ARPANET em duas redes independentes: • • ARPANET para pesquisa experimental MILNET para uso militar. Posteriormente, a ARPANET foi substituída através de novas tecnologias, mas a MILNET ainda forma o backbone das comunicações militares dos EUA. O sucesso do TCP/IP e da Internet levaram outros grupos a adotá-lo. A National Science Foundation dos EUA (Fundação de Ciência Nacional) teve um papel ativo habilitando o protocolo TCP/IP em suas máquinas, possibilitando a conexão de tantos cientistas quanto possível. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 89 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Universidade de Berkeley Nos princípios dos anos de 1980 a Universidade de Berkeley (universidade americana berço do UNIX) migrou os protocolos de TCP/IP para a versão do UNIX deles. Isso tornou o TCP/IP cada vez mais popular e também assegurou que o TCP/IP se tornasse o método principal de se conectar máquinas UNIX (o sistema operacional dominante da época). Também, com a migração, os protocolos da Berkeley adicionaram aplicações TCP/IP baseadas em UNIX. Origem da Internet Da ARPANET veio a Internet. Os pesquisadores que desenvolveram a arquitetura de Internet pensaram na ARPANET como um backbone de rede de longa distância (rede WAN) segura, ao redor do qual a Internet poderia ser construída. A Internet começou próximo de 1980, quando o DARPA começou convertendo máquinas ligadas às redes de pesquisa aos protocolos de TCP/IP. O que é a Internet A Internet é um exemplo de interconexão de redes. Consistia de mais de 5.000 LANs no seu início e em 2009 o número estava perto de 1.000.000 de LANs e é baseada no TCP/IP. Muitos problemas na Internet resultam em desenvolvimentos do TCP/IP para superá-los. A Internet foi inicialmente descrita como um grande projeto de pesquisa para o qual qualquer um poderia contribuir via RFCs. A Internet conectava a maioria das instituições de pesquisa nos EUA, mas se expandiu pelo mundo todo. O IAB (Internet Architecture Board) e as RFCs (Request for Comments) O TCP/IP não surgiu de um desenvolvedor ou de um fabricante em particular ou de corpo de padrões reconhecido (como a ISO e o ITU-T). O TCP/IP é “controlado” pelo Internet Architecture Board (IAB), hoje um comitê do IETF (explicado abaixo). O papel principal do IAB é: • • Gerenciar a direção técnica do TCP/IP Padronizar protocolos pertinentes. A documentação para o TCP/IP vem na forma de documentos chamados RFCs (Request for Comments). Antes das RFCs, a documentação era conhecida como IENS (Internet Engineering Notes). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 90 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O IETF (Internet Engineering Task Force), antigamente chamado de Network Information Center (NIC - Centro de Informação de Rede), distribui as RFCs para todo o mundo. Todas as RFCs são numeradas. Uma atualização para um RFC resultará em um número novo e a RFC antiga ficará obsoleta. Exemplos de RFCs: RFC 760 IP (01/1980) RFC 761 TCP (01/1980) RFC 768 UDP (08/1980) RFC 2474 QoS baseado na técnica Differentiated Service (DSCP) RFC 5321 Protocolo SMTP (Simple Mail Transfer Protocol) 3.1 CONCEITOS DO TCP/IP O TCP/IP é o especializados especificações equipamentos. camadas para aplicação. nome genérico para um conjunto de protocolos de comunicação que compartilha um padrão comum de endereçamento, cujas são abertas e são desenvolvidas independentes de programas e Podemos dividir conceitualmente o TCP/IP em 4 camadas ou 5 facilitar o seu entendimento: física, enlace, rede, transporte e Embora o TCP/IP e o OSI não sejam compatíveis entre si, ou seja, um protocolo de um modelo não roda no outro, é muito útil, conceitualmente, estabelecermos a relação das funções de uma determinada camada do modelo OSI às funções de uma camada similar no TCP/IP. No modelo TCP/IP de 4 camadas, a camada Física/Enlace (também chamada de Host/Rede) é a mais baixa e se comunica com o meio físico. Tabela 3.1 Camadas do modelo de referência TCP/IP.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 91 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 3.1.1 Camada Física/Enlace (Host/Rede) Esta camada não faz distinção às redes físicas que são interligadas para formar a chamada Host/Rede (também denominada de sub-rede). Portanto, como foi pensado no projeto do TCP/IP, qualquer rede pode ser interligada, bastando para isto que seja desenvolvida uma interface que compatibilize as tecnologias empregadas com o protocolo IP. A função da interface é de receber os pacotes IP da camada de inter-rede e de transmiti-los para a rede específica. Para realizar essa tarefa, os endereços lógicos IP são traduzidos para os endereços físicos dos hosts ou roteadores conectados à rede (cada interface tem um endereço único, composto pelo código do fabricante mais um número de série, o também chamado endereço MAC). Esta camada agrega as funções da camada Física (transmissão de Bits) e da camada de Enlace (transmissão de Frame) do MR OSI/ISO. 3.1.2 Camada de Rede (Inter-Rede) Esta camada é baseada na solução dos problemas apresentados na conexão das inter-redes. O modelo TCP/IP é baseado na técnica de comutação de pacotes, na qual os hosts podem enviar pacotes para qualquer destino, não interessando até mesmo a ordem de recepção dos pacotes, obrigando as camadas superiores a reordená-los. Para isso a camada inter-rede define o formato de um pacote padrão (PDU, denominada de Datagrama) e um protocolo chamado de IP. A função principal desta camada é de entregar pacotes IP ao seu destino. Esta camada também tem a função de roteamento e de controle de tráfego, sendo semelhante à camada de rede do MR OSI/ISO. Esta camada recebe por alguns a denominação de Internet (por isso o termo Interrede), pois Internet significa “interconexão de redes”. É equivalente à camada de Rede do MR OSI. 3.1.3 Camada de Transporte Esta camada é responsável pela comunicação fim a fim entre uma máquina de origem e uma máquina de destino. Para isso foram definidos dois protocolos: • TCP (Transmission Control Protocol) – protocolo orientado à conexão confiável. Este protocolo fragmenta um fluxo de bytes em mensagens e as entrega a Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 92 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP camada inter-rede (rede). No destino o TCP remonta as mensagens recebidas em fluxo de bytes. Responsável pelo controle de fluxo, controle de erro, sequencialização e multiplexação do acesso ao nível inter-rede (rede). • UDP (User Datagram Protocol) – é um protocolo sem conexão e não confiável para aplicações que não necessitem de controle de fluxo, nem de sequencialização das mensagens (voz e vídeo). O serviço fornecido é somente o de multiplexação e demultiplexação do acesso ao nível inter-rede (rede). 3.1.4 Camada de Aplicação A arquitetura de rede TCP/IP não implementa as camadas de apresentação e de sessão de acordo com o MR OSI/ISO, porque na prática elas são pouco usadas pelas aplicações. Na realidade, o modelo TCP/IP concentra as funções das três camadas superiores do modelo OSI, Sessão, Apresentação e Aplicação, numa única camada chamada de Aplicação. A camada de aplicação presta serviço aos processos aplicativos ou processos finais. Ela é uma espécie de interface entre o aplicativo propriamente dito e a pilha de protocolos do TCP/IP. Os protocolos mais conhecidos desta camada são: FTP (File Transfer Protocol), TELNET (Terminal ou Telecommunication Network), SMTP (Simple Mail Transfer Protocol), DNS (Domain Name Server), HTTP (Hypertext Transfer Protocol), etc. 3.1.5 Modelo TCP/IP de 5 camadas (modelo híbrido) Há a tendência de se unificar os conceitos e denominações das camadas do modelo OSI para um modelo híbrido do TCP/IP com 5 camadas7. No modelo TCP/IP de 5 camadas, a camada Física se interliga ao meio físico e a camada de Enlace é inserida entre a camada Física e a camada de Rede. A camada Física tem a função de adaptar os bits ao meio físico. A camada de Enlace tem a função de transmitir a sua PDU, chamada de Frame (ou Quadro), entre dois dispositivos de comunicação separados pelo meio físico. A camada de Rede (também chamada de Internet ou Inter-rede) é responsável por localizar e descobrir um caminho (rota) para enviar as informações para o computador de destino, a partir de um endereço lógico. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 93 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A camada de Transporte é responsável por estabelecer a uma conexão virtual para a comunicação entre dois computadores finais. A camada de Aplicação é mais elevada, responsável pela comunicação com os programas aplicativos propriamente ditos. A camada de Aplicação serve como uma interface entre o TCP/IP e os aplicativos ou usuários finais. Todo computador conectado à Internet possui um endereço IP único, representado por 4 grupos de 8 bits (octetos). A representação mais comum é a decimal, com ponto separando os octetos, como por exemplo, 200.255.125.213. Como é difícil memorizar estes números, existem mecanismos de tradução de nomes para o endereço IP (protocolo DNS, que roda na camada de aplicação) e assim podemos chegar ao computador através de seu nome na rede, como por exemplo, www.google.com.br, ou através de seu endereço IP. 3.2 CONCEITOS FUNDAMENTAIS DA DIVISÃO POR CAMADAS Com a divisão por camadas no modelo TCP/IP temos cinco conceitos fundamentais: 3.2.1 Encapsulamento Cada camada apanha os dados da camada superior e encapsula estes dados na área de dados de seu próprio “pacote”. Uma analogia é que cada camada apanhará os dados e envelope da camada superior e os colocará em seu próprio envelope o qual, por sua vez, é passado para a camada inferior. 3.2.2 Desencapsulamento É o contrário do encapsulamento. Os dados ao chegarem ao destinatário deverão ser desencapsulados, ou seja, cada camada retira o seu cabeçalho e passa a informação para a camada superior, até atingir a camada de aplicação. 3.2.3 Multiplexação No host transmissor as camadas superiores, transporte, por exemplo, utiliza a camada de rede, através de várias aplicações simultâneas, realizando o processo de multiplexação (várias requisições na camada de transporte usam a camada de rede para atuar como “meio físico” para repasse dos dados). 3.2.4 Demultiplexação Ela é o contrário de multiplexação. Quando um pacote chega a um Host, as camadas (através dos protocolos) têm que passar o pacote até a camada superior. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 94 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Não é atípico ter mais que uma conexão de uma camada apoiada no topo de uma outra camada. Nesse caso, a camada mais baixa tem que decidir para qual conexão da camada superior passar a informação. Em outras palavras alguma forma de Demultiplexação é requerida. 3.2.5 Fragmentação Resumidamente, a fragmentação ocorre quando os dados numa camada são divididos em unidades menores de forma que as camadas mais baixas possam controlá-los corretamente. No host receptor, o pacote original deverá ser remontando. Isto será explorado em detalhes posteriormente. Figura 3.1 Comparação entre o Modelo OSI e o TCP/IP de 4 camadas.1 3.3 COMPARAÇÃO ENTRE OS MODELOS DE REFERÊNCIA OSI E TCP/IP Os modelos OSI e TCP/IP possuem muitos pontos em comum e também muitos pontos diferentes. Pontos em comum: • • • Modelo baseado em camadas com pilha de protocolos independentes; A camada de transporte implementa serviços orientados à conexão e não orientados à conexão; A camada de rede realiza basicamente a mesma tarefa de endereçamento lógico e encaminhamento de pacotes (no OSI denominados de pacotes e no TCP/IP chamados de datagramas). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 95 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Principais diferenças: • • • • • Número de camadas; As camadas de Aplicação, Apresentação e Sessão do modelo OSI estão agregadas na camada de Aplicação do TCP/IP; No modelo TCP/IP de 4 camadas; a camada Host/Rede agrega as camadas Física e Enlace do OSI; A camada Host/Rede do modelo TCP/IP de 4 camadas não é muito bem definida; Os serviços da camada de Rede no modelo TCP/IP são implementados pelo IP, como um serviço sem conexão, enquanto que no modelo OSI/ISO a camada de rede implementa serviço com conexão (X.25, por exemplo). Na figura a seguir temos a representação de três modelos de referência de protocolos (OSI, TCP/IP e o SNA da IBM) e os protocolos mais utilizados em cada uma das camadas dos respectivos modelos. Tabela 3.2 Protocolos padrões nas camadas dos modelos de referências.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 96 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Temos percebido que alguns especialistas da área de networking (Tanenbaum3, por exemplo) já estão utilizando o modelo TCP/IP com 5 camadas, pois na prática a camada física e de enlace são definidas conforme regras do modelo OSI. O TCP/IP, nessa visão, teria a composição da figura a seguir: Tabela 3.3 Modelo TCP/IP com cinco camadas (versão moderna).1 Abaixo temos a comparação entre o modelo OSI e o TCP/IP de 4 e 5 camadas. Figura 3.2 Comparação entre o modelo OSI e o TCP/IP (4 e 5 camadas).1 Percebemos que o TCP/IP agrega as camadas de Aplicação, Apresentação e de Sessão do modelo OSI numa única camada chamada de aplicação. No modelo TCP/IP de 4 camadas, a camada de acesso à rede engloba as camadas de Enlace e Física do modelo OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 97 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Já o modelo TCP/IP de 5 camadas adota a equivalência entre as funções das 4 camadas inferiores do modelo OSI (Transporte, Rede, Enlace e Física) mais a camada de Aplicação. Esta é uma tendência atual de representar o TCP/IP (TANEMBAUM7 e KUROSE & ROSS8). 3.4 CRÍTICAS AOS MODELOS DE REFERÊNCIA Também existem críticas3 feitas tanto a um modelo como a outro. Vamos a elas: Modelo OSI/ISO: 1. Momento ruim – não havia definição de um padrão de fato; muito consumo de recursos para os computadores da época; 2. Tecnologia ruim – somente uma opção no MR OSI/ISO, sendo baseada na arquitetura SNA (IBM); 3. Implementação ruim – lenta e vários problemas na sua implementação; 4. Política ruim – visto como um modelo dos ministérios das telecomunicações europeus e americanos. Modelo TCP/IP: 1. Não distinguia claramente serviço, interface e protocolo, o que é contrário aos conceitos de Engenharia de Software; 2. Não consegue descrever outras pilhas de protocolos a não ser a própria; 3. A camada Física/Enlace (Host/Rede) não é conceitualmente uma camada de protocolos hierarquizados; 4. Não distingue as camadas Física e Enlace, ou seja, não especifica a parte das interfaces físicas da parte da delimitação de quadros; 5. Havia muita diversidade de implementações. 3.5 MODELO DE REFERÊNCIA DE PROTOCOLOS ADOTADO NO LIVRO Nos demais capítulos deste livro adotaremos o modelo híbrido de 5 camadas do TCP/IP. Portanto, os capítulos posteriores irão contemplar maiores informações sobre a camada 1 (Física), camada 2 (Enlace), camada 3 (Rede), camada 4 (Transporte) e camada 5 (Aplicação) do modelo híbrido do TCP/IP. 3.6 RESUMO O modelo TCP/IP surgiu oficialmente em 1973, a partir dr uma evolução do conjunto de protocolos chamado NCP utilizado inicialmente na ARPANET. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 98 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O modelo TCP/IP se transformou num modelo de fato, pela sua simplicidade de uso, exigir menor poder de processamento dos computadores e por ser distribuído livremente. Assim como o modelo OSI, o TCP/IP se baseia em camadas ou níveis. Cada camada possui suas funções próprias e trabalha com uma unidade de dados padrão de protocolo bem definida (PDU). Importante destacar que em cada camada roda um ou mais protocolos encarregados de realizar as funções definidas para aquela camada. Ao longo deste livro iremos estudar as funções, os principais protocolos, PDUs e equipamentos que rodam nas cinco camadas do modelo híbrido de 5 camadas do TCP/IP. Termina aqui este capítulo introdutório às redes de computadores. Uma nova leitura atenta a este capítulo é recomendada. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 99 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CAPÍTULO 4 CAMADA FÍSICA INTRODUÇÃO A camada física é a primeira camada do modelo OSI e do modelo TCP/IP (de 5 camadas, conforme veremos oportunamente). É a camada responsável pela padronização das interfaces elétricas, mecânicas e funcionais. A camada física também se encarrega em transmitir o fluxo de bits recebido da camada de enlace e adaptá-los ao meio de transmissão. A unidade de dados padrão dos protocolos que trabalham nesta camada é o bit. Todos os equipamentos que trabalham ligados ao meio de transmissão (meio físico) atuam, portanto, na camada física. Os modems, os multiplexadores, os repetidores elétricos, os hubs, são exemplos de dispositivos que trabalham na camada física. 4.1 MEIO DE TRANSMISSÃO O meio de transmissão, ou meio físico, importante elemento de um sistema de comunicação, também faz parte da camada física. Os principais meios físicos utilizados na atualidade são: • • • • • Par metálico; Cabo coaxial; Fibra ótica; Rádio transmissão; Satélite. Os meio físicos em que um condutor guia o sinal da origem até o destino são chamados de meios guiados. Os meios físicos em que o ar representa o condutor do sinal são chamados de meios não guiados. Cada meio físico apresenta vantagens e desvantagens. Embora este curso não tenha intenção de entrar em detalhes sobre este assunto, vamos descrever pelo menos as principais características dos meios físicos citados acima. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 100 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.1.1 Par metálico De longe o meio físico mais utilizado e com maior parque instalado. Por outro lado é o meio físico que mais sofre a influência de interferências eletromagnéticas e tem maior atenuação do sinal ao longo do seu percurso. Podemos dizer que quanto maior a taxa de transmissão que se utiliza neste meio, menor a distância entre o ponto de origem e destino. Figura 4.1 Cabo Metálico.1 A utilização do par metálico ocorre na rede telefônica e de comunicação de dados. Nas redes locais de computadores o par trançado é utilizado com muito sucesso. 4.1.2 Cabo coaxial Figura 4.2 Cabo coaxial (Corte Transversal).1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 101 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 4.3 Cabo coaxial (Partes constituintes).1 Meio físico utilizado na TV a cabo, interligação de Multiplexadores nas operadoras e em instalação de antenas de rádio ou de antena de satélite. Possui uma boa imunidade contra interferência eletromagnética e normalmente é utilizado numa distância máxima de 500 metros (sem utilização de repetidores ou amplificadores de sinal). É formado por condutores concêntricos e protegidos por uma capa plástica. O cabo coaxial foi utilizado no inicio da implantação de redes locais de computadores, mas agora foi suplantado pelo par trançado. 4.1.3 Fibra ótica Meio físico que revolucionou as telecomunicações e expandiu a capacidade de transmissão do backbone das operadoras e das redes de computadores. Figura 4.4 Fibra Ótica.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 102 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Imune a interferência eletromagnética, de longo alcance, devido possuir baixa atenuação. Tem alta capacidade de transmissão. Os únicos inconvenientes são o custo de instalação e manutenção. 4.1.4 Rádio transmissão Utiliza o ar para conduzir o sinal eletromagnético. Pode ser do tipo de visada direta ou não. Pode sofrer interferência de outros sinais eletromagnéticos e também de obstrução do sinal que transmite. Normalmente possui alcances limitados, dependendo da frequência e potência utilizada no rádio transmissor (no máximo 50 km em rádio ponto a ponto, com visada direta). Figura 4.5 Rádios Transmissores.1 Com o advento das novas tecnologias da telefonia celular, Wi-Fi, Wi-MAX, LTE, entre outras, o meio físico não guiado se tornou, provavelmente, o mais pesquisado e “badalado” da atualidade. 4.1.5 Satélite O satélite é um meio de transmissão não guiado e de grande utilidade em regiões onde não existe outro meio físico disponível, sendo, portanto, tido como de longo alcance, alta disponibilidade e alta confiabilidade. Como desvantagem, podemos citar o delay característico das transmissões pelo satélite. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 103 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 4.6 Estação Terrena de Satélite.10 Figura 4.7 Satélite em órbita e a zona de cobertura no globo terrestre.10 Se desejar maiores informações sobre os meios de transmissão consulte nosso curso on-line de Fundamentos de Telecomunicações e Comunicação de Dados (http://ademarfey.wordpress.com/2014/01/04/curso-on-linefundamentos-de-telecomunicacoes-e-comunicacao-de-dados/). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 104 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.2 INTERFACES DE DADOS E VOZ PADRÕES DE MERCADO As interfaces de dados são elementos importantes de um sistema de telecomunicação e de redes de computadores. Você já pensou o que ocorre ao comprar um equipamento que não é compatível com os demais equipamentos de um sistema de comunicação? Imagine viajar 600 km para fazer uma manutenção num cliente e ao chegar ao mesmo perceber que as interfaces elétricas não são compatíveis? Existem interfaces para as várias aplicações existentes no mercado, sejam voz, dados ou vídeo. Da mesma foram existem interfaces para os vários meios físicos existentes, sejam eles o par metálico, cabo coaxial, fibra ótica, etc. Em seguida faremos uma descrição das principais interfaces utilizadas em telecomunicações, comunicação de dados e redes de computadores, sabendo já previamente que este trabalho não está completo, pois são muitas as novas interfaces (fibra ótica, por exemplo) surgindo no mercado. 4.2.1 V24 A V.24 é uma das primeiras interfaces de dados. É aquela utilizada em modems analógicos e nas interfaces assíncronas de comunicação de dados (terminais burros interligados ao mainframe, por exemplo). Figura 4.8 Interface Mecânica da RS232 e pinagem do DB25 (vista frontal).10 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 105 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Essa interface é também chamada de RS-232, posteriormente foi padronizada pelo atual ITU-T T como interface V.24 V.24, e o seu padrão mecânico é chamado de DB-25 DB (ou DB-9). 9). É uma interface para baixa velocidade de dados, normalmente utilizada para até 48 Kbps. 4.2.2 V35 Interface padronizada para transmissão de dados entre 64 Kbps bps e 2 Mbps e é ainda hoje a interface padrão adotad adotada a para modems digitais e roteadores, operando dentro das velocidades des citadas. O V35 é o padrão elétrico/funcional e o conector segue o padrão mecânico M34. O padrão V35 é um típico padrão de mercado mercado, pois era para ter sido substituído há um bom tempo pela interface V36 V36, mas o mercado continua utilizando este padrão. Pino Sinal Pino Sinal A Chassis Ground B Signal Ground C Request to Send D Clear to Send E Data Set Ready F Receive Line Signal Detect H Data Terminal Ready J Ring Indicator P Transmitted Data (Signal A) R Recieved Data (Signal A) S Transmitted Data (Signal B) T Received Data (Signal B) U Terminal Timing V Receive Timing A W Terminal Timing X Receive Timing Y Transmit Timing AA Transmit Timing 4.9 Pinagem da V35 e conector M M-34.10 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 106 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.2.3 V36 Como citado anteriormente, a V36 é o sucessor do padrão V35, mas com pouca aceitação no mercado até o momento. Ele também é utilizado para equipamentos de comunicação de dados entre 64 Kbps e 2 Mbps. Circuito 102 102a 102b 103/TD 104/RD 105/RTS 106/CTS 107/DSR 108/DTR 109/DCD 113/SCT Pino 19 37 20 4-22 6-24 7-25 9-27 11-29 12-30 13-31 17-35 114/SCT 5-23 115/SCR 125/RI 140/RL 141/LL 142/TI 8-26 15 14 10 18 Designação Signal Ground Signal Ground a Signal Ground b Transmit Data Receive Data Request To Send Clear To Send Data Set Ready Data Terminal Ready Data Carrier Detect Serial Clock Transmit (from DTE) Serial Clock Transmit (from DCE) Serial Clock Receive Ring Indicator Remote Loop Back Local Loop Back Test Indicator Figura 4.10 Pinagem interface V36 (conector DB-37).10 4.2.4 G703 A G703 é uma interface utilizada em sistemas E1 (2 Mbps) para transmissão de voz e de dados. Mecanicamente se compõe de dois conectores BNCs, um para a transmissão e outro para a recepção de dados. Veja a figura a seguir. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 107 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 4.11 Interface G.703.10 Verifique que a interface G.703 funciona a 4 fios, full-duplex. 4.2.5 RJ-45 Padrão nas redes locais que utilizam o par trançado como meio físico. É uma interface composta por 8 pinos onde normalmente 4 pinos apenas eram utilizados antes do padrão 1GigaBaseT. A partir dessa rede Ethernet Gigabit os 4 pares são utilizados. Na rede FastEthernet os pinos 1 e 2 do RJ-45 são para transmissão (TX) e os pinos 3 e 6 são para recepção do sinal (RX). Nas redes GigaEthernet os 4 pares são utilizados tanto para a transmissão como para a recepção de dados (full-duplex). Figura 4.12 Interface RJ-45.10 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 108 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.2.6 RJ-11 Padrão nas redes internas telefônicas para conexão do telefone à própria rede interna. Figura 4.13 Conector onector fêmea 6 pinos RJ11 para fone ou tomadas de parede.10 Figura 4.14 Conector onector macho de 6 pinos RJ11 usado no cabo.10 4.2.7 V-21 ao V-92 Padrões adotados pelo ITU ITU-T T (antigo CCITT) para modems analógicos. O V21 é o padrão adotado para o modem analógico de 300 bps, modulação FSK, lançado em 1964. O V.92 foi o último padrão adotado para modems analógicos, o qual permite transmissão a 28,8Kbps/56Kbps e utiliza a modulação PCM. Como visto anteriormente anteriormente, percebemos que cada interface possui suas s características próprias, segundo regras e recomendações, que se não seguidas impossibilitam uma comunicação adequada entre estas interfaces. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 109 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.3 INTERFACES DTE E DCE Os equipamentos que processam os dados (por exemplo, os computadores) não possuem internamente meios que permitam a codificação/modulação dos dados de modo a obter o sinal adequado para se transmitir no meio de transmissão. Geralmente os dados são gerados e recebidos numa codificação NRZ (Non-Returnto-Zero), sendo que este tipo de codificação é extremamente limitada. Nestes casos é necessária a interposição de um dispositivo separado que transforma o sinal digital original (NRZ) num sinal digital mais eficiente (codificação) ou num sinal analógico (modulação). Os equipamentos processadores (geram e recebem os dados) são conhecidos por DTE (“Data Terminal Equipment”) e os equipamentos que se encarregam de codificar ou modular os dados de uma forma adequada às condições do meio de transmissão são conhecidos por DCE (“Data Circuit-terminating Equipment”). Existem diversos tipos de equipamento que podem assumir o papel de DCE, recebendo e enviando dados ao DTE. Como exemplo de DCE, podemos citar o modem e comutadores das redes WAN das operadoras. Como exemplo de DTE, podemos citar os terminais e os computadores. A comunicação entre o DTE e o DCE envolve geralmente vários condutores, já que além de dados também há a necessidade de circular bastante informação de controle. Trata-se da interface DTE-DCE, existindo várias implementações padrões, das quais uma das mais importantes é a RS-232 De qualquer forma, tanto a interface DTE, também conhecida como ETD (Equipamento Terminal de Dados), como a DCE, também conhecida como ECD (Equipamento de Comunicação de Dados), possuem sinais de controle que são gerados por uma interface, DCE, por exemplo, e esperados por outra, DTE, por exemplo. Os tipos de sinais normalmente enviados pelas interfaces são: - Sinais de transmissão. - Sinais de recepção. - Sinais de sincronismo e controle. Eles são enviados e recebidos em posições definidas segundo regras e recomendações próprias das interfaces DTE e DCE, portanto, deve-se respeitar e seguir tais recomendações ou não haverá comunicação entre as interfaces caso haja desatenção quanto a este requisito extremamente importante. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 110 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Veja as figuras a seguir. Figura 4.15 Interfaces DTE e DCE DCE.10 Veja agora uma topologia genérica identificando dois possíveis equipamentos, um DTE (servidor) e outro DCE (modem). Figura 4.16 Topologia prática interfaces DTE e DCE DCE.1 4.4 .4 EQUIPAMENTOS QUE OPERAM NA CAMADA FÍSICA A maioria dos padrões da camada física do modelo OSI e TCP/IP refere-se refere ao hardware e não ao software. Por isso, os equipamentos que trabalham na camada física sã são o representados pelos modems, multiplexadores, repetidores de sinal, hub, conversores de mídia, etc. Vamos fazer uma breve exposição das funções desses equipamentos. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 111 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.4.1 Modems Realizam a adaptação do sinal digital proveniente de um ETD (computador ou outro gerador de um trem de bits) ao meio de transmissão (que normalmente só aceita sinais analógicos). Os modems podem ser analógicos (utilizam a técnica de modulação para transportar os bits do ETD em uma portadora analógica) ou digitais (codificam os bits, fazendo com que o meio de transmissão pense que o sinal sendo transmitido é analógico quando na realidade é um sinal digital codificado, também chamado de sinal pseudo-analógico ou de pseudo-portadora). Figura 4.17 Modem analógico e digital (corporativos).1 4.4.2 Multiplexador Permite que vários canais de transmissão de informação compartilhem o mesmo meio físico. Figura 4.18 Multiplexadores.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 112 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.4.3 Repetidor de Sinal Equipamento que tem a função de regenerar a potência do sinal elétrico, sem entretanto alterar as propriedades fundamentais do mesmo. Podem também ser chamados de amplificadores de sinal. Figura 4.19 Repetidores de sinal.34 4.4.4 Hub Equipamento utilizado numa rede local de computadores (Rede LAN) que tem a propriedade de repetir o sinal elétrico numa porta (ou interface RJ-45) para todas as demais portas. O Hub é, na realidade, um repetidor de sinal mais sofisticado. . Figura 4.20 Hubs.29 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 113 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.5 TOPOLOGIA UTILIZANDO OS CONCEITOS DA CAMADA FÍSICA Figura 4.21 Topologia com interfaces e meios físicos.1 Na topologia acima podemos ver a interligação de uma rede local com a Internet. Observe os meios físicos, as interligações entre equipamentos e as interfaces utilizadas. Normalmente cada meio físico interligado possui interfaces específicas que deve seguir padronizações da indústria de telecomunicações e de redes de computadores. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 114 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 4.6 RESUMO A camada física é responsável pela transmissão dos bits ao meio de transmissão. Antes dessa transmissão, a camada física adapta os bits através da modulação ou da codificação, para que o sinal que contém a informação percorra de forma efetiva o meio de transmissão. A camada física é responsável pelos padrões elétricos, funcionais e mecânicos das interfaces utilizadas para interconexão dos equipamentos de comunicação de dados. A unidade de dados padrão dos protocolos da camada física (PDU) é o bit. Os meios de transmissão fazem parte da camada física e são divididos em meios guiados (um cabo interliga os elementos de comunicação) e não guiados (onde o ar atua como meio de interligação). Os principais meios de transmissão são o par metálico, cabo coaxial, fibra óptica e transmissão por ondas de rádio (sistemas sem fio). Os principais equipamentos que trabalham na camada física são: modem, multiplexador, repetidor de sinal, Hub. Terminamos aqui este capítulo que tem o objetivo de esclarecer as funções da camada física, descrever os equipamentos e padrões que atuam nesta camada. Para maiores informações sobre modems, multiplexadores e comunicação de dados consulte nosso curso on-line de Fundamentos de Telecomunicações e Comunicações de Dados (http://ademarfey.wordpress.com/2014/01/04/cursoon-line-fundamentos-de-telecomunicacoes-e-comunicacao-de-dados/). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 115 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CAPÍTULO 5 CAMADA DE ENLACE INTRODUÇÃO Este capítulo trata da função da camada de enlace e apresenta os o principais protocolos que rodam nela nela,, tanto na rede LAN como na rede WAN. 5.1 .1 FUNÇÃO DA CAMADA DE ENLACE A camada de Enlace é a camada 2 no Modelo OSI. Como todas as camadas, nela são usados protocolos específicos que têm como função proporcionar ao Pacote, recebido da Camada 3, uma estrutura capaz de ser transmitida através de um link ou circuito de comunicação de dados, de forma segura, controlada e organizada, possivelmente livre de erros. Veja a figura abaixo. enlace.1 Figura 5.1 Função da Camada de enlace Note que, no meio de transmissão, a informação trafega bit a bit continuamente. Imagine uma interface na ponta distante recebendo um fluxo de bits e repassandorepassando os à Camada de Enlace.. Se não houverem regras a serem seguidas nesta camada, não seria possívell interpretar a informação associada aos bits. Por exemplo: Quando começa uma informação? O que significa os primeiros 10 bits e os próximos 20, 30 bits que estão chegando? Quando termina a informação e quando começa a próxima? Percebe-se se que sem um Protocolo que estabeleça regras, orientando a interpretação do significado do fluxo de bits, não haverá entendimento entre os dispositivos de comunicação. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 116 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Pois bem. É esta a função que a Camada 2 executa (presta serviço) para a Camada 3. Monta uma estrutura a baseada nas regras do protocolo específico desta camada, chamada “Quadro” ou “Frame Frame” (em Inglês), e encapsula o Pacote para encaminhá-lo encaminhá através da Camada amada Física no link. (caso você faça o curso on-line on Fundamentos de Redes de Computadores, consulte o ar arquivo quivo disponível “Enlace.ppt” para maiores detalhes). 5.2 QUADRO OU FRAME Diferentes protocolos possuem diferentes regras, porém todos eles montam um Quadro ou Frame composto da seguinte estrutura: Veja figura abaixo. Figura 5.2 Quadro (Frame) na camada de enlace.1 Onde: - Cabeçalho,, inserido em frente do Pacote da Camada 3. - Controle de erro, inserido no final do Pacote da Camada 3. Observe que essa é a estrutura básica das PDUs de todas as demais camadas do TCP/IP ou do OSI, não tendo, porém, a parte de correção de erros. 5.3 MODELO TCP/IP Como os protocolos da Camada 2 executam sua função entre as Camadas 3 e 1, dependendo do protocolo, muitas vezes fica difícil estabelecer onde começa e termina a responsabilidade de uma camada (física) ou outra (enlace). Por isso, no Modelo TCP/IP original de 4 camadas, os níveis ou as camadas 1 e 2 foram agrupadas em uma única camada chamada de Acesso à Rede,, (não confundir com a Camada de Rede do Modelo OSI, que é a camada 3 nesse modelo, e que no Modelo TCP/IP chama-se se Internet/Rede/Inter-Rede). Independente do nome dado, camada de enlace (OSI), ou camada de acesso à rede (TCP/IP), a função será sempre a citada, qual seja, a de montar o frame ou quadro e transmitir para o equipamento de comunicação vizinho (separado apenas pelo meio físico). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 117 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Veja a comparação OSI e TCP/IP feita a seguir. Modelo OSI Modelo TCP/IP 4 camadas Modelo TCP/IP de 5 camadas Figura 5.3 Camada de Enlace na Comparação entre modelo OSI e o TCP/IP.1 5.4 .4 PROTOCOLOS DA CAMADA DE ENLACE Existem dois grupos de protocolos na camada 2. 1 Protocolos que operam em Redes Locais (LAN), sendo os mais utilizados: • • • • • • Ethernet 802.11 Wi-Fi IEEE 802.1q 802.11g Token Ring FDDI. 2 Protocolos que operam em Redes de Longa Distância (WAN), sendo os mais utilizados: • • • PPP HDLC e Frame Relay. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 118 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 5.4.1 Ethernet Não se pode falar em protocolos de comunicação sem mencionar a tecnologia Ethernet, não só pelo seu sucesso em ter atingido cerca de 85% das redes locais de computadores - devido ao preço acessível das placas de rede -, como também por ter evoluído rapidamente para oferecer taxas de linha na ordem de 1 e 10 Gbps. O termo Ethernet refere-se à família de produtos para redes locais. A origem da tecnologia Ethernet remonta ao ano de 1970, quando a Xerox desenvolveu o protocolo de detecção de colisão para acesso múltiplo com detecção de portadora (CSMA-CD). A taxa de dados era de apenas 3 Mbps, mas, nos anos 80, o seu sucesso foi o suficiente para atrair outros participantes para a criação do padrão de 10 Mbps. 5.4.1.1 Quadro Ethernet PRE SFD DA SA Comp/Tipo Dados PAD FCS Figura 5.4 Formato do Quadro (Frame) do protocolo Ethernet.1 Onde: PRE (Preâmbulo) Contendo 7 bytes, o campo PRE é um padrão alternado de uns e zeros. Indica às estações receptoras a chegada de um quadro, e fornece os meios para sincronizar os circuitos de recepção das camadas físicas com o feixe de dados entrante. SFD (Start Frame Delimiter, Delimitador de Início de Quadro) Contendo 1 byte, o campo SFD é um padrão alternado de uns e zeros, encerrando com 2 bits de "uns" consecutivos. Indica que o próximo bit é o primeiro bit, do primeiro byte, do endereço de destino. DA (Destination Address, Endereço de Destino ou MAC de Destino) Contendo 6 bytes, representados na numeração do sistema hexadecimal, o campo DA identifica as estações que devem receber o quadro, da seguinte forma: • O primeiro bit à esquerda indica se o endereço é individual (indicado por 0), ou de grupo (indicado por 1). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 119 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • O segundo bit à esquerda indica se o DA é administrado globalmente (indicado por 0), ou localmente (indicado por 1). • Os valores dos 46 bits restantes são atribuídos exclusivamente para identificar uma única estação, um grupo definido de estações, ou todas as estações na rede. SA (Source Address, Endereço Fonte ou MAC de Origem) Contendo 6 bytes, representados na numeração do sistema hexadecimal, o campo SA identifica a estação emissora. O SA é sempre um endereço individual, e o primeiro bit do primeiro byte é sempre 0. No Wireshark, este campo aparece da seguinte forma: Figura 5.5 Dados do endereço MAC coletados no Wireshark.1 Comprimento/Tipo (Length/Type) Tanto no endereço MAC de origem, como no endereço MAC de destino, os três primeiros bytes (mais significativos) identificam o código único do fabricante da placa de redes (OUI) e os outros 3 bytes identificam o número de série da placa de rede. Comprimento/Tipo (Length/Type) Contendo 4 bytes, este campo indica tanto o número de bytes de dados da subcamada MAC - contidos no campo de dados do quadro -, como a ID do tipo de quadro – se o quadro foi montado usando um formato opcional: • Se o valor do campo Comprimento/Tipo for menor do que 1500, o número de bytes LLC no campo de dados será igual ao valor do campo Comprimento de Dados. • Se o valor do campo Comprimento/Dados for maior do que 1536, o quadro será um quadro do tipo opcional, e o valor do campo identifica o Tipo específico do quadro que está sendo transmitido ou recebido. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 120 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Dados. O campo de dados é uma sequência de n bytes de qualquer valor, onde n é menor ou igual a 1500. Se o comprimento do campo de dados for menor do que 46, ele deve ser estendido, adicionando-se um enchimento (pad) suficiente para aumentar o comprimento do campo de dados para 46 bytes. PAD. Enchimento para campo de dados menor de 46 bytes. FCS (Frame Check Sequence, Sequência de Verificação de Quadros) Com 4 bytes, o campo FCS contém um valor com 32 bits correspondentes à verificação cíclica de erro no frame (CRC), que é criado pelo emissor e recalculado pelo receptor para verificar os quadros danificados. A sequência FCS é gerada pelos campos DA, SA, Comprimento/Tipo e Dados. 5.4.1.2 Funcionamento do protocolo Ethernet Para que o Quadro possa ser transmitido há necessidade de completá-lo com os dados dos campos SA e DA, que são, respectivamente, os endereços físicos de Origem e de Destino, ou seja, os endereços MAC de Origem e Destino. O endereço físico de um elemento que opera com a tecnologia Ethernet chama-se de endereço MAC (Media Access Control), o qual é representado por um conjunto de 48 bits sendo divididos em 6 campos separados por dois pontos “:”, conforme visto anteriormente, e escritos em notação hexadecimal (veremos em seguida a conversão de binário para hexadecimal). O endereço MAC é dividido em duas partes: Os primeiros 24 bits são fornecidos por uma entidade internacional de controle (IANA) para cada fabricante de equipamentos que operam com a tecnologia Ethernet. Por exemplo: Fabricantes de placas de rede, hubs, switches, roteadores etc. Os 24 bits restantes representam o número de série do equipamento construído por este fabricante. Por exemplo: A empresa USRobotics coloca na identificação de suas placas de rede um número único formado pelos 1ºs 24 bits que foram fornecidos pelo IANA e os 24 bits restantes que representam o número de série de cada placa. Isto garante que não haverá duas placas de rede com o mesmo endereço físico (MAC). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 121 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 5.4.1.3 Notação Hexadecimal Exemplo de um endereço MAC. 19:ab:c9:48:de:fa ou 19:AB:C9:48:DE:FA tanto pode ser representado com letras maiúsculas como minúsculas. O endereço MAC também pode ser representado usando-se o “-“ ao invés do “:”. Veja o seguinte exemplo: 19-ab-c9-48-de-fa Cada campo do endereço é composto de 8 bits (octeto). Veja abaixo o endereço MAC representado na notação binária: XXXXXXXX:XXXXXXXX:XXXXXXXX:XXXXXXXX:XXXXXXXX:XXXXXXXX Sendo que X poderá assumir valores 1 ou 0 Como podemos deduzir, um octeto binário é representado por dois números hexadecimais. Isto significa que 4 bits formam um número hexadecimal. Hexadecimal é uma notação base 16, significa que possui somente 16 valores possíveis. Veja a correlação abaixo entre hexadecimal e decimal. Hexadecimal Decimal 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Para convertermos um número binário em hexadecimal uma das possibilidades é considerarmos o sistema de “peso” da posição do bit. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 122 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 123 Suponha a posição dos 4 primeiros bits menos significativos, ou seja, da esquerda para a direita: Bits 3 2 1 Peso 8 4 (em computação o primeiro bit menos significativo é o da posição ou bit zero - por convenção) 0 2 mas por quê ? 1 Porque a representação “8 4 2 1” são os "pesos" dos bits que serão usados para fazer a conversão. Observe que em qualquer base numérica a posição dos dígitos tem peso: Base Decimal= 102 101 milhar centena unidade (posição dos números) 100 (valor posição= base numérica elevada no algarismo da posição) 100 10 (valor do peso) 1 2 Base Hexadecimal= 1 0 (posição dos bits) 162 161 160 (valor numérico na posição) 256 16 1 (peso) Base Binária= 3 2 1 0 (posição dos bits) 23 22 21 20 (valor numérico na posição) 8 4 2 1 (peso) Como já citamos, uma das técnicas utilizadas para fazer a conversão do número binário em hexadecimal é dividir os 8 bits do número binário em 2 grupos de 4 bits e depois fazer a conversão de binário para decimal utilizando o conceito do "peso" da posição dos bits. Achando o valor em decimal, para finalizar, converte-se o valor achado para hexadecimal (exemplo o “14” em decimal vira o “E” em hexadecimal). Vejam mais detalhes a seguir. Neste sistema, então, procede-se da seguinte maneira: Representando somente um octeto, faz-se a conversão para decimal. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP XXXXXXXX Separando em 2 partes de 4 bits cada fica; XXXX Usando o esquema de valores decimais para cada bit segundo sua posição fica; XXXX 8 4 2 1 XX XX 8 4 2 1 X XXX Veja o exemplo abaixo de binário convertido para decimal. 10111110 Separando o octeto em duas partes de 4 bits cada. 8 4 2 1 1 0 1 1 8 4 2 1 Valores decimais correspondentes à posição. 1 1 1 0 Efetuando a operação de conversão teremos: 1x8=8 0x4=0 1x2=2 1x1=1 11 Decimal 11 corresponde a B em Hexadecimal. 1x8=8 1x4=4 1x2=2 0x1=0 14 Decimal 14 corresponde a E em Hexadecimal, logo: Portanto, o número binário 1 0 1 1 1 1 1 0 corresponde ao hexadecimal BE Outro exemplo: O binário 0 0 0 1 1 0 0 1 convertendo 0001 em decimal fica 1 logo, 1 decimal = 1 hexadecimal. 1001 em decimal fica 9 logo, 9 decimal = 9 hexadecimal Então teremos o binário 0 0 0 1 1 0 0 1 que corresponde ao 19 em hexadecimal. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 124 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 5.4.1.4 ARP ou Address Resolution Protocol Voltando ao ponto em que comentávamos sobre a inserção do endereço MAC no campo de SA e DA do quadro Ethernet. Todos os elementos de rede que operam com Ethernet mantêm uma tabela que relaciona o endereço lógico IP com o endereço físico MAC. Esta tabela é conhecida como Tabela ARP. Quando um emissor ao preencher o campo DA não encontra na Tabela ARP um MAC relativo a um IP conhecido, é ativado um protocolo conhecido como ARP que fará uma solicitação requerendo da Máquina portadora do IP conhecido, a informação de seu endereço físico (MAC). Esta solicitação é feita através de um endereço de Broadcast que é enviado a todos os elementos da rede. Todos os elementos da rede devem aceitar esta solicitação, porém somente o “dono” do IP informado na solicitação responderá com a informação de seu MAC. O segmento da rede onde a transmissão do Broadcast alcançar é chamado de domínio de broadcast. O emissor solicitante da informação acrescenta o novo MAC na sua tabela ARP podendo assim completar os dados do campo DA no quadro que será enviado à camada física. 5.4.1.5 Padrões Ethernet e tipo de cabeamento O padrão Ethernet tem tido um desenvolvimento constante, sempre com ganhos em termos de performance. Isso se deve muito às melhorias no meio físico empregado, seja ele par trançado, cabo coaxial ou fibra óptica. A seguir apresentamos as primeiras redes padrão Ethernet e posteriormente uma tabela com o desenvolvimento mais completo. 10BASE5 • • • • • 10Mbps 500 metros de comprimento 100 usuários por segmento No máximo 4 repetidores Utiliza coaxial grosso (Thick Coax), Desvantagens do cabo coaxial grosso: É relativamente rígido e difícil de ser manuseado, pois o seu diâmetro é cerca de 1,25 cm e utiliza conector AUI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 125 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 10BASE2 Cheapernet: • • • • • 10 Mbps 185 metros de comprimento. 30 usuários por segmento Repetidores de sinais Utiliza cabo coaxial fino e leve (Thin Coax) Vantagens: fácil instalação, redução dos custos em hardware e na instalação (desenvolvimento dos conectores BNC). Desvantagens: não suportava muitas estações (reflexão do sinal causada pelos BNCs em T), fragilidade. 10BASE-T (twisted pair): • 10 Mbps • 100 metros de comprimento sem repetidores, utilizando de cabos de pares trançados • 1024 usuários por segmento • Mecanismo de acesso CSMA/CD • Topologia em estrela (Hub-and-spoke) Permite operações em: Full Duplex Half Duplex Os dois ao mesmo tempo 10BASE-F (Fiber-Optic): • • • • 10 Mbps 2000 metros de comprimento sem repetidores 1024 usuários por segmento Utiliza a fibra óptica Características da fibra óptica: Dimensões Reduzidas; Capacidade para transportar grandes quantidades de informação (Dezenas de milhares de conversações num par de fibra); Atenuação muito baixa, que permite grandes espaçamentos entre repetidores, com distância entre repetidores superiores a algumas centenas de quilômetros. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 126 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Imunidade às interferências eletromagnéticas; Matéria-prima muito abundante; Depois desses primeiros padrões, houve a adoção do protocolo Ethernet como padrão de facto do mercado de redes locais. Nos anos seguintes a esses primeiros padrões, surgiram o padrão GigaEthernet, 10GigaEthernet, 40GigaEthernet e atualmente o padrão 100GigaEthernet está em desenvolvimento. Por outro lado, o par trançado avançou nas suas categorizações, partindo do CAT3 (10 Mbps) para as atuais CAT7 e CAT8 (40 Gbps), este último também em desenvolvimento. A fibra óptica, por sua vez, foi sendo aperfeiçoada e diversificada, surgindo modelos de fibra ópticas para laser otimizado (VCSEL), possibilitando uma maior taxa de transmissão com um maior alcance físico. Na rede local se discute atualmente a tecnologia de redes de fibras ópticas passivas (OLAN - Optical LAN). Os especialistas afirmam que o custo da implementação de uma rede local com essa tecnologia está chegando próximo a de uma rede cabeada com par trançado. As fibras ópticas continuam sendo pesquisadas e tendem a tornar-se o meio físico do futuro nas redes locais. Atualmente as fibras ópticas possuem a categorização de OM1 até OM4. 5.4.1.6 Evolução da Ethernet A tecnologia Ethernet revolucionou a comunicação entre computadores, a partir da década de 1980. Saindo de um ambiente de computadores de grande porte, e até de um ambiente com minicomputadores, as redes locais de computadores possibilitaram o movimento chamado de “downsizing”, diminuição de tamanho dos computadores, possibilitando que as empresas diminuíssem o custo de investimento nos computadores e na troca de comunicação entre eles. E o protocolo ou tecnologia Ethernet teve um papel importante nesse movimento, pois possibilitou que os computadores numa rede local pudessem compartilhar recursos. Observe a evolução da tecnologia Ethernet no quadro seguinte. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 127 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Tabela 5.1 Evolução Ethernet.1 5.4.1.7 Topologias Ethernet O protocolo Ethernet originalmente foi implementado conforme a topologia abaixo. Figura 5.6 Topologia em Barramento com Cabo Coaxial Grosso.1 O que acontece nessa topologia é que qualquer informação colocada no cabo alcança todos os hosts da rede, ficando óbvio que quando uma máquina está transmitindo nenhuma outra poderá fazê-lo. Essa topologia forma o que chamamos de Domínio de Colisão. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 128 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 5.4.1.8 Método de acesso ao meio Devido ao problema visto acima se criou uma técnica que controla o acesso ao meio chamada de CSMA/CD, que basicamente orienta os elementos presentes na topologia a “escutar” o barramento. Se não houver tráfego, então o host que necessita iniciar uma comunicação acessa o meio. Todos os outros hosts detectam o tráfego no barramento e aguardam até que o cabo fique livre para poderem trafegar. 5.4.1.9 Colisão Pode acontecer que dois hosts ao “escutarem” o barramento percebam que não há tráfego e iniciam ao mesmo tempo uma transmissão, causando o que se chama de colisão. Nesse caso, o CSMA/CD orienta os hosts a provocarem uma tempestade de colisão para informar a todos os elementos da rede de que está havendo colisões e que ninguém deve transmitir. Ao mesmo tempo orienta para que cada elemento da rede aguarde um tempo aleatório antes de tentar iniciar novamente uma transmissão. 5.4.1.10 Desenvolvimento do padrão Ethernet Com o passar do tempo novas tecnologias e técnicas foram sendo introduzidas nas redes Ethernet, tais como: Barramento em Estrela, com o uso de equipamentos que centralizam o cabeamento conforme podemos ver na figura abaixo. Figura 5.7 Topologia em Estrela com uso de Hub ou Switch.1 Existe também a topologia em anel (Token Ring), que na realidade é uma tecnologia concorrente do padrão Ethernet proposta pela IBM, onde a saída de um computador se liga na entrada do outro, formando um circuito em série. Veja a próxima figura. O meio de acesso usa o chamado sistema de contenção. Cada computador recebe sua vez para transmitir quando possui a permissão através de um token (bastão). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 129 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 5.8 Topologia em Anel ou Token Ring.1 5.4.1.11 Hub Equipamento que disponibiliza uma topologia física em Estrela, porém devido sua característica operacional continua provendo uma topologia Lógica em Barramento, isto porque um sinal emitido por uma porta do Hub é retransmitido a todas as portas ao mesmo tempo formando um grande Domínio de Colisão. Na topologia em estrela com Hub temos também um único Domínio de Broadcast (pois quando um pacote de broadcast for enviado por uma porta do hub, este último repetirá o sinal para as demais portas). 5.4.1.12 Switch Equipamento que disponibiliza uma topologia física e lógica em Estrela devido a característica de operação de só transmitir dados na porta onde está ligado o host envolvido em um enlace. Por exemplo: Um transmissor e um Receptor. Figura 5.9 Switches Cisco linha 2960.30 Isto cria diversos domínios de colisão menores. Na condição de tráfego normal não haverá colisão uma vez que se formam, com o uso de Switch, circuitos individuais e colisões somente podem acontecer quando for transmitido um Broadcast. Desta forma o Switch proporciona na rede, a quebra do domínio de colisão, mas ainda mantém um grande domínio de Broadcast. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 130 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 5.4.1.13 Informação complementar sobre o protocolo Ethernet Como dissemos anteriormente, no Modelo TCP/IP original de 4 camadas as funções das camadas 2 e 1 foram agrupadas em uma única camada chamada de Acesso à Rede. O protocolo Ethernet, operando nesta camada então, possui na sua estrutura uma divisão de funções que são executadas por: LLC- Logic Link Control, é uma subcamada que interage com os dados recebidos da camada superior (Internet). MAC- Media Access Control, é uma subcamada que passa a executar a interface entre os dados fornecidos pela subcamada LLC e o meio físico (linha). Veja figura abaixo. Figura 5.10 Camada física e camada de enlace com suas subcamadas.1 5.4.2 PPP O PPP é um dos protocolos de enlace mais utilizados em redes de Longa Distância (WAN). Os dados recebidos da Camada 3, assim como com outros protocolos da Camada 2, são encapsulados de acordo com as regras específicas do PPP e passam a serem transmitidos na linha através da Camada Física. 5.4.2.1 Quadro PPP Veja os campos do Quadro PPP na figura a seguir. Figura 5.11 Formato do Quadro (Frame) do protocolo PPP.10 Pela própria definição vista nos requisitos acima, o quadro PPP deverá ser capaz de enquadrar um pacote proveniente da camada superior, especificar o protocolo ao qual ele pertence e entregar no outro ponto o pacote completo. Para isso, o quadro Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 131 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP precisa reservar um espaço extra para a informação de controle. O quadro contém os seguintes campos: Flag - Todo quadro começa e termina com um byte de valor 01111110. Endereço - Por enquanto apenas o valor de broadcast é utilizado: 11111111. O PPP permite que este não seja enviado. Controle - Apenas o valor 00000011 foi especificado até o momento. O campo foi criado prevendo a necessidade de abranger mais de uma especificação. É possível não transmiti-lo, assim como o campo de endereço. Protocolo - Este campo informa ao receptor PPP a qual protocolo da camada de rede pertence o pacote enquadrado como informação. Ao receber um quadro, o receptor verifica a existência de erros e em caso negativo repassa os dados encapsulados - o pacote - ao protocolo apropriado. O RFC 1700 define os códigos utilizados pelo PPP. Como exemplo temos o IP (21h), o DECnet (29h) e o protocolo de controle de enlace PPP (C021h). Informação - Contém o pacote encapsulado proveniente da camada de rede. O comprimento máximo padrão deste campo é 1500 bytes, embora seja possível a mudança na primeira vez em que o enlace é configurado. Verificação - Utiliza um código de redundância cíclica, padrão HDLC, para detectar erros de bits em um quadro transmitido. 5.4.3 HDLC Assim como o PPP, o HDLC é utilizado em redes WAN. Cada frame do protocolo HDLC pode conter seis campos. O frame é constituído basicamente de: campos flag (bandeira) de início e fim, campo de endereço, campo de controle, campo de informação e campo FCS. Nas transmissões de múltiplos frames, o campo flag de fim de um frame pode servir como flag do próximo. 5.4.3.1 Quadro HDLC Veja a seguir o formato do Quadro HDLC. Figura 5.12 Formato do Quadro (Frame) do protocolo HDLC.10 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 132 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Campo Flag O campo flag do protocolo HDLC é uma sequência de 8-bits, cujo padrão é 01111110, que identifica tanto o início quanto o final de um frame e serve para sincronizar receptor e transmissor. Campo de Endereço O segundo campo de um frame HDLC endereça a estação secundária que é a origem ou destino do frame, ou talvez, uma estação funcionando como estação secundária no caso de combinação das estações. Se a estação principal montar o frame, o campo de endereço desse frame contém um endereço de destino. Caso contrário, o campo de endereço do frame contém um endereço de origem. O tamanho de um campo de endereço pode ser um ou muitos bytes, dependendo do tipo e tamanho da rede. Um byte identifica univocamente 128 estações, porque um bit é utilizado para outro propósito. Redes muito grandes requerem muitos bytes de identificação no campo de endereços. Campo de Controle O campo de controle é um segmento do frame de 1 ou 2 bytes utilizados para controle de fluxo e erros. A interpretação dos bits deste campo é diferente para diferentes tipos de frames. Campo de Informação O campo de informação contém os dados na camada ou nível de rede ou informação sobre o gerenciamento da rede. O tamanho desse campo pode variar, dependendo da rede, mas é sempre fixo dentro de uma mesma rede. Campo FCS O campo de detecção de erro do protocolo HDLC é o FCS (frame check sequence). Este campo pode conter 2 ou 4 bytes de CRC (padrão ITU-T). 5.4.4 Frame Relay O Frame Relay pode ser tanto um protocolo do nível ou camada de enlace quanto uma tecnologia de rede WAN. Como protocolo da camada de enlace ele é utilizado nos circuitos de comunicação de dados para interligar as redes locais ao backbone das operadoras. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 133 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Como tecnologia de rede WAN o Frame Relay é utilizado para criação de redes corporativas, tendo alcançado grande sucesso nas décadas de 1990 e 2000. 5.4.4.1 Características É um protocolo WAN5 de alta performance que opera na camada física e de enlace do modelo OSI. Esta tecnologia utiliza comutação por pacotes para promover a interface com outras redes através de dispositivos de borda (roteadores), compartilhando dinamicamente os meios de transmissão e a largura de banda disponível, de forma mais eficiente e flexível. O protocolo Frame Relay, sendo descendente direto do X-25, utiliza-se das funcionalidades de multiplexação estatística e compartilhamento de portas, porém com a alta velocidade e baixo atraso (delay) dos circuitos TDM. Isto é possível, pois o mesmo não utiliza o processamento da camada de rede (layer 3) do X.25. Isto exige redes confiáveis para a sua implementação eficiente, pois em caso de erro no meio de transmissão, ocorre um aumento significativo no número de retransmissões, pois a checagem de erros ocorre somente nas pontas. O protocolo Frame Relay proporciona orientação à conexão em sua camada de trabalho (modelo OSI - Camada de Enlace de Dados ou camada 2). O Frame Relay é baseado no uso de Circuitos Virtuais (VCs). Um VC é um circuito de dados virtual bidirecional entre 2 portas quaisquer da rede, que funciona como se fosse um circuito dedicado. Existem 2 tipos de Circuitos Virtuais: O Permanent Virtual Circuit (PVC) e o Switched Virtual Circuit (SVC). O PVC é um circuito virtual permanente configurado pelo operador na rede através de um sistema de Gerência de Rede, como sendo uma conexão permanente entre 2 pontos. A rota através dos equipamentos de rede pode ser alterada ao passo que ocorrem falhas ou reconfigurações, mas as portas de cada extremidade são mantidas fixas. Já o SVC é um circuito virtual comutado, que é disponibilizado na rede de forma automática, conforme a demanda, sendo utilizado principalmente por aplicações de Voz que estabelecem novas conexões a cada chamada. O Frame Relay também possibilita a utilização de múltiplos canais lógicos em uma mesma linha de acesso, o que torna o mesmo ponto-multiponto. Isto significa que podemos, utilizando uma única linha dados em um ponto de concentração (No CPD, por exemplo), acessar diversos pontos remotos. Cada ponto remoto é acessado através de um endereço lógico diferente, chamado DLCI. Outra característica interessante do Frame Relay é a CIR (Commited Information Rate). O Frame Relay é um protocolo de redes estatístico, voltado principalmente para o tráfego tipo rajada, em que a sua infraestrutura é compartilhada pela Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 134 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP operadora de telefonia e, consequentemente, tem um custo mais acessível do que uma linha privada. Isto significa que quando um usuário de serviços de telecomunicações contrata uma linha Frame Relay com 128 Kbps, não quer dizer que ele tenha alocado na rede da operadora esta banda todo o tempo, pois, já que a infraestrutura é compartilhada, haverá momentos em que ocorrerá congestionamento. No ato da assinatura inatura do contrato com a operadora, o usuário escolhe uma taxa de CIR,, que pode ser de 25%, 50%, a que o usuário escolher, e no momento do congestionamento, a operadora garante que terá disponível a banda correspondente ao CIR. Por exemplo, se um usuári usuário tem um Frame Relay de 128 Kbps com um CIR de 50%, caso a rede não esteja congestionada o mesmo poderá realizar uma rajada de tráfego de até 128 Kbps. Porém, caso haja congestionamento, esta banda vai sendo automaticamente reduzida até o valor de CIR, podendo endo este usuário, usuário no pior caso, trafegar a 64 Kbps,, que corresponde a 50% de 128 K Kbps.. Quanto maior a CIR, maior o custo da linha . 5.4.4.2 .2 Quadro Frame Relay Veja a seguir o formato do Quadro Frame Relay. Figura 5.13 Formato do Quadro (Frame) do protocolo Frame Relay. Relay 5 Na figura anterior cada ada linha representa 1 byte. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 135 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 5.4.4.3 Descrição dos campos do cabeçalho do Frame Relay DLCI FCS FECN BECN DE EA C/R Payload Data Link Connection ID Frame Check Sequence Forward Explicit Congestion Notification Backward Explicit Congestion Notification Discard Eligibility Extended address Command/Response bit 1 to 4096 bytes 5.5 RESUMO A camada de enlace provê a comunicação entre dois equipamentos vizinhos num link de dados e monta o Frame que vai ser transmitido entre esses equipamentos. A unidade de dados padrão dos protocolos da camada de enlace (PDU) é o frame ou quadro. A camada de enlace trabalha com os endereços físicos (na LAN também chamados de endereços MAC ou endereços de hardware) que já vem prédefinidos do fabricante da placa de rede. Os principais protocolos da camada de enlace da rede LAN são o Ethernet e o Token Ring. Na rede WAN, os protocolos de enlace mais conhecidos são o PPP, Frame Relay, ATM e HDLC. Os principais equipamentos que trabalham na camada física são: switch na rede local e comutadores de nível 2 no backbone da operadora (rede WAN). Termina aqui este capítulo que tratou da camada de enlace do modelo TCP/IP e modelo OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 136 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CAPÍTULO 6 CAMADA DE REDE INTRODUÇÃO Este capítulo visa o estudo da camada de rede do modelo TCP/IP, a qual é equivalente à camada de rede do modelo OSI. 6.1 CONCEITOS BÁSICOS DA CAMADA DE REDE 6.1.1 Função A Camada 3 do Modelo de Referência OSI, também chamada de Camada Internet (ou de Rede) no Modelo TCP/IP, é a camada que possui uma função clara e bem definida, ou seja: deve prover meios eficazes para encaminhar, através das melhores rotas, o conjunto de dados transmitidos de uma origem para um destino, utilizando os endereços lógicos. Como isto é feito, será visto a seguir. Apesar de, à primeira vista parecer complicado, se bem entendido, torna-se simples. 6.1.2 Funcionamento É de conhecimento geral de que para haver comunicação entre dois elementos é necessária a utilização de uma linguagem comum isto é, se devem utilizar as regras e procedimentos iguais, ou seja, o mesmo Protocolo. Cada camada do Modelo OSI ou TCP/IP utiliza seus protocolos específicos, sendo indispensável a utilização do mesmo protocolo na origem e no destino, sempre que estes tenham uma comunicação par-a-par, peer-to-peer ou ponto-a-ponto. Aqui é necessária uma observação: muitas vezes a comunicação entre a origem e o destino não é feita ponto-a-ponto, mas sim através de diversos dispositivos instalados no caminho. Veja na figura abaixo. Figura 6.1 Protocolos de comunicação.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 137 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Note que numa ponta podemos ter o Sistema Operacional Windows da Microsoft e na outra o OS/2 da IBM, ou seja, um aplicativo na origem será implementado diferentemente no destino, porém par-a-par os dispositivos deverão comunicar-se usando os mesmos protocolos, em todas as camadas. 6.1.3 Protocolos da Camada de Rede Encontramos na Camada de Rede dois tipos de protocolos: a- Protocolos de Roteamento. Têm a função de determinar e selecionar os melhores caminhos por onde serão encaminhados os Protocolos Roteáveis. Alguns dos Protocolos de Roteamento são: BGP, OSPF, IGRP. EIGRP e RIP. b- Protocolos Roteáveis. Têm como função proporcionar uma estrutura capaz de identificar a origem e o destino dos dados gerados na Camada de Aplicação e que serão encaminhados de um ponto a outro. Alguns dos Protocolos Roteáveis são: IP, IPX e AppleTalk. 6.2 FUNCIONAMENTO DO PROTOCOLO ROTEÁVEL IP O Protocolo IP é o protocolo da Camada de Rede do TCP/IP, mundialmente conhecido e usado. Por esta razão, iremos nos focar no estudo das características do mesmo. Vamos desenvolver nosso raciocínio considerando os dados sendo analisados da origem para o destino, ou seja, da Camada de Aplicação para a Camada de Rede, que é o objetivo deste capítulo. A Camada 3, ao receber o conjunto de dados proveniente das camadas superiores, não analisa se o conteúdo que chega possui informações de uma camada ou de outra. Para a Camada de Rede tudo que for passado a ela é considerado um bloco único de dados e que deve ser preparado com o objetivo de identificar a origem e o destino dos dados. Como o IP realiza esta tarefa será detalhado em seguida. Verifique a figura abaixo e procure compreender os passos que os dados originados na Camada de Aplicação devem seguir até a Camada de Rede (no mesmo computador), considerando o modelo OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 138 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP D A D S A D T S A D T S A D A S T R R Aplicação Apresentação Sessão Transporte Rede Enlace Figura 6.2 Encapsulamento no modelo OSI.1 Os dados gerados na Camada de Aplicação (A) são passados para a Camada de Apresentação, que insere seus controles antes dos dados (A–D), formando sua PDU no processo chamado de encapsulamento. Por sua vez, a Camada de Apresentação passa seus dados mais seus controles (PDU) para a Camada de Sessão, que insere seus controles (S-A-D) antes dos dados recebidos, formando sua própria PDU, e assim sucessivamente, até a Camada de Transporte, que realiza o mesmo procedimento, montando sua PDU (T-S-A-D) e a entrega para a Camada de Rede onde serão tratados conforme explicações que detalharemos em seguida. Inicialmente, a camda de Rede ao receber o bloco de dados proveniente da Camada de Transporte insere na frente desses dados o seu cabeçalho de controle, montando a sua PDU (R-T-S-A-D). Se realizarmos o mesmo processo de encapsulamento no TCP/IP, veremos que ele é mais simples, pois acima da Camada de Rede temos apenas a Camada de Transporte e a de Aplicação. A PDU da Camada de Rede do TCP/IP conteria Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 139 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP apenas o seu próprio cabeçalho mais o cabeçalho do prot protocolo ocolo de transporte e o cabeçalho do protocolo da aplicação encapsulados ((R-T-D). Devido à importância do cabeçalho do protocolo IP, iremos descrever os campos que o compõe a seguir. 6.2.1 Cabeçalho IP Figura 6.3 Campos do cabeçalho no protocolo IP.1 6.2.2 Campos do Cabeçalho IP Version (Versão): 4 bits. A versão atual é a 4. IHL (Internet Header Length – Comprimento do Cabeçalho Internet): 4 bits. Informa o comprimento do cabeçalho Internet em palavras de 32 bits (4 octetos ou 4 bytes). O tamanho mínimo do cabeçalho é de 5 palavras de 32 bits (20 octetos), e o tamanho máximo (o campo Option + Padding tem tamanho variável) é de 15 palavras de 32 bits (60 octetos). Aponta para o início do campo de dados. TOS (Type of Service – Tipo de Serviço): 8 bits. É utilizado para indicar o QoS (Quality of Service – Qualidade de Serviço) desejado. Seus bits caracterizam os serviços escolhidos para serem considerados pelos gateways para processar o pacote, como por exemplo, a precedência de um pacote. Um roteador (o ( qual pode ser chamado de gateway) pode em situações de grande congestionamento, por exemplo, aceitar somente pacotes com um certo nível mínimo de precedência. Geralmente, numa transmissão de dados, deseja-se se baixo atraso, alta confiabilidade e alto throughput (vazão). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 140 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Total Length (Comprimento Total): 16 bits. Informa o comprimento do datagrama, em octetos (bytes). O tamanho máximo do datagrama pode ser 65.535 octetos (64 KB). B). Esse tamanho de octeto é impraticável para a maior parte de hosts e redes. Todos os hosts devem ser capazes de no mínimo aceitar datagramas de 576 octetos, fragmentados entados ou não. Esse número foi determinado, partindo-se do pressuposto que 512 octetos seria um número razoável de dados a ser enviado, considerando-se se mais 64 by bytes tes de cabeçalho, sendo que o tamanho máximo do cabeçalho Internet é de 60 octetos, mas o tamanho típico é de 20 octetos, dando-se dando margem para cabeçalhos de outras camadas. Recomenda-se se que os hosts só enviem datagramas maiores que 576 bytes se houver a certeza rteza de que o endereço de destino aceita receber essa quantidade de dados. Identification (Identificação): 16 bits. Número de identificação do datagrama para permitir que o destino remonte os datagramas. Flags (Sinalizadores): 3 bits. Bits de controle da a fragmentação do datagrama. datagrama Figura 6.4 Significado dos bits do campo Flags Flags.1 Fragment Offset (Deslocamento do Fragmento): 13 bits. Esse campo indica a posição desse fragmento em relação ao do datagrama original. O valor desse campo é expresso em unidades de 8 octetos (64 bits), portanto portanto, o tamanho mínimo do campo de dados de um fragmento é de 64 bits. O primeiro fragmento tem valor 0 nesse campo. TTL (Time to Live – Tempo de Vida): 8 bits. Indica o tempo máximo que o datagrama pode permanecer na rede. Se o valor nesse campo for 0, o datagrama deve ser descartado. A intenção desse campo é não permitir que datagramas cujo destino seja inalcançável fiquem eternamente circulando pela rede. Inicialmente, a unidade do TTL era definida em segundos, mas ccomo omo cada unidade processadora de datagramas (roteadores, switches de camada 3, etc.) deve diminuir o TTL de uma unidade (decrementar de um) e este ste campo passou a controlar o número de passos (hops) pelos quais o pacote atravessa entre origem e destino destino, tornando-se torna somente um limite superior da existência de cada datagrama datagrama. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 141 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Protocol (Protocolo): 8 bits. Indica o protocolo da camada superior que está utilizando os serviços da camada IP. Esses valores estão definidos no RFC 790 – Assigned Network Numbers (Números de Redes Designadas) de 1981. Esse RFC foi substituído pelo RFC 1700 – Assigned Numbers. O número do TCP, por exemplo, é 6. Quando o IP estiver encapsulado em outra camada IP, como em uma Virtual Private Network, por exemplo, o valor desse campo é 4. Header Checksum (Verificação da Soma do Cabeçalho): 16 bits. Esse checksum é calculado somente sobre o cabeçalho IP. Como alguns campos mudam frequentemente, como o TTL, esse valor tem que ser recalculado. Para se calcular esse checksum, faz-se o complemento de um de cada palavra de 16 bits do cabeçalho, soma-se elas e faz-se o complemento de um da soma total (para efeitos de cálculo, o campo Header Checksum vale 0). Embora esse algoritmo seja simples, ele é suficiente e seguro para a maioria das situações. Pode ser que ele seja substituído por um algoritmo do tipo CRC. Source Address (Endereço de Origem): 32 bits. Informa o endereço de origem. Destination Address (Endereço de Destino): 32 bits. Informa o endereço de destino. Essa informação é utilizada pelos roteadores para o encaminhamento (roteamento) do datagrama. Alguns equipamentos podem utilizar os campos IP de origem, de destino e até mesmo informações de protocolos de níveis superiores e o tipo de dado sendo transmitido para realizar o roteamento de pacotes e juntamente realizar algum tipo de priorização ou QoS. Options (Opções): Tamanho variável, entre 0 e 320 bits (40 octetos). O que é opcional é a transmissão ou não desse campo, não a sua implementação. Todo os roteadores e gateways devem implementar meios de codificação/decodificação desse campo. Pode haver mais de uma opção nesse campo. As opções servem, entre outras coisas, para informar se o próprio campo Option deve ou não ser copiado para os fragmentos, caso o pacote venha a ser fragmentado, para embutir um timestamp da rede, adicionar informações relativas ao nível de segurança do pacote (confidencialidade) ou para especificar uma rota para um determinado destino. Mais informações sobre esse campo pode ser encontrado no RFC 791. Data: É o campo que contém os dados efetivos do pacote, oriundos das camadas superiores. 6.2.3 Importância dos Campos de Endereço do cabeçalho IP Apesar de todos campos terem sua devida importância, os campos a seguir são de relevância fundamental para a perfeita atuação do IP. São eles: Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 142 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Source Address (Endereço de Origem): 32 bits. Informa o endereço de origem. Estes 32 bits são divididos em quatro (4) campos de 8 bits (octeto) separados por um ponto (.). Como as máquinas só entendem a linguagem Digital, bit 1 e bit 0, portanto binária, os campos do endereço ficam assim representados: 1º campo 2º campo 3º campo 4º campo xxxxxxxx . xxxxxxxx . xxxxxxxx . xxxxxxxx com o x (bit) podendo assumir valor 1 e 0,, imaginemos o seguinte endereço IP. 10100000.00000011.00000001 Para a melhor compreensão ao ser 11000000.10100000.00000011.00000001 humano, passou-se se a representar o endereço IP através de notação decimal. Com isto é necessário converter converter-se o número binário em decimal. 6.3 ENDEREÇAMENTO IP O endereço IPv4 é composto por 32 bits, divididos em 04 bytes (octetos). Uma parte do endereço IP identifica a Rede e a outra parte identifica o Host (numa determinada rede). Na parte do Host dois endereços são reservados (não podem ser utilizados): • • • O primeiro, com bits todos zerados, identifica a própria rede O último, com bits todos em um (1), identifica o endereço de broadcast da rede Os demais endereços compreendidos entre o primeiro e último são chamados de endereços IPs válidos Como vimos, os endereço IPv4 é dividido em duas partes: • • Prefixo de Rede:: identifica o endereço IP de uma determinada eterminada Rede de Computadores Identificação do Host: identifica o endereço IP de um Host de uma determinada Rede de Computadores Figura 6.5 .5 Estrutura básica do IPv4.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 143 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O endereço IPv4 segue a mesma lógica da rede telefônica, onde temos o Prefixo da área telefônica (Rede) e a identificação do número telefônico (Host). 6.3.1 Formato do endereço IP A segui veremos o formato do endereçamento IPv4 em detalhes. Figura 6.6 Estrutura do endereço IPv4.1 Os endereços IP são expressos como números decimais com pontos: divide-se os 32 bits do endereço em quatro octetos (um octeto é um grupo de 8 bits). O valor decimal máximo de cada octeto é 255. O maior número binário de 8 bits é 11111111. Esses bits, da esquerda para direita, têm os valores decimais (pesos) 128, 64, 32, 16, 8, 4, 2 e 1. Somados, eles totalizam 255. Como as máquinas só entendem a linguagem Digital, bit 1 e bit 0, portanto binária, os campos do endereço ficam assim representados: 1º campo 2º campo 3º campo 4º campo xxxxxxxx . xxxxxxxx . xxxxxxxx . xxxxxxxx com o x (bit) podendo assumir valor 1 e 0, imaginemos o seguinte endereço IP. 11000000.10100000.00000011.00000001 Para a melhor compreensão ao ser humano, passou-se a representar o endereço IP através de notação decimal. Com isto é necessário converter-se o número binário em decimal. 6.3.2 Conversão binária para decimal Veja a seguir o valor decimal correspondente (peso) a cada Bit, segundo sua posição no Octeto. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 144 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Tabela 6.1 A posição dos bits num byte e seu peso em binário e decimal.1 No exemplo abaixo, multiplique o valor do Bit pelo seu correspondente decimal e some os resultados. 11010101 128+64+0+16+0+4+0+1= 213 Vamos analisar somente um octeto. X X X X X X X X como o X pode assumir dois valores (0 e 1), segundo sua posição no octeto (menos significativo da direita para a esquerda), teremos os seguintes valores decimais correspondentes a estas posições. 128 64 32 16 8 4 2 1 X X X X X X X X 27 26 25 24 23 22 21 20 Valores decimais (peso) Valores em binário Para converter o número binário para decimal faz-se o seguinte: Dado o número 1 1 0 0 0 0 0 0 correspondente. 128 64 32 16 8 4 2 1 1 1 0 0 0 0 0 0 multiplica-se o valor decimal da posição, pelo bit valores decimais referentes à posição do bit. Temos que: 0x1=0 0x2=0 0x4=0 0x8=0 0 x16= 0 0 x32= 0 1 x64= 64 1x128=128 Soma-se os valores encontrados. 192 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 145 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Portanto o número 192 decimal corresponde ao número 1 1 0 0 0 0 0 0 no sistema binário. Outro exemplo: 128 0 64 32 16 8 4 2 1 0 1 1 1 1 0 0 valores decimais referentes à posição do bit. 0 x 128 = 0 0 x 64 = 0 1 x 32 = 32 1 x 16 = 16 1x 8=8 1x 4=4 0x 2=0 0x 1=0 60 0 0 1 1 1 1 0 0 Portanto o número. 60 decimal corresponde ao número no sistema binário. Da mesma forma, porém no sentido inverso, procede-se para converter um número decimal em binário, por exemplo: O número 210 decimal será qual valor em binário? Sabendo-se os valores correspondentes de cada bit no octeto, segundo sua posição, podemos fazer o seguinte cálculo: 210 é um valor mais alto que o valor decimal do 8º bit do octeto, que é de 128, logo o nosso número binário, começando pelo 8º bit será: 1 x x x x x x x Continuando com nosso cálculo; 210-128= 82 que é maior que o valor decimal do 7º bit do octeto, que é 64, logo o nosso número binário terá também o 7º bit com o valor 1, ficando assim: 1 1 x x x x x x Continuando com nosso cálculo; 82-64= 18 que é menor que o valor decimal do 6º bit do octeto, que é 32, logo o nosso número binário terá o valor 0 para o 6º bit, ficando assim: 1 1 0 x x x x x Continuando com nosso cálculo; 18 é maior que o valor decimal do 5º bit do octeto, que é 16, logo o nosso número binário terá o valor 1 no 5º bit, ficando assim: Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 146 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 1 1 0 1 x x x x Continuando com nosso cálculo; 18-16= 2 que é o valor correspondente ao valor decimal do 2º bit do octeto, portanto, nosso número binário ficará assim: este número representa em binário, o valor 210 em decimal. 1 1 0 1 0 0 1 0 Outra forma de fazer a conversão de decimal para binário é dividindo o número decimal por 2 sucessivamente. Veja o exemplo: 210/2= 105 105/2= 52 52/2= 26 26/2= 13 13/2= 6 6/2= 3 3/2= 1 sobra sobra sobra sobra sobra sobra sobra 0 1 0 0 1 0 1 1 o número 1 ficou para ser dividido por 2, o que não é possível, portanto é anexado ao final do processo. Agora é só realizar a leitura do numero formado pelos restos de cada operação, no sentido de baixo para cima, ficando assim: que é o número binário correspondente ao número 210 1 1 0 1 0 0 1 0 decimal. Muito bem, uma vez relembrado os processos de conversão, vejamos como representamos o seguinte endereço IP. 11000000.10111111.00000011.00000001 192 . 191 . 3 . 1 Então 192.191.3.1 é o endereço IP que representa uma máquina ou host em uma determinada rede. Mas a que rede afinal este host pertence? 6.3.3 Determinando a Rede de um endereço IP No esquema do endereçamento IP foi estabelecido que: Parte dos octetos representa o host e a parte restante representa a rede a que este host pertence. Mas quem é quem neste esquema? Quem decide qual parte é rede e qual parte é host? Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 147 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Para solucionar este problema foi criada uma estrutura composta de 32 bits, também dividida em quatro campos separados por um ponto, que foi chamada de MÁSCARA. Como nesta máscara os bits podem assumir os valores 1 e 0, foi estabelecido que os campos que possuem seus bits com os valores em 1 representarão a Rede e os campos com os bits em 0 representarão os hosts. Veja o seguinte exemplo: 1º octeto 11111111 . 2º octeto 11111111 3º octeto 00000000 . Rede 255 . . 4º octeto 00000000 host 255 . 0 . 0 Outro exemplo: 11111111.11111111.11111111.00000000 rede ou 255.255.255.0 host 6.3.4 Aplicando a Máscara Para descobrir qual parte do endereço IP representa a rede e qual representa o host devemos aplicar a Máscara no endereço IP. Aplicar a Máscara significa realizar com o endereço IP dado e a Máscara, uma operação lógica AND, isto é multiplica-se um valor pelo outro. Por exemplo: 10.10.0.1 com Máscara 255.0.0.0 Convertendo para binário teremos: 00001010.00001010.00000000.00000001 11111111.00000000.00000000.00000000 endereço do host Máscara 00001010.00000000.00000000.00000000 Resultado da operação AND Convertendo para decimal teremos: Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 148 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 10.0.0.0 logo o endereço IP 10.10.0.1 pertence à rede 10.0.0.0 Outro exemplo: 192.168.10.5 com máscara 255.255.255.0 Convertendo para binário teremos: 11000000.10101000.00001010.00000101 11111111.11111111.11111111.00000000 endereço do host Máscara 11000000.10101000.00001010.00000000 Convertendo para decimal teremos: Resultando da operação AND 192.168.10.0 logo o endereço IP 192.168.10.5 pertence à rede 192.168.10.0 Desta forma, então o equipamento descobrirá a qual rede um determinado IP de host pertence. 6.3.5 Classes de Endereçamento IP Como é de nosso conhecimento, o endereço IP é composto de 32 bits, sendo que os mesmo podem assumir dois (2) valores (0 e 1), logo teremos um número máximo de endereços IP derivados do seguinte cálculo: 232= 4.294.967.296 de endereços IP possíveis. Figura 6.7 Classes A, B e C do IPv4.1 Verifique que cada classe comercial (A, B e C) divide os 4 bytes do IPv4 em duas partes: a da Rede (R - Network) e a do Host ou computador (H - Host): • • R (rede - network) que é o número de rede atribuído pelo ARIN; H (host) que é o número de host atribuído pelo administrador da mesma. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 149 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Para uma melhor organização na utilização destes endereços, eles foram divididos em Classes, segundo determinadas regras. Foram criadas as Classes A, B, C, D e E. A Classe D é usada para endereçamento Multicast e a Classe E foi reservada para uso futuro. Iremos nos focar somente nas Classes A, B e C que são as mais utilizadas. Tabela 6.2 Classes comerciais dos endereços IPv4.1 Foi definido então que a Classe A seria representada pela Máscara 255.0.0.0 e que o 1º octeto do endereço IP seria usado para representar as Redes Classe A, enquanto que os 2º, 3º e 4º octetos seriam usados para representar os hosts pertencentes às Redes Classe A Exemplo: 20.10.5.1 255.0.0.0 IP de host Máscara Classe A 20.0.0.0 Rede Classe A a que pertence o host 20.10.5.1 Outro exemplo: 100.0.1.10 255.0.0.0 IP de host Máscara Classe A 100.0.0.0 Rede Classe A a que pertence o host 100.0.1.10 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 150 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Se dispusermos do 1º octeto para endereçar Redes Classe A, teremos 28=256 possíveis redes Classe A, com 224=16.777.216 possíveis endereços para hosts em cada Rede. No entanto, devido a só utilizarmos 7 bits para definir as redes classe A e também devido às redes 0.x.x.x e 127.x.x.x serem reservadas, na prática só dispomos de 126 redes classe A (conforme veremos mais adiante). Foi definido que a Classe B seria representada pela Máscara 255.255.0.0 e que os 1º e 2º octetos seriam utilizados para endereçar as Redes Classe B, enquanto que os 3º e 4º octetos seriam utilizados para endereçar os hosts pertencentes a esta Classe. Por exemplo: 128.10.3.5 255.255.0.0 IP de host Máscara Classe B 128.10.0.0 Rede Classe B a que pertence o host 128.10.3.5 Outro exemplo: IP de host Máscara Classe B 150.0.1.1 255.255.0.0 150.0.0.0 Rede Classe B a que pertence o host 150.0.1.1 Da mesma forma que raciocinamos para a Classe A vale para Classe B, logo teremos: 2x8=16, então teremos 216=65.536 redes Classe B possíveis, com 216=65.536 endereços de hosts possíveis para cada rede Classe B. Foi definido que a Classe C seria representada pela Máscara 255.255.255.0 e que os 3 primeiros octetos seriam utilizados para endereçar as redes Classe C e que o último octeto seria utilizado para endereçar os hosts pertencentes a estas classes. Por exemplo: 200.100.50.5 255.255.255.0 IP de host Máscara Classe C 200.100.50.0 Rede Classe C a que pertence o host 200.100.50.5. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 151 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Outro exemplo: 196.10.1.10 255.255.255.0 IP de host Máscara Classe C 196.10.1.0 Rede Classe C a que pertence o host 196.10.1.10. Na mesma linha de raciocínio usado anteriormente teremos: 3x8= 24, então 224= 16.777.216 redes Classe C possíveis com 28= 256 possíveis endereços de hosts para cada rede Classe C. 6.3.6 Identificando a Classe de um endereço IP Como fazer para identificar se um determinado endereço IP pertence a uma rede Classe A, B ou C? Inicialmente qualquer bom estudante diria; “É só olhar a Máscara”. Correto? Não. Nem sempre esta resposta é verdadeira. Vejamos o seguinte exemplo: 10.0.3.5 com Máscara 255.255.255.0 Olhando a Máscara diríamos que o dado endereço IP pertence a uma rede Classe C, porém isto não é verdadeiro. Vejamos então porque não é correto definir a rede olhando somente para a Máscara. Quando foi criado o esquema de endereçamento IP baseado em Classes, definiramse as seguintes regras: Todo endereço IP que pertença a uma Classe A deve obrigatoriamente possuir no seu 1º octeto, o 8º bit, com o valor fixo em 0 (zero). Então representado o 1º octeto como: 0XXXXXXXX cálculos: sendo que X pode assumir os valores 0 ou 1, façamos os seguintes Se X = 0 o valor decimal do octeto será 0, não esqueça de que o 8º bit do 1º octeto será sempre 0 quando se tratar de rede Classe A. Vejamos então como ficará o octeto quando X = 1. 01111111 convertendo em decimal teremos o valor 127 logo; Redes Classe A possuem necessariamente os valores do seu 1º octeto compreendidos entre 0 e 127. No entanto a rede 0 e 127 são reservadas, ficando como classe A utilizadas apenas aquelas entre 1 e 126. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 152 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Exemplo: e 1.10.50.10 126.10.1.25 Para Classe B ficou definido que no 1º octeto o 8º bit teria valor fixo 1 e o 7º bit teria valor fixo 0 ficando assim; 10XXXXXX 10000000 De forma análoga, quando X = 0 teremos: Convertendo em decimal teremos o valor 128 Quando X = 1 teremos; 10111111 Convertendo em decimal teremos o valor 191 logo; Redes Classe B possuem necessariamente no seu 1º octeto valores compreendidos entre 128 e 191. Exemplo: e 128.0.10.1 191.10.250.20 Para Classe C ficou definido que no 1º octeto o 8º bit seria 1, o 7º bit seria 1 e o 6º bit seria 0 ficando assim: 110XXXXX 11000000 Analogamente teremos, quando X = 0; Convertendo para decimal teremos o valor 192 Quando X = 1 teremos: 11011111 Convertendo para decimal teremos o valor 223 logo; Redes Classe C possuem necessariamente no seu 1º octeto valores compreendidos entre 192 e 223. Exemplo: 192.50.20.10 e 223.10.10.1 Percebemos então que para definir se um endereço IP pertence a uma rede Classe A, B ou C devemos olhar única e exclusivamente para o 1º octeto do endereço dado. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 153 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP ndereços IP Especiais e Reservados 6.3.7 Endereços No nosso estudo feito acima, notamos que alguns endereços tais como o e 127 não apareceram em nenhuma classe. Isto se deve ao fato de que existem números IPs conhecidos como Especiais e Reservados. Figura 6.8 Endereços IP Pv4 especiais.1 Tabela 6.3 Endereços IP Pv4 privativos (reservados para uso na LAN). LAN 1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 154 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Sobre os endereços IP reservados para uso em redes privadas, precisamos fazer uma observação. São endereços não permitidos a trafegarem na rede mundial Internet, pois como são utilizados em redes privadas, é possível que 2 hosts possam estar usando o mesmo endereço IP, em redes distintas, o que é perfeitamente possível e autorizado, uma vez que as redes privadas são independentes. Porém, teremos problemas com uma situação semelhante se formos interligar duas redes privadas, pois, nesse caso, não poderemos ter 2 redes IP com o mesmo endereço de Rede, ou mesmo 2 hosts com o mesmo endereço IP. Devido a esta possível duplicidade de endereços IP o uso destes endereços privados não é permitido na Internet. 6.3.8 Exemplos de topologias de redes IP A seguir exibimos algumas topologias de redes utilizando o protocolo IP. Figura 6.9 Topologia de rede IP com acesso à Internet via Cable Modem. Observe na rede acima que o roteador e os três hosts estão numa mesma rede (o IP do roteador seria o default gateway para os três hosts). O Cable Modem está numa outra rede (da operadora). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 155 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 6.10 Topologia de rede IP com acesso à Internet dedicado.1 Na topologia anterior, o escritório central de uma empresa se interliga a Internet por um circuito dedicado. Se a empresa montar uma rede corporativa (Rede IP WAN), cada site deve possuir um endereçamento de rede IP próprio na LAN. Nesse caso, o roteador WAN de um site se ligará ao roteador da operadora através de endereços IP WAN. Figura 6.11 Topologia de rede IP com acesso à Internet via linha dedicada.1 Na topologia acima é usado o NAT (tradução de endereços privativos para públicos e vice-versa) entre a rede 192.168.100.0 (privada) e a rede pública (145.12.131.7). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 156 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 6.3.9 Endereços de Sub-Rede Se o endereçamento IP é baseado em classes, por que vemos endereços IPs de uma classe com Máscara de outra? Aqui precisamos fazer uma outra observação: O uso de endereçamento por classes gerou um desperdício de endereços IP. Vejamos o seguinte exemplo: Uma grande empresa possui uma única rede de computadores com 300 hosts interligados. A empresa solicita um endereço de rede capaz de suprir sua necessidade para acesso à Internet. Não é possível designar um endereço de rede Classe C, pois como sabemos uma Classe C disponibiliza para endereços de host o último octeto que permite 254 endereços válidos para hosts. Como a empresa necessita de 300 endereços IP há a necessidade de receber uma rede Classe B que disponibiliza 216 = 65.530 possíveis endereços para hosts. Veja que se a empresa necessita 300 endereços e a rede Classe B fornece 65.530 endereços, haverá um desperdício de 65.230 endereços que não poderão ser designados a nenhuma outra empresa ou cliente. Para minimizar este problema de desperdício, foi desenvolvida uma técnica que permite criar, a partir de um endereço de rede padrão, diversas sub-redes. Esta técnica ficou conhecida como CIDR, ou seja; “Roteamento Interdomínio sem Classes”. Neste esquema de endereçamento, a Máscara que era representada pelos 4 octetos, passou a ser representada pelo uso da barra (/) seguida de um número, que define a quantidade de 1s presentes na Máscara. Veja o seguinte exemplo: 192.168.10.1 255.255.255.0 Endereço IP com a Máscara no esquema de endereçamento baseado em Classe. Veja como fica a representação no esquema CIDR: 192.168.10.1/24 sendo que o número 24 representa o número de 1s presentes na Máscara. 6.3.10 Criando Sub-Redes Como então criar sub-redes a partir de um endereço de rede padrão? Vejamos o exemplo abaixo: Dado o endereço de rede 192.168.10.0, com máscara de 255.255.255.0, representado no CIDR ficará: Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 157 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 192.168.0/24 Convertendo a máscara para binário, teremos: 11111111.11111111.11111111.00000000 Então, para criarmos sub-redes a partir desta máscara, deveremos solicitar bits emprestados do 4º octeto que é reservado aos hosts, ficando assim: 11111111.11111111.11111111.11000000 representa a sub-rede representa os hosts Convertendo em decimal teremos: Portanto a representação da rede acima 255 . 255 . 255 . 192 poderá ser representada das seguintes formas: 192.168.10.0/26 ou 192.168.10.0 255.255.255.192 “Observação” Se usarmos 2 bits emprestados teremos 22 = 4 sub-redes. Se usarmos 3 bits emprestados teremos 23 = 8 sub-redes Se usarmos 4 bits emprestados teremos 24 = 16 sub-redes E assim sucessivamente, até o limite de 6 bits emprestados, pois precisamos deixar no mínimo 2 bits para serem usados para endereçar hosts. Voltando ao exemplo anterior. Como definimos os endereços das sub-redes e dos hosts pertencentes a cada sub-rede? Primeiramente, devemos nos lembrar dos valores decimais que cada bit representa, segundo sua posição no octeto. Veja o exemplo: 11111111.11111111.11111111.11000000 analisando somente o 4º octeto: 128 64 1 1 0 0 0 0 0 0 O bit menos significativo que foi emprestado é o 7º bit do octeto cujo valor decimal é 64, logo este valor é o número chave, neste caso. Para descobrirmos o endereço das sub-redes devemos agir assim: Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 158 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A 1ª sub-rede é conhecida como sub-net 0 (zero), que é a rede padrão de onde estarão sendo derivadas as outras sub-redes. No nosso exemplo 192.168.10.0/26 A 2ª sub-rede é obtida pela soma do número chave (64 no caso) pelo número da sub-rede anterior. A sub-rede anterior é: 192.168.10.0 logo 192.168.10.64 0+ 64 = 64 então a 2ª sub-rede fica: A 3ª sub-rede é obtida pela soma do número chave (64 no caso) pelo número da sub-rede anterior. A sub-rede anterior é: 192.168.10.64 logo 64+64 = 128 então a 3ª sub-rede fica: 192.168.10.128 A 4ª sub-rede é obtida pela soma do número chave (64 no caso) pelo número da sub-rede anterior. A sub-rede anterior é: 192.168.10.128 logo 128+64 = 192 então a 4ª sub-rede fica: 192.168.10.192 Resumindo teremos: Sub-rede 1ª 2ª 3ª 4ª número IP 192.168.10.0/26 192.168.10.64/26 192.168.10.128/26 192.168.10.192/26 Para descobrirmos os endereços IP dos hosts é só verificarmos o número da subrede e o número da próxima sub-rede. Os endereços IP dos hosts estão compreendidos entre estes valores. Veja o exemplo: 1ª 192.168.10.0 192.168.10.1 192.168.10.2 192.168.10.62 logo o 1º endereço válido para host desta sub-rede é: o 2º será; e assim sucessivamente até o último que será; e por que não 192.168.10.63? Porque o último endereço de host de qualquer sub-rede é um endereço especial conhecido como endereço de Broadcast (futuramente iremos comentar sobre este endereço especial). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 159 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 2ª 192.168.10.64 logo o 1º endereço válido para host desta sub-rede é: 192.168.10.65 o 2º será; 192.168.10.66 e assim sucessivamente até o último que será; 192.168.10.126 e por que não 192.168.10.127? Lembra do endereço de Broadcast? Então, nunca esquecer de que o último endereço será sempre o endereço especial Broadcast desta sub-rede. E assim sucessivamente para as outras sub-redes. Vejamos agora como proceder para descobrir se um endereço IP dado pertence a um host, a uma rede ou a uma sub-rede. Veja o seguinte exemplo: Dado o endereço IP 200.100.50.33/27 perguntamos se este é um endereço de host, rede ou sub-rede? Primeiramente devemos verificar a qual classe o endereço dado pertence. Segundo nossos estudos, verificando o 1º octeto descobrimos que o endereço dado pertence a uma Classe C . Relembrando. Classe C endereços do 1º octeto compreendidos entre; 192 e 223. Logo, 200 pertence a Classe C. Sendo assim, a máscara deste endereço deveria ser /24 e não /27, o que nos leva a concluir que foi solicitado 3 bits emprestados para formação de sub-redes. Correto? Corretíssimo. Muito bem. Definido então que o endereço citado é parte de uma sub-rede ou pode ser a própria sub-rede, derivada de uma rede Classe C. devemos nos concentrar na quantidade de bits emprestados. Veja a seguir o raciocínio: 11100000 Qual o valor decimal do bit menos significativo que foi emprestado? 32 portanto este é o número chave (neste caso). Utilizando a técnica para descobrir os números das sub-redes formadas teremos: (Consulte nosso livro Como Criar Sub-redes em Redes IP – Apêndice C) Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 160 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Sub-net 0 (zero) 2ª sub-rede 200.100.50.0 número chave + sub-rede anterior 200.100.50.32 Logo o endereço IP 200.100.50.33/27 é o 1º endereço válido de host para a subrede 200.100.50.32/27. Após a explicação do campo de endereço IP de origem, continuaremos com a análise dos demais campos do cabeçalho IP. Destination Address (Endereço de Destino): 32 bits. Informa o endereço de destino. “Todas as peculariedades verificadas para o endereço de origem, vistas acima, valem também para o endereço de destino”. O endereço de Destino será analisado pela camada de rede do dispositivo que o recebe, ou envia, com o objetivo de decidir para qual interface, deste dispositivo, o pacote deverá ser encaminhado para ser entregue ao dono do endereço IP de destino. De que forma então a camada de rede toma esta decisão? É o que veremos a seguir: Ao analisar o endereço IP de destino, a camada 3 consulta sua tabela de Rotas (todo equipamento que opera na camada 3 tem uma tabela de Rotas conseguida através de uma configuração manual, pelo administrador da rede ou através dos Protocolos de Roteamento, matéria a ser discutida a seguir neste capítulo) e aplica no endereço IP de destino todas as máscaras contidas na sua tabela de rotas. Caso haja uma correspondência entre o resultado desta aplicação com alguma rota contida na tabela, este pacote então será encaminhado para a interface associada à rota correspondente. Veja o exemplo abaixo: Supondo que a camada de rede analise o seguinte endereço de destino; 192.168.29.5 O equipamento que recebeu o endereço IP de destino consulta sua tabela de rotas e começa a fazer a aplicação de cada máscara contida na tabela para ver se há alguma correspondência. Veja uma suposta tabela de rotas deste dispositivo. Rota Rota Rota Rota 10.0.0.0 máscara 255.0.0.0 encaminha para interface 1 100.25.0.0 máscara 255.255.0.0 encaminha para interface 1 200.100.1.0 máscara 255.255.255.0 encaminha para interface 3 192.168.29.0 máscara 255.255.255.0 encaminha para interface 2 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 161 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP E assim poderá haver diversas rotas. Primeiramente a camada 3 do dispositivo aplica a 1ª máscara contida na tabela em cima do endereço IP de destino. No nosso exemplo; 192.168.29.5 aplicando a máscara 255.0.0.0 teremos o seguinte resultado: 192.0.0.0 não corresponde à rede 10.0.0.0 logo a camada 3 passa a aplicar a 2ª máscara de sua tabela; 192.168.29.5 aplicando a máscara 255.255.0.0 teremos o seguinte resultado: 192.168.0.0 não corresponde à rede 100.25.0.0 logo a camada 3 passa a aplicar 3ª máscara de sua tabela; 192.168.29.5 aplicando a máscara 255.255.255.0 teremos o seguinte resultado: 192.168.29.0 não corresponde à rede 200.100.1.0 logo a camada 3 passa a aplicar a 4ª máscara de sua tabela; 192.168.29.5 aplicando a máscara 255.255.255.0 teremos o seguinte resultado: 192.168.29.0 o que corresponde à rede 192.168.29.0 que está expressa na tabela de rotas, sendo então o pacote encaminhado para a interface 2, que é a interface associada a esta rota. Caso não haja uma correspondência entre o endereço analisado e as rotas contidas na tabela o pacote IP será descartado. Veja a figura a seguir. Figura 6.12 Topologia de rede IP utilizando sub-redes.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 162 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 6.3.11 Classificação dos endereços IP Podemos classificar os endereços IP como segue abaixo: Unicast são endereços correspondentes a um único host. Multicast são endereços correspondentes a um grupo de hosts. Broadcast são endereços correspondentes a todos os hosts pertencentes a uma rede ou sub-rede. Loopback são endereços usados para testes de interface ou gerenciamento. 6.3.12 Roteador O roteador é um equipamento que roda na camada 3 do modelo OSI e tem a finalidade de interconectar redes de computadores entre si. O roteador recebe um pacote IP por uma interface de entrada (normalmente LAN), analisa o endereço IP da rede de destino e procura uma saída (normalmente uma WAN) na tabela de roteamento. Veja as figuras a seguir. Figura 6.13 Roteador (Interface LAN e WAN).1 Figura 6.14 Roteador Cisco 1941 (Vista Traseira).31 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 163 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 6.4 IPv6 O IPv6 é um novo protocolo que roda na camada de rede do TCP/IP. Ele deve substituir o IPv4 nos próximos anos. Por isso, a importância do seu estudo. Esta seção é uma introdução ao estudo desse protocolo. 6.4.1 Introdução ao IPv6. Com a iminente exaustão do IPv4, torna-se urgente a atualização técnica dos profissionais da área de Tecnologia de Informação a respeito desse novo protocolo de interconexão de redes. Especialistas da área de infraestrutura de redes consideram que o IPv6 estará sendo adotado de forma mais efetiva no cenário da Internet a partir de 2014. Figura 6.15 Diminuição dos endereços IPv4 disponíveis.32 Como se pode notar no gráfico acima, a ARIN entregou o último bloco de IPv4 /8 em 2011. Alguns continentes, como o asiático, já está adotando o IPv6 devido ao alto consumo dos seus endereços em dispositivos móveis de comunicação (smartphone, tablets, etc.) e por não mais disporem de endereços do IPv4. 6.4.2 Comparação entre cabeçalhos do IPv4 e do IPv6 Relembrando, o IPv4 possui 32 bits de extensão e teóricos 2 elevado na 32 possibilidades de endereços IPs. IPs = 2 32 É importante uma rápida revisão nos campos do cabeçalho do protocolo IPv4 para percebermos as diferenças em relação ao cabeçalho do IPv6. Veja a seguir. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 164 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP IPv4.1 Figura 6.16 Cabeçalho IPv4 Note que no cabeçalho acima exibido, o campo do endereço de origem e o campo do endereço de destino tem um comprimento de 32 2 bits no IPv4, IPv4 conforme estudamos anteriormente. Recordando, o IPv4 está dividido conceitualmente em porção da rede e na porção de hosts (da mesma forma que a telefonia utiliza, como estrutura básica do endereço telefônico, o código de área e o número do telefone naquela área). Então, no IPv4, a partir da divisão dos 4 bytes do endereço IP em porção de rede e porção do host,, foi criado o conceito de classes A, B, C, D e E. A classe C é aquela utilizada mais comercialmente e a que ainda possui algum espaço ço de endereçamento disponível atualmente (algo em torno de 8% de classe C com endereçamento ainda disponível). Já o endereçamento no IPv6 possui um comprimento de 128 bits e teóricos 2 elevado na 128 endereços disponíveis. No IPv6 não existe mais o conceito conce de classes de endereços. O IPv6 trabalha no conceito de redes sem classes utilizando, portanto, a técnica CIDR de atribuição de endereços, conforme veremos adiante. No cabeçalho do IPv6 houve várias alterações que vamos detalhar a seguir. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 165 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP IPv6.17 Figura 6.17 Cabeçalho IPv6 Campos: Version (versão) = versão do protocolo IP. Versões 4 e 6 disponíveis e válidas. Class ou Traffic Class = Classe de Tráfego (antigo Type of Service no IPv4) = campo de 8 bits que determina a prioridade da classe de tráfego tr (QoS) a ser transmitido. Flow Label (rótulo de fluxo) = Campo que foi adicionado no IPv6 para controle de fluxo. Payload length (comprimento do payload) = comprimento da carga útil. Next Header (próximo cabeçalho) = antigo campo Protocol no IPv4. Identifica Identi o próximo protocolo, da camada superior, encapsulado no IPv6. Hop Limit (Limite de Hops) = antigo campo TTL (Time to Live) no IPv4. Determina o número máximo de hops pelos quais o pacote IPv6 irá passar. Source Address (Endereço IPv6 de Origem) = me mesmo smo campo do IPv4, mas estendido de 32 para 128 bits. Destination Address (Endereço IPv6 de Destino) = mesmo campo do IPv4, mas estendido de 32 para 128 bits. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 166 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 6.18 Cabeçalhos do IPv4 e IPv6.17 Observa-se que vários campos contidos no IPv4 foram excluídos no IPv6 (os que estão em vermelho na figura): • • • • • • • Header Length (comprimento do cabeçalho), também chamado de IHL; Identification (identificação); Flags; Fragment Offset (deslocamento do fragmento); Header Checksum (checagem do cabeçalho); Options (opções); Padding (enchimento). Nota-se então que o cabeçalho do IPv6 foi simplificado e os campos ligados às funções de fragmentação, aumento do cabeçalho (option) e checksum do cabeçalho foram eliminados. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 167 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 6.4.3 Melhorias no cabeçalho IPv6 • Retirada do campo Opções Opções: Substituído pelo campo extension header. header Resulta num comprimento fixo do cabeçalho IP IPv6 de 40 bytes. • Retirada do campo Checksum do cabeçalho: Resulta num processamento mais rápido. • Retirada da fragmentação nos nós intermediários: Resulta ta numa retransmissão do pacote IP mais rápida. 6.4.4 Cabeçalhos de extensão Outra mudança importante com o Ipv6 foi a criação do conceito de cabeçalhos de extensão. Os cabeçalhos de extensão localizam localizam-se se entre o cabeçalho Base (camada de Rede – Ipv6) e o cabeçalho da camada de Transporte. Veja na figura seguinte a inserção do cabeçalho de extensão. Figura 6.19 Cabeçalho de Extensão.17 De modo a tratar as opções, o IPv6 apresenta um esquema de módulos: a informação adicional é transmitida através dos cabeçalhos de extensão. Esse Es esquema fornece ao IPv6 a flexibilidade para transportar informações informaç relevantes de encaminhamento e das aplicações, bem como fornece mecanismos de segurança, fragmentação, qualidade de serviço e gestão de rede, com escalabilidade escalabilida ilimitada. Na medida em que esses módulos são opcionais, esse esquema ajuda também a reduzir o custo de processamento de pacotes IPv6. Os cabeçalhos de extensão são colocados entre o cabeçalho base do IPv6 e o cabeçalho do protocolo d da camada de e transporte, estando ligados entre si pelo campo Próximo Cabeçalho (Next Header) Header),, formando uma cadeia. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 168 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Os cabeçalhos de extensões no IPv6 podem ser encapsulados em três etapas; Cabeçalho IPv6 Próximo Cabeçalho = TCP TCP Header + dados Cabeçalho IPv6 Próximo Cabeçalho = Roteamento Cabeçalho Roteamento Próximo Cabeçalho = TCP Cabeçalho TCP + dados Cabeçalho IPv6 Próximo Cabeçalho = Roteamento Cabeçalho Roteamento Próximo Cabeçalho = Fragmento Cabeçalho Fragmento Próximo Cabeçalho = TCP Cabeçalho TCP + dados Figura 6.20 Cabeçalhos de Extensão (extension headers).17 Geralmente os cabeçalhos são processados apenas pelos nós n intermediários através do campo Endereço de Destino do IPv6, causando muito menos overhead do que no processamento de opções no IPv4. A única exceção é o header Options Hop-by-Hop O limite de Options de 40 bytes no IPv4 foi eliminado. No IPv6, o limite é o tamanho total do de pacote ou, em alguns casos, o Path MTU. Figura 6.21 Encapsulamento dos cabeçalhos de extensão.17 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 169 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Os Cabeçalhos (Headers) de extensão atualmente definidos são: Fragment, Hopby-Hop, Routing, Authentication, Encryption, Destination Options. • • • • • • • Hop-by-Hop.Usado para transportar informação opcional que tem de ser examinada por cada nó ao longo do caminho do pacote. Opções de Destino IPv6 (Destination Options Header). Usado para transportar informação opcional a ser analisada apenas no destino do pacote. Porém ele pode ser usado para listar dispositivos que devam examiná-la na rota de destino, além do dispositivo final. Nesse caso, ele aparece antes do cabeçalho de extensão de roteamento (como neste exemplo). Este cabeçalho pode aparecer duas vezes no pacote IPv6 (veja o último cabeçalho descrito abaixo). Roteamento (Routing Header). Usado por uma origem IPv6 para listar um ou mais nós intermediários que devem ser visitados até o pacote chegar ao destino. Fragmentação (Fragmentation Header). Usado para enviar módulos de dados maiores do que a Maximum Transmit Unit (MTU) de um caminho. Autenticação (Authentication Header). Usado para providenciar autenticação e garantia de integridade aos pacotes IPv6. Criptografia (IPv6 Encryption Header). Usado para providenciar confidencialidade e integridade através de uma chave de dados. Opções de Destino IPv6 (End-to-End Option Header). Usado para o transporte de informação opcional que apenas necessita de ser examinado pelo nó destino de um pacote. Este cabeçalho pode surgir duas vezes no mesmo datagrama. Não há uma quantidade fixa de cabeçalhos de extensão que podem ser anexados ao cabeçalho base, porém, caso existam múltiplos cabeçalhos de extensão no mesmo pacote, eles serão adicionados em série formando uma “cadeia de cabeçalhos”. 6.4.5 Fragmentação no IPv6 Agora no IPv6 as funções de fragmentação e remontagem do pacote ficam por conta dos usuários finais (ou aplicações), ou seja, a fragmentação e remontagem de pacotes no IPv6 é uma função fim a fim. Roteadores não fragmentam pacotes Se os pacotes forem muito grandes os roteadores enviam a mensagem ICMP “packet too big”. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 170 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Embora desencorajado, a extensão de cabeçalho Fragment pode ser usada para suportar protocolos das camadas superiores (aplicações) que ainda não realizam a operação de descoberta do Path MTU. Veja a explicação sobre os cabeçalhos de extensão na seção anterior. Next Header Reservado Fragment 00M Offset Identificação do Pacote Original Figura 6.22 Cabeçalho de Fragmentação.17 6.4.6 Estrutura do Endereçamento IPv6 O IPv6 está estruturado atualmente19 como dividido em duas porções: uma que identifica a rede e outra que identifica o host (ou interface ID). Cada uma delas possui 64 bits (RFC 6177). A primeira parte que identifica a rede é subdividida em parte de endereço unicast global (48 bits) ts) e na parte que identifica as sub-redes (16 bits). Após esses 64 bits iniciais (endereço endereço global + endereço de sub sub-redes), temos, finalmente, os 64 bits de Interface ID (similar ao Host do IPv4) ou equipamentos,, que nada mais é do que o número MAC da máquina, o que faz do IPv6 um protocolo de endereçamento direto. Como o IPv6 utiliza o CIDR, os números atribuídos para o Prefixo Global pode mudar para menos ou mais, dependendo da política de alocação de endereços endereço IPv6. A figura ilustrada abaixo é a alocação recomendada. Figura 6.23 Endereçamento IPv6.19 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 171 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP .4.7 Alocação de Endereço IPv6 6.4.7 Figura 6.24 Alocação de Endereçamento IPv6.18 O processo de alocação de endereços é realizado pela IANA e pelos Registros Regionais (RIRs), da seguinte forma (podendo alterar de região para região): região) • • • • IANA aloca o 2001::/12 para registros regionais Cada alocação de um registro regional é ::/23 Alocação de ISPs a partir dos registros regionais é um ::/36 (alocação imediata) ou ::/32 (alocação inicial) ou menor, com justificação. A política de alocação espera que um ISP aloque um prefixo ::/48 para cada cliente corporativo ou um prefixo ::/64 a /56 para clientes domésticos. 6.4.8 Sub-redes redes no IPv6 Sub-redes des são criadas nos últimos 16 bits do endereço de rede do IPv6. Figura 6.25 Sub-redes redes no IPv6.17 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 172 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Podemos perceber que o IPv6 mantém a estrutura básica do IPv4, dividindo-se em Endereço de Rede (primeiros 64 bits no total) e Endereço de Interface ID, similar ao Host no IPv4 (últimos 64 bits). Dessa forma o aprendizado realizado no IPv4 auxilia na compreensão do IPv6. Analisando a figura anterior, podemos realizar os seguintes cálculos com o endereçamento do IPv6: • • • • Com 128 bits o Ipv6 tem 340 x 1036 (undecilhões) de endereços disponíveis. Com 48 bits alocados para Endereço de Rede teremos 281 trilhões de redes Com 16 bits alocados para Endereço de Sub-Rede teremos 65.536 de subredes Com 64 bits alocados para Endereço de Equipamentos teremos 18 quintilhões (18 x 1018) de equipamentos. 6.4.9 Representação dos Endereços no IPv6 Embora o protocolo IPv6 traga diversas mudanças significativas em todas sua estrutura, as principais alterações estão relacionadas ao modo de endereçamento do novo protocolo. As principais mudanças: - Aumento do espaço de endereçamento; A sintaxe usada para representar os endereços. Se no IPv4 os endereços são de uma extensão de 32 bits, os quais são divididos em 4 grupos de 8 bits cada, separados por ``.´´ escritos com dígitos decimais. Ex.: 192.168.10.1 No IPv6, os endereços são de uma extensão de 128 bits, divididos em 8 grupos de 16 bits cada, separados Por ``:´´ escritos com dígitos hexadecimais. Ex.: 2001:abcd:0001:0000:12ef:0234:dfa1:0021 Fica evidente então que o profissional da área de infraestrutura de redes vai precisar conhecer bem os números hexadecimais e a conversão para binário e vice-versa. Os endereços no IPv6 podem ser representados das seguintes formas: Forma preferida: 1080:0:FF:0:8:800:200C:417A Forma comprimida: FF01:0:0:0:0:0:0:43 torna-se FF01::43 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 173 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Mapeado no IPv4: 0:0:0:0:0:FFFF:10.1.68.3 ou ::FFFF:10.1.68.3 A representação da MÁSCARA, que indica o prefixo, é feita como no CIDR. Exemplo: REDE HOST 2001:db8:3003:1234::1/48 significa 2001:db8:3003::/48 2001:db8:3003:1234::1/48 (1º. Host válido da rede) 6.4.10 Terminologia técnica do IPv6 Nó Roteador Host Link Neighbors Interface Endereço um módulo de protocolo que implemente o IPv6 um nó que retransmita pacotes IPv6 não explicitamente endereçado para ele qualquer nó que não é um roteador uma facilidade de comunicação ou mídia sobre qualquer nó que pode se comunicar na camada de enlace, isto é, a camada abaixo do IPv6 nós interligados no mesmo link (vizinhos) uma ligação de um nó para um link uma identificação do IPv6 para uma interface ou um conjunto de interfaces 6.4.11 O escopo do Endereçamento no IPv6 Os endereços são designados para interfaces (muda o conceito em relação ao modelo do IPv4). As interfaces “esperam” ter múltiplos endereços. Os endereços IPv6 têm o seguinte escopo (abrangência): Link Local Unique Local Global Figura 6.26 Hierarquia de Endereçamento IPv6.17 Os endereços IPv6 podem dividir uma rede corporativa em partes separadas da organização inteira, de maneira muito similar como as máscaras de sub-redes fazem no IPv4. Isso permite o controle e otimização do tráfego entre essas partes distintas Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 174 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP da rede. Os endereços de redes IPv6 unicast (que definem uma interface) são os seguintes: • Link-Local é um endereço gerado automaticamente para cada interface IPv6. É similar aos endereços APIPA no IPv4. Eles são utilizados para comunicação de equipamentos vizinhos (neighboors) num mesmo link. As informações de atualização de roteamento e descoberta de vizinhos utilizam o endereço link-local. Roteadores não irão retransmitir pacotes com um endereço Link-Local, dessa forma restringindo pacotes que utilizam esse endereço apenas para o link envolvido. • Unique-Local é o site da organização inteira ou parte de um site da organização inteira. Um roteador pode retransmitir pacotes de endereços unique local address para qualquer porção de um site da organização, mas não para fora da rede da organização (similar aos endereços privativos do IPv4). Esse é um endereço configurado manualmente. • Global address é o endereço Internet usado para identificar a rede local e é administrado pela IANA. É equivalente ao endereço público utilizado na Internet para o IPv4. Esse é um endereço configurado manualmente ou autoconfigurável (stateless ou stateful). 6.4.12 Tipos de endereços IPv6 Basicamente o IPv6 possui três tipos de endereços:18 Unicast Um endereço numa única interface Entrega para uma única interface Multicast Endereço de um conjunto de interfaces Entrega para todas as interfaces de um conjunto Anycast Endereço de um conjunto de interfaces Entrega para uma única interface no conjunto No IPv6 não existe o endereço de broadcast. 6.4.13 Conjunto de Endereços de Interface O IPv6 traz novo conceito em termos de variedades de interfaces e tipos de endereçamento. Seguem abaixo alguns exemplos desses endereços de interface: Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 175 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Loopback (designado apenas para uma única interface por nó) Link local (requerido para todas as interfaces) Unique local Auto-configured 6to4 (se o endereço público é um endereço disponível) Auto-configured IPv4 compatible (desencorajado operacionalmente) Solicited node Multicast (requerido para descoberta de vizinhos) All node multicast Global anonymous Global published 6.4.14 Tipos de Prefixo de Endereçamento Semelhante ao que ocorre com o prefixo do endereçamento no IPv4, o IPv6 possui prefixos definidos: Tabela 6.4 Prefixo do endereçamento IPv6.18 Tipo de endereçamento Compatível IPv4 Unicast Global Unicast Link Local Unicast Unique Local Multicast Prefixo Binário 0000...0 (96 bits zero) 001 1111 1111 10 1111 110 1111 1111 6.4.15 Roteamento no IPv6 O IPv6 utiliza o mesmo processo de “localize o prefixo mais longo” do roteamento do CIDR IPv4, usando, portanto, o endereço do destinatário do pacote para análise. No entanto, mudanças pontuais no roteamento existente no IPv4 foram realizadas no IPv6, para os protocolos manusearem endereços maiores: • • Unicast: OSPF, RIP-II, IS-IS, BGP4+, s Multicast: MOSPF, PIM, s O uso de cabeçalhos de extensão de roteamento (routing), com qualquer endereço anycast, permite o roteamento de pacotes através de redes pré- selecionadas. Ex.: para seleção de provedores, políticas, performance, etc. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 176 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 6.27 Cabeçalho de extensão de Roteamento.18 Percebe-se que o IPv6, de fato, é um novo protocolo da camada de rede do TCP/IP, com novos conceitos e funcionalidades. Nosso propósito nesta seção foi o de despertar a atenção para as novas funcionalidades do protocolo IPv6 e suas potencialidades na interconexão de redes. Vários aspectos precisam ser estudados em relação ao IPv6 como a questão de segurança no IPv6 e as técnicas de coexistência entre o IPv4 e o IPv6. Recomendamos o nosso curso on-line IPv6: Teoria e Prática17 (http://ademarfey.wordpress.com/2014/01/04/curso-on-line-ipv6-teoria-epratica/) para quem desejar aprofundar os conhecimentos nesse protocolo e se preparar para o futuro das redes IPv6. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 177 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 6.5 OUTROS PROTOCOLOS DA CAMADA DE REDE 6.5.1 ICMP Operando conjuntamente com o Protocolo IP temos o Protocolo ICMP que atua quando há necessidade de se transmitir mensagens de controle e erros. O ICMP (Internet Control Message Protocol - Protocolo de Controle de Mensagem Internet) é um protocolo de manutenção. Permite dois sistemas em uma rede IP compartilharem status e informação de erro. O utilitário ping usa pacotes de pedido de eco e de resposta de eco ICMP para determinar se um sistema de IP particular em uma rede está funcional. Por isso, a utilização de ping é útil para diagnosticar rede IP ou falhas de roteador. O Protocolo Internet de Controle de Mensagem (Internet Control Message Protocol ICMP) é um mecanismo para informar erros devido a problemas de entrega. É um serviço sem conexão por natureza. As mensagens de ICMP mais comuns são requisição de eco, resposta de eco, redirecionamento, tempo excedido e destino inalcançável. As mensagens de ICMP estão contidas dentro de datagramas IP. Isto assegura que a mensagem de ICMP poderá achar seu caminho ao host apropriado dentro da internet. Mensagens geradas pelo protocolo ICMP Como já vimos acima, o ICMP (Internet Control Message Protocol) é um protocolo da camada de rede, cuja função é produzir informações sobre erros no processamento do pacote na rede, gerando mensagens como: Destino inalcançável: quando o roteador é incapaz de enviar o pacote ao seu destino final porque o computador de origem solicitou um endereço não existente, ou, o roteador não possui uma rota de destino para o pacote, e então descarta o pacote original. Solicitação de eco: Originada pelo comando ping enviado por qualquer computador. É uma mensagem para testar a resposta de um nó através de uma interconexão de rede. Veja a seguir uma figura com a captura de uma mensagem ICMP. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 178 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 6.28 Solicitação de Eco. 1 Resposta de eco: As mensagens de eco de resposta indicam que o nó pode ser atingido com sucesso. Redirecionamento: Mensagem enviada pelo roteador para o computador de origem, indicando que existe um caminho mais eficiente de roteamento. Por exemplo, se ao usar um roteador como destino, o computador verifica se ele não serve como rota de tráfego, o ICMP envia uma mensagem de redirecionamento para o computador identificando a melhor opção de rota. O redirecionamento permite que as tabelas de roteamento permaneçam pequenas, porque é necessário conhecer o roteamento de apenas um roteador, mesmo que esse caminho não seja teoricamente o melhor. Tempo excedido: Mensagem enviada pelo roteador, quando o campo "tempo de duração" de um pacote IP atinge o limite de zero. O campo "tempo de duração" evita que os pacotes circulem continuamente em um hipotético loop da rede, fazendo com que o roteador simplesmente descarte o pacote original. Nota: Estas mensagens somente aparecem quando você encontra algum problema de rota e, portanto, não é muito comum de serem obtidas em capturas de pacotes bem-sucedidas com o Wireshark. Em geral, as correções dos pacotes com erros são feitas pelo TCP. 6.5.2 ARP Outro protocolo que atua na camada de rede é o ARP. O Protocolo de Resolução de Endereço (ARP) é um dos protocolos de manutenção que suporta o TCP/IP. Se dois sistemas estão se comunicando por uma rede TCP/IP, o sistema enviando o pacote tem que mapear o endereço IP do destino final ao endereço físico do destino final. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 179 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Um sistema baseado em IP irá transmitir em broadcast um pacote ARP sobre a rede local em um esforço para determinar o endereço de MAC do host de destino. A resposta será armazenada em memória cache (no cache do ARP) durante vários minutos. O ARP irá resolver apenas os endereços de MAC para hosts locais. As comunicações para hosts remotos são alcançadas pelo default gateway, ou algum outro roteador. É o endereço de MAC do roteador que seria resolvido nesta situação. Veja as figuras a seguir. Figura 6.29 Protocolo ARP para resolução de endereço local. 1 • a qualquer momento que um host tenta se comunicar com outro host, um pedido de ARP é iniciado • Quando o endereço foi determinado ser um endereço local o host de origem checa seu cache ARP (1) para o endereço de hardware requerido (endereço MAC) do host de destino • Se não está presente no cache, então o ARP constrói um pedido que é então transmitido em broadcast sobre a rede (2) Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 180 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • Cada host recebe o pedido de broadcast, e a menos que o pedido contenha seu próprio endereço IP, ele ignora o pedido (3) • O host apropriado reconhece seu próprio endereço (4), e responde para o host de origem (6). Ele então atualiza seu próprio cache com os detalhes do host de origem (5) • O host de origem recebe a resposta, e atualiza sua tabela cache (7), e a comunicação é estabelecida. Figura 6.30 Protocolo ARP para resolução de endereçamento Remoto. 1 • Quando um pedido para comunicação é iniciado, o endereço de IP é determinado ser remoto. • O host enviando (fonte) confere a tabela de roteamento local (1) para uma rota para o host de destino ou rede, e se mal sucedido determina o endereçamento IP do default gateway. • A fonte então examina o cache ARP (2) para o necessário mapeamento do endereço IP/ endereçamento MAC ao especificado gateway. • Se o mapeamento para o endereço do gateway não for localizado, então um pedido de ARP é transmitido em broadcast (3) para o endereço do default gateway, mas NÃO o endereço de destino do host remoto Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 181 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • Com sucesso, o roteador responderá (4) ao pedido devolvendo seu endereço de hardware. A fonte envia o pacote então para o default gateway entregar à rede remota e ao host de destino • No roteador, o IP determina se o destino é local ou remoto. Se local, usa o ARP para a resolução de endereço. Se remoto, confere sua tabela de roteamento (5) para um gateway apropriado para a rede remota. O pacote é remetido ao host de destino (6) • O host de destino recebe o pacote, e responde com um eco ICMP, usando sua tabela de roteamento local para determinar uma rota apropriada de volta para o host de origem. Cache ARP Quando o host originador recebe o endereço físico, o endereço IP e físico são armazenados localmente como uma entrada no cache do ARP. Todos os hosts mantêm um cache do ARP que inclui o seu próprio mapeamento do endereço IPendereço físico (MAC). O cache do ARP sempre é conferido para um mapeamento do endereço IP- endereço físico antes de iniciar uma transmissão em broadcast. Para o Windows 2000, por exemplo, as entradas do cache ARP expiram depois de 10 minutos. A vida potencial de uma entrada é de 10 minutos, embora se permanecer sem uso durante 2 minutos ou mais será removido do cache. 6.6 PROTOCOLOS DE ROTEAMENTO 6.6.1 Rotas Estáticas e Dinâmicas A definição das Rotas é muito importante no processo de encaminhamento dos Pacotes, sendo que a Rota é uma estrutura montada na Camada de Rede que disponibiliza aos dados um caminho da Origem ao Destino. Sem uma rota o pacote não será entregue. Existem dois tipos de rotas: • • Rota Estática Rota dinâmica Rota Estática é a rota definida através da configuração manual pelo administrador da rede. É uma rota que só pode ser modificada manualmente. Rota Dinâmica é a rota definida através de Protocolos de Roteamento. Chama-se Dinâmica porque pode mudar segundo propriedades do Protocolo que a definiu, não necessitando da atuação do administrador da rede. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 182 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP As rotas dinâmicas podem ser definidas por diversos protocolos de roteamento, os quais veremos a seguir. 6.6.2 Roteamento Dinâmico As principais vantagens do roteamento dinâmico são: Simplifica o gerenciamento da rede. • Viável em grandes ambientes de produção, com várias redes e ambientes diferentes. • As principais desvantagens do roteamento dinâmico são: Utiliza largura de banda da conexão para troca de informações sobre roteamento entre os roteadores. • Consome processamento da CPU do roteador. • Menor controle, o que resulta em menor segurança do ambiente. • O processo de roteamento dinâmico utiliza protocolos para encontrar e atualizar tabelas de roteamento de roteadores. Os quatro protocolos de roteamento mais usados são: RIP (Routing Information Protocol), IGRP (Interior Gateway Routing Protocol), EIGRP (Enhanced Interior Gateway Protocol) e OSPF (Open Shortest Path First). Os protocolos de roteamento utilizados em redes pertencem a duas categorias: IGP (Interior Gateway Protocol) e EGP (Exterior Gateway Protocol). Protocolos IGP são usados para troca de informações entre roteadores pertencentes a um mesmo Sistema Autônomo, que é uma coleção de redes sob um mesmo domínio administrativo. Já protocolos EGP são utilizados para comunicação entre roteadores pertencentes a Sistemas Autônomos diferentes. 6.6.3 Distâncias Administrativas Distâncias Administrativas são métricas utilizadas para classificar a confiabilidade das informações recebidas pelo roteador através de seus vizinhos. A Distância Administrativa é um número inteiro entre 0 (zero) e 255, sendo que quanto menor mais confiável é a rota. Ou seja, 0 (zero) é a rota mais confiável e 255 indica uma rota inalcançável. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 183 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Na tabela a seguir, veremos os principais protocolos de roteamento e a distância administrativa padrão utilizada pelos mesmos. Tabela 6.5 Distância administrativa dos protocolos de roteamento.1 Origem da Rota Distâncias administrativas padrão Rota estática 1 Rotas Sumarizadas EIGRP 5 BGP 20 EIGRP Interno ao Sistema Autônomo 90 IGRP 100 OSPF 110 IS-IS 115 RIP 120 EGP 140 ODR (On Demand Routing) 160 EIGRP Externo ao Sistema Autônomo 170 BGP Interno 200 Desconhecido 255 A distância administrativa é usada para decidir qual rota a usar quando há mais que uma rota disponível na tabela para um mesmo destino. 6.6.4 Classe dos Protocolos de Roteamento Os protocolos de roteamento podem ser de três classes: Vetor distância – Protocolos de roteamento classificados nessa categoria utilizam a distância a uma rede para definição do melhor caminho. A distância é medida de acordo com o número de roteadores que o pacote percorre até o destino (hop). Exemplo: RIP e IGRP. • Estado do link – Protocolos de roteamento classificados nessa categoria utilizam diversos fatores do link, como banda disponível, processamento, por exemplo, para identificar o melhor caminho. Exemplo: OSPF e IS-IS. • Híbrido – Protocolos de roteamento classificados nessa categoria possuem características de ambas as classes anteriores. Exemplo: EIGRP. • Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 184 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 6.6.5 Vetor distância O algoritmo de roteamento vetor distância envia as tabelas de roteamento completa para os roteadores vizinhos através de todas as interfaces ativas, que então combinam as tabelas recebidas com as tabelas que já possuem e completam o mapa da rede. Quando existem caminhos alternativos para o mesmo destino o fator da Distância Administrativa é levado em consideração pelo protocolo de roteamento. 6.6.5.1 RIP (Router Information Protocol) O RIP, no entanto, utiliza apenas a contagem de saltos como métrica para a escolha do melhor caminho. Se houver dois caminhos com o mesmo custo, ou seja, a mesma quantidade de saltos para o destino, será realizado o round-robin load balance, ou seja, distribuirá a carga igualmente entre os links. Essa técnica pode ser aplicada até um máximo de 6 conexões com o mesmo custo. E o que acontece quando ocorre uma mudança na topologia? Como o algoritmo realiza o envio da tabela de tempos em tempos, haverá um tempo para a convergência de todo o ambiente. No entanto, durante o período de convergência, nenhuma informação é transmitida, o que torna o tempo um fator crítico no processo. Um dos maiores problemas do RIP é seu intervalo de convergência demasiado alto. Durante o período de convergência, podem ocorrer inconsistências nas tabelas de roteamento, ocasionando loops de roteamento. Para minimizar o efeito, algumas técnicas são adotadas, como descritas a seguir: Contagem máxima de saltos (Maximum Hop Count) – uma maneira simples de evitar que sejam criadas referências infinitas na tabela de roteamento, é a definição de um limite para o número de saltos. No caso do RIP, o limite é até 15 saltos. Uma rede disponível apenas 16 saltos depois será considerada inacessível. • Split Horizon – solução em que o roteador que receber uma atualização da tabela de roteamento por uma interface não irá propagar o resultado pela mesma interface. Esse recurso é ativado por padrão em roteadores. • Envenenamento do Roteador (Route Poisoning) – faz com que no momento que um roteador detectar que seu vizinho possui uma tabela de roteamento com problemas, ele propaga para a rede que o vizinho estará a 16 saltos de distância, ou seja, inalcançável. • Holddowns – previne que uma mensagem regular de atualização reative uma rota que, na verdade, encontra-se inalcançável por algum motivo. Faz com que mudanças repentinas sejam efetivadas apenas de algum tempo. • Envia a tabela de roteamento completa para todas as interfaces a cada 30 segundos. • Utiliza apenas a contagem de saltos como métrica. • Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 185 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Limita a contagem máxima a 15 saltos consecutivos, ou seja, não é viável em redes de grande porte ou com muitos roteadores. • O RIP versão 1 utiliza roteamento classful. • Para que o protocolo de roteamento mantenha-se ativo e disponível é necessário o uso de diversas técnicas para auxiliar em sua performance. O RIP utiliza a seguinte especificação: Route Update Timer – Intervalo em que as atualizações são enviadas. O RIP envia a cada 30 segundos. • Route Invalid Timer – Intervalo de tempo que deve ocorrer antes de um roteador determinar que uma rota tornou-se inválida. Essa conclusão será atingida se não ocorrerem atualizações sobre uma determinada rota até o fim do período. O RIP normalmente mantém um tempo de 180 segundos. • Route Holddown Timer – Intervalo de tempo que o roteador irá reter as atualizações entres de efetivá-las. O RIP normalmente mantém por um tempo de 180 segundos. • Route Flush Timer – Intervalo de tempo para remover uma rota que se tornou inválida. Antes de eliminar uma rota de sua tabela de roteamento, o roteador avisa aos vizinhos que determinada rota encontra-se inativa. O RIP normalmente espera por 240 segundos. • 6.6.6 Estado do Link O algoritmo de roteador estado de link envia as tabelas de roteamento de acordo com modificações no ambiente, sendo que as atualizações são incrementais. 6.6.6.1 OSPF (Open Shortest Path First) Não sendo o único exemplo de protocolo baseado em estado de link, o OSPF contém as seguintes características: Protocolo aberto e padronizado pelo IETF, o que permite que diversas plataformas diferentes utilizem o mesmo protocolo de roteamento. • Utiliza o algoritmo SPF (Shortest Path First, também conhecido como Dijkstra) para definição do melhor caminho, de acordo com um custo. Cada interface de saída do roteador possui um custo associado, sendo que o custo total de um caminho é a soma dos custos de todas as interfaces que serão ultrapassadas no caminho. • Transmissão das atualizações da tabela de roteamento através de Multicasts, e não broadcasts, como o RIPv1. • Atualização incremental da tabela de roteamento, o que economiza a banda entre os vizinhos. • Divisão da rede em áreas. • Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 186 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Com relação a áreas, alguns conceitos são importantes terem sido definidos, mesmo que seja abordado o uso de apenas uma única área. A área zero sempre deve existir em redes com mais de uma área. Essa área é conhecida como “backbone area”. • Todas as outras áreas devem sempre se conectar a área zero. • Áreas que não estão diretamente conectadas à área zero devem criar o artifício de virtuais-links. • Roteadores da área zero devem possuir uma capacidade de processamento elevada devido o alto tráfego que será intenso nessa área. • 6.6.7 Algoritmo de protocolos de roteamento híbrido Alguns algoritmos de roteamento Híbridos combinam o que existem de melhor entre os dois mundos: algoritmos vetor distância e algoritmos estado do link. Sendo assim, o comportamento pode ser algo único para cada protocolo, já que cada um irá escolher o que é mais adequado ao seu propósito. 6.6.7.1 EIGRP (Enhanced Interior Gateway Routing Protocol) O EIGRP é um protocolo do tipo classless, com algumas características de vetor distância como de estado de link. A Cisco algumas vezes refere-se ao protocolo como sendo vetor distância, vetor distância híbrido ou apenas híbrido. O EIGRP possui as seguintes características: Suporte a VLSM, CIDR e sumarização de rotas. • Suporte a autenticação. • Limite de 224 saltos. • Suporta múltiplos protocolos de cada de rede (IPX, AppleTalk) além do IP. • Suporte a sumarização e redes não contíguas. • Utiliza o algoritmo DUAL (Diffusion Update Algorithm) para inibir a formação de loops. • Troca de pacotes “hello” em tempos periódicos, de maneira a identificar caso algum vizinho pare de responder. • Troca de atualizações incrementais quando ocorrem mudanças na rede. • Envio da tabela completa de roteamento apenas quando é detectado um novo vizinho. • Apenas troca informações com vizinhos que pertençam ao mesmo sistema autônomo. • Provê balanceamento de carga em até quatro conexões desiguais (por padrão) ou seis ao máximo. • Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 187 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O EIGRP também se utiliza de um protocolo proprietário chamado RTP (Reliable Transport Protocol) para gerência do fluxo de informações entre os roteadores. Quando o EIGRP não recebe uma resposta de algum dos vizinhos depois de um multicast, o RTP transforma o “hello” em unicast apenas para o vizinho indisponível. Se após 16 tentativas ainda não houver resposta, o vizinho é tido como “dead” (morto). 6.6.7.2 Diffusion Update Algorithm O EIGRP utiliza o DUAL (Diffusion Update Algorithm) para selecionar e manter em sua tabela de roteamento as melhores rotas para as redes. As principais funções desse algoritmo são: Determinação de rotas alternativas quando possível. Essa rota alternativa chamase “feasible succesor”, que é armazenada na tabela topológica. Um “succesor” é a rota primária, armazenada em ambas as tabelas; topológica e de roteamento. • Suporte VLSM e CIDR. • Identificação dinâmica de rotas através de perguntas aos vizinhos. • Procura por rotas alternativas caso ele desconheça. • O EIGRP com o algoritmo DUAL oferece um dos melhores tempos de convergência da rede. Suas vantagens para tornar isso possível são: O EIGRP armazena todas as rotas que são recebidas pelos vizinhos, de maneira a construir uma tabela topológica em busca da melhor rota alternativa. • Caso o EIGRP não possua uma rota alternativa para um destino, o protocolo irá realizar um processo de “query” (consulta) nos vizinhos, os questionando sobre a existência de alguma rota. • O EIGRP, como mencionado, mantém três tabelas em um roteador: Tabela dos Vizinhos (Neighbor table) – informações sobre os roteadores vizinhos. • Tabela Topológica (Topology table) – informações sobre as rotas propagadas por cada vizinho. • Tabela de Roteamento (Routing table) – rotas que estão efetivamente em uso no momento. • 6.7 Resumo A camada de rede provê o roteamento dos pacotes e o gerenciamento dos endereços lógicos. A unidade de dados padrão dos protocolos da camada de rede (PDU) é o datagrama ou pacote. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 188 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A camada de rede trabalha com os endereços lógicos (também chamados de endereços IP) que devem ser utilizados de acordo com as normas definidas para o endereçamento IP (classes, endereços públicos x privados, etc.). Os protocolos da camada de rede são o IP (dominante) e o IPX (em desuso). O IP na atualidade é utilizado na rede LAN, na interligação de Redes e em algumas redes WAN. O endereço IP mais utilizado no momento é a versão IPv4 (com mais de 25 anos de existência) mas o IPv6 deve estar com utilização considerável em 2014, devido ao término das faixas de endereçamento IPv4 disponíveis para entrega a provedores de acesso à Internet e empresas que possuem sistema autônomo de domínio de redes. Consulte sobre nosso curso on-line IPv6 para se atualizar no assunto (http://ademarfey.wordpress.com/2014/01/04/curso-on-line-ipv6-teoria-epratica/ ). Os principais equipamentos que trabalham na camada de rede são: roteadores e switch de nível 3. Nosso curso de Configuração de Roteadores e Switches Nível Básico aprofunda o estudo teórico/prático sobre o TCP/IP e Roteadores e Switches (http://ademarfey.wordpress.com/2014/01/04/curso-on-line-configuracao-deroteadores-e-switches-nivel-basico/). Termina aqui este capítulo que tratou da camada de rede do modelo TCP/IP e modelo OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 189 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CAPÍTULO 7 CAMADA DE TRANSPORTE INTRODUÇÃO Este capítulo trata da camada de transporte, responsável pela troca de dados entre duas máquinas finais. É uma das camadas mais antigas do TCP/IP e possui funções semelhantes no modelo OSI. 7.1 CONCEITOS BÁSICOS DA CAMADA DE TRANSPORTE A camada de transporte é a primeira camada no modelo OSI e TCP/IP que se preocupa a com a comunicação fim a fim, ou seja, com a comunicação entre a máquina de origem e de destino. Ela utiliza os serviços das camadas inferiores para atingir sua finalidade. A camada de transporte está diretamente relacionada com a camada de aplicação, pois no modelo TCP/IP, ambas são camadas vizinhas. Vide a figura a seguir, Figura 7.1 .1 A camada de Transporte no modelo TCP/IP (TCP e UDP).1 Para estabelecer a comunicação entre o host de origem e de destino a camada de transporte estabelece um uma conexão ou circuito virtual entre ambos. Chamamos de virtual, pois ele não existe fisicamente. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 190 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Convém lembrar que a camada de rede, através do protocolo IP, não garante o mesmo caminho para a passagem dos pacotes e nem mesmo a entrega deles. A PDU da camada de transporte é o segmento. Segmento significa que a informação vinda da camada de aplicação é dividida ou então segmentada em diversas partes, quando necessário. Os protocolos que rodam na camada de transporte podem trabalhar de duas formas: • • Orientado a conexão Não orientado a conexão Os protocolos da camada de transporte orientados a conexão estabelecem o circuito virtual e controlam o tráfego de dados entre origem e destino. Esses protocolos são mais sofisticados e mais complexos de implementar. Um exemplo de protocolo orientado a conexão é o protocolo TCP. Os protocolos da camada de transporte não orientados a conexão não controlam o tráfego de dados entre origem e destino, sendo, portanto protocolos mais simples de implementar. Um exemplo de protocolo não orientado a conexão é o protocolo UDP. 7.2 Modelo cliente-servidor. Para entendermos o funcionamento dos protocolos da camada de transporte é importante revisar o conceito do modelo de aplicações chamado de o modelo cliente-servidor. O nome cliente/servidor surgiu quando a comunicação em rede começou a ocorrer fora do domínio dos grandes mainframes, ou seja, quando surgiram as redes locais, com a consequente descentralização do controle das redes de computadores para as pontas (máquinas nas redes locais). Quando as pessoas tentam acessar informações através de um dispositivo, seja ele um PC, laptop, PDA, telefone celular, smartphone, tablet ou qualquer outro dispositivo conectado a uma rede, os dados normalmente não podem ser armazenados fisicamente nesse dispositivo. Portanto, a solicitação de acesso a informação deve ser feita para o dispositivo onde os dados residem. No modelo cliente/servidor, o dispositivo que pede a informação é chamado de cliente (client) e o dispositivo que responde ao pedido é chamado de servidor (server). Processos no modelo cliente e servidor são considerados como rodando na camada de aplicação. O cliente inicia o intercâmbio, solicitando os dados do servidor, que responde através do envio de um ou mais fluxos de dados para o Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 191 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP cliente. Os protocolos da camada de aplicação descrevem o formato das solicitações e respostas entre clientes e servidores. Além da transferência de dados propriamente dita, essa troca pode também exigir informação de controle, tais como a autenticação do usuário e a identificação de um arquivo de dados a ser transferido. Um exemplo de uma rede cliente/servidor é um ambiente corporativo, onde os funcionários usam um servidor de e-mail da empresa para enviar, receber e armazenar e-mail. O cliente de e-mail em um computador do empregado da empresa emite uma solicitação para o servidor de e-mail para envio de qualquer email não lido. O servidor responde enviando o(s) e-mail(s) solicitado(s) para o cliente. Embora os dados sejam tipicamente descritos como fluindo a partir do servidor para o cliente, alguns dados sempre fluem a partir do cliente para o servidor. O fluxo de dados pode ser igual em ambas as direções, ou pode mesmo ser maior na direção que vai do cliente para o servidor. Por exemplo, um cliente pode transferir um arquivo para o servidor para fins de armazenamento. A transferência de dados de um cliente para um servidor é conhecido como um upload e dados de um servidor para um cliente como um download. 7.2.1 Servidores Em um contexto de rede geral, qualquer dispositivo que responde a solicitações dos aplicativos clientes está funcionando como um servidor. Um servidor é geralmente um computador que contém informações que sejam compartilhadas com muitos sistemas clientes. Por exemplo, páginas web, documentos, bases de dados, imagens, vídeos e arquivos de áudio podem ser armazenados em um servidor e entregues a clientes solicitantes. Em outros casos, como uma impressora de rede, o servidor de impressão oferece os pedidos de impressão do cliente para a impressora especificada. Normalmente o servidor é uma máquina com grande capacidade de processamento e armazenamento de dados. Isso ocorre porque ela terá que gerenciar uma grande quantidade de solicitações por parte de clientes e dar conta do recado. Diferentes tipos de aplicações de servidor podem ter diferentes requisitos para o acesso do cliente. Alguns servidores podem exigir autenticação de informações da conta do usuário para verificar se o usuário tem permissão para acessar os dados solicitados ou para usar uma operação particular. Esses servidores contam com uma lista central de contas de usuário e as autorizações ou permissões, (tanto para o acesso e as operações de dados) atribuído a cada usuário. Ao usar um cliente de FTP, por exemplo, se você pedir para fazer o upload dos dados para o servidor de Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 192 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP FTP, você pode ter permissão para gravar em sua pasta individual, mas não para ler outros arquivos no site. Em uma rede cliente/servidor, o servidor executa um serviço, ou processo, às vezes chamado de daemon servidor. A maioria dos serviços, daemons normalmente são executados em segundo plano e não estão sob o controle direto de um usuário final. Os daemons são descritos como estando em "listening", ou seja, em espera (em escuta) por uma requisição de um cliente, porque eles são programados para responder sempre que o servidor recebe uma requisição para o serviço prestado pelo daemon. Quando um daemon "ouve" uma requisição de um cliente, ele troca mensagens apropriadas com o cliente, como exigido pelo Protocolo, e começa a enviar os dados solicitados para o cliente no formato adequado. 7.2.2 Cliente Qualquer dispositivo de uma rede IP que envie requisições para um servidor pode ser considerado um dispositivo cliente. Esses dispositivos possuem um software de aplicação em rede que requisita e recebe informações do servidor através de uma rede de telecomunicações. Na atualidade, a Internet é a rede de telecomunicações mais utilizada e os dispositivos móveis ganham destaque e ampliam as aplicações que utilizam o modelo cliente/servidor. Os protocolos da camada de transporte criam uma conexão virtual entre essa máquina cliente e uma máquina servidor (por isso do sistema ser chamado de cliente/servidor ou client/server. Podemos dizer que parte do sofware aplicativo reside no cliente (menor parte) e parte (maior parte) no servidor. Os navegadores web são exemplos de software cliente, permitindo que usuários acessem informações disponíveis em servidores na Internet. 7.2.3 Principais protocolos da camada de transporte Neste capítulo vamos estudar dois dos mais importantes e comuns protocolos da camada de transporte do modelo TCP/IP. São eles: • User Datagrama Protocol (UDP) • Transport Control Protocol (TCP) Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 193 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Dizemos que o UDP presta um serviço não confiável (pois não garante a entrega dos pacotes, nem o seu ordenamento e sem controle de fluxo). Dizemos que o TCP presta um serviço confiável (pois garante a entrega dos pacotes, o seu ordenamento e o controle de fluxo). Construídos na funcionalidade provida pelo Protocolo Internet (IP), os protocolos de transporte entregam dados para as aplicações que rodam nos hosts IP. Isso é feito usando as portas como será descrito a seguir, em “Portas e Sockets”. Os protocolos de transporte podem prover funcionalidades adicionais, tais como o controle de congestionamento, entrega segura de dados, supressão de dados duplicados e o controle de fluxo (a maioria dessas funcionalidades providas apenas pelo TCP). Como todas as demais camadas do modelo TCP/IP, a camada de transporte possui o seu próprio endereçamento: as portas lógicas das aplicações. Iremos discutir o conceito das portas lógicas em seguida. 7.3 PORTAS E SOCKETS Como na camada de transporte o tipo de endereçamento utilizado tem a ver com as portas lógicas em uso por um processo aplicativo, é importante introduzirmos os conceitos de portas e socket. A utilização da porta e do socket4 permite determinar qual processo local ligado a um determinado host de fato se comunica com qual processo e com qual host remoto, usando qual protocolo. Vejamos o seguinte:4 • Para cada processo aplicativo que roda num computador é designado um número identificador de processo (ID do processo), o qual é diferente a cada vez que o processo é iniciado. • Os identificadores de processos diferem entre plataformas de diferentes sistemas operacionais, consequentemente, eles não são uniformes. • Um processo no servidor pode ter múltiplas conexões a múltiplos clientes ao mesmo tempo, consequentemente, os identificadores de conexões simples devem ser diferentes. Os conceitos de portas e sockets possibilitam um modo uniforme e exclusivo para identificar as conexões, os programas e os hosts que estão usando tais conexões, independente dos identificadores de processos específicos. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 194 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.3.1 Portas Os números de portas identificam o aplicativo a partir do qual os dados foram transmitidos e recebidos. Como mencionamos acima, a camada de transporte usa números de porta para diferenciar entre várias aplicações que podem precisar de serviços de comunicação. Portanto, há uma associação entre os números de porta e as diferentes aplicações rodando num servidor ou num cliente. Cada processo que deseja se comunicar com outro processo identifica-se4 para o suíte de protocolos TCP/IP por uma ou mais portas. Uma porta é um número de 16 bits (de 0 a 65535), usado pelo protocolo fim a fim (host-a-host) para identificar para qual protocolo de nível mais alto ou programa de aplicação (processo) tem que entregar as mensagens entrantes. Existem três tipos de portas: • Portas bem conhecidas As portas bem conhecidas4 pertencem a servidores com aplicações padronizadas, por exemplo, o Telnet usa a porta 23. A faixa de números de portas bem conhecidas fica entre 0 e 1023 (antes de 1992, a faixas de portas entre 256 e 1023 era usada para servidores específicos usando o Unix, ou seja, as portas bem conhecidas originalmente estavam na faixa entre o e 255). A porta 0 (zero) é reservada, tanto para o TCP como para o UDP, não podendo ser utilizada para aplicações comuns (RFC 6335). Os números de portas bem conhecidas são tipicamente ímpares, porque sistemas mais antigos usavam o conceito de porta como consistindo de um par de portas ímpares/pares para operações duplex. Atualmente, normalmente, a maioria das aplicações só requer a identificação com o uso de um número de porta. Porém, existem exceções, como o antigo protocolo BOOTP (“protocolo Bootstrap”) que usa duas: 67 e 68 e a aplicação de FTP que também usa duas: 20 e 21. O bootstrap protocol (BOOTP) é um protocolo para configuração de host desenvolvido antes do DHCP. O DHCP trouxe vantagens sobre o BOOTP, resolvendo limitações específicas do serviço de configuração de host do BOOTP. A RFC 951 define o antigo protocolo BOOTP. As portas bem conhecidas são controladas e nomeadas pela Internet Assigned Number Authority (IANA) e na maioria dos sistemas só podem ser usadas através de Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 195 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP processos de sistema ou através de programas executados por usuários privilegiados. O argumento para se usar as portas bem conhecidas é permitir aos clientes poderem achar servidores sem necessidade de informações adicionais de configuração. Alguns exemplos de portas bem conhecidas são apresentados a seguir: • • • • • • • • FTP (porta 21 TCP) Telnet (porta 23 TCP) SMTP email (porta 25 TCP) POP3 email (porta 110 TCP) DNS (porta 53TCP ou UDP) TFTP (porta 69 UDP) SNMP (porta 161 UDP) RIP (porta 520 UDP) As portas bem conhecidas foram definidas na RFC 1700. • Portas registradas As portas registradas são aquelas compreendidas entre os números 1024 e 49151 (RFC 6335). Elas são designadas pelo IANA e em muitos sistemas podem ser utilizadas por aplicações ou programas executados por usuários. O IANA registra o uso dessas portas como uma conveniência para a comunidade da Internet. As portas registradas podem ser usadas tanto pelo TCP como pelo UDP. Alguns exemplos de portas registradas são apresentados a seguir: • • • • Chamada em conferência (porta 1167 TCP) Microsoft SQL Server (porta 1433 TCP) Protocolo de Tunelamento L2TP (porta 1701 TCP) Protocolo de Tunelamento PPTP (porta 1723 TCP) As portas registradas entre 1024 e 5000 também são chamadas de forma talvez inapropriada (RFC 6335) como portas efêmeras. • Portas dinâmicas As portas dinâmicas são também referidas como privadas ou efêmeras e estão compreendidas entre os números 49152 a 65535 (nunca designadas pelo IANA, segundo a RFC 6335). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 196 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Os softwares clientes4 não precisam de números de portas bem conhecidas porque são eles que iniciam a comunicação com os servidores, sendo que o número da porta que eles estão usando está contido no datagrama UDP (ou no segmento do TCP) enviado ao servidor. A cada processo cliente iniciado é alocado um número de porta, pelo próprio aplicativo ou pelo sistema operacional (SO) no host em que ele está rodando. Um software cliente pode usar qualquer número alocado a ele, portanto a combinação <protocolo de transporte, endereço IP, número de porta> é única. Veremos em seguida que a essa associação dá-se o nome de Socket. Figura 7.2 O uso de portas dinâmica e bem conhecida.1 As portas dinâmicas não são controladas pela IANA e podem ser usadas através de programas usuais desenvolvidos pelos usuários na maioria dos sistemas aplicativos. Quando duas aplicações diferentes4 tentam usar o mesmo número de porta em um host, a confusão é evitada programando essas aplicações para solicitar uma determinada porta disponível ao TCP/IP. Como esse número de porta é dinamicamente nomeado, ele pode variar de uma aplicação para a próxima. Normalmente, um servidor usará ou o protocolo TCP ou o UDP, mas há exceções. Por exemplo, servidores de nomes de domínio (DNS) usam ambos os protocolos, a porta 53 UDP e a porta 53 TCP. O protocolo LDAP também utiliza o UDP e o TCP na porta 389. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 197 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.3.2 Sockets Como já explicado, a maioria dos interprocessos de comunicação na Internet usam o modelo cliente servidor (client server model). Esses termos referem-se aos dois processos que irão se comunicar entre si, nos pontos finais da rede, ou seja, nos hosts finais. Como os computadores atuais são multitarefas e multiprocessamento, o processo cliente precisa de alguma forma identificar qual processo ele está iniciando e com qual processo no servidor ele irá se comunicar. Para essa identificação, os conceitos de portas lógicas, socket e API são utilizados. Explicamos o conceito de porta, vamos agora detalhar um pouco o conceito de Socket e API. Sockets podem ser definidos como pontos finais de comunicação entre processos aplicativos rodando, portanto, nas máquinas finais. O socket é uma maneira encontrada para um processo aplicativo “falar” com outro processo aplicativo num outro computador. Do ponto de vista do programador de aplicação, o socket é uma maneira de “falar” com outros processos aplicativos em outro computador usando descritores de arquivos padrão, num determinado sistema operacional (Unix, Linux, Windows, etc.). O socket surgiu no sistema operacional Unix, onde cada ação de I/O (entrada e saída) é feita lendo ou escrevendo num descritor de arquivo. Um descritor de arquivo é um número inteiro associado a um arquivo aberto que pode representar uma conexão de rede (nosso caso), um terminal, ou algo nesse sentido. O Socket também pode ser entendido como uma interface entre a camada de aplicação e a camada de transporte. Podemos imaginar o socket como uma “nova camada” na pilha TCP/IP, como exibido na figura a seguir. Figura 7.3 Camada de Socket (imaginária) na pilha TCP/IP.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 198 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A “camada de socket” faria o interfaceamento entre a camada de aplicação (que interage com o aplicativo propriamente dito) e com a camada de rede (que interage com a infraestrutura física da rede). Por outro lado, a interface que um aplicativo usa quando interage com o software de protocolo da camada de transporte é conhecida como Interface de Programação de Aplicativos (em inglês, Application Program Interface, API). Uma API define um conjunto de operações que um aplicativo pode executar quando interage com o software de protocolo de comunicação da camada de transporte. Podemos dizer também que a API determina um conjunto de funcionalidades que está disponível a um aplicativo, ou para o programador de aplicações que está desenvolvendo esse aplicativo. Em outras palavras, o acesso às funcionalidades de uma API pode determinar o nível de dificuldade de se criar um programa aplicativo. A interface de Socket é uma de várias interfaces de programação de aplicativos (APIs)4 para os protocolos de comunicação. Projetado para ser uma interface de programa de comunicação genérica, a API foi introduzida primeiramente pelo sistema operacional BSD 4.2 (Berkeley Software Distribuition). Embora não tenha sido padronizada, se tornou um padrão de indústria de facto. Outras APIs que podem ser citadas são a WINAPI do SO Windows da Microsoft e a X/Open Tranport Interface (XTI) desenvolvida pela AT&T (tradicional empresa fabricante de equipamentos de telecomunicações). Quando analisarmos a API do UDP e do TCP entraremos em maiores detalhes sobre a API. Cada socket baseado na aplicação se identifica com um número de porta exclusivo (número sem igual ou único). Vamos considerar as seguintes terminologias: • Um socket4 é um tipo especial de gerenciador de arquivo, o qual é usado por um processo de requisição de serviços de rede pelo sistema operacional. • Um endereço de socket possui três identificadores: <protocolo, endereço local, processo local>. Por exemplo, no suíte TCP/IP: <tcp, 193.44.234.3, 12345> • Uma conversação4 é o link de comunicação entre dois processos. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 199 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • Uma associação4 possui 5 identificadores que especificam completamente os dois processos aos quais pertencem uma conexão: <protocolo, endereço local, processo local, endereço remoto, processo remoto> No suíte TCP/IP, o exemplo seguinte poderia ser uma associação válida: <tcp, 193.44.234.3, 1500, 193.44.234.5, 21> • Uma meia-associação4 podem ser ambos os exemplos abaixo: <protocolo, endereço local, processo local> ou <protocolo, endereço remoto, processo remoto> Ou seja, uma meia-associação especifica cada metade de uma associação ou conexão. • A meia-associação também é chamada de socket ou um endereço de transporte. Quer dizer, um socket é um ponto final para a comunicação que pode ser nomeado e endereçado numa rede. Dois processos se comunicam por sockets TCP. O modelo de socket provê um processo com uma conexão de stream de bytes full-duplex para o outro processo. A aplicação não tem necessidade de se preocupar com a administração desse fluxo; essas facilidades são providas pelo TCP. O TCP usa o mesmo princípio de porta do UDP para prover multiplexação. Como o UDP, o TCP usa portas bem conhecidas e dinâmicas (efêmeras). Cada lado de uma conexão TCP tem um socket que pode ser identificado pelos três indicadores <TCP, endereço IP, número de porta>. Se dois processos estiverem se comunicando via TCP, eles têm uma conexão lógica que é exclusivamente identificável pelos dois sockets envolvidos, quer dizer, pela combinação <TCP, endereço IP local, porta local, endereço IP remoto, porta remota>. Processos de servidor podem administrar conversações múltiplas por uma única porta. Os números de portas no lado de cliente são dinamicamente nomeados pelo sistema operacional quando um serviço é pedido, ou seja, um processo aplicativo é iniciado. Porém, os números de portas para servidores de aplicações bem conhecidas são pré-nomeadas pelo IANA e normalmente não são mudadas. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 200 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Um socket é o ponto final (endpoint) para uma comunicação de rede. Designando o endereço IP do Host de destino, o tipo de serviço (TCP ou UDP) e a porta a ser usada, nós criamos um socket. Existem dois tipos de socket mais usados, stream sockets e datagram sockets. O socket stream trata a comunicação como um fluxo contínuo de caracteres, enquanto o socket datagrama tem que ler a mensagem inteira de cada vez. O socket stream usa o protocolo TCP (Transmission Control Protocol), para controlar a transmissão do fluxo de caracteres (fluxo de bytes), pois ele é confiável, pois é um protocolo orientado a fluxo de bytes. Por outro lado, o socket datagrama usa o protocolo UDP (User Datagram Protocol), o qual não é confiável (não garante a entrega do datagrama) e é orientado a mensagem (não controla o fluxo de bytes). Existe um terceiro tipo de socket, chamado de raw socket16, o qual permite os protocolos da camada de aplicação acessarem o protocolo IP diretamente, sem ter que usar o TCP ou UDP. Resumindo: um socket funciona como um ponto final de comunicação para a rede de computadores. Uma aplicação cria um socket stream ou socket datagrama especificando três itens: o endereço IP de um host, o protocolo que presta um tipo de serviço na camada de transporte (TCP para o serviço orientado a conexão e UDP para serviço não orientado a conexão) e a porta da aplicação que está usando. Portanto, 2 sockets, um para cada ponto final da conexão, formam um caminho de comunicação bidirecional. Por outro lado, para o socket tipo raw, a aplicação precisa especificar o payload inteiro do protocolo IP, pois a camada de transporte não é envolvida na transação. A seguir vamos estudar os dois tipos de protocolos citados, ou seja, o UDP e o TCP. 7.4 USER DATAGRAM PROTOCOL (UDP) O UDP é um protocolo da camada de transporte do modelo TCP/IP que trabalha no modo não orientado a conexão, não provendo confiabilidade ao protocolo IP. O UDP (User Datagram Protocol) é um protocolo com status de padrão, descrito pela RFC 768. Na prática, quase toda a implementação de aplicações TCP/IP que se destinam a transferir pequenas unidades de dados ou aquelas que podem perder uma pequena quantidade de dados (como streaming de multimídia, consulta de dados não críticos ou VoIP) incluirá o UDP. As principais características do protocolo UDP são: • • Não orientado a conexão Baixo overhead cabeçalho enxuto Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 201 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • • • Não controla o fluxo de dados Não garante a entrega dos segmentos (datagramas) Transmissão do segmento (datagrama) mais rápida O UDP provê um mecanismo para uma aplicação enviar um datagrama para outra. A camada do UDP pode ser considerada como sendo extremamente enxuta e, por conseguinte, tem baixo overhead, mas exige que a aplicação assuma a responsabilidade pela recuperação de erro e demais controles necessários. O UDP4 é basicamente uma interface de aplicação para o IP. Não adiciona nenhuma confiabilidade, controle de fluxo, ou recuperação de erro para o IP. Simplesmente serve como um multiplexador/demultiplexador para enviar e receber datagramas, usando portas para direcionar datagramas, como mostrado na figura a seguir. Processo 1 Porta a Processo 3 Processo 2 Porta b .......... Porta z Multiplexação de Portas UDP IP Figura 7.4 Multiplexação baseada em portas UDP sobre o IP.16 Observe que estamos usando o termo “datagrama” ao invés de segmento, pelo fato de o UDP não conferir confiabilidade na transferência dessa unidade de dados padrão. No entanto, lembre-se que, oficialmente, datagrama é a PDU do protocolo IP. A IBM4 associa o termo datagrama ao UDP e o termo segmento ao TCP (este último considerado por nós o termo padrão para a PDU da camada de transporte). Aplicações enviando datagramas para um host necessitam identificar um destino mais específico do que o endereço IP, pois os datagramas normalmente são dirigidos para certos processos aplicativos e não para o sistema como um todo. O UDP provê esse endereçamento único usando as portas. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 202 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.4.1 Formato do datagrama UDP Cada datagrama UDP é enviado encapsulado num único datagrama IP. Embora o datagrama IP possa ser fragmentado durante a transmissão, a implementação IP no receptor irá remontá-lo antes de apresentá-lo à camada do UDP. Todas as implementações IP devem aceitar4 datagramas de 576 bytes, o que significa que para o tamanho máximo do cabeçalho IP de 60 bytes, um datagrama UDP de 516 bytes é aceitável em todas as implementações. Muitas implementações vão aceitar datagramas maiores, mas isso não é garantido. O datagrama UDP tem um cabeçalho de 8 bytes que é exibido na figura abaixo. Figura 7.5 Formato do Datagrama UDP.1 Onde: • Porta de origem: Indica a porta do processo enviador. É a porta para as quais as respostas deveriam ser endereçadas. • Porta de destino: Especifica a porta do processo de destino no host de destino. • Comprimento: O comprimento (em bytes) desse datagrama do usuário, incluindo o cabeçalho. • Checksum: Um campo opcional de 16 bits que consiste no complemento de um da soma do pseudocabeçalho IP, do cabeçalho UDP e dos dados do UDP. Quando não usado, este campo deve ficar zerado.21 Na figura a seguir vemos o pseudocabeçalho IP, que estende o checksum para incluir o datagrama IP original (não fragmentado). Figura 7.6 Pseudo Cabeçalho IP do UDP.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 203 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP origem endereço IP de O pseudocabeçalho IP contém os campos endereço IP de origem, destino e protocolo do cabeçalho do IP, mais o campo comprimento do datagrama UDP. 7.4.2 .2 Interface de programa programação de aplicativos do UDP Uma interface de programação de aplicativos (API) provê serviços para que as aplicações possam usar um endereço IP e uma porta num host de origem para iniciar e aceitar conexão para ou de um endereço IP e uma porta específica de um host de destino, além de per permitir mitir transmitir e receber dados e terminar uma conexão. A interface de programação de aplicativos4 (API) oferecida pelo UDP é descrita na RFC 768. Ela provê: • A criação de novas portas para a recepção de dados. • A operação de recepção que entrega os byt bytes es de dados e uma indicação da porta de origem e do endereço IP de origem. • A operação de transmissão de dados que tem, como parâmetros, os dados, as portas e endereços IP de origem e de destino. Figura 7.7 Exemplo da API para o UDP e TCP TCP, segundo a Microsoft.16 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 204 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Podemos dizer também que os sockets permitem o envio de mensagens entre dois pontos finais (ou seja, envio de mensagens entre dois sockets nos hosts finais). Figura 7.8 Troca de mensagem entre sockets (diagrama simplificado).23 O processo aplicativo utiliza as diretivas da API (instruções básicas para envio e recepção das mensagens). Veja abaixo algumas diretivas utilizadas via socket. Figura 7.9 Troca de mensagem entre sockets (diretivas da API).23 Os sockets podem ser usados para outras finalidades além de interconexões de redes usando o UDP (ou o TCP).23 Por exemplo, os sockets podem ser usados para comunicações entre componentes em nível de sistema operacional, como dispositivos de entrada e saída (I/O) e drivers de dispositivos (interfaces entre o SO e o hardware de um computador). O modo como essa interface deveria ser implementada foi deixado para a definição de cada desenvolvedor.4 Lembre-se que o UDP e o IP não proveem entrega garantida, controle de fluxo ou recuperação de erro, assim esses itens devem ser providos pela aplicação. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 205 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.4.3 Aplicações padronizadas que usam o protocolo UDP Algumas aplicações padronizadas que usam o UDP incluem: • • • • • • • • Aplicação de dados multimídia (Streaming multimídia - dados) Aplicação de Voz sobre IP (VoIP - dados) Protocolo de roteamento dinâmico (RIP - Routing Protocol) Protocolo de Transferência de Arquivo Trivial (TFTP – Trivial Files Transfer Protocol) Servidor do Sistema de Nomes de Domínio (DNS – Domain Name System) Chamada de Procedimento Remoto (RPC – Remote Procedure Call), usado pelo Sistema de Arquivo de Rede (NFS – Network File System) Protocolo de Gerenciamento Simples de Rede (SNMP – Simple Network Management Protocol) Protocolo Leve de Acesso a Diretório (LDAP – Light Directory Acess Protocol) Observa-se nas aplicações citadas que o ponto de interesse no uso do protocolo UDP é a rapidez na transferência do segmento (datagrama) e não no controle dos dados transmitidos. Nesses casos, o controle dos segmentos transmitidos via UDP, normalmente fica sob responsabilidade da aplicação propriamente dita. 7.5 PROTOCOLO DE CONTROLE DE TRANSMISSÃO (TCP) O TCP é um protocolo da camada de transporte do modelo TCP/IP que trabalha no modo orientado a conexão, provendo confiabilidade ao protocolo IP. O TCP (Transmission Control Protocol) é um protocolo com status de padrão, descrito pela RFC 793. Na prática, toda implementação de aplicações TCP/IP que tenha necessidade de confiabilidade4 na troca de dados incluirá o TCP. O TCP provê consideravelmente mais facilidades para as aplicações do que o UDP, especialmente a recuperação de erro, o controle de fluxo e a confiabilidade. O TCP é um protocolo orientado a conexão, diferente do UDP que é sem conexão. A maioria dos protocolos de aplicação de usuário, como o Telnet e FTP, usam o TCP. Veja a seguir a figura representando a comunicação entre dois processos aplicativos via o protocolo da camada de transporte TCP. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 206 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Processo 1 Processo 2 ..... Porta m ....... TCP ....... Porta n Conexões TCP confiáveis ........ TCP IP IP Datagramas IP não confiáveis Figura 7.10 Conexões do TCP transportados por datagramas IP.4 Os dois processos se comunicam entre si via uma conexão TCP (Comunicação Interprocessos - IPC), como mostrado na figura anterior. 7.5.1 Conceitos do TCP Como observado anteriormente, o propósito primário do TCP é prover uma circuito lógico (virtual) seguro ou serviço de conexão entre pares de processos. Não assume confiança nos protocolos de baixo nível (como o IP), assim o TCP tem que se garantir por si mesmo. O TCP pode ser caracterizado pelas seguintes facilidades providas para as aplicações que o usam:4 • Transferência de Stream de Dados: Do ponto de vista da aplicação, o TCP transfere um fluxo contíguo de bytes pela rede. A aplicação não tem que se preocupar em dividir os dados em blocos básicos ou datagramas. O TCP faz isto agrupando os bytes em segmentos TCP que são passados ao IP para a transmissão Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 207 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP ao destino. Além disso, o próprio TCP decide como segmentar os dados e ele pode remeter os dados conforme a sua própria conveniência. Às vezes, uma aplicação precisa estar segura de que todos os dados passados ao TCP foram transmitidos de fato ao destino. Por isso, uma função “push” está definida. Ela irá empurrar (transmitir) todos os segmentos restantes ainda armazenados para o host de destino. A função de término de conexão normal também empurra os dados para o destino. • Confiabilidade: O TCP nomeia um número de sequência a cada byte transmitido e espera um reconhecimento positivo (ACK) do TCP receptor. Se o ACK não for recebido dentro de um intervalo de tempo, os dados são retransmitidos. Como os dados são retransmitidos em blocos (segmentos TCP), só o número de sequência do primeiro byte de dados no segmento é enviado ao host de destino. O TCP receptor usa o número de sequência para rearranjar os segmentos quando eles chegam fora de ordem e eliminar segmentos duplicados. • Controle de fluxo: O TCP receptor, ao mandar de volta um ACK para o remetente, também indica ao remetente o número de bytes que pode receber além do último segmento TCP recebido, sem causar sobrecarga ou estouro (overflow) em seus buffers internos. Isso é enviado no ACK, na forma do número de sequência mais alto que ele pode receber sem problemas. Esse mecanismo é também chamado de um mecanismo de janela, e nós o discutiremos em maiores detalhe mais tarde neste capítulo. 7.11 Controle de fluxo via TCP.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 208 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Na figura anterior, vemos que os dois hosts enviam e confirmam os dados para podem transmitir novos segmentos, segundo regras estabelecidas no início da conexão, conforme veremos adiante • Multiplexação: Obtido pelo uso de portas, da mesma maneira que com o UDP, sobre uma conexão IP. 7.12 Multiplexação de conexões TCP sobre uma conexão IP.1 No receptor, o processo contrário irá ocorrer, ou seja, a demultiplexação. 7.13 Demultiplexação de conexões TCP sobre uma conexão IP.1 • Conexões lógicas: Os mecanismos de confiabilidade e de controle de fluxo descrito acima requerem que o TCP inicialize e mantenha certo status das informações para cada fluxo de dados. A combinação desse status, incluindo, sockets, número de sequência e tamanho da janela, é chamado de conexão lógica. Cada conexão é identificada exclusivamente pelo par de sockets usado pelos processos transmissores e receptores. • Full-Duplex: O TCP provê fluxos de dados simultâneos em ambas as direções. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 209 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.5.2 Formato do segmento TCP Como qualquer PDU de outras camadas, a PDU do protocolo TCP possui o cabeçalho com os campos de controle que ditam o que deve ser feito com os dados transportados. Como o TCP possui muitas funcionalidades, o que ocorre é que ele possui vários campos para poder implementá-las e controlar o processo de troca de segmentos. O formato do segmento no TCP é mostrado como segue. Figura 7.14 Formato do Segmento TCP.1 Na figura acima podemos verificar a PDU do protocolo TCP, consistindo do cabeçalho mais a parte de dados. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 210 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Normalmente o cabeçalho utiliza as 5 primeiras linhas, ou seja, possui 20 bytes. Em determinadas situações o cabeçalho TCP pode ser expandido (assim como ocorre com o cabeçalho do protocolo IP), usando-se o campo Opções do TCP. Vamos detalhar o nome e função dos campos do cabeçalho do TCP: • Porta de origem (Source Port.): O número da porta de origem de 16 bits, usado pelo receptor para responder. • Porta de destino (Destination Port.): O número da porta de destino de 16 bits. • Número de sequência (Sequence Number): O número de sequência do primeiro byte de dados neste segmento. Se o bit de controle SYN está setado (1), o número de sequência é o número inicial de sequência (n) e o primeiro byte de dados é n+1. • Número de reconhecimento (Acknowledgment Number): Se o bit de controle ACK está setado (1), este campo contém o valor do próximo número de sequência que o receptor está esperando receber. • Deslocamento dos Dados (Data Offset): O número de palavras de 32 bits no cabeçalho TCP. Indica onde os dados começam. • Reservado: Seis bits reservados para uso futuro; deve ser zero. • FLAGs: 6 campos de 1 bit cada, com os seguintes significados: • URG: Indica que o campo de ponteiro urgente é significante neste segmento. • ACK: Indica que o campo de reconhecimento é significante neste segmento. • PSH: Função PUSH (empurre). Prioriza o envio dos dados na transmissão (envie com prioridade para a outra ponta) e recepção (envie os dados com prioridade para a camada de aplicação).22 • RST: Reseta a conexão. • SYN: Sincroniza os números de sequência. Inicie uma conexão. • FIN: Sem mais dados do remetente. Finaliza a conexão. • Janela (Window): Usado em segmentos ACK. Especifica o número de bytes de dados, começando com aquele indicado no campo de número de reconhecimento, que o remetente desse segmento está disposto a aceitar. • Checksum: Um campo de 16 bits que consiste no complemento de um da soma de todas as palavras de 16 bits do pseudo cabeçalho IP, do cabeçalho TCP e do campo de dados do TCP. Enquanto calculando o checksum, o próprio campo de checksum é considerado zero. No TCP, O pseudocabeçalho IP possui o mesmo conceito usado pelo UDP21 e é usado para calcular o checksum, incluindo campos do cabeçalho IP original, possuindo o seguinte formato: Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 211 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Endereço IP de Origem Endereço IP de Destino Zero Protocolo Comprimento TCP Figura 7.15 Pseudo Cabeçalho do TCP.1 7.5.3 Comparação entre os protocolos UDP e o TCP Pelo estudo dos dois principais protocolos da camada de transporte, o UDP e o TCP, podemos resumir as principais características e funcionalidades de cada um deles, podendo ser verificada as suas principais diferenças. Verifique na tabela a seguir. Tabela 7.1 Diferenças funcionais entre os protocolos UDP e TCP.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 212 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.5.4 Controle de fluxo pelo TCP O TCP é dito um protocolo confiável, porque garante a entrega dos segmentos ordenados no destino, realizando o chamado controle de erro através da retransmissão dos segmentos quando necessário. Para realizar a tarefa do controle de fluxo, ele utiliza o chamado mecanismo do tamanho de janela. Esse mecanismo também é chamado de janela deslizante (porque muda o valorr do tamanho da janela conforme a situação em que o host se encontra em termos de poder de processamento e armazenamento das informações que estão sendo trocadas, ou seja, os fluxos de bytes). Figura 7.16 Aplicativos trocando dados via TCP.25 É útil pensarmos ensarmos como o processo de transmissão de segmentos ocorre via TCP. O TCP, ao executar o controle de fluxo faz uso de buffers de memória nos hosts finais tanto para armazenar os bytes a transmitir (vindos dos processos aplicativos) quanto os bytes recebidos dos (que deverão ser enviados para os processos aplicativos). Na figura acima vemos esses buffers de transmissão e de recepção. O processamento desses buffers exige e consome muitos recursos de computação das máquinas envolvidas. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 213 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Após a conexão ser estabelecida (Three-way handshaking) entre os dois hosts finais, temos as seguintes parâmetros definidos (valores dos campos do cabeçalho do TCP): • • • Número de sequência Número de reconhecimento Tamanho de janela Número de sequência Número de reconhecimento Tamanho da janela Figura 7.17 Cabeçalho do TCP com os campos do controle de fluxo.1 Ou seja, os dados serão enviados de um host para o outro seguindo os campos com os parâmetros citados definidos. Os dados serão armazenados nos buffers de transmissão (send buffer) e de recepção (recv buffer). À medida que os segmentos são confirmados e posteriormente remontados (caso tenha ocorrido a segmentação) e entregues para a camada de aplicação e daí até o aplicativo final. O tamanho de janela de um host é justamente a capacidade de armazenagem dos dados e de processamento desses dados que um determinado host possui. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 214 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Como essa capacidade de armazenamento e de processamento pode sofrer variações em função de sobrecarga de processamento da máquina, o mecanismo de controle de janela é dinâmico, ou seja, os hosts podem aumentar ou diminuir a janela do TCP. Vamos verificar agora detalhes deste mecanismo. 7.5.4.1 O princípio da janela Figura 7.18 TCP e o princípio da janela (adaptado).4 Para simplificação das explicações, vamos considerar que o protocolo de transporte está controlando o mecanismo de janela e realizando o controle do fluxo através do envio e recebimento de pacotes (depois veremos que na realidade o controle é feito pelo número de bytes transmitidos e recebidos). Um protocolo da camada de transporte simples4 poderia usar o seguinte princípio: envie um pacote (segmento) e então espere por um reconhecimento do receptor antes de enviar o próximo pacote. Se o ACK não for recebido dentro de um certo tempo, retransmita o pacote. Veja a figura anterior para mais detalhes. Embora este mecanismo assegure confiabilidade, ele só usa uma parte da largura da banda disponível na rede, pois o transmissor ficará ocioso enquanto não receber a confirmação do receptor (ACK = reconhecimento). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 215 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Agora, considere um protocolo onde o remetente agrupa seus pacotes para serem transmitidos, como na figura seguinte e usa as seguintes regras: • O remetente pode enviar todos os pacotes dentro da janela sem receber um ACK, mas tem que disparar um temporizador para cada um deles. • O receptor tem que reconhecer cada pacote recebido, indicando o número de sequência do último pacote bem recebido. • O remetente desloca a janela em cada ACK recebido. Figura 7.19 Pacotes TCP (segmentos) e o tamanho da janela.4 Vemos na figura acima que a janela é composta por 5 pacotes, portanto, o remetente pode transmitir pacotes 1 a 5 sem esperar por qualquer reconhecimento por parte do receptor. Cabe lembrar que a negociação envolvendo o tamanho de janela é feita no estabelecimento da conexão virtual entre o transmissor e receptor. Na mesma figura, podemos observar que o transmissor não poderia enviar os pacotes 6, 7, 8, 9 e superiores, enquanto não chegar o reconhecimento por parte do receptor. Porém, na media em que chegar o reconhecimento de pacotes por parte do receptor o transmissor pode avançar a janela, em função dos pacotes reconhecidos. Por isso esse mecanismo é chamado de janela deslizante, conforme veremos a seguir. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 216 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 7.20 TCP e o princípio de Janela (adaptado).4 No momento em que o remetente recebe o ACK 1 (reconhecimento para o pacote 1), ele tem permissão para deslocar sua janela de um pacote, e, a partir desse momento, pode também transmitir o pacote 6. Imagine alguns casos especiais4, a partir do envio dos 5 pacotes originais: • Pacote 2 se perde: O remetente não receberá o ACK 2, assim sua janela vai permanecer na posição 1 (como na figura anterior). Na realidade, como o receptor não recebeu o pacote 2, reconhecerá os pacotes 3, 4, e 5 com um ACK 1, pois o pacote 1 foi o último recebido em sequência. No lado remetente, eventualmente um estouro de tempo (timeout) acontecerá para o pacote 2 e o mesmo será retransmitido. Note que a recepção desse pacote pelo receptor vai gerar um ACK 5, pois que ele recebeu agora com sucesso todos os pacotes de 1 a 5, e a janela do remetente deslocará quatro posições ao receber este ACK 5. Figura 7.21 TCP e o princípio de Janela.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 217 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • Pacote 2 chegou, mas o reconhecimento se perde: O remetente não recebeu o ACK 2, mas receberá o ACK 3. Nesse caso, o ACK 3 é um reconhecimento para todos os pacotes até o 3 (inclusive o pacote 2) e o remetente pode deslocar agora sua janela para o pacote 8 (janela 5 +3 pacotes confirmados). Veja essa situação na próxima figura. Figura 7.22 TCP e o princípio de Janela.1 O mecanismo de janela (ou janela deslizante, como também é chamado) assegura: • Transmissão segura. • Melhor uso da largura da banda da rede (melhor rendimento). • Controle de fluxo, pois o receptor pode demorar na resposta de um pacote com um reconhecimento, sabendo-se que os seus buffers livres estão disponíveis e o tamanho de janela da comunicação está aberto. 7.5.4.2 O princípio da janela aplicado ao TCP O princípio da janela explicado na seção anterior é usado no TCP, mas com algumas diferenças: • Considerando que o TCP provê uma conexão de fluxo de bytes, números de sequência são nomeados para cada byte no fluxo. O TCP divide esse fluxo de bytes Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 218 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP contíguo em segmentos TCP para transmiti-los. O princípio da janela é usado ao nível de byte, quer dizer, os segmentos enviados e os recebidos carregarão o número de sequência de bytes e o tamanho de janela é expresso como um número de bytes, em lugar de números de pacotes. • O tamanho de janela é determinado pelo receptor quando a conexão for estabelecida e é variável durante a transferência de dados. Cada mensagem de reconhecimento (ACK) inclui o tamanho de janela que o receptor está pronto para negociar num determinado momento. Figura 7.23 Mecanismo de janela em ação.1 Na figura acima, vemos que no controle de fluxo à esquerda, o Host A pode transmitir uma janela de 100 bytes. Após isso, deve aguardar a confirmação (ACK). No controle de fluxo à direita, o Host A pode transmitir uma janela de 200 bytes. Nesse exemplo, o host transmite dois segmentos de 100 bytes e depois aguarda a confirmação do receptor. Comparando as duas trocas de dados representadas acima, verificamos que no fluxo da direita a comunicação ocorre com maior vazão, pois o host A pode enviar dois segmentos seguidos, sem ter que esperar a resposta do host B. Ou seja, quanto maior a largura da janela maior a vazão na comunicação fim a fim proporcionada pelo TCP. O tamanho de janela é definido por cada host ao se criar a conexão virtual, ou seja, é definido quando ocorre o chamado three-way handshaking. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 219 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Na figura a seguir temos uma representação do mecanismo da janela e possibilidades de troca de dados entre dois hosts. Figura 7.24 Princípio da Janela aplicado ao TCP (adaptado).4 Onde: • A: Bytes que foram transmitidos e reconhecidos. • B: Bytes que foram enviados, mas ainda não reconhecidos. • C: Bytes que podem ser enviados sem esperar por qualquer reconhecimento. • D: Bytes que ainda não podem ser enviados. Conclui-se que o host remetente tem total liberdade de envio dos segmentos dentro da janela negociada. Ao se esgotar o tamanho da janela, o remetente deverá aguardar a confirmação do receptor para ajustar o tamanho da janela. Esse ajuste é dinâmico, dependendo da situação de carga de processamento dos dois hosts que estão em comunicação. Lembre-se que o TCP irá dividir os bytes recebidos da aplicação, em forma de mensagens, em segmentos. Num segmento do TCP só é indicado o primeiro byte transmitido desse segmento no campo número de sequência. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 220 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.5.4.3 Troca de dados normal (sem retransmissões) Vamos verificar agora uma troca de dados entre dois hosts sem nenhuma falha no fluxo de bytes entre os mesmos. Figura 7.25 Tráfego normal entre dois hosts via TCP.1 Observe na figura acima que o host A transmite para o host B 500 bytes por segmento O número de sequência do segmento 1, de A para B, é de 1000 e o número de sequência do segmento 2 é de 1500, com diferença de 500 bytes entre eles. No segmento 1, A diz para B que espera receber deste último a partir do byte 0 (ACK=0). O B então envia o segmento 1 (BA) com sequência (seq) igual a 0 e número de reconhecimento igual a 1500 (indicando para A que recebeu os bytes de 1000 a 1499 normalmente e que A deve transmitir para B - no próximo segmento a enviar - a partir do byte 1500, portanto, indicando o número de sequência no próximo segmento com 1500). A recebe o segmento 1 de B e transmite o segmento 2, com número de sequência (seq) igual a 1500 e um reconhecimento (ack) igual a 500 (indicando para B que recebeu normalmente os bytes de 0 a 499). O processo se repete até que algum fato novo ocorra (alguma falha no fluxo ou término da conexão virtual). Observe que o controle do fluxo do TCP é realizado de acordo com o número de bytes transmitidos. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 221 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.5.4.4 Reconhecimentos e retransmissões O TCP envia dados em segmentos de comprimento variáveis. Para controlar a transmissão dos dados entre os hosts finais, o TCP utiliza os campos Número de Sequência, Número de Reconhecimento e Tamanho de Janela (já explicado). Os três campos citados controlam o fluxo baseado na contagem de bytes. O valor do número de sequência, num determinado segmento, indica o valor do primeiro byte sendo transmitido ( o segmento pode conter “n” bytes). O valor do número de reconhecimento (ACK), num determinado segmento, especifica o próximo byte a partir do qual o host que está transmitindo o segmento deseja receber. Ou seja, o número de reconhecimento indica o próximo número de sequência que o host remoto deveria transmitir, indicando o próximo byte que o transmissor do presente segmento espera receber (me envie a partir do byte X, respeitando o tamanho da janela). Ao enviar o número de reconhecimento com valor X, o host confirma o reconhecimento de todos os bytes anteriores a X (confirma tudo até X-1). Figura 7.26 Reconhecimento e processo de retransmissão no TCP.1 Na figura acima, considere o seguinte: O Host A transmite um segmento para o B com o número de sequência igual a 100, num total de 500 bytes. Transmite, portanto, o byte 100, 101, 102, e assim por diante, até o byte 599. Transmite também o número de reconhecimento igual a 200 (o Host A indica para o Host B que deseja receber bytes a partir do 200, pois todos os anteriores foram recebidos corretamente). Por sua vez, o Host B recebe o segmento anterior de A e toma as seguintes providências: transmite um segmento para A com o número de sequência igual a Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 222 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 200 (atendendo a solicitação do Host A), num total de 500 bytes. O Host B também confirma o recebimento dos bytes de 100 a 599, pois envia o número de reconhecimento igual a 600 (Host A, me envie agora a partir do byte 600, OK?). E assim o controle de fluxo entre os dois hosts continua. Verifique que, nesse exemplo, todos os segmentos foram enviados sem nenhum problema de perda ou extravio, não sendo necessário nenhuma retransmissão, assunto que veremos em seguida. Considere que um segmento se perca ou é corrompido. Nesse caso, o receptor vai reconhecer todos segmentos bem recebidos com um reconhecimento referindo-se ao primeiro byte do pacote perdido. Ou seja, o receptor confirma o recebimento de todos os bytes anteriores ao que ele está indicando no reconhecimento atual. O remetente irá parar a transmissão quando ele enviar todos os bytes na janela. Eventualmente, um timeout irá acontecer e o segmento perdido será retransmitido. A figura a seguir ilustra e exemplifica quando é usado um tamanho de janela de 1500 bytes e segmentos de 500 bytes. Figura 7.27 Reconhecimento e processo de retransmissão no TCP.4 Um problema surge agora, pois o remetente sabe que o segmento 2 está perdido ou corrompido, mas não sabe nada sobre os segmentos 3 e 4. O remetente deve Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 223 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP retransmitir o segmento 2 pelo menos, mas também poderia retransmitir os segmentos 3 e 4 (pois eles estão dentro da janela atual). Analisando essa situação4, é possível que: 1. o segmento 3 foi recebido, e nós não sabemos sobre o segmento 4. Ele poderia ter sido recebido, mas o ACK não foi localizado, contudo, ou ele poderia ter se perdido. 2. o segmento 3 se perdeu, e nós recebemos o ACK 1500 referente a recepção do segmento 4. Cada implementação do TCP é livre para reagir a um timeout conforme a implementação desejar. Ele poderia retransmitir só o segmento 2, mas no caso 2, nós estaremos esperando novamente até o segmento 3 esgotar o seu tempo (timeout). Nesse caso, nós perdemos toda a vantagem do throughput do mecanismo de janela. Ou o TCP poderia reenviar imediatamente todos os segmentos na janela atual. Qualquer que seja a escolha, o máximo throughput está perdido. Isso porque o ACK não contém um segundo número de sequência de reconhecimento indicando o frame atual recebido. Intervalos de timeout variáveis Cada implementação do TCP deveria prover um algoritmo para adaptar o valor de timeout a ser usado durante o round trip time dos segmentos (tempo de viagem de ida-e-volta). Para fazer isso, o TCP registra o tempo no qual um segmento foi enviado e o tempo no qual o ACK é recebido. Uma média ponderada é calculada em cima de vários desses tempos de viagem de ida-e-volta, para ser usado como um valor de timeout pelo próximo segmento(s) a ser(em) enviado(s). Essa é uma característica importante, porque demoras podem variar na rede IP, dependendo de fatores múltiplos, como a carga de uma rede intermediária de baixa velocidade ou a saturação de um roteador IP intermediário. 7.5.4.5 Estabelecimento de uma conexão TCP Diferentemente do UDP, protocolo não baseado em conexão, o TCP é um protocolo orientado a conexão. Ele estabelece uma conexão virtual entre os hosts finais. O procedimento do TCP para estabelecer uma conexão virtual entre dois hosts é realizado em 3 etapas, como podemos ver na próxima figura, de forma simplificada. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 224 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 7.28 Estabelecimento de Conexão no TCP.1 Essa conexão tem que ser estabelecida entre os dois hosts, para que a transferência de dados entre eles possa ser iniciada. Vamos analisar o procedimento da criação da conexão virtual com um pouco mais de detalhes. Um dos processos aplicativos (normalmente no servidor) abre uma chamada passiva OPEN e o outro processo aplicativo (normalmente o cliente) abre uma chamada ativa OPEN. A chamada passiva OPEN permanece dormente (em listening) até que outro processo tente se conectar a ela por uma chamada ativa OPEN. Nesse procedimento, na rede, portanto, são trocados três segmentos de TCP: Figura 7.29 O procedimento do three-way handshaking.1 Após o recebimento pelo ACK 3 pelo servidor (veja figura), a conexão virtual entra no estado de estabelecida. Agora sim, os processos aplicativos rodando nos dois hosts poderão iniciar a fase de troca de dados. Esse procedimento inteiro é conhecido como three-way handshaking, algo como um “acordo em três etapas” ou “aperto de mão de três etapas”. Note que os segmentos TCP trocados incluem os números de sequência iniciais de ambos os lados, para serem usados em transferências de dados subsequentes. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 225 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP No final do procedimento ilustrado, inicia a fase de troca de segmentos entre os dois processos. Como citado, a troca de dados entre os hosts é full-duplex e cada lado controla o fluxo através dos campos número de sequência, número de reconhecimento e tamanho de janela. O fechamento da conexão é feito implicitamente enviando um segmento TCP com o flag FIN setado (sem mais dados). Como a conexão é full-duplex (quer dizer, existem dois streams de dados independentes, um em cada direção), o segmento FIN só fecha a transferência de dados em uma só direção. O outro processo enviará agora os dados restantes que ele ainda tem que transmitir e também termina com um segmento TCP onde o bit FIN é setado. A conexão é deletada (informação de estado em ambos os lados) uma vez que o fluxo (stream) de dados for fechado em ambas as direções. Veja na figura a seguir, de forma simplificada, o procedimento de término de conexão no TCP, realizada em 4 etapas (four-way handshaking). Observe que a conexão será considerada desfeita apenas após a troca de 4 segmentos e de uma série de temporizações (usadas para garantir que a desconexão seja feita com sucesso). Figura 7.30 Término de Conexão no TCP (four-way handshaking).1 Veja abaixo uma lista dos diferentes estados4 de uma conexão TCP: • LISTEN: Aguardando uma requisição de conexão vinda de outra camada TCP (cliente). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 226 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • SYN-SENT: Um flag SYN foi enviado e o TCP está aguardando um flag SIN como resposta. • SYN-RECEIVED:: Um flag SYN foi recebido, um flag SYN foi enviado e o TCP está aguardando um flag ACK. • ESTABLISHED: O three-way handshake foi completado e a conexão estabelecida. • FIN-WAIT-1:: A aplicação local enviou um CLOSE. O TCP enviou um flag FIN e está aguardando um flag ACK o ou um flag FIN. • FIN-WAIT-2:: Um flag FIN foi enviado e um flag ACK recebido. O TCP está aguardando um flag FIN da ca camada TCP remota. • CLOSE-WAIT:: O TCP recebeu um flag FIN e enviou um flag ACK. Ele está aguardando uma requisição close da aplicação o local antes de enviar um flag FIN. • CLOSING:: Um flag FIN foi recebido e um flag FIN + um flag ACk foram enviados. O TCP está aguardando um flag ACK para o flag FIN enviado. • LAST-ACK:: Um flag FIN foi recebido, e um flag ACK e um flag FIN foram fo enviados.. O TCP está aguardando um ACK (o ultimo). • TIME-WAIT: Os flags FIN foram recebidos e confirmados pelos ACKs e o TCP está aguardando a finalização das temporizações para remover a conexão da tabela. • CLOSED: Estado imaginário, indicando que uma conexão foi removida da tabela de conexão. 7.5.4.6 Interface de programa programação de aplicativos do TCP A interface de programação de aplicativos (API) do TCP é semelhante à API do UDP, no entanto, ela possui outras diretivas, em função da complexidade do controle do fluxo realizado pelo TCP. Figura 7.31 API do TCP no estado de escuta.24 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 227 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Na figura anterior vemos o servidor em estado de espera (Listening) por conexões vindas do cliente. Figura 7.32 32 API do TCP no estado de conectado.24 Nessa última figura vemos a conexão estabelecida entre o cliente e o servidor e os dois podem trocar dados. A interface de programação de aplica aplicativos do TCP4 não está definida completamente. Só algumas funções básicas básicas, as quais ela deveria prover, prover são descritas na RFC 793 – Transmission Control Protocol. Como é o caso com a maioria das RFCs no suíte de protocolo TCP/IP, um grande grau de liberdade é deixado aos s implementadores, permitindo assim ótimas implementações (dependentes do sistema operacional), resultando em melhor eficiência (maior throughput). As seguintes chamadas de função (primitivas3) são descritas na RFC:4 • Open:: Para estabelecer uma conexão recebe vários parâmetros, como: o o o o Active/passive (ativo/passivo) Foreign socket (socket remoto) Local port number (Número de porta local) Timeout value (Valor do timeout - opcional) Isso o devolve um nome de conexão local que é usado para referenciar essa es conexão particular em todas as outras funções. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 228 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • Send (Enviar): Ocasiona que os dados num referenciado buffer de usuário serem enviados através da conexão. Opcionalmente pode setar o flag URGENT ou o flag PUSH. • Receive (Receber): Copia os dados TCP entrantes para um buffer de usuário. • Close (Terminar): Finaliza a conexão; causa um push (empurrão) de todos os dados restantes e um segmento TCP com o flag FIN é setado. • Status (Estado): Uma chamada dependente da implementação que poderia devolver informações, como: o o o o Socket local e remoto Tamanhos de janelas de transmissão (Send) e recepção (Receive) Estado da conexão Nome da conexão local • Abort: Ocasiona todas as operações para Enviar (Send) e Receber (Receive) pendentes serem abortadas e o envio de um RESET para o TCP remoto. Maiores detalhes sobre o protocolo TCP podem ser encontrados na RFC 793 Transmission Control Protocol. 7.5.5 Algoritmos de controle de congestionamento do TCP Uma diferença grande entre o TCP e o UDP é o algoritmo de controle de congestionamento. O algoritmo de congestionamento do TCP impede que um remetente sobrecarregue a capacidade da rede (por exemplo, links WANs mais lentos). O TCP pode adaptar a taxa do remetente para a capacidade de transmissão da rede e tentar evitar situações potenciais de congestionamento. Para entender a diferença entre o TCP e o UDP, é muito útil entender o conceito básico dos algoritmos de controle de congestionamento do TCP. Várias melhorias no controle de congestionamento21 foram adicionadas e sugeridas para o TCP durante os últimos anos. Esta ainda é uma área de pesquisa ativa e contínua,26 mas implementações modernas do TCP contêm quatro algoritmos4 entrelaçados como padrões básicos da Internet: • Slow Start (Começo lento) • Congestion avoidance (Prevenção de congestionamento) • Fast retransmit (Retransmissão rápida) • Fast recovery (Recuperação rápida) Indicamos o livro Red Book4 da IBM – Capítulo sobre a camada de transporte - para quem desejar saber mais sobre o controle de congestionamento provido pelo TCP. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 229 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.5.6 Aplicações padronizadas que utilizam o protocolo TCP Algumas aplicações padronizadas que usam o TCP incluem: • Protocolo de Transferência de E-mail (IMAP - Internet Message Access Protocol) • Protocolo de Transferência de News na Rede (NNTP - Network News Transfer Protocol) • Protocolo de Roteamento BGP (BGP -Border Gateway Protocol) • Protocolo de Transferência de Arquivo (FTP – File Transfer Protocol) • Protocolo de Sistema de Nome de Domínio (DNS – Domain Name System) • Protocolo de Transferência de Hipertexto (HTTP – HiperText Transfer Protocol) • Protocolo de Transferência de E-mail (POP – Post Office protocol) • Protocolo Simples de Transferência de E-mail (SMTP – Simple Mail Transfer Protocol) • Protocolo de Login Remoto ou Protocolo de Terminal Virtual (TELNET – Telecommunication Network) • Protocolo de Transferência em Tempo Real (RTP – Real Time Protocol) Na realidade, a maioria dos protocolos da camada de aplicação usados na Internet da atualidade utiliza o protocolo TCP na camada de transporte. 7.5.7 Relação de portas bem conhecidas de aplicações Internet Veja a seguir algumas aplicações mais populares da Internet, o protocolo de Transporte e a porta lógica utilizada. Observe que, conforme comentado, o protocolo TCP é utilizado na maioria das aplicações apresentadas. Tabela 7.2 Aplicações, protocolo de transporte e portas lógicas.1 Protocolo da Camada Protocolo da Camada Número da Porta de Aplicação de Transporte HTTP TCP 80 FTP TCP 20 e 21 Telnet TCP 23 SMTP TCP 25 POP TCP 110 NNTP TCP 119 SNMP UDP 161 e 162 DNS UDP e TCP 53 LDAP UDP e TCP 389 TFTP UDP 69 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 230 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 7.6 CONSIDERAÇÕES FINAIS DA CAMADA DE TRANSPORTE A camada de transporte tem recebido melhoria ao longo do tempo, justamente para resolver problemas relacionados ao controle de fluxo entre os hosts finais e congestionamento na rede WAN. O conhecimento dos protocolos da camada de transporte é fundamental para o profissional de redes de computadores que deseja especializar-se em segurança de redes de computadores, pois ataques via Internet usam falhas nesses protocolos. Neste capítulo procurarmos dar ênfase nos conceitos de protocolos orientados a conexão, protocolos não orientados a conexão, porta, socket, cabeçalhos dos protocolos UDP e TCP. Para aprofundamento neste assunto aconselhamos leitura de livros especializados e a utilização do software Wireshark para análise do controle de fluxo e cabeçalhos dos protocolos da camada de transporte. 7.7 RESUMO A camada de transporte provê a comunicação fim a fim entre máquinas finais. A unidade de dados padrão dos protocolos (PDU) da camada de transporte é o segmento. A camada de transporte trabalha com os endereços das portas das aplicações que devem ser utilizados sempre que uma máquina de origem deseja transportar dados de uma aplicação para uma máquina de destino. Os principais protocolos da camada de transporte são o TCP (orientado a conexão) e o UDP (não orientado a conexão). Os protocolos orientados a conexão controlam a transferência de dados entre máquinas finais. Os protocolos não orientados a conexão não controlam a transferência de dados entre máquinas finais, transferindo para a camada de aplicação essa responsabilidade. A camada de transporte trabalha diretamente com a camada de aplicação no modelo TCP/IP, interagindo com o Sistema Operacional da máquina, com a API e com o aplicativo. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 231 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Os principais equipamentos que trabalham na camada de transporte são: computadores de usuário final, servidores, proxy e firewall. Termina aqui este capítulo que tratou da camada de transporte do modelo TCP/IP e modelo OSI. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 232 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CAPÍTULO 8 CAMADA DE APLICAÇÃO INTRODUÇÃO A camada de aplicação é a interface entre o modelo de referência de protocolo (OSI ou TCP/IP) e o software aplicativo propriamente dito. É a camada que possui a maior diferença entre o modelo OSI e TCP/IP. Enquanto no modelo OSI a camada de Sessão, Apresentação e Aplicação são camadas individuais, no modelo TCP/IP estão inseridas na mesma camada, ou seja, a camada de aplicação do TCP/IP engloba as camadas de sessão, apresentação e aplicação do modelo OSI. A unidade de dados padrão da camada de aplicação (PDU) é a mensagem ou dados. No modelo TCP/IP, devemos recordar que a camada de transporte trabalha diretamente com a camada de aplicação, prestando serviço para a mesma. Na camada de transporte, a definição de qual aplicação estará requisitando serviço se dá através do chamado endereçamento de portas de aplicação. O desenvolvedor da aplicação escolhe livremente o protocolo da camada de transporte que vai utilizar em sua aplicação, normalmente tendo à sua disposição os dois tipos mais usuais de protocolos da camada de transporte: TCP – protocolo orientado a conexão – dito protocolo confiável UDP – protocolo não orientado a conexão – dito protocolo não confiável A maioria das aplicações ou serviços do TCP/IP trabalha na arquitetura ou ambiente Cliente/Servidor, onde, conforme já vimos anteriormente, uma máquina requisita serviço (o cliente) e outra máquina atende as solicitações (o servidor). Recentemente, no entanto, temos visto o crescimento de aplicações peer to peer que alternam o papel de cliente/servidor entre as duas máquinas que trocam comunicação fim a fim (Shareaza, BitTorrent, Limeware, etc.), utilizando um sistema de compartilhamento de arquivos de forma dinâmica. Interessante destacar também que no modelo TCP/IP nós podemos dividir a camada de aplicação como prestando dois serviços distintos: • Conjunto de protocolos que servem de interface para o software aplicativo, tais como o HTTP, FTP, TELNET, SMTP, POP3, DNS, etc., oferecendo um determinado serviço de rede. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 233 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP • Conjunto de utilitários que oferecem ao profissional da área de redes e de TI ferramentas para diagnósticos de eventuais problemas que possam acontecer numa rede de computadores, tais como o Ping, Ipconfig, Arp –a, Route, Trace route, etc. Os serviços de rede (Internet) utilizam os protocolos da camada de aplicação do modelo TCP/IP, conforme pode ser visto na figura abaixo, para serem implementados. Figura 8.1 Interação aplicativo e Camada de Aplicação no TCP/IP. 1 A aplicação, ao iniciar um processo aplicativo, cria um socket para identificar de forma inequívoca um processo e um host na origem com um processo e um host no destino, solicitando que a camada de transporte crie uma conexão virtual entre os dois, conforme vimos no capítulo anterior. A seguir vamos conceituar e explanar, de forma resumida, a função dos d principais protocolos e utilitários da camada de aplicação do modelo TCP/IP. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 234 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP .1 PROTOCOLOS DA CAMADA DE APLICAÇÃO 8.1 Veremos a seguir como alguns dos protocolos específicos s comumente usados na camada da aplicação oferecem uma interface e acesso à rede para o usuário final (aplicativo). Como já citado anteriormente neste livro livro,, a camada de transporte utiliza um esquema de endereçamento chamado de número de porta. Os números de porta identificam aplicações e serviços da camada de aplicação que são a origem e o destino dos dados. Programas de servidor geralmente usam números de porta prépré definidos que são comumente conhecidos pelos clientes. Ao examinarmos os diferentes protocolos TCP/IP da camada de aplicação e serviços, estaremos nos referindo a números de portas TCP e UDP normalmente associados a esses es serviços. ext Transfer Protocol) 8.1.1 HTTP (HyperText Protocolo utilizado na navegação web permitindo a tro troca ca de arquivos HTML de um computador para outro. Utiliza normalmente a porta 80 e o protocolo da camada de transporte TCP. Foi o protocolo que ocasionou a popularidade da Internet. Figura 8.2 .2 O protocolo HTTP em ação.1 Quando um endereço web (ou URL) é digitado em um navegador web, o navegador estabelece uma conexão com o serviço web em execução no servidor usando o protocolo HTTP. URLs (ou Uniform Resource Locator) e URI (Uniform Resource Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 235 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Identifier) são os nomes que a maioria das pessoas associam com endereços da web. A URL http://www.meusite.com/index.html é um exemplo de um URL que se refere a um recurso específico - uma página web chamada index.html em um servidor identificado como meusite.com. O Hypertext Transfer Protocol (HTTP), um dos protocolos da suíte TCP/IP, foi originalmente desenvolvido para publicar e recuperar páginas HTML e agora é usado para sistemas de informação distribuídos e colaborativos. O HTTP é usado em toda a World Wide Web para transferência de dados e é um dos protocolos de aplicação mais usados. As mensagens são passadas em um formato similar ao usado pelo Correio Eletrônico da Internet e pelo MIME (Multipurpose Internet Mail Extensions). Trata-se de um protocolo bastante simples, que apenas comanda requisições de páginas armazenadas em servidores. A fase pré-Internet é considerada a fase anterior ao protocolo HTTP, quando não se acessava um site com as páginas da forma como conhecemos hoje, porém com o aspecto de protocolo como o FTP que veremos posteriormente, e com monitores preto e branco, ou com fósforo verde, contendo strings de textos simples. O HTTP especifica um protocolo de pedido/resposta. Quando um cliente, normalmente um navegador web, envia uma mensagem de solicitação a um servidor, o protocolo HTTP define os tipos de mensagem que o cliente utiliza para solicitar a página web e também os tipos de mensagem o servidor usa para responder. Os três tipos de mensagem comuns no HTTP são GET, POST e PUT. Figura 8.3 O protocolo de requisição/resposta do HTTP.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 236 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.1.1.1 Formato do pacote de dados de solicitação HTTP Método: método a ser usado no recurso. Em geral, o GET, o qual é também uma ordem para a requisição. Versão HTTP: versão HTTP que está sendo usada (no caso abaixo, a 1.1). User-Agent: código para informar o tipo de browser. Host: recurso da rede à qual será aplicada a solicitação, isto é, a URL ou URI. O HTTP chama de Host. Accept: com o símbolo "/" que significa aceitar tudo. (Nota: os símbolos \r\n significam a quebra de linha na mensagem). O GET é uma solicitação do cliente para obter dados. Um navegador da Web envia a mensagem GET para solicitar páginas de um servidor web. Como mostrado na figura a seguir, uma vez que o servidor recebe o pedido GET, ele responde com uma linha de estado, tal como HTTP/1.1 200 OK, e uma mensagem em si, o corpo, o qual pode ser o arquivo solicitado, uma mensagem de erro, ou alguma outra informação. Figura 8.4 Comando Get do HTTP. 1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 237 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.1.1.2 Formato do pacote de dados de resposta HTTP Versão HTTP: versão que está sendo usada. Código de status: código de 3 dígitos indicando a tentativa de entender e satisfazer a solicitação. No exemplo abaixo, é o código 200, dizendo que o host foi encontrado e está ok. Frase da razão: descrição textual do código de status, que não aparece na mensagem abaixo. Server: sistema operacional do servidor. Data: data da requisição. Figura 8.5 Resposta do protocolo HTTP 1.1 Os códigos HTTP, que aparecem junto ao pacote de resposta, formam as combinações convencionais do tipo "segue o documento", "não autorizado", "erro de servidor", e o mais conhecido deles - que você encontra ao digitar uma URL errada ou não existente - é o 404 Page not found. Além do comando GET, temos também o comando POST e o comando PUT que são utilizados para mensagens que enviam dados para o servidor web (upload). Por exemplo, quando o usuário introduz dados num formulário incorporado em uma página da web, o POST inclui os dados na mensagem enviada para o servidor. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 238 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O PUT envia recursos ou conteúdo para o servidor web. Em síntese, o protocolo HTTP é que comanda as requisições das páginas Web. Ele informa ao browser sobre a existência da página, o sistema operacional do servidor, e todos os dados necessários à montagem da página. Contudo, embora seja extremamente flexível, o HTTP não é um protocolo seguro. As mensagens POST enviam informações para o servidor em texto simples que podem ser interceptados e lidos. Da mesma forma, as respostas do servidor, páginas HTML, normalmente também não são criptografadas. Para comunicação segura através da Internet, o protocolo HTTP seguro (HTTPS) é usado para acessar ou postar informações sobre o servidor web. O HTTPS pode utilizar autenticação e criptografia para proteger os dados que trafegam entre o cliente e o servidor. O HTTPS especifica regras adicionais para a passagem de dados entre a camada de aplicação e a camada de transporte. 8.1.1.3 Versões do HTTP Após a versão original 1.0, na versão 1.1 o HTTP incorporou mais dados no cabeçalho, tais como os tipos de imagens de composição da página, o tipo de linguagem (idioma, português - brasileiro), a codificação, uma advertência sobre modificação da página, etc., até o nome da página requisitada que aparece como host. Para melhoria da performance do HTTP, a versão 2.0 está sendo implementada. 8.1.2 Telnet (Telecommunication Networking) Protocolo utilizado para que, de uma máquina local, possamos nos logar numa outra máquina remota. Muito utilizado para manutenção remota em equipamentos, software e diagnóstico em falhas de redes de computadores. Utiliza normalmente a porta bem conhecida 23 e o protocolo de transporte é o TCP. Muito antes de os computadores desktop com interfaces gráficas sofisticadas existirem, as pessoas usavam sistemas baseados em texto que eram muitas vezes apenas terminais fisicamente ligados a um computador central. Uma vez que as redes se tornaram disponíveis, as pessoas precisavam de uma maneira para acessar remotamente os sistemas de computador da mesma maneira que eles fizeram com os terminais diretamente conectados a eles. O Telnet foi desenvolvido para atender a essa necessidade. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 239 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP o dos protocolos da O Telnet remonta ao início dos anos 197016 e é o mais antigo camada de aplicação e dos serviços na suíte TCP/IP. O Telnet fornece um método padrão drão de emular terminais baseados em texto sobre a rede de dados. Tanto o protocolo como o próprio software cliente que implementa o protocolo são comumente referidos como Telnet. De forma apropriada, propriada, uma conexão usando o Telnet é chamada de sessão de term terminal virtual (VTY). O Telnet é uma aplicação de emulação de terminal que permite uma estação de trabalho se conectar a um host que usa uma ligação TCP/IP e interagir com ele como se estivesse num terminal diretamente conectado ao mesmo. É uma aplicação client/server. lient/server. O servidor roda em um host no qual aplicações estão rodando, e passa informação entre as aplicações e o cliente Telnet. Figura 8.6 Protocolo Telnet.1 Clientes Telnet têm que converter os dados de usuário entre a forma na qual é transmitido e a forma na qual é exibido. Es Essa a é a parte difícil da aplicação, a emulação de terminal, e tem pouco a ver com o próprio protocolo Telnet. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 240 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Comandos do protocolo Telnet são principalmente usados para permitir ao cliente e ao servidor negociarem as opções de exibição, porque os clientes Telnet e servidores não fazem suposições sobre capacidades de um e do outro. O TCP provê a confiabilidade para o Telnet. Nem o cliente e nem o servidor precisam ficar interessados sobre o reenvio de dados que são perdidos, nem sobre a verificação de erro. Isso torna o protocolo Telnet muito simples. Não há nenhum formato especial para segmentos de TCP que contêm comandos - eles simplesmente formam parte do fluxo de dados. Dados são enviados, normalmente com o código ASCII de 7 bits, em pacotes TCP (o qual você pode recordar que é chamado de segmento). Um byte de valor 255, "interprete como comando" (IAC), significa que os bytes que seguem serão tratados como comandos Telnet e não como dados de usuário. Ele é seguido imediatamente por um byte que identifica o próprio comando, e depois um valor. Muitos comandos são de comprimento fixo, assim o byte depois disso, se não for outro IAC, seria tratado como dados de usuário. Para enviar o byte 255 como sendo dados, dois bytes sucessivos de valor 255 (IAC) são usados. O protocolo Telnet utiliza vários comandos para controlar a conexão entre o cliente e o servidor. A sintaxe dos comandos pode mudar entre sistemas operacionais distintos. Seguem alguns exemplos de comandos do protocolo Telnet: Are You There (AYT) - Permite a solicitação do usuário de que algo apareça na tela do terminal para indicar que a sessão VTY está ativa. Erase Line (EL) - Apaga todo o texto da linha atual. Interrompa o processo (IP) - Suspende, interrompe, aborta, ou termina o processo ao qual o Terminal Virtual está conectado. SB (subnegotiation) – usado para negociação de parâmetros opcionais. WONT (refusing to perform--won't) – opção não habilitada. GA (go ahead) – comando aceito, pode prosseguir na execução. EC (erase character) – apagar caractere digitado. Do (do) – proceda a opção negociada. Ao (abort output) – abortar a saída de dados para o terminal. Alguns comandos, como aqueles que incluem valores de texto, são de comprimento variável. Estes são implementados usando bytes de comando da sub-opção de início (SB) e sub-opção de fim (SE). Esses bytes de comando incluem os dados de comprimento variáveis como se fossem parênteses. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 241 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Os principais comandos de Telnet usados para negociar as opções de exibição, quando um cliente se conecta a um servidor, são WILL (remetente quer habilitar esta opção), WONT (remetente não quer habilitar esta opção), DO (remetente quer que o receptor habilite esta opção) e DONT (remetente não quer que o receptor habilite esta opção). Figura 8.7 Comando Do Protocolo Telnet.1 Para se perceber como isso trabalha, considere o seguinte exemplo. Você inicia seu cliente Telnet, que é configurado para emular um terminal VT 220, e se conecta a um host. O cliente envia WILL <terminal-tipo> (onde <terminal-tipo> é o valor em byte que representa a opção de exibição de tipo de terminal) para dizer que quer controlar o tipo de terminal que irá ser usado. O servidor responderá com DO <terminal - tipo> mostrando que está de acordo que o cliente controle esta opção. Figura 8.8 Comando Will Protocolo Telnet.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 242 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Depois o servidor enviará SB <terminal - tipo> <send> SE. Isso é um convite ao cliente para informar ao servidor que tipo de terminal é: <send> é um byte que significa "enviar a informação". O cliente responde com SB <terminal - tipo> <is> VT 220 SE: (<is> é um byte que indica que a informação solicitada segue) e assim o servidor é informado da emulação de terminal que o cliente estará usando. O cliente e servidor negociarão várias outras opções no começo de uma conexão. Também podem ser mudadas certas opções durante a sessão Telnet. A opção de eco determina se os caracteres que são enviados pelo cliente serão ecoados ou não na exibição na ponta local e na ponta remota. Se os caracteres que são digitados no terminal devem ser ecoados de volta pela aplicação do host, o servidor de Telnet enviará WILL <eco> para o cliente, o qual aceita essa opção enviando DO <eco>. Essa opção pode ser mudada durante uma sessão para suprimir a exibição de caracteres de senhas. Outra opção do Telnet a ser negociada é o modo de transmissão. O modo habitual é modo de um caractere por vez, onde cada caráter digitado no terminal é ecoado de volta pelo servidor, a menos que a aplicação de servidor especificamente desabilitou a função do eco. Você pode constatar quando o modo de um caractere por vez estiver sendo usado porque há uma demora entre uma tecla pressionada e a exibição da mesma na tela do terminal. Esse é o tempo de demora da transmissão, da máquina local até o servidor e depois o retorno para a máquina transmissora. A alternativa principal para o modo de um caractere por vez é o modo de linha. Nesse modo, o cliente exibe os caracteres digitados e provê uma linha que edita capacidades pelo usuário. São enviadas somente linhas completadas ao servidor. O modo de linha é usado por algumas emulações de terminais de mainframe. Novamente, é possível trocar de modo durante uma sessão Telnet, se for exigido interagir com a aplicação que roda no host, a qual responde por separar a entrada individual de caractere em lugar de entrada de linhas inteiras. O urgent flag e o urgent pointer num segmento TCP entram em uso quando num Telnet o usuário no terminal aperta a tecla Break para interromper um processo no servidor. O Break é convertido pelo cliente Telnet em dois comandos Telnet que são enviados ao servidor: IP (interrompe processo) seguido por DO <timing mark> (novamente, nós usamos os sinais de maior e menor para representar uma opção). O servidor responde a esse último comando com DO <timing mark> seguido por um comando DM (Data Mark). O urgente pointer é utilizado para apontar o byte do Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 243 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP comando DM, então até mesmo se o controle de fluxo parou a transmissão de dados normal, este comando ainda será recebido. O DM (Data Mark) é um marcador de sincronização, o qual ocasiona que qualquer fila de dados até aquele ponto será descartada. A maioria dos dados que passam entre o cliente e o servidor durante uma sessão Telnet são entrada de dados de usuário e dados da aplicação. A coisa importante a perceber é que o Telnet não empacota os dados com cabeçalhos adicionais ou informações de controle: simplesmente é passado diretamente ao TCP. Um efeito colateral disso é que você pode usar um cliente Telnet para se comunicar com outras aplicações TCP que usam protocolos baseados no ASCII, simplesmente se conectando na porta apropriada. Embora normalmente pudesse não ser sensato se fazer isso, pode ser uma ferramenta de diagnóstico bastante útil. 8.1.3 FTP (File Transfer Protocol) Protocolo utilizado para transferência de arquivo entre duas máquinas distintas. Muito utilizado no início da Internet, sendo digitado através de linha de comandos. Hoje normalmente ele está rodando por trás de uma interface gráfica de um browser. Utiliza duas portas distintas do protocolo de transporte TCP: • • Porta 21 é a conexão de controle (passagem de comandos entre hosts) Porta 20 é a conexão para troca de dados entre os dois hosts O FTP permite copiar um arquivo do disco rígido de um computador remoto para o seu, além de permitir você realizar um upload de arquivos do seu computador para um sistema remoto. O FTP permite também que comandos sejam executados nos hosts envolvendo a troca de arquivos, além da transferência de arquivos propriamente dita. A especificação do FTP satisfaz vários tipos de arquivos, estruturas e modos de transferência diferentes, mas na prática as implementações do FTP reconhecem ou arquivos textos ou arquivos binários. Os arquivos de texto são convertidos do formato nativo deles para o ASCII 7 bits, no qual cada é linha terminada por um caractere de carriage-return ou line feed na transmissão. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 244 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 8.9 Protocolo FTP - Transferência de Arquivo.1 Eles são convertidos de volta ao formato de arquivo de texto nativo pelo cliente do FTP. O FTP, portanto, provê um mecanismo de transferência de arquivos de texto via uma plataforma computacional. Os arquivos rquivos binários são transmitidos exatamente como eles são. Os dados são transferidos como um fluxo contínuo de bytes. O protocolo de transporte TCP provê toda a confiabilidade, tendo tendo-se certeza que aqueles dados que são perdidos são reenviados e conferidos para verificar se são recebidos corretamente. É importante notar que a detecção de erro utiliza um checksum de 16 bits, assim a probabilidade abilidade de erros não detectada é alta alta, comparado a um protocolo de transferência de arquivo como Zmodem que usa um CRC de 32 bits. O FTP é incomum quando comparado a outras aplicações TCP TCP,, visto que usa duas conexões TCP. A conexão de controle é feita p pela ela porta de FTP bem conhecida número 21 e é usada para enviar comandos e respostas FTP. Uma conexão de dados separada é estabelecida (porta 20) 20), sempre que um arquivo ou outra informação forem transferid transferidos. Ela é fechada quando a transferência de dados termina. Manter os dados e comandos separados facilita a implementação do software cliente e significa que a conexão de controle está sempre livre para enviar um comando ABOR (aborte) para terminar uma transferência de dados prolongada. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 245 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 8.10 Protocolo FTP - Transferência de Arquivo.1 São enviados comandos de FTP em texto puro ASCII de 7 bits, os quais consistem de até 4 caracteres seguidos por zero ou mais parâmetros. As respostas consistem em um número de três dígitos seguido por uma explicação de texto opcional, por exemplo, "250 CWD command sucessful". Os números são para a fácil interpretação através do software cliente FTP e as explicações são para a melhor compreensão do usuário. É instrutivo ver o que ocorre durante uma sessão simples de FTP. Quando você se conecta ao servidor de FTP (TCP porta 21) ele envia sua mensagem de bem-vindo anteposta pelo código numérico 220. O cliente FTP exibe o prompt de username, o qual é então enviado usando o comando FTP "USER username”. O servidor pode responder com "331 need password for username". O cliente detecta isso, exibindo o prompt de password para você e a envia ao servidor usando o comando "PASS password". Se a password está correta o cliente receberá a resposta "230 Access Granted." Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 246 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A próxima coisa que você poderia fazer é digitar o comando DIR, o que irá listar o diretório atual no servidor. Esse comando no lado cliente gera dois comandos FTP emitidos ao servidor. O primeiro, "Port x,x,x,x,y1,y2" informa ao servidor o IP de origem (x.x.x.x) e o número de porta (y1 * 256 + y2) usada para a conexão de dados. O número de porta está na faixa de 1024 a 4999, uma faixa usada para conexões dinâmicas ou efêmeras (essas que são brevemente usadas para algum propósito específico). O segundo, LIST, ocasiona no servidor abrir a porta especificada, enviar a lista de diretório, e fechá-la novamente. A sequência para carregar um arquivo é bem parecida com essa para obter uma lista de diretório. Primeiro, um comando PORT é usado para especificar a porta de conexão de dados, e então o comando "RETR filename" é enviado para recuperar o arquivo (baixar o arquivo). O servidor abre a porta dos dados e envia os dados, os quais o software cliente escreve no disco rígido. O servidor fecha a conexão TCP para a porta de dados quando a transferência de arquivo termina e esse é o sinal ao cliente para fechar o arquivo recentemente criado. 8.1.3.1 Comandos e mensagens do FTP Vários comandos podem ser utilizados no FTP e a seguir temos a sintaxe deles: ABOR ACCT ALLO APPE CDUP CWD MKD NLST NOOP PASS PASV PORT RETR RMD RNFR RNTO SITE SMNT SYST TYPE USER DELE HELP LIST MODE PWD QUIT REIN REST STAT STOR STOU STRU 8.1.3.2 Exemplos de comandos do FTP Como citado anteriormente, é possível utilizar comandos para realizar algumas tarefas antes da transferência de arquivos. Seguem alguns outros exemplos de comandos FTP: dir: o host remoto envia a listagem de diretório para o host local. get <file-name>: o host remoto envia o arquivo chamado <file-name> para o host local. put <file-name>: o host remoto envia o arquivo chamado <file-name> para o host remoto. cd <directory-name>: o diretório de trabalho no host remoto é mudado para <directory-name> A seguir veremos os códigos de respostas do FTP que se assemelham a códigos dos outros protocolos e serviços mais antigos da Internet (TELNET, por exemplo). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 247 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.1.3.3 Códigos de respostas (mensagens) do FTP A troca de mensagem no FTP, a exemplo de outros protocolos, utiliza códigos que indicam o status da conexão, conforme pode ser visto na tabela a seguir, onde são exibidos alguns dos códigos de respostas do FTP. Tabela 8.1 Códigos de resposta do FTP (lista parcial).4 Códigos Descrição 100 Série 110 120 125 150 200 Série 202 211 212 213 214 220 221 300 Série 331 332 350 A ação requisitada iniciada, esperada outra resposta. Reinicie a marcação na marca (ponteiros de arquivos). Serviço pronto em n minutos. Conexão de dados aberta, iniciando a transferência. Status OK; abre a conexão. A ação requisitada foi concluída com sucesso. Comando não implementado. Status do sistema ou resposta de ajuda do sistema. Status do diretório. Status do arquivo. Mensagem de ajuda ao usuário. Serviço pronto ao novo usuário. Conexão sendo fechada. Comando aceito, mas a requisição está em espera, aguardando informações. User name OK, necessita a password. Nome da conta necessária para o login. Ação de arquivo pendente, aguardando maiores informações. O comando não foi aceito e ação da requisição não foi realizada, temporariamente. Serviço não disponível, fechando a conexão. Não pode abrir a conexão de dados. Conexão fechada; transferência abortada. Inválido username ou password Host requisitado indisponível. Erro de sintaxe, comando não reconhecido e ação não executada. Erro de sintaxe em parâmetros ou argumentos. Comando não implementado. Sequência errada de comandos. Respostas faltando confidencialidade e integridade Resposta de integridade protegida. Resposta de confidencialidade e integridade protegida. Resposta de confidencialidade protegida. 400 Série 421 425 426 430 434 500 Série 501 502 503 600 Serie 631 632 633 Lembramos que a tabela acima não contempla todos os códigos de respostas do FTP, pois foram selecionados os que consideramos os principais. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 248 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.1.4 SMTP (Simple Mail Transfer Protocol) Protocolo utilizado para transferência de e-mails da máquina cliente para a máquina servidora de e-mails e entre máquinas servidoras de e-mails dos provedores de acesso à Internet. Utiliza a porta 25 e o protocolo da camada de transporte é o TCP. Figura 8.11 Envio de e-mails através de dois servidores SMTP.1 O “Protocolo Simples de Transferência de Correio Eletrônico” (SMTP) é um dos mais antigos e usados protocolos da Internet. Projetado no início dos anos 1980, sua função é pura e simplesmente transferir correio eletrônico para e entre redes e outros sistemas de transporte. Como tal, sua necessidade de uso não se restringe a sistemas que usam o TCP/IP. Qualquer comunicação que seja capaz de controlar até 1.000 linhas de caracteres ASCII de 7 bits poderia ser usada para levar mensagens que usam o SMTP. Em uma rede TCP/IP, porém, como citado, o TCP provê o mecanismo de transporte para o protocolo SMTP. No SMTP, o remetente é o cliente, mas um cliente pode se comunicar com muitos servidores diferentes. O e-mail pode ser enviado diretamente do host remetente para o host receptor, exigindo fazer uma conexão de TCP separada para cada cópia de cada mensagem. Porém, poucos destinatários de e-mails rodam seus próprios servidores de SMTP. É mais habitual para o destinatário de uma mensagem SMTP ter um servidor que serve um grupo de usuários como todos aqueles de um domínio. O servidor recebe todo os e-mails direcionados para seus usuários e então lhes permite coletá-los usando o POP3 (“Protocolo de Correio Eletrônico versão 3”) ou algum outro protocolo de e-mail compatível. Semelhantemente, a maioria dos clientes SMTP Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 249 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP enviam mensagens a um único servidor, o qual retransmite essas mensagens para os eventuais destinatários. Uma transação SMTP começa quando o software cliente do remetente abrir uma conexão TCP com o receptor que usa a bem conhecida porta número 25. O servidor reconhece a conexão mandando de volta uma mensagem na forma "220 Servidor de SMTP Pronto". O SMTP usa um formato semelhante de respostas do FTP. Os três dígitos do código é tudo que o software cliente precisa analisar para verificar se tudo está OK. O texto da mensagem é para ajudar os humanos que poderiam estar diagnosticando um problema através da análise de um log de transação. Um servidor relay SMTP poderia recusar uma conexão mandando de volta uma mensagem com um código de resposta "421 Serviço não disponível". Por exemplo, um servidor SMTP de um Internet Service Provider, provido para uso por seus assinantes para retransmitir e-mails de saída, poderia recusar uma conexão de um host cujo endereço IP indica que não é um dos seus assinantes. O SMTP não tem nenhuma forma de controle de acesso - o modo usado para retransmitir mensagens tornaria esta tarefa não prática - assim esse é o único modo que os ISPs podem impedir que os não assinantes, como os spammers, usem os seus servidores de correio eletrônicos para enviar mensagens. Tendo recebido o reconhecimento correto, o remetente assina no servidor enviando a string "HELO hostname". HELO é o comando de assinatura e o hostname é o nome do host. Como nós veremos adiante, o hostname é usado no campo “Recebido” no cabeçalho que o servidor acrescenta à mensagem quando a envia. Essa informação permite ao destinatário localizar o caminho percorrido pela mensagem. 8.1.4.1 Enviando mensagens pelo SMTP Uma vez que o remetente recebe um reconhecimento "250 OK" pode começar a enviar mensagens. O protocolo é extremamente simples. Tudo que o remetente tem que fazer é dizer de quem é a mensagem, quem é ele e prover os conteúdos da mensagem. O remetente da mensagem está especificado no comando "Mail From: <endereço>". Esse comando também informa quem é o remetente para o receptor que está a ponto de receber uma mensagem nova, assim ele saberá esvaziar sua lista de mensagens recebidas de um remetente aprovado. O endereço destacado entre o símbolo de maior e menor (os quais são requeridos) é o caminho para o retorno da mensagem. O caminho é o endereço pelo qual qualquer relatório de erro é enviado. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 250 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Por exemplo, o relatório de erro seria gerado e enviado caso a mensagem não pudesse ser entregue. A partir daí o computador continua conectado, porém transacionando os protocolos da família TCP/IP, conforme o critério dos cliques, pois as mensagens dos e-mails de entrada e saída acabaram. É válido para o caminho de retorno ser nulo, como em "MAIL FROM: <>". Isso é tipicamente usado ao enviar um relatório de erro. Isso significa que com o caminho de retorno nulo, nenhum relatório de fracasso de entrega é requerido. Seu propósito principal é evitar se entrar na situação na qual mensagens de fracasso de entrega são transportadas continuamente para frente e para trás na rede, quando endereços de remetente e de destinatário são inalcançáveis. Os destinatários de mensagem são definidos usando o comando "RCPT TO: <endereço>". Cada endereço é incluso entre o símbolo de maior e menor. Uma mensagem pode ter muitos destinatários, e um comando “RCPT TO:” é enviado para cada um. É o comando “RCPT TO:”, não qualquer coisa, no cabeçalho da mensagem que resulta numa mensagem chegar a seu destino. No caso de cópia oculta ou mensagens de servidor de lista, o endereço de destinatário não aparecerá no cabeçalho. Cada destinatário é reconhecido com uma resposta do destinatário "250 OK". Um destinatário pode ser rejeitado também usando uma resposta com um código de resposta 550. Isso depende de como o servidor foi configurado. Servidores de Relay SMTP de ISP alcançados por Dial-Up podem aceitar todo comando “RCPT TO:”, até mesmo se o endereço especificado é inválido, porque o servidor não sabe que o endereço é inválido até que faça um lookup no DNS dele. Porém, um servidor de correio eletrônico configurado para só receber mensagens de usuários locais rejeitaria destinatários que não estão naquele domínio. Podem ser recebidas outras respostas com respeito às mensagens “RCPT TO:” como resultado de operações efetuadas no servidor de SMTP, o que é útil. Por exemplo: se um endereço está incorreto, mas o servidor sabe o endereço correto, ele poderia responder com "251 Usuário não local; será remetido para <endereço>" ou "551 Usuário não local; por favor tente <endereço>". Note que os códigos de resposta diferentes significam tanto que o servidor roteou ou não a mensagem. Essas respostas não são comuns, e um cliente de correio pode tratar a resposta 551 simplesmente como um erro, em lugar de tentar analisar gramaticalmente a alternativa de encontrar o endereço no texto da resposta. Para ser mais rigoroso, deveria ser observado que os comandos “RCPT TO:” podem especificar rotas, não somente endereços. Uma rota seria expressa na forma "RCPT Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 251 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP TO: <server1,server2:someone@server3>. Essa capacidade hoje é raramente necessária. 8.1.4.2 Texto de mensagem enviada pelo SMTP Uma vez que todos os destinatários foram especificados, todo o restante da mensagem é utilizado para o remetente enviar a própria mensagem. Figura 8.12 Mensagem enviada pelo SMTP. 1 Na figura anterior, exibimos a captura do envio de uma mensagem de e-mail através do protocolo SMTP. Observe que o protocolo da camada de transporte TCP é utilizado. Observe também que, alternativamente, pacotes TCP (na cor branca) informam o envio dos dados sequencializados (controle de fluxo do TCP) até que o corpo de dados da mensagem acabe. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 252 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Atente também para o fato que primeiro o SMTP envia o comando "DATA", e então espera para uma resposta como: "354 começo da entrada de e-mail; termine com <CRLF>. - <CRLF>". A mensagem é enviada então como uma sucessão de linhas de texto. Nenhum reconhecimento é recebido para cada linha, entretanto o remetente precisa olhar para uma resposta que indica uma condição de erro. O fim da mensagem é indicado por um período (ponto final) em uma linha de seu próprio conteúdo. Assim, uma das mais simples tarefas, mas a mais essencial, que um cliente de correio tem que fazer, é assegurar que uma linha que contém um único período (ponto final) não apareça no texto sendo editado. O fim da mensagem é reconhecido com "250 OK.". Depois da resposta "250 OK" que reconhece o fim da mensagem enviada, o remetente pode começar novamente com uma nova mensagem, enviando um novo comando “MAIL FROM:” ou pode sair do servidor usando o "QUIT". Uma resposta 221 vai ser recebida em resposta ao comando “QUIT”. Veja a seguir um exemplo da finalização de uma conexão (comando QUIT): Figura 8.13 Desconexão de chamada SMTP. 1 É importante notar que o SMTP não está interessado no detalhe do bit, no conteúdo da mensagem. Esse conteúdo poderia ser absolutamente qualquer coisa, entretanto no sentido exato não deveria conter qualquer caractere ASCII disponível na faixa de 128 a 255, e as linhas de texto não podem exceder 1.000 caracteres. Não há nenhuma exigência para os cabeçalhos exibirem os endereços para os mesmos remetentes e destinatários que foram usados nos comandos SMTP, o que torna fácil de fazer uma mensagem parecer que veio de alguém diferente do verdadeiro remetente. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 253 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.1.4.3 Códigos de Respostas do Protocolo SMTP Como estamos constatando, muitos protocolos da camada de aplicação Internet que estão baseados em comandos de texto ASCII, usam um sistema de respostas nas quais um código de três dígitos iniciais provê a informação de estado essencial (status). Cada dígito tem um significado particular, como mostrado abaixo. 8.1.4.3.1 Primeiro Dígito do Código de Respostas 1xx: Resposta Preliminar Positiva. Comando aceito, mas continua esperando um comando de confirmação adicional (continue ou aborte). 2xx: Resposta de Conclusão Positiva. Comando completado. Esperando próximo comando. 3xx: Resposta Intermediária Positiva. Comando aceito, mas continua esperando informação adicional (como uma contra-senha). 4xx: Resposta de Conclusão Negativa Passageira. Comando não aceito devido a uma condição de erro temporária (como um servidor de HTTP ocupado). O comando pode ser tentado novamente mais tarde. 5xx: Resposta de Conclusão Negativa Permanente. Comando não aceito devido a uma condição de erro permanente. O comando será improvavelmente aceito se repetido mais tarde. 8.1.4.3.2 Segundo Dígito do Código de Respostas x0x: Erro de sintaxe. Por exemplo, comando não implementado ou válido, mas incorreto nas circunstâncias. x1x: Informação. O texto que segue o código contém a resposta ao pedido de informação. x2x: Conexões. Resposta de mensagem relacionada ao canal de comunicações. x5x: Servidor. Resposta de mensagem relacionada ao estado do servidor. 8.1.4.3.3 Terceiro Dígito do Código de Respostas Usada para distinguir mensagens individuais. 8.1.4.4 Localizando mensagens no SMTP Conforme citado anteriormente, quando uma mensagem é retransmitida pelo servidor, ele insere um cabeçalho “RCPT TO:” (Recebido por) no começo da mensagem que mostra a identidade do host que enviou a mensagem, seu próprio nome de host e uma indicação da data. Cada servidor de SMTP em que uma mensagem passa adiciona seu próprio cabeçalho "Recebido:". Assim é possível localizar o caminho tomado por uma mensagem. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 254 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Embora isso não identifique o remetente, pode ajudar a descobrir se o endereço que a mensagem aparentemente contém é na realidade verdadeiro ou não. 8.1.4.5 Comandos adicionais no SMTP Os servidores SMTP deveriam suportar dois comandos adicionais para uma implementação mínima. • • NOOP não faz nada, mas deveria provocar uma resposta "250 OK". RSET aborta uma transação de mensagem atual. Há outros comandos, como o HELP, que realmente só é de interesse a quem tentar comunicar-se com os servidores SMTP interativamente, e não é então realmente pertinente a protocolos de trabalho de uso compreensivo dentro do uso cotidiano. 8.1.5 POP3 (Post Office Protocol) Protocolo utilizado para realizar o download de e-mails do servidor de e-mail do provedor de acesso à Internet para a máquina cliente do usuário. Utiliza a porta 110 e o protocolo de transporte é o TCP. Poderíamos dizer que os protocolos SMTP e POP trabalham em conjunto. Um realiza a transferência de e-mails entre servidores (SMTP) e o outro realiza o download de e-mails que estão num servidor para o software cliente do usuário (POP). No linguajar técnico, o primeiro recebe a denominação de MTA (Mail Transfer Agent) e o segundo de MUA (Mail User Agent). O SMTP é capaz de entregar e-mails diretamente no desktop do destinatário, mas na prática não é o protocolo ideal para isso. Se um relay SMTP não puder entregar uma mensagem para o próximo (ou final) host na cadeia, tentará novamente entregar em intervalos de períodos de até alguns dias antes de desistir e enviar uma notificação de fracasso de entrega ao endereço do caminho de retorno. O SMTP não oferece nenhum modo para o destinatário solicitar a um servidor enviar o e-mail que está tentando entregar. Se um destinatário se conecta infrequentemente à Internet, o servidor dele pode nunca estar ativo no momento certo. Nesse caso, ele descartará (bounce) o e-mail eventualmente. O funcionamento do SMTP é como um serviço de entrega por mensageiro. Se você não está em casa quando é chamado, então, depois que um par de tentativas de entrega é feita, a mensagem é devolvida ao remetente. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 255 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O protocolo de correio eletrônico POP3 (que poderia ser traduzido para protocolo de agência postal versão 3) - como o nome sugere – permite ter seu e-mail seguro na agência postal eletrônica e assim você pode coletá-lo cada vez que o desejar. Figura 8.14 SMTP – POP – IMAP em ação.1 Como citado, o POP3 é outra aplicação que usa o TCP e utiliza a porta bem conhecida 110. Tal qual outra aplicação de protocolos baseada em texto, você pode se conectar com um servidor de POP3 que aceite o emulador de terminal Telnet e pode interagir com ele usando comandos do POP3. Isso às vezes pode ser útil, como por exemplo, se desejar manualmente apagar uma mensagem corrompida que causa falha num cliente de e-mail sempre que ele é carregado. O servidor deveria responder com a mensagem "+OK servidor de POP3 pronto" ao se conectar ao servidor. O POP3 usa "+OK" e "- ERR" no começo de respostas, para indicar aceitação ou rejeição de comandos. Isso é mais simples que os códigos numéricos usados pelo SMTP e outros protocolos: o software só necessita conferir o Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 256 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP primeiro caráter buscando um caractere de mais (+) ou um de menos (-). O texto que pode aparecer depois de um "+OK" é um lembrete para o que fazer depois. Depois de "- ERR" está uma descrição de erro. O conteúdo exato do texto pode variar entre implementações de servidores. 8.1.5.1 Para Acessar o Servidor de e-mail Um servidor POP3 guarda o e-mail pessoal dos usuários, assim, sem surpresa, você precisa entrar com um nome de usuário e uma contra-senha antes de você poder ganhar acesso a ele. Você tem que enviar "USER username”. Uma resposta "+OK" mostra que o nome de usuário é válido. Você tem que enviar "PASS password” então. Se a contra-senha está correta você receberá outro reconhecimento positivo em uma resposta como de “+OK username tem duas mensagens (914 octetos)". A mensagem "- ERR" pode ser recebida como resposta se o nome de usuário não for conhecido, a contra-senha está incorreta ou o servidor está por alguma razão incapaz de abrir a caixa postal de um usuário. Uma vez que um cliente esteja logado com sucesso, ele pode emitir vários comandos diferentes que permitem a ele descobrir quantas mensagens estão esperando, verificar o tamanho delas e carregar as mensagens (no software Cliente) e as apagar no servidor. O comando "STAT" retorna o número de mensagens aguardando (message waiting mw) e o tamanho total delas em bytes (size bytes - sb), como uma resposta na forma "+OK mW sb". Note que é a mesma informação fornecida no reconhecimento de login, mas nessa (dois números separados por um único espaço) fica mais fácil para o software cliente processar. O comando "LIST" pode ser usado para determinar o tamanho de cada mensagem. Depois do "+OK" o servidor envia, em linhas separadas, o número da mensagem (mn) e o tamanho da mensagem (ms) separado por um espaço. Mensagens aguardando são numeradas sequencialmente a partir de 1. O comando "LIST mn” pode ser usado para descobrir o tamanho de uma mensagem específica. O comando LIST é tipicamente usado em clientes de correio que implementam uma restrição definida pelo usuário no tamanho de mensagens que serão carregadas, ou desejam exibir um indicador de progresso que mostra quanto de cada mensagem foi carregado. Veja a seguir a listagem de uma conexão ao servidor de e-mail utilizando o protocolo POP. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 257 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 8.15 Sequência de acesso aos e-mails pelo protocolo POP.1 Na figura anterior podemos analisar a sequência de acesso do protocolo POP para baixar e-mail para o software cliente do usuário. Observe que a conta e senha aparecem claramente, demonstrando que a conexão não é segura nesse protocolo. O POP3 não provê nenhum comando que permite a um cliente descobrir o assunto de uma mensagem ou de onde ela vem. Porém, o comando TOP deixa o cliente carregar os cabeçalhos de uma mensagem e um número especificado de linhas do corpo de mensagem do qual estas informações podem ser obtidas. TOP é um comando opcional do POP3, mas sua implementação é recomendada fortemente. O formato do comando é "TOP nl mn" onde mn é o número de mensagem e nl o número de linhas requerido. A resposta é “+OK" (se o "mn” é válido) seguido por um download parcial da mensagem. O fim do download é indicado por uma linha que contém um único período (ponto final). Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 258 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Alguns softwares que filtram spam - que deletam mensagens não desejadas sem as carregar - usam o comando TOP para determinar se uma mensagem possui os critérios para ser deletada ou não. Porém, o tempo levado para adquirir essas informações para todas as mensagens pode exceder o tempo que teria levado para carregar o spam e apagá-lo depois simplesmente. O comando "RETR mn" é usado para recuperar mensagens do servidor. O comando tem que incluir o número da mensagem (mn). Depois de um reconhecimento "+OK" o servidor envia a mensagem inteira. Novamente, o fim da mensagem é indicado por uma linha que contém apenas um período. 8.1.5.2 Deletando mensagens lidas pelo POP O comando "DELE mn" é usado para apagar uma mensagem. Na realidade, o comando DELE só marca mensagens para apagamento. Qualquer mensagem marcada para o apagamento durante uma sessão talvez seja desmarcada usando um comando "RSET." As mensagens só são apagadas uma vez que o cliente fechar a sessão POP3 digitando o comando "QUIT" Se um cliente nunca consegue fechar uma sessão corretamente, ou porque a conexão se perde ou porque a temporização se esgota, então você poderá se deparar com a situação em que algumas mensagens são carregadas novamente da próxima vez que você se conectar ao servidor. Para evitar a carga da mensagem duas vezes, um cliente POP3 pode usar o comando "UIDL" ou "UIDL mn" para obter um Id único gerado pelo servidor para cada mensagem. Armazenando os UIDLs de mensagens carregadas em um arquivo, um cliente pode determinar facilmente se uma mensagem no servidor foi ou não previamente recuperada. A implementação do comando UIDL é opcional, mas a maioria dos servidores POP3 parece suportá-lo e a maioria dos clientes de correio eletrônico usa-o. 8.1.5.3 Benefícios do protocolo POP e SMTP O SMTP e POP3 são dois protocolos da Internet geralmente mais usados e é por isso que nós os estudamos com algum detalhe. A natureza baseada em texto deles torna possível enviar e receber mensagens comunicando com um servidor interativamente, usando um simples cliente Telnet. Também se torna mais fácil escrever um software cliente que usa qualquer linguagem de programação para enviar e receber texto usando o TCP. Esta simplicidade está em contraste total com muitas outras arquiteturas de rede que Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 259 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP requerem o uso de APIs proprietárias e linguagens que suportam estruturas de dados complexas. 8.1.6 IMAP O IMAP (Internet Message Access Protocol) é um outro protocolo, assim como o POP3, usado para acessar os e-mails num servidor de e-mail remoto, a partir de cliente local. O IMAP e o POP3 são dois dos mais comumente usados protocolos de e-mail da Internet. O protocolo IMAP é mais sofisticado do que o protocolo POP. A principal diferença entre eles é que, enquanto o POP3 é utilizado por um cliente apenas, o IMAP pode ser utilizado por múltiplos clientes. No caso do IMAP, portanto, vários usuários podem gerenciar uma única caixa de e-mail. Também as mensagens podem ser armazenadas em vários diretórios e compartilhadas entre os vários usuários. Além disso, o IMAP possui uma melhor integração com o protocolo MIME, esse último utilizado para anexar arquivos no e-mail. O usuário do e-mail pode acessar as mensagens e escolher qual deve baixar. O IMAP utiliza a porta TCP de número 143 e está na sua versão de número quatro (IMAP4). 8.1.7 SNMP (Simple Networking Management Protocol) O SNMP (Simple Networking Management Protocol) é um protocolo utilizado para gerenciamento de ativos de redes, permitindo aos administradores de redes controle sobre equipamentos que compõe a sua rede de computadores, tanto em nível local como remoto. Criado em 1988, o SNMP foi adotado mundialmente, tendo superado a solução baseada na arquitetura CMIS/CMIP (Common Management Information Service/Protocol), esta última proposta segundo o modelo OSI e adotada por grandes operadoras de telecomunicações. Normalmente, o SNMP utiliza a porta 161 UDP para o agente (software que roda no objeto gerenciado) e a porta 162 UDP para o gerente (software que controla os objetos gerenciados). Ambas são portas para recebimentos de mensagens, sendo que tanto o agente como o gerente pode transmitir por qualquer porta. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 260 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Considerado um membro da família TCP/IP, o SNMP é um protocolo da camada de aplicação, usado para gerenciamento de rede rede, que possui ossui as seguintes funções: • • • informar as anomalias da rede, estabelecer os valores dos limites, trocar informações entre os dispositivos da rede. Uma rede gerenciada pelo protocolo SNMP consiste de 3 componentes principais: • • • dispositivos gerenciados gerenciados:: todos os nós de rede, isto é, todos os equipamentos ligados na rede. agentes:: software de gerenciamento residente no nó da rede. sistemas de gerenciamento de redes redes:: executa as aplicações de coleta e organização das informações que chegam a ssua ua base de dados, chamada MIB. Veja na figura a seguir os 3 componentes do sistema SNMP. Figura 8.16 Processo de troca de informações do SNMP.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 261 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.1.7.1 Base de Gerenciamento (MIB) do SNMP O SNMP possui uma Base de Informações de Gerenciamento (MIB) constituída por uma coleção de informações organizadas hierarquicamente. As MIBs são acessadas usando um protocolo de gerenciamento de rede, como o SNMP (em tese poderia ser utilizado outro protocolo proprietário). Os protocolos de gerenciamento de rede permitem a leitura de uma enorme quantidade de dados sobre os equipamentos instalados na rede, desde alarmes até inventários de placas. Eles são essenciais para diagnosticar a rede e administrar as reservas dos recursos disponíveis. Apesar de o SNMP ser uma especificação para o desenvolvimento de sistemas de gerenciamento, as empresas de telecomunicações desenvolveram aplicativos gráficos - para interagir com seus próprios protocolos - criando diagramas com a estrutura da rede. Com isso, a rede pode ser vista tal como ela é, sendo que cada equipamento ligado a ela permite apresentar os dados armazenados na MIB, além de estarem dispostos de maneira a serem acessados pela gerência de rede, através de recursos de software, tais como conhecemos de outros aplicativos. Como em sua grande maioria os protocolos de gerenciamento de redes das operadoras de telecomunicação são proprietários, infelizmente essas informações quase nunca chegam ao terminal do usuário comum. A vantagem do SNMP, como qualquer outra aplicação do TCP/IP, é a disponibilidade do protocolo, baixo custo e desenvolvimento facilitado. 8.1.7.2 Comandos de gerenciamento do SNMP Na rede gerenciada pelo SNMP, cada elemento (nó) de rede possui um software, chamado agente, com uma base de dados contendo todos os dados a serem gerenciados. Esses dados são fornecidos pelo administrador da rede e fazem parte intrínseca da configuração do equipamento. As operações do SNMP são feitas com os seguintes comandos: Read - leitura, isto é, monitoramento de variáveis armazenadas no nó de rede. Write - grava dados, isto é, modifica os valores das variáveis armazenadas no nó de rede. Trap - usado no modo assíncrono para reportar eventos ao sistema de gerenciamento de rede. O trap é a captura de um evento e sua posterior informação ao sistema de gerenciamento. Traversal Operation - operações usadas pelo gerenciamento de rede para determinar as variáveis que um dispositivo suporta, e recolher as informações em tabelas que compõem a MIB. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 262 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.1.7.3 Objetos gerenciados pelo SNMP Os objetos gerenciados são definidos como escalares e tabulares. Os tabulares são os objetos que compõem as tabelas, e os escalares definem uma única instância de objeto. Cada objeto possui sua identidade única. As hierarquias têm formato de árvore, com: • • • o objeto raiz (root) sendo o nível mais alto, passando pelos níveis organizacionais, e, descendo até os objetos simples. Veja na figura a seguir a hierarquia em árvore do SNMP. Figura 8.17 Árvore de objetos gerenciados no SNMP.11 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 263 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.1.7.4 Mensagens do SNMP O SNMP é considerado um protocolo de perguntas e respostas. O sistema de gerenciamento de rede emite uma solicitação e os dispositivos gerenciados retornam as respostas. As mensagens (ou comandos) do protocolo permitem implementar as perguntas e respostas. O SNMP foi desenvolvido e aperfeiçoado em duas versões consecutivas, com mensagens constituídas por: • • • Um cabeçalho contendo o número da versão (1 ou 2), Um nome de comunidade, isto é, um nome de domínio para um grupo de sistemas de gerenciamento, e, Uma unidade de dados, chamada PDU, sigla para unidade de dados de protocolo. Os conteúdos das PDUs são: PDU type: especifica o tipo de unidade de dados transmitida. Por exemplo, uma PDU trap vai indicar: • O tipo de objeto gerenciado, • O endereço do agente, • Um número representando o tipo genérico da captura, • Um registro de tempo, e, • Uma variável de ligação que associa a instância de um objeto com seu valor corrente. Request ID: associa as perguntas do SNMP com as respostas. Error status: indica um número do tipo de erro. Error index: associa um erro com uma instância de objeto específica. O SNMP usa cinco tipos básicos de mensagem para se comunicar entre o gerente e o agente: GET, GET-NEXT, GET-RESPONSE, SET e TRAP As 4 primeiras (GET, GET-NEXT, GET-RESPONSE, SET) são utilizadas pelo gerente para requisitar mensagens do agente ou mudanças em valores de variáveis no agente. A mensagem TRAP é a única que pode ser enviada, a qualquer momento, do agente para o gerente, normalmente indicando um alarme ou que um evento anteriormente programado ocorreu. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 264 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP A versão atual do SNMP é versão 3 (SNMP v3), sendo sua principal proposta a melhoria de questões relacionadas com a segurança dos dados monitorados. Figura 8.18 SNMP em ação. 11 8.1.8 DNS (Domain Name Protocol) Protocolo utilizado para localizar o endereço IP de uma máquina de destino a partir do seu nome de domínio. Facilita a vida dos usuários da Internet ou de qualquer rede IP, pois é mais fácil decorar um nome do que o endereço IP. O DNS é um protocolo hierárquico, bastante complexo e importante na fase atual da Internet. O DNS usa a porta 53 e os protocolos UDP (pesquisa do IP a partir do nome de domínio) e TCP (atualização das bases de dados, ou transferência de zonas, entre servidores DNS). 8.1.8.1 Introdução Os endereços IP são fáceis para os computadores trabalharem, mas difíceis para humanos se lembrarem. O Sistema de Nome de Domínio (DNS) resolve esse problema permitindo que nos refiramos a hosts através de nomes como "itit.moodlelivre.com" em vez de "200.200.200.1". Um computador chamado de servidor de nome de domínio (Domain Name System) deixa as aplicações Internet Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 265 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP observarem (look up) o endereço de IP de qualquer host conhecido, e reciprocamente obter o hostname associado com um determinado endereço IP. O DNS foi criado para que o servidor de nome de domínio realize a resolução para os endereço IPs de determinados domínios de redes. O DNS usa um conjunto distribuído de servidores para resolver os nomes associados a esses endereços numerados. O protocolo DNS define um serviço automatizado que localiza os nomes de recursos e resolve com o endereço de rede numérico desejado. Ele inclui o formato para consultas, respostas e dados. Comunicações com o protocolo de DNS utilizam um formato único chamado de mensagem. Esse formato de mensagem é usado para todos os tipos de consultas de clientes e respostas do servidor, mensagens de erro e de transferência de informações de registro de recursos entre os servidores. Como citado, os nomes de domínio são organizados hierarquicamente. À direita está o nível mais alto do domínio o qual pode indicar uma classe de organização tal como .com ou .gov, ou um país, como .br ou .ar. Os domínios de mais alto nível são divididos em domínios de segundo nível, como .com.br. Domínios de segundo nível podem ser adicionalmente subdivididos, e assim por diante. As organizações que administram os domínios de nível mais alto (primeiro nível) mantêm servidores de nome, chamados de servidores de nome raiz (root name server), os quais conhecem os endereços IP dos servidores de nome do segundo nível de domínio. Os gerentes do segundo nível de domínios têm que manter os seus servidores, os quais conhecem os endereços IP dos servidores de nome de domínio de terceiro nível, e assim por diante. Um domínio de baixo nível como "scopus.com" ou "compuarte.com.br" podem representar uma rede inteira. Os servidores de nome de domínio daquele nível têm que prover os endereços IP de todos os hosts dentro dele. Em um nome de domínio completamente qualificado, o nome de host é o nome da esquerda. Então, para que o "www.scopus.com" leve você até o WEB site da Scopus, a Scopus precisa nomear seu servidor de WEB "www" e ter uma entrada em seus servidores de nome unindo este nome com o endereço IP do servidor. 8.1.8.2 Registros do DNS Um servidor DNS fornece a resolução de nomes usando o nome do daemon, que é chamado frequentemente de named, (pronuncia- se name-dee). Lembre-se de que um daemon é um programa de computador que roda em processo background, sob controle de um sistema operacional multitarefa, sem controle direto interativo de um usuário. A princípio, a maioria das aplicações no Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 266 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP TCP/IP rodam “debaixo” de um daemon, devido à característica do modelo cliente/servidor das aplicações atuais. O servidor DNS armazena diferentes tipos de registros de recursos usados para resolver nomes. Esses registros contêm o nome, endereço e tipo de registro. Alguns desses tipos de registro são:12 A - o endereço do dispositivo final NS - um servidor de nome de autoridade CNAME - nome canônico (ou Fully Qualified Domain Name) para um alias, utilizado quando vários serviços têm um único endereço de rede, mas cada serviço tem a sua própria entrada no DNS MX - registro de troca de mensagem de correio eletrônico; mapeia um nome de domínio para uma lista de servidores de troca de mensagem de correio eletrônico para esse domínio Exemplo de um Registro de DNS com Sintaxe: exemplo.com.br IN A 200.200.200.1 Onde: IN indica Internet A indica o endereço (Address) do registro. O exemplo acima indica que o Endereço IP para o domínio example.com.br is 200.200.200.1 (nome e IP são fictícios). Veja a seguir o funcionamento genérico do DNS. 8.1.8.3 Funcionamento genérico do DNS Quando uma aplicação tenta contatar um host através do nome, a pilha TCP/IP, roda um módulo chamado de o resolvedor (resolver). Primeiro, ele tenta localizar (look up) o endereço IP localmente. Em um Windows PC, ele verifica no arquivo C:\WINDOWS\HOSTS, que é um arquivo de texto que contém uma lista de entradas no formato <endereço IP> <nome do host>. Esse era o caminho onde todos “olhavam” e que era clonado (copiado pelos administradores das outras redes) nos dias anteriores ao servidor de nome de domínio ter sido inventado. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 267 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Se o nome não é achado no arquivo HOSTS, o software contata um do servidores de nome de domínio locais, cujo endereço IP está na configuração de TCP/IP, para ver se ele sabe o endereço. Se o host que você busca não está na zona local, ele provavelmente não vai ser localizado, a menos que aquele host tenha sido contatado recentemente e o seu endereço estiver na memória cache. Servidores de nome colocam os endereços IPs na memória cache e assim eles não têm que descobrir os endereços de hosts populares , toda vez que eles são contatados. Se o servidor de nome local não conhece o endereço do host que você quer, ele contata o servidor de nome de raiz (root name system) para o domínio de primeiro nível daquele host cujo endereço ele sabe. O servidor de nome de nível raiz dá ao servidor de nome local o endereço do servidor de segundo nível apropriado. O servidor de segundo nível passa para ele o endereço do servidor de terceiro nível e assim por diante, até eventualmente o servidor desejado ser localizado. 8.1.8.4 Navegando na WEB usando o Sistema de Nomes de Domínio (DNS) Vamos examinar agora o método básico que permite um servidor de Nomes de Domínio conduzir os clientes para um WEB site. O diagrama a seguir descreve um pedido feito pelo browser WEB de um cliente quando ele tenta se logar ao web site. Figura 8.19 Processo geral de localização do nomes de domínio.15 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 268 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Para determinar qual servidor de nomes primário (primary name server) contém seus Registros de Nomes de Domínio, um servidor de nomes local (local name server) contata o servidor de nomes de domínio raiz (root name server) mantido pelo InterNIC. O servidor de nomes de domínio raiz então retorna o endereço IP do servidor de nomes primário responsável pelo domínio que é pedido. O servidor de nomes primário se torna a próxima máquina contatada pelo servidor de nomes local. O servidor de nomes primário mantém o endereço IP do servidor de nomes de domínio que satisfaz o pedido do servidor de nomes local. Então o servidor de nomes local pode finalmente retornar o endereço de IP ao browser WEB. Usando o endereço IP, o browser WEB pode contatar o servidor WEB da companhia e baixar suas páginas WEB. Você pode ver como o DNS utiliza bem os papéis do TCP e do UDP no TCP/IP. Desde que ambos os protocolos de transporte podem ser usados, servidores de nome de domínio “escutam” (listening) por requisições UDP e TCP no mesmo número de porta bem conhecida 53. O dispositivo que age como o cliente usa um número de porta efêmera para a transação. Todas as mensagens de DNS são enviadas de forma unicast diretamente de um dispositivo para outro. Portanto, como conceito fundamental, verifica-se que o DNS usa o UDP e o TCP para enviar mensagens. Trocas de mensagem convencionais são "curtas e menos importantes" e assim bem apropriadas ao uso muito rápido do UDP; O próprio DNS controla a detecção e retransmissão de requisições perdidas. Para trocas maiores ou mais importantes de informação, especialmente transferências de zona, o TCP é usado – tanto pela sua confiabilidade como pela sua habilidade em controlar mensagens de qualquer tamanho. 8.1.9 Protocolo e Serviço de compartilhamento de arquivo SMB O Server Message Block (SMB) é um protocolo de compartilhamento de arquivos cliente/servidor. A origem do SMB ocorre a partir do DOS (Disk Operation System) em 1984, sendo que a IBM desenvolveu o Server Message Block (SMB) no final dos anos 1980 para descrever a estrutura de recursos de rede compartilhados, como diretórios, arquivos, impressoras e portas seriais. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 269 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O protocolo da camada de aplicação SMB utiliza o TCP como protocolo da camada de transporte e a porta lógica 445. de arquivos e de impressão tornaram-se a Os serviços SMB de compartilhamento d base da interconexão de redes da Microsoft, pois, a partir do Windows 2000, 2000 todos os produtos posteriores da Microsoft usam o DNS para resolução de nomes de domínio. Isso permite que os protocolos TCP/IP suportem diretamente o compartilhamento de recursos SMB (anteriormente a Microsoft utilizava um protocolo não TCP/IP para interação a resolução de nomes). A microsoft tem proposto várias modificações desse protocolo ao longo do tempo. Os sistemas operacionais Linux e UNIX também fornecem um método de compartilhamento de recursos com redes Microsoft usando uma versão do SMB chamada SAMBA. Os sistemas operacionais Apple Macintosh também suportam o compartilhamento de recursos utilizando o protocolo SMB. Às vezes o SMB é chamado de protocolo Common Internet File System (CIFS). ( O conjunto de pacotes de mensagem que define uma versão particular de um protocolo é chamado de dialeto.14 Nesse sentido, o CIFS é um dialeto do SMB. Figura 8.20 SMB em ação.33 Basicamente, o SMB é um protocolo de solicitação-resposta.. O protocolo SMB descreve o processo de acesso ao sistema de arquivos e como os clientes podem fazer pedidos de arquivos arquivos. Ele também descreve o protocolo de comunicação entre Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 270 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP processos SMB. Todas as mensagens SMB compartilham um formato comum. Este formato usa um cabeçalho de tamanho fixo seguido por um parâmetro de tamanho variável e componente de dados. O SMB pode ser considerado um suíte de protocolo relativamente simples13. Ele possui comandos para operações de arquivo e impressão que você poderia realizar num disco local ou numa impressora, tais como: • • • • • Abrir e fechar um arquivo Criar e deletar arquivos e diretórios Ler e escrever um arquivo Procura de arquivos Enfileirar e retirar da fila arquivos numa fila de impressão Como qualquer sistema cliente/servidor, os clientes SMB estabelecem uma conexão aos servidores. Uma vez que a conexão é estabelecida, o usuário do cliente pode acessar os recursos do servidor, como se o recurso fosse local para o host cliente. O SMB possui versões 1.0, 2.0 e 3.0. 8.1.10 Protocolo DHCP O serviço Dynamic Host Configuration Protocol (DHCP), protocolo de configuração dinâmico do host, permite que os dispositivos em uma rede obtenham endereços IP e outras informações de um servidor DHCP. Esse serviço automatiza a atribuição de endereços IP, máscaras de sub-rede, gateway e outros parâmetros de rede IP. O DHCP permite que um host obtenha um endereço IP dinamicamente quando ele se conecta à rede. O servidor DHCP é contatado e um endereço solicitado. O servidor DHCP escolhe um endereço de um intervalo configurado de endereços chamado de pool e o atribui ("aluga") para o host por um período definido. O DHCP utiliza normalmente duas portas bem conhecidas: a porta 67 UDP para o servidor DHCP e a porta 68 UDP para o cliente no Host. Ou seja, o host DHCP vai enviar mensagens pela porta 68 e o servidor DHCP irá enviar mensagens utilizando a porta 67, ambos utilizando o protocolo UDP da camada de transporte. Numa rede de computadores existem várias possibilidades de alocação de endereços IP para máquinas clientes, sendo que algumas servem de razões para o uso do DHCP: 1. Alocar automaticamente um endereço IP permanente para uma máquina cliente; 2. Alocar automaticamente um endereço IP para uma máquina cliente durante uma quantidade finita de tempo, ou até que o cliente DHCP renove o endereço IP; Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 271 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 3. Alocar manualmente um endereço IP de uma máquina cliente, quando um administrador de redes realiza a configuração manualmente. Em grandes redes locais, ou onde as mudanças nas máquinas dos usuários da rede são frequentes, o uso do DHCP é normalmente preferido. Novos usuários podem chegar com laptops e precisam de uma conexão. Outros têm novas estações de trabalho que precisam ser ligadas. Ao invés de o administrador de rede ter que atribuir manualmente endereços IP para cada estação de trabalho, é mais eficiente ter endereços IP atribuídos automaticamente usando o DHCP. Os endereços distribuídos pelo DHCP normalmente não são atribuídos permanentemente aos hosts, mas só são designados por um período de tempo. Se o host for desligado ou retirado da rede, o endereço é retornado ao pool de endereços para reutilização. Isso é especialmente útil com usuários móveis que entram e saem de uma rede. Os usuários podem se mover livremente de local para local e re-estabelecer conexões de rede. O host pode obter um endereço IP uma vez que a conexão de hardware é feita, quer através de uma LAN com fio ou sem fio. O DHCP permite que você acesse a Internet usando hotspots nos aeroportos e cafés. Quando você entra na área de atendimento do protocolo DHCP, o cliente DHCP do seu laptop contata o servidor DHCP local através de uma conexão sem fio. O servidor DHCP atribui um endereço IP para o seu laptop. Vários tipos de dispositivos podem ser servidores DHCP ao executarem um software de serviço DHCP, tais como: servidores independentes, roteadores, firewall, proxy, etc.. O servidor DHCP na maioria das médias e grandes redes geralmente é um servidor baseado em PC dedicado local. Em redes domésticas o servidor DHCP geralmente está localizado no roteador doméstico e um host na rede doméstica recebe sua configuração IP diretamente desse roteador. Por sua vez, o endereço público utilizado pelo roteador doméstico é recebido via servidor DHCP do prestador de serviço Internet (ISP). A utilização do DHCP pode representar um risco de segurança, pois qualquer dispositivo conectado à rede pode receber um endereço. Esse risco torna a segurança física um fator importante na determinação da utilização dinâmica ou manual do endereçamento IP. Tanto o endereçamento IP estático como o dinâmico têm seus lugares cativos em projetos de rede. Muitas redes usam tanto o DHCP como o endereçamento estático. O DHCP é usado para propósitos gerais, tais como dispositivos de usuários finais, e endereços fixos são usados para dispositivos de rede, como gateways, switches, servidores, roteadores e impressoras. Veja a figura a seguir. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 272 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Figura 8.21 Escopo do DHCP.1 Por outro lado, sem a utilização do DHCP, significa que os usuários têm que inserir manualmente o endereço IP, máscara de sub-rede e outras configurações de rede, a fim de terem acesso à rede. O servidor DHCP mantém um pool de endereços IP e designa um endereço para qualquer cliente DHCP ativado quando o cliente está ligado. Como os endereços IP são dinâmicos (designados temporariamente) ao invés de estáticos (atribuídos de forma permanente), endereços não mais em uso são automaticamente retornados ao pool de endereços para realocação. 8.1.10.1 Tipos de Mensagem DHCP O protocolo DHCP tem 3 tipos principais de mensagens:4 1. DHCPDISCOVER Esse tipo de mensagem DHCP é usada pelo cliente DHCP para descobrir um servidor DHCP. 2. DHCPOFFER Esse tipo de mensagem DHCP é usada pelo servidor DHCP para responder a uma mensagem DHCPDISCOVER enviada por um cliente DHCP e também oferecer detalhes de configuração a qualquer momento em que houver uma requisição. 3. DHCPREQUEST Esse tipo de mensagem vem de um cliente DHCP para um servidor DHCP representando três mensagens distintas. A primeira é solicitar detalhes de configuração de um servidor DHCP específico e rejeitar especificamente a oferta de quaisquer outros potenciais servidores DHCP. Em segundo lugar, pode ser utilizada Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 273 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP para verificação do endereço de IP anteriormente utilizado, depois que um sistema sofreu uma reinicialização. A última, pode ser usada para estender a cessão (empréstimo) de um endereço de IP específico. 8.1.10.2 Troca de mensagens DHCP Quando um dispositivo configurado com o DHCP é inicializado ou se conecta à rede, o cliente transmite um pacote DHCP DISCOVER para identificar todos os servidores DHCP disponíveis na rede. Um servidor DHCP responde com uma DHCP OFFER, que é uma mensagem de oferta de atribuição temporária de um endereço IP, máscara de sub-rede, servidor DNS e gateway padrão, bem como a duração do contrato de atribuição temporária. O cliente pode receber vários pacotes DHCP OFFER se houver mais de um servidor DHCP na rede local, por isso deve escolher entre eles e transmitir um pacote DHCP REQUEST que identifica o servidor explícito e a oferta de locação que o cliente está aceitando. Figura 8.22 Troca de mensagens no DHCP. 1 Um cliente pode optar por solicitar um endereço que já havia sido atribuído pelo servidor. Supondo-se que o endereço IP solicitado pelo cliente, ou oferecidos pelo servidor, ainda é válido, o servidor retornaria uma mensagem DHCP ACK que reconhece ao cliente a locação e o processo é finalizado. Se a oferta não é mais válida - talvez devido a um tempo limite ou outro cliente receber a locação - o servidor selecionado irá responder com uma mensagem DHCP NAK (Negative Acknowledgement). Se uma mensagem DHCP NAK é devolvida, o processo de seleção deverá recomeçar com uma nova mensagem DHCP DISCOVER sendo transmitida. Uma vez que o cliente obtenha a concessão, ela deve ser renovada antes da expiração da concessão através de outra mensagem DHCP REQUEST. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 274 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP O servidor DHCP garante que todos os endereços IP sejão únicos (um endereço IP não pode ser atribuído a dois dispositivos de rede diferentes simultaneamente). O uso do DHCP permite que os administradores de rede reconfigurem facilmente endereços IP do cliente, sem ter que fazer manualmente as alterações para os clientes. A maioria dos provedores de Internet usam o DHCP para alocar endereços aos seus clientes que não necessitam de um endereço estático. 8.2 UTILITÁRIOS DA CAMADA DE APLICAÇÃO Utilitários da camada de aplicação do TCP/IP são utilizados para testar, avaliar, detectar e gerenciar problemas na rede de computadores. O nome dos utilitários pode mudar em função do sistema operacional usado. A seguir apresentamos os utilitários TCP/IP para o sistema operacional Windows 7 da Microsoft. Para reproduzir os comandos, o leitor deve clicar no botão Iniciar do Windows 7, depois digitar o comando CMD. Após isso feito, teremos acesso ao prompt do DOS, onde poderemos digitar os comandos utilitários a seguir explanados. Para o ambiente de teste dos utilitários, utilizamos uma rede TCP/IP doméstica, envolvendo 2 desktops e um modem ADSL. Este último serve como gateway dos dois desktops. A maioria dos utilitários TCP/IP aceita ou exige argumentos que podem ser pesquisados com o comando help (símbolo de interrogação - ?) no Windows 7. Figura 8.23 Exemplo do comando de ajuda (?) nos utilitários TCP/IP.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 275 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.2.1 Ipconfig O utilitário que retorna as informações básicas do endereço IP da máquina local e o Ipconfig. Usando o utilitário Ipconfig, vamos verificar os dados do TCP/IP da máquina que nos auxiliará na demonstração dos demais utilitários TCP/IP do Windows 7. Figura 8.24 Resultado do comando utilitário Ipconfig.1 O resultado do utilitário nos exibe que o endereço IPv4 da máquina é o 10.1.1.2 e o gateway dessa máquina é o IP 10.1.1.1. O endereço IPv6 da máquina é o fe80::fcf7:5a2b:ac85:ed57 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 276 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.2.2 Ipconfig /all Utilitário que retorna todas as informações referentes ao endereço IP da máquina local. Figura 8.25 Resultado do comando utilitário Ipconfig/all.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 277 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Perceba que, além dos endereços IP, com o utilitário Ipconfig /all nós obtivemos também o endereço MAC (endereço físico), ou seja, o endereço da camada de enlace, que é o 84-2B-2B-7D-24-EB. Várias outras informações são exibidas. 8.2.3 Ping Utilitário utilizado para testar a conectividade (da camada física até a camada de rede) entre duas máquinas na rede. Através dele também temos uma ideia do delay na transmissão do sinal entre as duas máquinas. No exemplo abaixo, fizemos um Ping da máquina local até o gateway da rede doméstica. Ping realizado com sucesso e tempo de resposta de 1 ms no máximo. Figura 8.26 Resultado do comando utilitário Ping.1 8.2.4 Hostname Utilitário que retorna o nome do host Figura 8.27 Resultado do comando utilitário Hostname.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 278 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.2.5 Arp –a Utilitário que retorna as informações da tabela ARP armazenada na máquina local. Figura 8.28 Resultado do comando utilitário Arp -a.1 Percebemos a relação dos endereços lógicos com os endereços físicos (MAC) armazenados na tabela ARP da máquina local. 8.2.6 Netstat Utilitário que retorna as conexões ativas do protocolo TCP/I`P Figura 8.29 Resultado do comando utilitário Netstat -a.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 279 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Na figura anterior, é exibida uma relação parcial das conexões virtuais estabelecidas na camada de transporte (TCP). Observe que cada utilitário poderá requisitar parâmetros adicionais na linha de comando, os quais podem ser verificados utilizando o Help desses comandos. 8.2.7 Route Utilitário que retorna as informações da tabela de roteamento armazenada na máquina local. Figura 8.30 Resultado do comando utilitário Route Print.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 280 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.2.8 Tracert (Trace route no Linux) Utilitário que retorna as informações da rota ou caminho percorrido entre um host A e um Host B. Figura 8.31 Resultado do comando utilitário Tracert.1 8.2.9 Nslookup Utilitário que resolve um nome de domínio para o endereço IP (simulando o serviço DNS). Figura 8.32 Resultado do comando utilitário Nslookup.1 Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 281 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 8.3 CONSIDERAÇÕES FINAIS DA CAMADA DE APLICAÇÃO A camada de aplicação do modelo TCP/IP é a que recebe maior número de protocolos, tanto no modelo cliente/servidor quanto no modelo peer to peer. O objetivo deste capítulo foi apresentar os conceitos básicos da camada e a apresentação geral dos seus principais protocolos. O leitor poderá avançar no estudo de cada protocolo específico que desejar ou precisar. Um livro recomendado para o estudo mais aprofundado da camada de aplicação é Redes de Computadores e Internet: uma abordagem top-down. 15 8.4 RESUMO A camada de aplicação provê uma interface para os aplicativos utilizarem os serviços de rede do modelo de referência adotado (OSI ou TCP/IP). A unidade de dados padrão dos protocolos da camada de aplicação (PDU) é dados ou mensagem. A camada de aplicação trabalha com os endereços dos processos aplicativos e cria os sockets para gerenciar a troca de dados entre aplicações, via camada de transporte, de uma aplicação numa máquina de origem a uma máquina de destino. Os principais protocolos da camada de aplicação são: HTTP, FTP, SMTP, POP (IMAP), SNMP, Telnet, entre outros. A camada de aplicação do TCP/IP também possui os utilitários utilizados para testar, avaliar, gerenciar e monitorar a rede de computadores. Os principais utilitários do TCP/IP são: Ping, Tracert, Route, Arp, Netstat, Lookup, Ipconfig, etc. Os principais equipamentos que trabalham na camada de aplicação são máquinas finais, clientes ou servidores. Neste capítulo final procurou-se dar uma visão geral dos protocolos e dos utilitários da camada de aplicação no modelo TCP/IP. Não foi objetivo esgotar o assunto: o profissional de rede de computadores deve buscar literatura especializada, caso necessitar se aprofundar em qualquer um dos protocolos e utilitários vistos nessa camada. Termina aqui este capítulo que tratou da camada de aplicação do modelo TCP/IP. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 282 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP CONCLUSÃO Concluímos aqui este livro esperando que ele traga conhecimento para o leitor nos Fundamentos de Redes de Computadores. Conhecer os Fundamentos de Redes de Computadores possibilita ao leitor, estudante ou profissional da área de Infraestrutura de Redes de Computadores, avançar no estudo de tópicos mais específicos e avançados dessa área. Convidamos ao leitor a participar de nosso curso on-line Fundamentos de Redes de Computadores onde qualquer dúvida sobre o exposto neste livro pode ser retirada. Verifique as informações constantes no Apêndice A deste livro para a inscrição no curso citado (cadastre-se em nosso blog para participar de vagas gratuitas no curso citado). Att., Ademar Felipe Fey Raul Ricardo Gauer Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 283 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP REFERÊNCIAS BIBLIOGRÁFICAS 1. FEY, Ademar; Gauer, Raul R. Fundamentos de Redes de Computadores. Curso on-line. www.itit.moodlelivre.com. 2009-2013. 2. FEY, Ademar F. Mas afinal o que é o modelo OSI? 2010. Disponível em: <http://ademarfey.wordpress.com/2010/12/25/mas-afinal-o-que-e-o-modelo-osi/>. Acesso em 09/08/2013. 3. TANEMBAUM, Andrew S. Redes de Computadores. 5ª. Ed. Rio de Janeiro: Campus, 2011. 4. IBM. TCP/IP Tutorial and Technical Overview. 2006. Capítulo 4 - Camada de Transporte. Disponível em: <http://www.redbooks.ibm.com/redbooks/pdfs/gg243376.pdf>. Acesso em: 18/07/2013. 5. FEY, Ademar Felipe. Introdução as Redes WAN. 2013. 2009-2013. 6. SOARES, Luiz F. G; LEMOS, Guido; COLCHER, Sérgio. Redes de Computadores: das LANs, MANs e WANs às redes ATM. 6ª. Ed. Rio de Janeiro: Campus, 1995. 7. PATTERSON, Jason. The History Of Computers During My Lifetime. Disponível em: <http://www.straipsniai.lt/en/Computers/page/7768>. Acesso em: 22/08/2013. 8. ROJAS, Raúl; HASHAGEN, Ulf. The First Computers - History and Architectures. MIT Press. 2000. 9. FEY, Ademar Felipe; GAUER, Raul Ricardo. Redes WAN. Curso on-line. www.itit.moodlelivre.com. 2009-2013. 10. FEY, Ademar Felipe; GAUER, Raul Ricardo. Fundamentos de Telecomunicações e Comunicação de Dados. Curso on-line. www.itit.moodlelivre.com. 2009-2013. 11. DPSTELECOM. SNMP Tutorial: An Introduction to SNMP. Disponível em: <http://www.dpstele.com/layers/l2/snmp_tutorials.php>. Acesso em: 22/08/2013. 12. HUQUE, Shumon. DNS and DNSSEC. University of Pennsylvania. Disponível em: <http://www.huque.com/~shuque/doc/2012-05-DNS-DNSSEC-Tutorialhuque.pdf>. Acesso em: 24/08/2013. 13. ECKSTEIN, Robert; COLLIER-BROWN, David; KELLY, Peter. Using Samba. 1st Edition November 1999. 14. MICROSOFT. Microsoft SMB Protocol and CIFS Protocol Overview. Disponível em: <http://msdn.microsoft.com/enus/library/windows/desktop/aa365233%28v=vs.85%29.aspx>. Acesso em: 25/08/2013. 15. KUROSE, James F.; ROSS, Keith W. Redes de Computadores e Internet: uma abordagem top-down. 5. ed. São Paulo: Addison, Wesley, 2010. 16. MICROSOFT. TCP/IP Fundamentals for Microsoft Windows. 2008. Disponível em: <http://www.microsoft.com/en-us/download/details.aspx?id=8781>. Acesso em: 17/08/2013. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 284 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 17. FEY, Ademar; Gauer, Raul R. IPv6: Teoria e Prática. Curso on-line. www.itit.moodlelivre.com. 2011-2013. 18. HAIN, Tony. IPv6 Basics. Cisco Systems. Disponível em: <http://www.nanog.org/meetings/nanog26/presentations/hain.pdf>. Acesso em: 18/07/2013. 19. LINKOVA, Jena. IPv6: What, Why, How. Disponível em: <http://www.openwall.com/presentations/IPv6-1.pdf>. Acesso em: 28/08/2013. 20. INGALLS, Robert. Sockets Tutorial. Disponível em: <http://www.cs.rpi.edu/~moorthy/Courses/os98/Pgms/socket.html>. Acesso em: 03/11/2013. 21. JAIN, Raj. TCP tutorial. Ohio State University. USA. Disponível em: <http://www.cse.wustl.edu/~jain/bnr/ftp/f20_tcp.pdf>. Acesso em: 13/11/2013. 22. GUANG, Cheng. TCP Analysis Based on Flags. College of Computer Science & Engineering. Southeast University, Nanjing, P.R. China. Disponível em: <http://www.nordu.net/development/2nd-cnnw/tcp-analysis-based-on-flags.pdf>. Acesso em: 13/11/2013. 23. CULLER, David E. Wireless Embedded Internetworking Short Course. University of California at Berkeley. Department of Electrical Engineering and Computer Science. Disponível em: <http://www.eecs.berkeley.edu/~culler/WEI/labs/lab5-sockets/sockets-intro.html>. Acesso em: 14/11/2013. 24. SHIEH, Chin-Shiuh. Internet Programming in Microsoft WinSock API. 2008. Disponível em: <http://bit.kuas.edu.tw/~csshieh/teach/np/winsock/> Acesso em: 15/11/2013. 25. HOLGATE, Len. TCP flow control and asynchronous writes. 2011. Disponível em: <://www.serverframework.com/asynchronousevents/2011/06/tcp-flow-controland-asynchronous-writes.html>. Acesso em: 15/11/2013. 26. ROUGHAN, Matthew. TCP Flow Controls. Adelaide-Melbourne Grampians Workshop. 1999. Disponível em: <http://www.maths.adelaide.edu.au/matthew.roughan/Papers/tcptute.pdf>. Acesso em: 15/11/2013. 27. MICROSOFT. Digital Computing Timeline. Disponível em: <http://research.microsoft.com/en-us/um/people/gbell/Digital/timeline/1977-3.htm>. Acesso em: 15/11/2013. 28. IBM. IBM 100. 100 anos da história da IBM. Disponível em: <http://www03.ibm.com/ibm/history/ibm100/us/en/icons/personalcomputer/transform/>. Acesso em: 15/11/2013. 29. CISCO. Hubs. Disponível em: <http://www.cisco.com/en/US/products/hw/hubcont/ps853/tsd_products_support_eol _series_home.html>. Acesso em: 15/11/2013. 30. CISCO. Switches. Disponível em: <http://www.cisco.com/cisco/web/solutions/small_business/products/routers_switche s/catalyst_2960_series_switches/index.html>. Acesso em: 15/11/2013. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 285 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 31. CISCO. Overview of the Cisco MWR 1941-DC Router. Disponível em: <http://www.cisco.com/en/US/docs/wireless/mwr_1941/hardware_install/1941_hardw are_install/guide/1941ovr.html>. Acesso em: 15/11/2013. 32. ARIN. IPv4 Depletion and IPv6 Adoption Today. Disponível em: <https://www.arin.net/knowledge/ipv6_info_center.html>. Acesso em: 15/11/2013. 33. MICROSOFT. Microsoft SMB Protocol and CIFS Protocol Overview. Disponível em: <http://msdn.microsoft.com/enus/library/windows/desktop/aa365233%28v=vs.85%29.aspx>. Acesso em: 15/11/2013. 34. BLACK BOX. Repetidor. Disponível em: <http://www.blackbox.com/Store/Results.aspx/search-repeter%60%60si_product>. Acesso em: 15/11/2013. 35. CISCO. Open System Interconnection Protocols. <http://docwiki.cisco.com/wiki/Open_System_Interconnection_Protocols>. Acesso em: 14/04/20. 36. ALLIEDTELESIS. AlliedWare OS Software Reference. Chapter 24: Open Systems Interconnection (OSI).. Disponível em: <http://www.alliedtelesis.com/media/fount/software_reference/291/at9800/osi.pdf>Ac esso em: 23/04/2014. 37. PISCITELLO, David M., CHAPIN, A. Lyman. Open Systems Networking: TCP/IP and OSI. 1993 by Addison-Wesley Professional. 38. BAKER, Martin John. Telecommunications - OSI Protocols. Disponível em: <http://www.euclideanspace.com/coms/stack/osi/index.htm>. Acesso em: 23/04/2014. 39. COMPUTER & TECHNOLOGY. Application Layer of the OSI Reference Model Function. Disponível em> <http://www.learn44.com/application-layer-of-theosi-reference-model-function>. Acesso em: 03/05/2013. 40. UNIVERSITEIT TWENTE. Presentation Layer. 1998. Disponível em: <http://wwwhome.cs.utwente.nl/~widya/AP/sh-col3b.pdf>. Acesso em: 18/04/2014. 41. ANDREW TAN TENG HONG; MAH CHEE MENG; CHEE YEW WAI; TAN YOKE CHUAN; CHEONG KIM MING. Comparison and Contrast between the OSI and TCP/IP Model. Apresentação PowerPoint. 42. TECHTARGET. Aplication layer. Disponível em: <http://searchnetworking.techtarget.com/definition/Application-layer>. Acesso em 20/04/2013. 43. CISCO. Open System Interconnection Protocols. Disponível em: <http://docwiki.cisco.com/wiki/Open_System_Interconnection_Protocols>. Acesso em: 14/04/20. 44. HABIB, Ahsan (Berkeley); CHRISTIN, Nicolas (Carnegie Mellon University); CHUANG, John (Berkeley). Taking Advantage of Multihoming with Session Layer Striping. 45. UNIVERSITEIT DE TWENTE. Session Layer. PDF. Disponível em: <http://wwwhome.cs.utwente.nl/~widya/AP/sh-col3a.pdf>. Acesso em: 24/04/2014. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 286 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 46. DUBUISSON, Olivier. ASN.1 Communication between Heterogeneous Systems. 2000. http://www.oss.com/asn1/booksintro.html.17/04/2014. 47. PACKETIZER. Chapter 7: The encoding question, Introduction to Presentation Layer concepts. Disponível em: <http://www.packetizer.com/osi/understandingosi/chapter7.html>. Acesso em: 17/04/2014. 48. MICROSOFT. Uma breve introdução ao ASN.1 e ao BER. Disponível em: <http://support.microsoft.com/kb/252648/pt-br>. Acesso em: 14/09/2012. 49. IBM. ASN.1/XML Translator. Disponível em: <http://www.research.ibm.com/trl/projects/xml/xss4j/docs/axt-readme.html>. Acesso em: 18/04/2014 50. OOCITIES.ORG. Presentation Layer. Disponível em: http://www.oocities.org/starwosi/apresent.htm. Acesso em: 14/09/2012 51. INETDAEMON.COM. Presentation Layer. Disponível em: <http://www.inetdaemon.com/tutorials/basic_concepts/network_models/osi_model/tra nsport.shtml>. Acesso em: 17/09/2012. 52. HILL2DOT0. Presentation Layer. Disponível em: <http://www.hill2dot0.com/wiki/index.php?title=Presentation_Layer>. Acesso em: 28/03/2012. 53. WIKIPEDIA. Presentation layer. Retirado de. Disponível em: <http://en.wikipedia.org/wiki/Presentation_layer>. Acesso em: 14/09/2012. 54. ENOTES. Presentation Layer. Disponível em: <http://www.enotes.com/topic/OSI_model#Layer_6:_presentationr>. Acesso em: 14/09/2012. 55. WIKIPEDIA. OSI Model. Disponível em: <http://en.wikipedia.org/wiki/OSI_model#Layer_3:_network_layer>. Acesso em: 25/04/2014. 56. BRISA. Arquiteturas de redes de computadores OSI e TCP/IP. Macron Books: Rio de Janeiro, 1994. 57. BLANK, Andrew G. TCP/IP Jumpstart: Internet Protocol Basics. John Wiley & Sons Inc (US). Second Edition. 2002. Disponível em: <http://media.wiley.com/product_data/excerpt/13/07821410/0782141013.pdf>. Acesso em: 10/03/2012. 58. KOZIEROK, Charles M. The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference [Hardcover]. Versão on-line. 2005. Disponível em: < http://www.amazon.com/dp/159327047X#reader_159327047X>. Acesso em: 10/03/2012. 59. LARMOUTH, John. Understanding OSI. 10 Nov 1997 Revision. Versão on-line. Disponível em: <http://www.packetizer.com/osi/understandingosi/chapter1.html>. Acesso em: 10/03/2012. 60. LEINER, Barry M. et al. Brief History of the Internet. Internet Society. Disponível em: <http://www.internetsociety.org/internet/internet-51/historyinternet/brief-history-internet>. Acesso em: 11/03/2012. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 287 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP 61. PELKEY, James. Entrepreneurial Capitalism and Innovation: A History of Computer Communications. 1968-1988. 2007. Disponível em: <http://www.historyofcomputercommunications.info/index.html>. Acesso em: 10/03/2012. 62. POUZIN, Louis. The Cyclades network - present state and development trends. Symposium on Computer Networks, 1975 pp 8-13. Disponível em: <http://rogerdmoore.ca/PS/CIGALE/CYCL2.html>. Acesso em: 11/03/2012. 63. ZIMMERMANN, Hubert. OSI Reference Model-The IS0 Model of Architecture for Open Systems Interconnection. IEEE Transactions .on Communications, VOL. COM-28, No. 4, APRIL 1980. Pag.425-432. Disponível em: <http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.136.9497&rep=rep1&type =pdf>. Acesso em: 10/03/2012. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 288 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP APÊNDICE A – Cadastro no blog Infraestrutura de Redes Cadastrando-se em nosso blog (www.ademarfey.wordpress.com) você recebe promoções mensais de nossos cursos e e-books, inclusive com vagas gratuitas aos cursos. Para cadastro em nosso blog envie um e-mail para cursosead.aff@gmail.com, com as seguintes informações: • Assunto: cadastro no blog. • Nome completo. • E-mail em que deseja receber novidades sobre cursos, artigos e e-books. Att., Prof. Ademar e Prof. Gauer www.ademarfey.wordpress.com www.itit.moodlelivre.com Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 289 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP APÊNDICE B – Indicações de cursos on-line e e-books por assunto Cursos On-Line em Infraestrutura de Redes de Computadores Indicamos a seguir por assunto a ser estudado nossos cursos on-line/e-books Assunto Curso/E-book Modelo OSI conceitos básicos Fundamentos de Redes de Computadores Introdução às Redes de Computadores (ebook) Fundamentos de Redes de Computadores: 365 resolvidas e comentadas (e-book) Fundamentos de Redes de Computadores Introdução às Redes de Computadores (e- Modelo TCP/IP conceitos básicos book) Fundamentos de Redes de Computadores: 365 questões resolvidas e comentadas (ebook) Sub-rede Fundamentos de Redes de Computadores Como criar sub-redes em redes IP (e-book) Dominando Sub-redes no IPv4 e no IPv6 (ebook) CIDR Como Criar Sub-redes em Redes IP (e-book) Dominando Sub-redes no IPv4 e no IPv6 (ebook) VLSM Como Criar Sub-redes em Redes IP (e-book) Dominando Sub-redes no IPv4 e no IPv6 (ebook) Cabeamento Estruturado Cabeamento Estruturado Cabeamento Estruturado (e-book) Fundamentos de Telecomunicações Fundamentos de Telecom. e Com. de Dados Comunicação de Dados Fundamentos de Telecom. e Com. de Dados Telefonia básica Telefonia básica IPv6 IPv6: teoria e prática Dominando o IPv6 a partir do IPv4 (e-book) VLAN Configuração de Roteadores e Switches Básico Desvendando VLANs (e-book) Tópicos avançados em configuração Configuração de Roteadores e Switches de Roteadores e Switches Intermediário Problemas em redes de Computadores Como Resolver Problemas em Redes de Computadores Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 290 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP Redes WAN Redes WAN Introdução às Redes WAN (e-book) Veja detalhes dos cursos no link http://ademarfey.wordpress.com/cursos-online/ Veja detalhes dos e-books no link http://ademarfey.wordpress.com/e-books Entre em contato pelo e-mail cursosead.aff@gmail.com Att., Prof. Ademar Felipe Fey. Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 291 INTRODUÇÃO ÀS REDES DE COMPUTADORES: MODELOS OSI E TCP/IP APÊNDICE C – Outras obras dos autores Cursos On-Line na área de Infraestrutura de Redes de Computadores • • • • • • • • • Fundamentos de Redes de Computadores Fundamentos de Telecomunicações e Comunicação de Dados Telefonia Básica Cabeamento estruturado Redes WAN Configuração de Roteadores e Switches Básico Configuração de Roteadores e Switches Intermediário IPv6: teoria e prática Como Resolver problemas de Comunicação em Redes de Computadores E-books em na área de Infraestrutura de Redes de Computadores • • • • • • • • Introdução às Redes de Computadores Fundamentos de Redes de Computadores: 365 questões resolvidas e comentadas Introdução às Redes WAN: redes de longa distância Como Criar Sub-redes em Redes IP Cabeamento Estruturado: da teoria à prática Desvendando VLANs Dominando o IPv6 a partir do IPv4 Dominando Sub-redes no IPv4 e no IPv6 Veja detalhes dos cursos no link http://ademarfey.wordpress.com/cursos-online/ Veja detalhes dos e-books no link http://ademarfey.wordpress.com/e-books Entre em contato pelo e-mail cursosead.aff@gmail.com Att., Prof. Ademar Felipe Fey Ademar Felipe Fey e Raul Ricardo Gauer. Direitos Reservados. 2014. 292