Baixe o app para aproveitar ainda mais
Prévia do material em texto
Protocolos e Serviço de Redes MSC. SHEILA DE GÓES MONTEIRO 1ª Edição Brasília/DF - 2021 Autores Msc. Sheila de Góes Monteiro Produção Equipe Técnica de Avaliação, Revisão Linguística e Editoração Sumário Organização do Livro Didático........................................................................................................................................4 Introdução ..............................................................................................................................................................................6 Capítulo 1 Protocolos da Camada de Rede ................................................................................................................................9 Capítulo 2 Protocolos da Camada de Rede (Roteamento) ................................................................................................. 31 Capítulo 3 Protocolos da Camada de Transporte .................................................................................................................. 46 Capítulo 4 Protocolos da Camada de Aplicação .................................................................................................................... 61 Capítulo 5 Tópicos Avançados do IP .......................................................................................................................................... 77 Capítulo 6 Protocolos IPv6 ............................................................................................................................................................ 90 Referências ........................................................................................................................................................................106 4 Organização do Livro Didático Para facilitar seu estudo, os conteúdos são organizados em capítulos, de forma didática, objetiva e coerente. Eles serão abordados por meio de textos básicos, com questões para reflexão, entre outros recursos editoriais que visam tornar sua leitura mais agradável. Ao final, serão indicadas, também, fontes de consulta para aprofundar seus estudos com leituras e pesquisas complementares. A seguir, apresentamos uma breve descrição dos ícones utilizados na organização do Livro Didático. Atenção Chamadas para alertar detalhes/tópicos importantes que contribuam para a síntese/conclusão do assunto abordado. Cuidado Importante para diferenciar ideias e/ou conceitos, assim como ressaltar para o aluno noções que usualmente são objeto de dúvida ou entendimento equivocado. Importante Indicado para ressaltar trechos importantes do texto. Observe a Lei Conjunto de normas que dispõem sobre determinada matéria, ou seja, ela é origem, a fonte primária sobre um determinado assunto. Para refletir Questões inseridas no decorrer do estudo a fim de que o aluno faça uma pausa e reflita sobre o conteúdo estudado ou temas que o ajudem em seu raciocínio. É importante que ele verifique seus conhecimentos, suas experiências e seus sentimentos. As reflexões são o ponto de partida para a construção de suas conclusões. 5 ORgAnIzAçãO DO LIvRO DIDáTICO Provocação Textos que buscam instigar o aluno a refletir sobre determinado assunto antes mesmo de iniciar sua leitura ou após algum trecho pertinente para o autor conteudista. Saiba mais Informações complementares para elucidar a construção das sínteses/conclusões sobre o assunto abordado. Gotas de Conhecimento Partes pequenas de informações, concisas e claras. Na literatura há outras terminologias para esse termo, como: microlearning, pílulas de conhecimento, cápsulas de conhecimento etc. Sintetizando Trecho que busca resumir informações relevantes do conteúdo, facilitando o entendimento pelo aluno sobre trechos mais complexos. Sugestão de estudo complementar Sugestões de leituras adicionais, filmes e sites para aprofundamento do estudo, discussões em fóruns ou encontros presenciais quando for o caso. Posicionamento do autor Importante para diferenciar ideias e/ou conceitos, assim como ressaltar para o aluno noções que usualmente são objeto de dúvida ou entendimento equivocado. 6 Introdução Nesta disciplina vamos identificar diferentes tópicos avançados em uma rede IP que são ferramentas complementares para o administrador tirar o máximo de proveito de uma rede com o protocolo TCP/IP implementado. Nosso estudo envolve a discussão sobre o crescimento e o funcionamento da internet e sua topologia física como motivação e reflexão para a compreensão do conteúdo da disciplina. Nossa proposta de ensino-aprendizado está estruturada de forma que a partir da discussão e apresentação dos conceitos fundamentais do protocolo IP, ICMP, UDP, TCP, assim como a estrutura do endereçamento IP, possamos compreender as questões relacionadas ao roteamento, identificando as diferenças entre os algoritmos de roteamento. Avançando nas discussões, analisaremos os protocolos da camada de aplicação de transferência e acesso a arquivo, de correio eletrônico e da World Wide Web, que serão a base para a compreensão da necessidade da implementação da segurança e qualidade de serviço (QoS) em uma IP. É importante que você se organize para ler o Livro Didático antes da aula interativa correspondente, com calma para que possa realizar as atividades e assistir aos vídeos de cada aula em tempo hábil. Caso tenha alguma dúvida, você pode (e deve!) consultar o professor tutor da disciplina. Objetivos » Conhecer a estrutura e funcionamento do protocolo IP e ICMP. » Analisar e identificar a estrutura de endereçamento IP (endereços classful, ARP, CIDR). » Identificar as diferenças entre os algoritmos de roteamento. » Enumerar os protocolos de roteamento na internet. » Compreender o roteamento por difusão. » Identificar as principais funcionalidades do protocolo UDP e TCP. » Compreender o controle de congestionamento. 7 » Identificar o funcionamento dos protocolos de login e desktop remoto (TELNET e SSH). » Conhecer o protocolo de transferência e acesso de arquivo (FTP, TFTP, NFS). » Conhecer o funcionamento do protocolo da World Wide Web (HTTP). » Analisar o funcionamento dos protocolos de correio eletrônico (SMTP, POP, MIME, IMAP). » Identificar os elementos básicos do protocolo de Gerenciamento de Redes (SNMP). » Identificar o funcionamento do protocolo de Bootstrap e autoconfiguração (DHCP). » Conhecer os protocolos de voz e vídeo sobre IP (RTP, RSVP, QoS). » Analisar o funcionamento de mecanismo de interconexão de rede privada (NAT, VPN). » Identificar os elementos básicos do protocolo de segurança (IPsec, SSL). » Identificar os cabeçalhos e campos do protocolo IPv6. » Compreender a estrutura do endereçamento do protocolo IPv6. » Enumerar as funcionalidades básicas do protocolo IPv6. 8 9 Introdução No primeiro capítulo discutiremos a estrutura e o funcionamento dos protocolos da camada de rede de uma rede IP. Vamos começar analisando o protocolo IP, suas funções e estrutura de cabeçalho. Avançando na discussão, conheceremos o protocolo utilizado para transmitir mensagens entre a própria camada de rede e muito utilizado para entregar mensagens de erro, o protocolo ICMP. Finalizaremos nossa discussão analisando o endereçamento IP, relembrando os conceitos básicos de endereçamento IP e analisando os conceitos de sub-rede e Classless Inter-Domain Routing (CIDR). Objetivos » Conhecer a estrutura e o funcionamento do protocolo IP. » Conhecer a estrutura e o funcionamento do protocolo ICMP. » Analisar e identificar a estrutura de endereçamento IP (endereços classful, ARP, CIDR). 1.1 Estrutura e funcionamento do protocolo IP O protocolo internet ou simplesmente IP, como também é conhecido, é o protocolo da arquitetura TCP/IP que define o mecanismo de entrega não confiável e sem conexão. Ele é um protocolo considerado de “melhor esforço”, ou seja, ele fará o melhor esforço possível para entregaro pacote enviado, entretanto não garante nem a entrega e nem a integridade dos dados enviados. Como o protocolo IP provê um serviço não confiável, cabe às camadas superiores (transporte e/ou aplicação) garantir a confiabilidade da entrega e a integridade dos dados. 1CAPÍTULOPROTOCOLOS DA CAMADA DE REDE 10 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Ele define três questões muito importantes: Figura 1. Protocolo IP. unidade básica de transferência encaminhamento entrega não confiável Fonte: Elaborada pela autora. A unidade básica de transferência de dados é denominada na camada de rede de datagrama. A função “encaminhamento” define o caminho pelo qual o datagrama será enviado. E a “entrega não confiável” estabelece as regras de como os datagramas serão processados pelos diversos elementos da rede, as regras para a geração e encaminhamento das mensagens de erro e as condições de descarte dos datagramas. Como o datagrama desempenha um papel importante no contexto da internet, vamos analisar o formato do datagrama do protocolo IPv4, que é dividido em duas partes: Figura 2. Protocolo IP: Datagrama IPv4. Cabeçalho Dados Fonte: Elaborada pela autora. O cabeçalho apresenta os seguintes campos: Figura 3. Cabeçalho IP: campos. Datagrama IPv4 Versão Comprimento do cabeçalho Tipo de serviço Comprimento do datagrama (bytes) Identificador (16 bits) Flags Deslocamento da fragmentação (13 bits) Tempo de vida Protocolo de camada superior Soma de verificação do cabeçalho Endereço de IP de origem Endereço de IP de destino Opções (se houver) Dados Fonte: Elaborada pela autora. 11 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 O campo versão utiliza 4 bits e apresenta a versão do protocolo IP utilizada pelo roteador para determinar como interpretar o datagrama IP, já que existem versões diferentes de protocolo IP (versão 4 e versão 6). O campo comprimento do cabeçalho utiliza 4 bits para determinar onde o campo de dados do datagrama IP inicia, já que um datagrama pode ter tamanho de cabeçalho variável. Normalmente, o campo de cabeçalho possui 20 bytes. O campo tipo de serviço ( TOS) é utilizado para diferenciar os datagramas IP que precisam ser diferenciados dos outros datagramas devido a algumas particularidades como, por exemplo, confiabilidade, atraso ou vazão. O campo comprimento do datagrama utiliza 16 bits para apresentar o comprimento total do datagrama IP, isto é, o cabeçalho e o campo de dados. Normalmente, os datagramas IP possuem aproximadamente 1.500 bytes, mas podem chegar até 65.535 bytes. Os campos identificador, flag e deslocamento de fragmentação são utilizados quando ocorre fragmentação no datagrama IP: » O campo identificador contém o identificador do datagrama original, isto é, do datagrama onde ocorreu a fragmentação; » O campo “flag”: › Assinalado com bit “0”, significa que é o último fragmentado de um datagrama. › Assinalado com bit “1”, significa que é um fragmento; » O campo deslocamento de fragmentação é utilizado para especificar a localização exata do fragmento no datagrama original. O campo Tempo de vida ou time-to-live ou TTL tem como objetivo garantir que um datagrama não fique eternamente sendo transmitido na rede. Dessa forma, a cada vez que o datagrama é processado por um roteador ele é decrementado. Quando o campo TTL chegar a zero, o datagrama deverá ser descartado. O campo protocolo indica qual o número do protocolo da camada de transporte para o qual os dados deverão ser encaminhados. Ele é a ligação entre a camada de rede e de transporte. Por exemplo, caso o datagrama deva ser entregue para o protocolo TCP, este campo deverá conter o numeral 6 que foi o número definido pelo IANA para o protocolo TCP. 12 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Saiba mais Você sabia que os protocolos possuem um número associado a eles? Disponível em: https://www.iana.org/assignments/ protocol-numbers/protocol-numbers.xhtml. O IANA é o acrônimo de Internet Assigned Numbers Authority, instituição responsável pela coordenação da atribuição global de endereço IP, pelo gerenciamento do sistema de numeração IP e pelo gerenciamento da zona-raiz do Sistema de Nomes de Domínio (DNS). O campo soma de verificação do cabeçalho é utilizado pelos roteadores ou hosts para verificar erros na transmissão em cada datagrama recebido. Ao receber um datagrama, o roteador ou host realiza um novo cálculo de checksum, e caso o resultado não seja igual ao valor recebido, o datagrama é descartado. gotas de conhecimento Você sabe o que é checksum? Segundo Tanenbaum e Wetherall (2011), o termo checksum é utilizado para indicar um grupo de bits de verificação associado a uma mensagem para detectar erro na transmissão de dados. Independentemente de como são calculados, normalmente o resultado é colocado no final da mensagem. Existem diferentes formas de calcular o checksum. O protocolo IP, por exemplo, utiliza para calcular o checksum a soma de verificação de 16 bits. Vamos considerar que serão transmitidos os seguintes bits: 1110100100111001. No transmissor será realizada a soma do conjunto de cada 8 bits que compõem os bits a serem transmitidos. Ao resultado encontrado é realizada a inversão dos bits, e assim chegamos ao checksum que é transmitido em conjunto aos bits a serem transmitidos. Figura 4. Checksum. 1110100100111001 11101001 00111001 100100010 011011101 Soma Checksum 1110100100111001011011101 Transmissor Receptor 11101001 00111001 011011101 111111111 Soma Checksum 000000000 Fonte: Elaborada pela autora. O receptor realiza uma nova soma com os bits recebidos dividindo novamente em blocos de 8 bits e incluindo na soma o checksum enviado pelo transmissor. Deverá ser calculado o checksum do somatório que deverá ser zero, indicando que não ocorreram problemas na transmissão dos bits. 13 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 Os campos endereço IP de origem e endereço IP de destino possuem respectivamente os endereços IP do host originário do datagrama e do host destinatário do datagrama. O campo opção permite a extensão do cabeçalho IP caso seja necessário. O campo dados contém efetivamente a carga útil do datagrama. Ele pode conter o segmento da camada de transporte. Neste caso, o protocolo UDP ou TCP, ou mensagens ICMP. Você sabe como funciona a fragmentação do datagrama IP? Quando um datagrama na camada de rede é enviado para a camada de enlace nem sempre o protocolo utilizado na camada de enlace possui um quadro com capacidade de suportar o tamanho do datagrama IP. Neste caso, o datagrama precisa ser fragmentado em pedaços menores. Chamamos de unidade máxima de transmissão ou maximum transmission unit (MTU) a quantidade máxima de dados, em bytes, que um quadro da camada de enlace pode suportar. Figura 5. Protocolo IP: MTU. bytes) Enlace Ethernet (MTU 1.500 bytes) Rede Datagrama IP (até 65.535) Host A Host B MTU 1.500 bytes MTU 4.482 bytes MTU 4.482 bytes MTU 1.500 bytesTransporte Enlace Ethernet (MTU 1.500 bytes) Aplicação Rede Datagrama IP (até 65.535) Transporte Enlace Ethernet (MTU 1.500 bytes) Aplicação Rede Datagrama IP (até 65.535) Roteador Roteador Roteador Enlace Ethernet (MTU 1.500 bytes) Rede Datagrama IP (até 65.535) Enlace Frame Relay (MTU 4.482 bytes) Rede Datagrama IP (até 65.535 Fonte: Elaborada pela autora. Devemos considerar que em uma rede como a internet, que é formada por um conjunto de redes, existem diferentes enlaces de comunicação de diferentes tecnologias e velocidades e, consequentemente, diferentes MTU. Analisando a figura acima e considerando que um datagrama IP pode chegar até a 65.535 bytes, cada roteador ao longo da rede fará os ajustes necessários por meio do mecanismo de fragmentação, de forma que o datagrama caiba no quadro da camada de enlace. 14 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Essa operação é possível devido à tabela deroteamento de cada roteador ao longo da rede possuir a informação do MTU da camada de enlace de cada interface conectada. Tabela 1. MTU protocolo camada 2: exemplo. Protocolo camada 2 MTU (bytes) Ethernet 1.500 Frame Relay 4.482 WiMax 1.400 Fonte: Elaborada pela autora. 1.2 Estrutura e funcionamento do protocolo ICMP Em um sistema sem conexão como o Internet Protocol (IP), um datagrama trafega de um roteador a outro até que chegue ao seu destino final. Caso ocorra na rede alguma condição incomum como, por exemplo, congestionamento na rede ou falha de algum equipamento, que impeça o encaminhamento do datagrama é necessário comunicar à origem a falha ocorrida. O mecanismo utilizado pela arquitetura TCP/IP para comunicar uma condição de erro é o Internet Control Message Protocol (ICMP). Na realidade, ele é utilizado para a comunicação entre a própria camada de rede. Uma mensagem ICMP trafega dentro da área de dados de um datagrama IP. Figura 6. ICMP: encapsulamento datagrama IP. Transporte (UDP, TCP) Enlace Aplicação (HTTP, FTP) Internet (IP, ICMP) Enlace Internet (IP, ICMP) Transporte (UDP, TCP) Enlace Aplicação (HTTP, FTP) Internet (IP, ICMP) Host A Host B Cabeçalho ICMP Dados ICMP Cabeçalho IP Dados Fonte: Elaborada pela autora. 15 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 As mensagens ICMP são enviadas automaticamente e existem diferentes condições para que ocorram. Elas podem, por exemplo, ser enviadas nas seguintes situações: Figura 7. ICMP: encapsulamento datagrama IP. Quando um pacote IP não consegue chegar ao seu destino devido ao TTL expirado Quando o roteador não consegue retransmitir pacotes na frequência adequada devido a congestionamento no próprio roteador Quando o roteador indica uma rota melhor para o host que está enviando pacotes Quando um host de destino ou rota não está alcançável Fonte: Elaborada pela autora. As mensagens do protocolo ICMP possuem diferentes formatos, entretanto todas apresentam três campos de tamanho fixo no início da mensagem: Figura 8. Campos do protocolo ICMP. • Identifica a mensagem enviada • Foram definidos 13 tipos de mensagem • Possui 8 bits Tipo de mensagem • Contém o código de erro reportado pelo ICMP • Possui 8 bitsCódigo • Utiliza o mesmo algoritmo do protocolo IP • Aplicado a todos os campos de mensagem • Possui 16 bits Checksum Fonte: Elaborada pela autora. O diagrama abaixo apresenta os diferentes tipos possíveis de mensagens que podem ser enviadas pelo protocolo ICMP: Tabela 2. Mensagem ICMP: campo tipo. Tipo Significado 0 Resposta de eco 3 Destino inalcançável 5 Redirecionamento (mudar uma rota) 8 Requisição de eco 16 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Tipo Significado 9 Anúncio de roteador 10 Solicitação de roteador 11 Tempo excedido para um datagrama 12 Problema de parâmetro em um datagrama 13 Requisição de timestamp 14 Resposta de timestamp 40 Photuris 42 Echo request estendido 43 Echo reply estendido Fonte: Elaborada pela autora. Cada campo tipo de mensagem pode conter diferentes campo código que detalham a mensagem do campo tipo. A mensagem do campo tipo com valor 3, por exemplo, cuja mensagem significa “destino inalcançável”, pode conter um dos seguintes “códigos”: Tabela 3. Mensagem ICMP: campo código. Código Significado 0 Rede inacessível 1 Host inacessível 2 Protocolo inacessível 3 Porta inacessível 4 Fragmentação necessária e não configurada 5 Falha na rota de origem 6 Rede de destino desconhecida 7 Host de destino desconhecido Tipo Significado 0 Resposta de eco 3 Destino inalcançável 5 Redirecionamento (mudar uma rota) 8 Requisição de eco 9 Anúncio de roteador 10 Solicitação de roteador 11 Tempo excedido para um datagrama 12 Problema de parâmetro em um datagrama 13 Requisição de timestamp 14 Resposta de timestamp 40 Photuris 42 Echo request estendido 43 Echo reply estendido Fonte: Elaborada pela autora. Saiba mais Conheça mais sobre os tipos possíveis para os campos “tipo” e “código” do protocolo ICMP. Disponível em: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml. 17 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 Ping e Traceroute Existem dois utilitários que auxiliam os administradores de rede na resolução de problemas em uma rede TCP/IP utilizando mensagens ICMP: Figura 9. Ping e tracert. Ping Tracert Fonte: Elaborada pela autora. O Ping (Packet Internet Groper) é uma ferramenta muito utilizada para testar conectividade em uma rede TCP/IP. Ele funciona pelo envio de uma mensagem ICMP: Figura 10. Ping e tracert. Requisição ICMP echo Host A Host B Resposta ICMP echo Fonte: Elaborada pela autora. Por padrão, ele envia quatro pacotes de 32 bytes por meio de um pacote de solicitação de eco para um endereço destino e calculará o tempo de resposta. Se dentro de um intervalo de tempo predefinido obtiver a resposta, o comando terá sido bem-sucedido. Ao finalizar exibirá uma estatística com o número de pacotes enviados, recebidos, perdidos, tempo máximo, mínimo e média. Existem diferentes possibilidades de utilização do comando ping e, em algumas opções, é necessário possuir permissão de administrador para sua execução. Ele é utilizado a partir da linha de comando de um host ou roteador. Para ver todas as opções possíveis para o comando, digite no prompt de mensagem: “ping /?” 18 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Figura 11. Sintaxe do comando Ping. Fonte: Elaborada pela autora. Para verificar a conectividade com um host destino, digite o comando ping e o endereço IP ou nome do host destino: Figura 12. Exemplo comando Ping. Fonte: Elaborada pela autora. Já o tracert ( Trace Route) tem como objetivo rastrear o caminho que um pacote IP percorre da origem até o seu destino. Assim como o ping, o tracert utiliza mensagem ICMP eco utilizando diferentes valores do campo TTL. 19 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 Figura 13. Funcionamento tracert. Salto 1 Host A Host B TTL=1 TTL=2 TTL=3 TTL=4 Roteador 1 Roteador 2 Roteador 3 Salto 2 Salto 3 Salto 4 Requisição ICMP echo Fonte: Elaborada pela autora. Após o envio da primeira mensagem ICMP eco com um TTL de 1, a cada transmissão subsequente o TTL é incrementado de 1 até o destino ou o TTL máximo ser atingido. Figura 14. Exemplo comando tracert. Fonte: Elaborada pela autora. Existem diferentes possibilidades de utilização do comando tracert. Para visualizar todas as opções do comando tracert, digite no prompt de comando: tracert /? Figura 15. Sintaxe tracert. Fonte: Elaborada pela autora. 20 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Atenção Existem diferentes formas de acessar o “prompt de comando” no Windows, como, por exemplo, acessar por meio do comando “cmd.exe” digitado no campo de pesquisa do lado esquerdo inferior da tela inicial do Windows, ou clicando no ícone do aplicativo, conforme a figura abaixo: Figura 16. Comando cmd.exe. Fonte: Elaborada pela autora. 1.3 Estrutura de endereçamento IP (endereços classful, ARP, CIDR) Vamos iniciar esta discussão relembrando que o protocolo TCP/IP utiliza endereços binários de 32 bits (4 bytes) como identificadores de hosts ou roteadores. Os endereços IP são divididos em duas partes e categorizados em classes, por isso o endereçamento do protocolo TCP/IP é conhecido como endereços com classe ou classful. Ele funciona como um identificador lógico hierárquico para uma interface de rede. Por esse endereço é possível saber em qual rede a máquina está configurada e qual o identificador desta máquina na rede. Essas informações são conhecidas por meio do campo identificador de rede ou network id, como também é conhecido, e do campo 21 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 identificador da máquina ou host id. Vale observar que o campo identificador de rede está localizado a partir da esquerda para a direita, começando sempre com os primeiros bits do endereço. Figura 17. Endereço IP: componentes. Identificadorde Rede Identificador de host NetID HostID Fonte: Elaborada pela autora. Para facilitar o entendimento, os endereços podem ser escritos por meio de uma notação denominada notação decimal por ponto, em que um endereço IP é representado por um número decimal (de 0 a 255) separado por um ponto “.”. Neste tipo de notação, o endereço em binário é separado em octetos, ou seja, conjunto de 8 bits e, posteriormente, convertido para decimal. Figura 18. Endereço IP: notação decimal por ponto. 129.10.20.33 10000001.00000010.00010100.00100001 Notação decimal por ponto 1o Octeto 2o Octeto 3o Octeto 4o Octeto 32 bits Fonte: Elaborada pela autora. Atenção Você sabe por que cada octeto possui valores entre 0 e 255? Porque como é um campo composto de 8 bits, o primeiro valor possível é 00000000, ou seja, tudo desligado, que em decimal é igual ao numeral zero. E o maior valor possível será todos os 8 bits ligados, ou seja 11111111, que, convertido para decimal, é igual a 255. Vamos analisar as classes existentes no endereçamento IP. Esta técnica auxilia a implementação de redes, já que cada classe possui determinado número de redes e host. Dessa forma, é possível implementar desde um pequeno número de redes com 22 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE grande número de hosts por meio da utilização da classe A até um grande número de redes com poucos números de hosts pela adoção da classe C. Existem diferentes classes que variam de A a E. Entretanto somente as classes A, B e C são utilizadas para a implementação de rede. A classe D é utilizada para multicast e a classe E está reservada para utilização futura. Foram definidas máscaras padrão para cada classe que tem como objetivo definir a estrutura do endereço IP. Figura 19. Classe de endereçamento: formato e máscara. 16 bits 8 bits 24 bits NetID HostID Classe A 16 bitsClasse B 8 bits24 bitsClasse C 255.0.0.0 255.255.0.0 255.255.255.0 Classe-padrão Fonte: Elaborada pela autora. A classe A utiliza 1 octeto para o identificador de rede e 3 octetos para o identificador de host. Dessa forma, consegue endereçar 126 redes diferentes com até 16.777.214 hosts cada uma. A classe B utiliza 2 octetos para o identificador de rede 2 octetos para o identificador de host. Dessa forma, consegue endereçar 16.384 redes diferentes com até 65.535 hosts cada uma. A classe C utiliza 3 octetos para o identificador de rede e 1 octeto para o identificador de host. Dessa forma, consegue endereçar 2.097.152 redes diferentes com até 254 hosts cada uma. Tabela 4. Endereço IP: classes. Classe Intervalo A 1.0.0.0 a 127.0.0.0 B 128.0.0.0 a 191.255.0.0 C 192.0.0.0 a 223.255.255.0 D 224.0.0.0 a 239.255.255.255 E 240.0.0.0 a 255.255.255.254 Fonte: Elaborada pela autora. Existem alguns endereços que não podem ser utilizados como endereços de host em uma rede IP, pois são denominados de endereços reservados. 23 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 Figura 20. Endereços reservados. Endereço de Rede Endereço de Broadcast Endereço de loopback Fonte: Elaborada pela autora. Independentemente da classe A, B ou C, o primeiro e o último endereço de cada rede de determinada classe são reservados e, portanto, não podem ser utilizados pelas interfaces de rede. O primeiro endereço é reservado para “endereço de rede” e identifica a própria rede e não determinada interface. Já o último endereço de uma rede é o “endereço de broadcast”, que tem como objetivo identificar todas as máquinas em uma rede específica. Ele é representado com todos os bits do campo “host id” com valor de bit “1”. Figura 21. Endereços reservados: exemplo. • Rede: 17 • End. de Rede: 17.0.0.0 • Broadcast: 17.255.255.255 Classe A • Rede: 140.20 • End. de Rede: 140.20.0.0 • Broadcast: 140.20.255.255 Classe B • Rede: 200.20.246 • End. de Rede: 200.20.246.0 • Broadcast: 200.20.246.255 Classe C Fonte: Elaborada pela autora. O “endereço de loopback”, também conhecido por “localhost” ou “127.0.0.1”, tem como objetivo identificar a interface de rede de uma máquina. Ele permite enviar uma mensagem para a própria máquina permitindo a comunicação interprocessos, ou seja, entre aplicações, já que a mensagem é enviada para a própria interface de rede da máquina. 24 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Endereçamento sem classe (sub-rede e CIDR) Com o crescimento da internet, o esquema de endereçamento com classe proposto para o protocolo IP demonstrou-se ineficiente e inviável, pois, independentemente do número de hosts, cada rede obrigatoriamente deveria ser compatível com uma das classes de endereços citadas acima, ou seja, classe A, B ou C. Vamos analisar uma rede com 30 máquinas. Neste caso, ela seria compatível com um endereçamento classe C com capacidade de 256 endereços. Figura 22. Rede classe C: exemplo. Rede com 30 host roteador Classe C (254 hosts, 1 broadcast, 1 rede) Desperdício: 224 endereços de host Fonte: Elaborada pela autora. A solução adotada para diminuir o desperdício e aumentar a quantidade de endereços disponíveis sem afetar o funcionamento dos sistemas existentes foi flexibilizar o conceito de classes por meio da criação da máscara de sub-rede, que permitiu realizar o endereçamento sem classes. Assim como no endereçamento com classe, o endereçamento sem classe ou por máscara de sub-rede também determina um identificador de rede (network id) e um identificador de host (host id). Figura 23. Máscara de sub-rede. 11111111.11111111.11111111.00000000 1o Octeto 2o Octeto 3o Octeto 4o Octeto 32 bits Net Id Host Id Fonte: Elaborada pela autora. 25 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 A máscara de sub-rede, assim como no endereço IP, é formada por 4 octetos que podem conter, da esquerda para a direita, uma sequência contínua de 1’s, seguida de uma sequência de 0’s. A sequência de bits 1’s identifica os bits utilizados para identificar a rede e a sequência de bits 0’s identificam o endereço do host. Figura 24. Máscara de sub-rede classe C. 255.255.255.0 11111111.11111111.11111111.00000000 Máscara de sub-rede 1o Octeto 2o Octeto 3o Octeto 4o Octeto Net Id Host Id Fonte: Elaborada pela autora. A utilização da técnica de Classless Inter-Domain Routing (CIDR) ou roteamento interdomínio sem classe como também é conhecido, permite alocar endereços IP em sub-redes de acordo com as necessidades individuais de cada organização. Figura 25. Classless Inter-Domain Routing (CIDR). 200.20.10.0/25 Número de bits 1’s utilizado para o identificador de rede (NetID) Máscara de rede: 255.255.255.128 11111111.11111111.11111111.10000000 255 255 255 128 Fonte: Elaborada pela autora. Nesse tipo de endereçamento é utilizada a notação decimal com pontos separado por “/” (barra) para indicar a quantidade de bits que identifica a rede (que pode ser qualquer valor entre 0 e 32 bits) e, por consequência, a quantidade de bits que identificam hosts dentro da rede. 26 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Tabela 5. Prefixos CIDR. Notação CIDR Decimal pontuada Notação CIDR Decimal pontuada /1 128.0.0.0 /17 255.255.128.0 /2 192.0.0.0 /18 255.255.192.0 /3 224.0.0.0 /19 255.255.224.0 /4 240.0.0.0 /20 255.255.240.0 /5 248.0.0.0 /21 255.255.248.0 /6 252.0.0.0 /22 255.255.252.0 /7 254.0.0.0 /23 255.255.254.0 /8 255.0.0.0 /24 255.255.255.0 /9 255.128.0.0 /25 255.255.255.128 /10 255.192.0.0 /26 255.255.255.192 /11 255.224.0.0 /27 255.255.255.224 /12 255.240.0.0 /28 255.255.255.240 /13 255.248.0.0 /29 255.255.255.248 /14 255.252.0.0 /30 255.255.255.252 /15 255.254.0.0 /31 255.255.255.254 /16 255.255.0.0 /31 255.255.255.255 Fonte: Comer (2006). Vamos analisar alguns exemplos: Exemplo 1: Dado o endereço IPv4 191.168.1.0, qual máscara de rede utilizar para criar 14 sub- redes com 14 hosts em cada sub-rede? Resposta: Na realidade precisaremos de 16 sub-redes com 14 host cada, pois uma é utilizada como endereço da própria rede e o último endereço comoendereço de broadcast; o mesmo vale para o número de host. Dessa forma, precisamos identificar no endereço da máscara quantas redes conseguimos endereçar: 1. Precisamos identificar no endereço de host quantos hosts conseguimos endereçar. Vamos analisar a tabela abaixo. Ela representa a base binária e suas respectivas posições. Os endereços de host começam da direita para a esquerda, logo se precisamos endereçar 16 hosts, precisamos dos 4 bits mais significativos do último octeto para representar o host. Dessa forma, os demais bits serão considerados endereço de rede. Perceba que a pr imeira l inha representa a quantidade de possíveis endereços em determinada posição e a segunda linha é utilizada para a conversão de um número binário para decimal: 27 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 Figura 26. Endereçamento IPv4: exemplo 1. 256 28 128 27 64 26 32 25 16 24 8 23 4 22 2 21 27 128 26 64 25 32 24 16 23 8 22 4 21 2 20 1 8 bits 11111111.11111111.11111111.1111HHHH Fonte: Elaborada pela autora. 2. Para o cálculo da sub-rede podemos utilizar a mesma lógica. Veja que a primeira linha da tabela abaixo representa a quantidade de endereços que podemos representar em determinada posição, logo para endereçarmos 16 redes precisamos de quatro bits de redes ligados. Como os endereços de rede começam da esquerda para a direita, os bits “1”’s para representar sub-redes serão os primeiros bits do último octeto e a máscara ficará da seguinte forma: Figura 27. Endereçamento IPv4: exemplo 2. 256 28 128 27 64 26 32 25 16 24 8 23 4 22 2 21 27 128 26 64 25 32 24 16 23 8 22 4 21 2 20 1 8 bits 11111111.11111111.11111111.1111HHHH 191.168.1.0 Número de bits 1’s utilizado para o identificador de rede (NetID) Máscara de rede: ? 255.255.255.240 255.255.255.11110000 27 128 26 64 25 32 24 16 23 8 22 4 21 2 20 1 1 1 1 1 0 0 0 0 128+64+32+16 = 240 Fonte: Elaborada pela autora. Resposta: A máscara será 255.255.255.240 Exemplo 2 Quantas e quais sub-redes válidas existem para o endereço 191.168.1.0 se utilizarmos uma máscara 255.255.255.224? 28 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE Resolução: 3. Em primeiro lugar, vamos calcular o valor do intervalo entre as sub-redes. Figura 28. Endereçamento IPv4: exemplo 2. 255.255.255.1110000000 255 é o valor máximo que pode ser representado por 11111111, isto é, o número decimal 255. Entretanto existem 256 possíveis representações de número binário em um octeto. Lembrando que começa de zero. 255.255.255.224 256 – 224 = 32, que é o intervalo entre sub-redes. Fonte: Elaborada pela autora. 4. Agora vamos às sub-redes. Descartaremos a primeira e a última, pois, como já falamos, a primeira representa a própria rede e a última é broadcast: » 191.168.1.0 (Não é válida) » 191.168.1.32 » 191.168.1.64 » 191.168.1.96 » 191.168.1.128 » 191.168.1.160 » 191.168.1.192 » 191.168.1.224 (Não é válida) Resposta: São seis sub-redes válidas: » 191.168.1.32 » 191.168.1.64 » 191.168.1.96 » 191.168.1.128 » 191.168.1.160 » 191.168.1.192 29 PROTOCOLOS DA CAMADA DE REDE • CAPÍTULO 1 Exemplo 3 Quantas e quais sub-redes válidas existem para o endereço 191.168.1.0/16? E se fosse uma máscara /18? Resp.: Uma máscara /16 significa que 16 bits são utilizados para a rede. Figura 29. Endereçamento IPv4: exemplo 3.1. 11111111.11111111.HHHHHHHH.HHHHHHHH 255.255.0.0 Fonte: Elaborada pela autora. Uma máscara /18 significa que 18 bits são utilizados para a rede Figura 30. Endereçamento IPv4: Exemplo 3.2. 11111111.11111111.11HHHHHH.HHHHHHHH 255.255.0.0 Fonte: Elaborada pela autora. Uma rede IP é formada por um conjunto de computadores (hosts) com o mesmo ID de rede. Dessa forma, encontra-se em um mesmo domínio de broadcast. Um domínio de broadcast significa um segmento lógico de uma rede em que os computadores conectados a este segmento podem comunicar-se uns com outros sem a necessidade de utilizar um dispositivo de roteamento. Figura 31. Domínio de Broadcast. 11111111.11111111.11HHHHHH.HHHHHHHH 255.255.0.0 Fonte: Elaborada pela autora. Na figura acima observamos que o roteador possui duas interfaces de rede sendo cada uma em um domínio de broadcast diferente. É função do roteador fazer o encaminhamento dos datagramas entre as duas redes configuradas em suas interfaces. Neste caso, cada endereço IP configurado nas diferentes interfaces do roteador é denominada de default gateway da rede. Assim, uma máquina da rede 200.20.1.0 necessita encaminhar o seu datagrama para a interface 200.20.1.33 do roteador para alcançar a rede 130.10.0.0. 30 CAPÍTULO 1 • PROTOCOLOS DA CAMADA DE REDE O protocolo de resolução de endereços é também conhecido como ARP e definido pela RFC 826. Ele é utilizado para fazer a conversão entre endereços da camada de rede, os endereços IP, e endereços de camada de enlace, os endereços MAC e vice-versa. Para que um datagrama seja enviado para o destino, a origem deve informar o endereço IP e o endereço MAC do destino. Para identificar o endereço MAC do destino, o protocolo ARP utiliza um mecanismo de difusão (broadcast) enviando uma solicitação a todas as máquinas da rede local e aguarda resposta do destino com o endereço IP/endereço físico. Para minimizar o número de broadcast na rede e evitar problemas de desempenho no mapeamento dos endereços IP em endereços físicos, cada máquina implementa um arquivo de cache denominado ARP cache ou, como também é conhecido, tabela ARP, que contém as últimas consultas realizadas. Ao fazer uma solicitação ARP a estação envia seu endereço IP e endereço físico, permitindo que todas as máquinas da rede incluam os endereços em suas caches locais. Quando um hardware é trocado, a máquina que sofreu a mudança se anuncia na rede com o novo endereço IP e endereço físico. Uma observação importante é que o protocolo ARP só existe no IPv4, já que no IPv6 essa função é do protocolo NDP ou Neighbor Discovery Protocol, que estudaremos no capítulo 6. Sintetizando Vimos até agora: » A estrutura e o funcionamento do protocolo IP. » O funcionamento do protocolo ICMP. » A estrutura de endereçamento do protocolo IP. 31 Introdução Neste capítulo analisaremos os algoritmos de roteamento, elementos-chave para a compreensão dos protocolos de roteamento utilizados atualmente na internet. Identificaremos os conceitos fundamentais utilizados na implementação desses algoritmos e enumeraremos as classificações possíveis para tais algoritmos. Finalizaremos a discussão apresentando os algoritmos de vetor de distância e estado de enlace. Seguindo em nossa discussão, identificaremos os principais protocolos de roteamento utilizados atualmente na internet, suas características e diferentes aplicações. Devemos considerar que a internet, por ser um conjunto de redes interligadas, possui diferentes administradores, tecnologias, tamanhos e políticas. Finalizaremos a discussão do nosso capítulo 2 com a apresentação do protocolo de roteamento por difusão, cuja utilização encontra-se em amplo crescimento considerando as aplicações emergentes que necessitam entregar pacotes para mais de um destinatário, como, por exemplo, os jogos multiusuários on-line. Objetivos » Identificar as diferenças entre os algoritmos de roteamento. » Enumerar os protocolos de roteamento na internet. » Compreender o roteamento por difusão. 2.1 As diferenças entre os Algoritmos de roteamento Para que possamos compreender os protocolos de roteamento é necessário analisar os algoritmos de roteamento. Eles são a parte do software da camada de rede que 2 CAPÍTULO PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) 32 CAPÍTULO 2 • PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) tem como principal função a decisão sobre a interface de saída a ser utilizada na transmissão de um pacote de entrada. Esta escolha é determinada pela escolha do melhor caminho que os pacotes devem percorrer entre o remetente e o destino,isto é, o caminho de menor custo entre a origem e o destino. Importante perceber que existem duas funções distintas: repasse (encaminhamento) e roteamento presentes nesta camada. Quando falamos de repasse ou encaminhamento, nos referimos ao processo de transferência que ocorre dentro de um roteador entre uma interface de entrada e uma de saída. Já o roteamento envolve um protocolo de roteamento e todos os roteadores de uma rede que determinam os caminhos que um pacote percorre entre sua origem até chegar ao seu destino. Vale lembrar a composição básica de um roteador que é dividida em quatro partes: Figura 32. Interior de um roteador. Processador de roteamento Porta de entrada Porta de saída Roteador Elemento de comutação Fonte: Elaborada pela autora. O elemento de comutação conecta as portas de entrada do roteador às portas de saída, realizando o repasse dos pacotes. Existem diferentes técnicas de comutação que podem ser aplicadas para o repasse dos pacotes: por memória, por barramento e por meio de rede de interconexão. As portas de entrada realizam as funções da camada física e de enlace. É na porta de entrada que é realizada a consulta à tabela de repasse presente em todo roteador e que é utilizada para determinar a porta de saída pela qual o pacote deverá ser encaminhado. As portas de saída armazenam os pacotes que foram encaminhados pelo elemento de comutação e os transmite para o enlace de saída. O processador de roteamento executa os protocolos de roteamento, mantém a atualização da tabela de roteamento e realiza o cálculo da tabela de repasse para as portas de entrada. 33 PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) • CAPÍTULO 2 Para refletir Antes de continuar nossa discussão, assista ao vídeo. Disponível em: https://www.youtube.com/ watch?v=Cwey2kfs6Ow&t=188s. Existem três aspectos importantes que afetam os algoritmos de roteamento: » Princípio da otimização; » Roteamento pelo caminho mais curto; » Flooding. O princípio da otimização consiste na criação de uma descrição geral de rotas ideais sem levar em consideração a topologia ou o tráfego da rede. Segundo Tanenbaum e Wetherall (2011), este princípio, de forma simplista, estabelece que: Figura 33. árvore de escoamento. A B C D E F Melhor rota A B C D E F Árvore de escoamento Fonte: Elaborada pela autora. » Se o roteador B estiver no caminho ideal entre A e C, então o caminho ideal entre o nó B e o nó C também está nesta rota. » Caso o caminho ideal entre o nó B e C não fosse nesta rota, uma nova rota deveria ser agregada entre o caminho do nó A até o nó C para melhorar a rota entre A e C. » Um conjunto de todas as melhores rotas entre uma origem e um destino forma uma árvore com raiz no destino ou árvore com escoamento como também é conhecida. » Uma árvore de escoamento não possui loops, desta forma cada pacote será entregue dentro de um número finito e limitado de saltos. O objetivo de todos os algoritmos de roteamento é descobrir e utilizar as árvores de escoamento em todos os roteadores de uma rede. 34 CAPÍTULO 2 • PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) O roteamento pelo caminho mais curto é uma técnica que calcula os caminhos ideais a partir de uma imagem completa da rede. A ideia básica do algoritmo é criar um grafo de rede, onde cada nó do grafo é o roteador e cada arco representa uma interface de comunicação ou enlace. Dessa forma, o algoritmo calculará o caminho mais curto por uma métrica que pode ser o número de saltos (hop), da distância geográfica ou atraso de propagação. O flooding ou inundação, como também é conhecido, é uma técnica na qual cada pacote de entrada é enviado para cada interface de saída excluindo a interface pela qual chegou. Para diminuir a quantidade de pacotes duplicados deve ser implementado um contador de saltos (hop) que é decrementado a cada salto até atingir o valor zero. Quando o roteador não conhece a distância do caminho entre a origem e o destino, ele iniciará o contador com valor referente ao pior caso. Para otimizar o processo deve ser incluído também um controle de quais pacotes já foram enviados, o que é conseguido pela inclusão do número de sequência de pacotes recebidos pelo roteador, de forma que não envie novamente o pacote. Os algoritmos de roteamento podem ser classificados pelas seguintes visões: Figura 34. Algoritmo de roteamento: classificação. algoritmo de roteamento Global Descentralizado algoritmo de roteamento Não adaptativo ou Estático Adaptativo ou Dinâmico algoritmo de roteamento Sensivel à carga Insensível à carga Fonte: Elaborada pela autora. No algoritmo de roteamento global é calculado o caminho de menor custo entre a origem e o destino a partir de informações globais sobre os enlaces da rede que são coletadas para posterior cálculo. É também conhecido como algoritmo de estado de enlace (LS). O algoritmo de estado de enlace foi idealizado com o objetivo de substituir a utilização do roteamento por vetor a distância e, assim, agilizar a convergência e mitigar o problema da contagem ao infinito apresentado pelo algoritmo. O algoritmo de estado de enlace utiliza o algoritmo de Dijkstra para calcular as melhores rotas para os destinos a partir de uma mesma origem. Um exemplo de protocolo que utiliza este algoritmo de estado de enlace é o OSPF, que analisaremos mais à frente. Segundo Tanenbaum e Wetherall (2011), pode ser identificado cinco ações realizadas por cada roteador da rede: 35 PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) • CAPÍTULO 2 » Descobrir seus vizinhos e aprender seus endereços de rede; » Medir a distância ou o custo até cada um dos seus vizinhos; » Criar um pacote que informe tudo o que ele acabou de aprender; » Enviar esse pacote e receber pacotes de todos os outros roteadores; » Calcular o caminho mais curto até cada um dos outros roteadores. Cada nó da rede transmite pacotes com as identidades e os custos dos enlaces conectados a ele e a todos os outros nós da rede. Essa transmissão ocorre pela utilização de algoritmo de transmissão por difusão de estado de enlace. Assim, todos os nós têm uma visão idêntica e completa da rede, podendo executar o algoritmo de estado de enlace e realizar o cálculo do mesmo conjunto de caminhos de menor custo. No algoritmo de roteamento descentralizado, nenhum nó tem todas as informações sobre os custos de todos os enlaces. Cada nó só conhece os custos dos enlaces ligados a ele. O cálculo do caminho de menor custo é realizado por meio da troca de informações entre os nós da rede. O algoritmo de roteamento descentralizado também é conhecido como algoritmo de vetor de distância (DV ). No algoritmo de vetor de distância cada roteador mantém uma tabela que contém informações sobre a melhor distância e qual enlace deve ser utilizado para chegar a determinado destino. Na prática, cada roteador mantém uma tabela de roteamento indexada com duas informações: » Interface de saída para o destino; » Estimativa de distância. Nesse tipo de algoritmo presume-se que o roteador conhece a distância até cada um de seus vizinhos. Nesse caso, deve ser utilizada uma métrica para o cálculo da distância, que pode ser o salto (hop) entre roteadores ou o atraso de propagação, por exemplo. Se for utilizado o salto como métrica, deve ser considerada a distância de 1 salto (hop). Com a utilização do algoritmo percebeu-se que apesar de convergir corretamente, o processo pode ocorrer de forma muito lenta devido ao problema da contagem infinita. Outro ponto de atenção é a limitação de saltos, até 15, e a possibilidade de loops no roteamento. Nos algoritmos não adaptativos ou de roteamento estático, como também são conhecidos, as rotas sofrem poucas modificações e normalmente ocorrem de forma manual. As tabelas de roteamento das estações e roteadores são manualmente configuradas e as rotas devem ser atualizadas caso ocorra alguma modificação. 36 CAPÍTULO 2 • PROTOCOLOSDA CAMADA DE REDE (ROTEAMEnTO) Nos algoritmos adaptativos ou de roteamento dinâmico, como também são conhecidos, as informações sobre os caminhos de roteamento são modificadas a partir de informações sobre as condições do tráfego ou da topologia da rede. Nos algoritmos sensíveis à carga o cálculo dos custos de enlace varia dinamicamente de acordo com o nível de congestionamento no enlace adjacente. Desta forma, o algoritmo escolherá rotas que evitem as de alto custo. 2.2 Protocolos de roteamento na internet Antes de analisar os protocolos de roteamento na internet é necessário compreender dois aspectos importantes que tornam inviável a utilização de um único protocolo de roteamento em toda a internet: » As redes existentes e que compõem a internet possuem autonomia administrativa, isto é, as organizações que administram estas redes podem implementar os algoritmos de roteamento que desejarem e ainda ocultar aspectos internos da organização para o público externo. » Quanto à escalabilidade destas redes, pois para o cálculo de rotas e para a troca de informações de roteamento, os milhões de roteadores que compõem a internet inviabilizaria a utilização de um único protocolo, já que exigiria muita memória dos roteadores e alto consumo de largura de banda para a troca de mensagens entre os roteadores. Para resolver estas questões, os roteadores que compõem a internet foram organizados em uma estrutura de roteamento hierárquico, que é composto dos seguintes elementos: » Sistema autônomo (AS); » Protocolo de roteamento intra-AS; » Roteador de borda; » Protocolo de roteamento inter-AS. Um sistema autônomo (AS) é constituído de um grupo de roteadores sob um mesmo controle administrativo. Todos os roteadores deste AS implementam o mesmo algoritmo de roteamento denominado de protocolo de roteamento intra-AS. Para realizar a comunicação entre um AS e a internet, um ou mais roteadores do AS terá a tarefa adicional de transmitir pacotes a destinos fora do AS. Esses roteadores são denominados roteadores de borda. O protocolo de roteamento inter-AS tem o objetivo de atualizar os roteadores de borda entre dois ASs com informações sobre as condições de alcance entre os ASs e propagar para os roteadores internos do próprio AS. 37 PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) • CAPÍTULO 2 Figura 35. Modelo: roteamento hierárquico. Sistema Autônomo 1 Sistema Autônomo 2 Sistema Autônomo 3 Roteador de borda Protocolo de roteamento inter-AS Protocolo de roteamento intra-AS Legenda: Fonte: Elaborada pela autora. O protocolo de roteamento intra-AS também é conhecido como protocolo de roteamento interno (IGP), e é utilizado para determinar o mecanismo de roteamento dentro de um sistema autônomo (AS): » Routing Information Protocol (RIP); » Open Shortest Path First (OSPF). O Routing Information Protocol (RIP) é um protocolo que utiliza o algoritmo de vetor de distância. Ele foi definido pela RFC 1058 e, posteriormente, atualizado pela RFC 1723, que descreve o RIP-2 (a segunda versão do RIP). Esta nova versão permite à mensagem do RIP carregar mais informações, possibilitando o uso de mecanismo de autenticação para proteger as atualizações das tabelas e o suporte às máscaras de sub-rede. A métrica utilizada no roteamento é a contagem de saltos ou hops para medir a distância entre a rede de origem e a de destino, que é incrementada de 1 a cada hop. Para evitar loops infinitos o número de hops permitidos no caminho entre a origem e o destino é de no máximo 15 saltos. Caso o máximo de hops permitidos em um caminho seja maior que a permitida (isto é, maior que 16), a rede de destino é considerada inalcançável. O protocolo RIP envia mensagem de atualização para os roteadores da rede em duas situações: » intervalos regulares de tempo; » quando a topologia da rede é alterada. Quando um roteador recebe uma atualização de alterações em alguma das entradas, a tabela de roteamento é atualizada e o valor métrico para a rota é 38 CAPÍTULO 2 • PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) acrescentado de 1 e apenas as melhores rotas (com o menor valor métrico) até um destino são mantidas. Após atualizar sua tabela de rotas, o roteador imediatamente transmite as atualizações para os outros roteadores da rede independentemente das atualizações que são enviadas regularmente. Para avaliar o próprio desempenho, o protocolo RIP utiliza temporizadores, como por exemplo: » Temporizador para as atualizações de roteamento; » Temporizador para o timeout (estouro do tempo permitido para uma operação); » Temporizador para o esvaziamento da memória; » Temporizador de atualização. O protocolo RIP é maduro e estável, plenamente utilizado e de fácil configuração. Sua simplicidade é adequada para o uso em redes pequenas e em pequenos sistemas autônomos, que não possuam muitos caminhos redundantes e que não justifiquem o uso de protocolos mais sofisticados. O protocolo Open Shortest Path First (OSPF) foi desenvolvido pelo grupo de trabalho de Interior Gateway Protocol (IGP) da Internet Engineering Task Force (IETF) em 1988. É um protocolo aberto, de domínio público, descrito na RFC 1247. A motivação para seu desenvolvimento foi uma alternativa ao protocolo RIP, pois, devido ao crescimento das redes, o protocolo RIP mostrou-se ineficiente no atendimento a grandes redes heterogêneas. Como o protocolo OSPF utiliza o algoritmo de estado de enlace, ele envia por difusão, avisos sobre o estado da conexão a todos os outros roteadores em uma mesma área hierárquica (AS). Além de acumular informações sobre o estado do enlace, o OSPF utiliza o algoritmo do caminho mais curto para calcular a menor rota para cada nó. Apesar de ser protocolo de roteamento intra-AS (interior gateway), o protocolo OSPF é capaz de receber e enviar rotas para outros ASs. Os roteadores de borda mantêm uma base de dados topológica separada para cada área que contém informações recebidas de todos os roteadores de uma mesma área. A topologia de uma área é invisível para entidades fora dela, consequentemente o protocolo OSPF processa menos tráfego de roteamento do que se os ASs não fossem divididos. O protocolo apresenta dois tipos de roteamento que depende da origem e destino: » Roteamento intra-área é usado quando a origem e o destino estão na mesma área; » Roteamento interárea é usado quando estão em áreas diferentes. Quando a rede é muito extensa, é possível criar um backbone OSPF, responsável por distribuir informações de roteamento entre as diferentes áreas. 39 PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) • CAPÍTULO 2 Figura 36. OSPF: backbone. Área 1 Área 2 Área 3 Backbone OSPF Roteador 1 Roteador 2 Roteador 3 Roteador 4 Roteador 5 Roteador 6 Fonte: Elaborada pela autora. No exemplo acima, os roteadores 1, 2, 3, 4, 5 e 6 formam o Backbone OSPF e utilizam os mesmos algoritmos para manter a informação de roteamento no backbone. O protocolo de roteamento inter-AS é utilizado para fazer o roteamento entre diferentes ASs. Dentro de cada área, um ou mais roteadores de borda de área são responsáveis pelo roteamento de pacotes para fora da área. O Border Gateway Protocol (BGP) é um protocolo de roteamento utilizado entre múltiplos sistemas autônomos (ASs), especificado através da RFC 4271 e encontra- se na versão 4. Por ser um protocolo de altíssima complexidade, vamos analisar os fundamentos básicos para seu funcionamento. Segundo Kurose e Ross (2013), ele oferece as seguintes funcionalidades para cada ASs: » Obter de ASs vizinhos informações de alcançabilidade de sub-redes; » Propagar a informação de alcançabilidade a todos os roteadores internos ao AS; » Determinar rotas “boas” para sub-redes com base na informação de alcançabilidade e na política do AS. Por suportar Classless Interdomain Routing (CIDR) e o conceito de supernets, o protocolo BGP garante que os anúncios de existência das sub-redes e como chegar até elas cheguema todos os ASs da internet. O protocolo assume que o roteamento interno de um AS é feito por meio de um IGP (Interior Gateway Protocol), que pode ser o RIP, o OSPF ou outro protocolo. 40 CAPÍTULO 2 • PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) Ele constrói gráfico dos ASs, usando as informações trocadas pelos “vizinhos BGP” (BGP neighbors) compostas dos números identificadores dos ASs, os ASN. Figura 37. BgP: elementos básicos. Sistema Autônomo 1 Sistema Autônomo 2 Sistema Autônomo 3 Sistema Autônomo 4 Caminho ou path Conexão TCP porta 179 Sessão iBGP Sessão eBGP Fonte: Elaborada pela autora. A conexão entre ASs forma um “caminho” (path), e a coleção desses caminhos acaba formando uma rota composta pelos números dos ASs que devem ser percorridos até se chegar a determinado AS destino. Os dois roteadores nas extremidades da conexão são denominados pares BGP e a troca de informações entre os roteadores é realizada por meio de conexão TCP semipermanente pela porta 179. A conexão TCP e o conjunto de todas as informações enviadas por esta conexão é denominada sessão BGP. Quando uma sessão BGP é estabelecida e a troca de informação ocorre entre dois ASs diferentes é denominada de sessão BGP externa (eBGP) e quando ocorre dentro de um mesmo AS é denominada de sessão BGP interna (iBGP). 2.3 Roteamento por difusão Vamos analisar dois tipos de protocolos de roteamento diferentes dos protocolos estudados até agora em que um único nó envia um pacote para um único destino. Neste novo modelo um único nó envia pacote para mais de um destino: » Roteamento por difusão (broadcast): um nó de origem envia um pacote a todos os outros nós da rede; » Roteamento para um grupo: um único nó de origem envia pacote a um subconjunto de nós de outras redes. 41 PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) • CAPÍTULO 2 O roteamento por difusão pode ocorrer por diferentes formas. Na sua forma mais simples o nó remetente envia uma cópia separada do pacote para cada destino, é utilizada uma abordagem individual de N caminhos. Como a difusão por meio da abordagem individual de N caminhos apresentou diversas desvantagens, sendo a principal a ineficiência do envio de N cópias por um único enlace, outras abordagens foram desenvolvidas: » Inundação não controlada; » Inundação controlada; » Difusão por spanning tree. Na abordagem por inundação não controlada o nó de origem envia uma cópia do pacote a todos os seus vizinhos que, ao receberem o pacote, fazem uma nova cópia e retransmitem também a todos os seus vizinhos. O grande problema desta abordagem ocorre quando existem ciclos no grafo de roteadores, que, neste caso, permanecerão em loop indefinidamente. Na abordagem por inundação controlada por número de sequência o nó de origem insere o seu endereço e o número de sequência em um pacote de difusão antes de enviar para todos os seus vizinhos. Os nós mantêm uma lista dos endereços e o número de sequência para cada pacote de difusão recebido, duplicado e repassado. Ao receber um pacote, o nó verifica na lista de pacotes recebidos, caso o pacote já esteja presente na lista, o pacote será descartado e não será duplicado e nem repassado. Outra abordagem de inundação controlada é o repasse pelo caminho inverso, que detalharemos mais adiante. Na abordagem por difusão por spanning tree os pacotes de difusão são repassados por meio dos enlaces da árvore de menor custo, de forma que cada nó da rede receba exatamente uma cópia do pacote de difusão. Figura 38. Difusão por spanning tree. A BC D E F G Legenda: Caminho de menor custo Fonte: Adaptado de Kurose e Ross (2013). 42 CAPÍTULO 2 • PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) No serviço para um grupo o pacote é entregue a apenas um subgrupo de nós na rede. Este tipo de serviço é indispensável para aplicações que necessitem entregar pacotes de um ou mais remetentes para um grupo de destinatários, como, por exemplo: Figura 39. Aplicações multicast. • Transferência de atualização de softwareTransferência de dados em grandes volumes • Transferência de áudio, vídeo e texto de palestra ao vivo para um conjunto de participantesMídia de fluxo contínuo • VideoconferênciaAplicações de dados compartilhados • Jogos multiusuárioJogos interativos Fonte: Elaborada pela autora. Segundo Kurose e Ross (2013), precisamos ter em mente que na comunicação para um grupo existem dois problemas: » Como identificar os destinatários de um pacote desse tipo de serviço? » Como endereçar um pacote enviado a um desses destinatários? Para resolver a questão, devemos utilizar o endereçamento IP classe D que foi previsto para utilização multicast por meio de um endereçamento indireto, isto é, um único identificador é utilizado para o grupo de destinatários e uma cópia deste pacote é entregue a todos os destinatários associados ao grupo. Tabela 6. Endereço Classe D. Classe Intervalo A 1.0.0.0 a 127.0.0.0 B 128.0.0.0 a 191.255.0.0 C 192.0.0.0 a 223.255.255.0 D 224.0.0.0 a 239.255.255 E 240.0.0.0 a 255.255.255.254 Fonte: Elaborada pela autora. Mesmo com a utilização do endereçamento Classe D, algumas perguntas ainda precisam ser respondidas, segundo Kurose e Ross (2013): » Como um grupo começa e termina? » Como o endereço é escolhido? 43 PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) • CAPÍTULO 2 » Como novos hospedeiros são incorporados ao grupo? » Qualquer um pode se juntar ao grupo ou a participação é limitada? Para responder a estas e outras perguntas, são utilizados dois elementos no serviço para um grupo: Figura 40. Endereço Classe D. Protocolo de gerenciamento de grupo da internet (IGMP) Protocolo de roteamento de grupo Fonte: Elaborada pela autora. O protocolo de gerenciamento de grupo da internet (IGMP), descrito na RFC 3376, opera entre um hospedeiro e o roteador diretamente conectado a ele. Ele oferece os meios para que um hospedeiro possa informar ao roteador conectado a ele que uma aplicação que está funcionando no hospedeiro quer se juntar a um grupo específico. Ele contém basicamente três tipos de mensagem que são encapsuladas dentro de um datagrama IP: » Membership_query: enviada pelo roteador para todos os hospedeiros para determinar os grupos dos quais os hospedeiros participam. » Membership_report: utilizada como resposta a uma mensagem Membership_ query. » Leave_group: utilizada quando o host sai do grupo. Figura 41. Protocolo IgMP. Grupo 226.17.30.19 128.59.16.20 128.34.108.63 128.119.40.1 128.34.108.60 Fonte: Adaptado de Kurose e Ross (2013). 44 CAPÍTULO 2 • PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) O protocolo de roteamento para um grupo por vetor a distância (DVMRP), descrito na RFC 1075, foi o primeiro protocolo de roteamento para grupos utilizado na internet. Ele implementa o algoritmo de roteamento repasse pelo caminho inverso (RFP) com poda que funciona da seguinte forma: » Quando o roteador recebe um pacote de difusão com determinado endereço de origem, o pacote é transmitido para os enlaces de saída excluindo o enlace que recebeu o pacote, somente se o pacote chegou por um enlace que está no próprio caminho individual mais curto deste roteador, ou seja, de menor valor. Figura 42. Repasse pelo caminho inverso. A BC D E F G Legenda: Pacote será repassado Pacote não será repassado além do roteador receptor Caminho de menor custo Fonte: Adaptado de Kurose e Ross (2013). Para melhor compreensão, vamos analisar o exemplo da figura acima: 1. Roteador A faz uma transmissão por difusão para os nós B e C. 2. O nó B repassará os pacotes para os nós C e D, já que recebeu o pacote do nó A, que está em seu caminho de menor custo. 3. O nó B descartará sem repassar qualquer pacote de origem A que receba de C, pois o nó C não está em seu caminho de menor custo. 4. O nó C receberá o pacote de A que está em seu caminho de menor custo e repassará para os nós E, F e B. Outro exemplo de protocolo de roteamento de grupoé Protocol Independent Multicast (PIM), que apresenta dois cenários de distribuição para um grupo: » Modo denso; » Modo esparso. 45 PROTOCOLOS DA CAMADA DE REDE (ROTEAMEnTO) • CAPÍTULO 2 O modo denso utiliza a técnica de caminho inverso apresentada acima. Neste modo, os membros do grupo multicast são densamente localizados. Ele utiliza as informações do protocolo unicast em uso na rede para determinar as rotas para cada fonte de dados multicast. No modo esparso, o número de roteadores com membros do grupo é pequeno em relação ao número total de roteadores. Neste modo, os membros do grupo são amplamente dispersos. Sintetizando Vimos até agora: » As diferenças entre os algoritmos de roteamento. » Os protocolos de roteamento na internet. » O roteamento por difusão. 46 Introdução Neste capítulo, analisaremos as características e funcionalidades dos protocolos utilizados na camada de transporte. Começaremos nossa discussão analisando o protocolo UDP, suas principais funcionalidades e formato do segmento. Identificaremos os principais comandos socket, que é a interface de comunicação entre a camada de transporte e as aplicações. Finalizaremos a discussão sobre o protocolo UDP identificando o protocolo RTP utilizado para o transporte de fluxos de aplicação multimídia. Seguindo em nossa discussão, analisaremos os conceitos fundamentais e as funcionalidades do protocolo TCP que, por oferecer um serviço confiável e orientado à conexão, apresenta maior complexidade e controles que o protocolo UDP. Assim como o protocolo UDP enumeramos os principais comandos socket utilizados pelo protocolo, analisaremos o formato do seu segmento e discutiremos o modelo de conexão e o protocolo da janela deslizante. Finalizaremos nossa aula com a discussão do protocolo de controle de congestionamento implementado pelo TCP. Objetivos » Identificar as principais funcionalidades do protocolo UDP. » Identificar as principais funcionalidades do protocolo TCP. » Compreender o controle de congestionamento. 3 CAPÍTULO PROTOCOLOS DA CAMADA DE TRAnSPORTE 47 PROTOCOLOS DA CAMADA DE TRAnSPORTE • CAPÍTULO 3 3.1 Protocolo UDP O protocolo User Datagram Protocol (UDP) oferece um serviço não orientado à conexão e não confiável descrito na RFC 768. Ele é um protocolo em que os processos envolvidos na comunicação não necessitam estabelecer uma comunicação previamente. Também não oferece garantias de que a mensagem chegará ao destino e nem na ordem correta. Diferentemente do protocolo TCP, ele não guarda informação de estado das conexões. É um protocolo bastante simples, consequentemente é mais rápido que o protocolo TCP. É indicado quando a aplicação necessita de mais velocidade e suporta baixa confiabilidade, ou seja, a perda de dados não representa um problema para a aplicação. Ou quando as aplicações não necessitam de controle ou possuem um grande fluxo de dados, sem necessidade de ordem de chegada e retransmissão dos segmentos enviados. Neste modelo, cada segmento UDP é completamente independente dos outros, não existindo envio ou recebimento de confirmação nem manutenção do estado da conexão entre origem e destino. Também não é implementado nenhum mecanismo de congestionamento, fluxo ou erros. O protocolo UDP é utilizado por aplicações de: » Monitoramento; » Gerência; » Debugging; » Testes; » Broadcasting; » Multicast; » Multimídia tolerante a erros. Para que o serviço UDP seja implementado entre a origem e destino é necessário que ambos implementem uma interface de comunicação que permita que os programas possam estabelecer, usar e encerrar uma conexão. Esta interface é denominada de socket. Existem diferentes versões do software para Unix, Linux e Windows. Para Windows, o socket é implementado por Application Programming Interface (API) e é denominada de Winsock. Um socket possui um número de endereço IP, um número de porta associada e pode ser utilizado por várias conexões ao mesmo tempo se utilizado em uma aplicação do tipo “servidor”. 48 CAPÍTULO 3 • PROTOCOLOS DA CAMADA DE TRAnSPORTE Saiba mais O Internet Assigned Numbers Authority (IANA) é o órgão que designa os números de porta para as aplicações. Existem diferentes classificações para as portas que variam de 0 a 65536: Tabela 7. Portas: classificação. Classificação Intervalo Descrição Portas muito conhecidas 0 a 1023 Reservadas para serviços e aplicativos comuns como, por exemplo, o HTTP (servidor web) e o SMTP (Simple Mail Transfer Protocol) Portas registradas 1024 a 49151 Reservadas para processos ou aplicativos de usuário. São aplicativos individuais que um usuário escolheu desenvolver e instalar em vez de aplicativos comuns que receberiam uma porta muito conhecida Portas dinâmicas ou privadas 49152 a 65536 Reservadas para uso durante uma comunicação e designada de forma dinâmica quando o cliente inicia uma conexão a um serviço. É utilizada para identificar o aplicativo do cliente, enquanto o cliente usa a porta conhecida para identificar e estabelecer conexão com o serviço solicitado no servidor. Fonte: Elaborada pela autora. Existem portas específicas para o protocolo UDP e para o protocolo TCP. Para facilitar o endereçamento na camada de transporte, o IANA publicou uma lista com os números de porta das aplicações mais utilizadas. Disponível em: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers. xhtml. Figura 43. UDP: socket. Primitiva Descrição socket() Cria um ponto de comunicação bind() Associa o socket a um endereço local e uma porta sendfrom() Transmite mensagens ao socket recv() Recebe mensagens através do socket Close() Encerra uma conexão Socket() Sendfrom recvfrom() Close() Cliente Socket() Sendfrom() recvfrom() Servidor Bind() Close() Fonte: Kurose e Ross (2013). No protocolo UDP, o cliente não estabelece uma conexão com o servidor, ele apenas envia um segmento. O servidor não precisa aceitar uma conexão, ele apenas espera a chegada dos datagramas. 49 PROTOCOLOS DA CAMADA DE TRAnSPORTE • CAPÍTULO 3 O protocolo UDP é um protocolo bastante simples, sendo caracterizado como um serviço não confiável e sem conexão: Figura 44. UDP: características. Não garante que os datagramas enviados pela origem sejam entregues com sucesso e também não garante a entrega na sequência; Antes do envio dos datagramas, não existe qualquer comunicação prévia entre origem e destino. Cada datagrama é tratado de forma individual e independente, o caminho é resultado do processo de roteamento. Fonte: Kurose e Ross (2013). O segmento UDP é dividido em duas partes: » Cabeçalho: contém informações de controle específicas do protocolo UDP; » Dados: encapsulam informações de protocolos da camada de aplicação. O cabeçalho é composto de quatro campos de 2 bytes: Figura 45. Protocolo UDP: campos. N. porta origem N. porta destino Dados da aplicação (mensagem) Comprimento Soma de verificação Cabeçalho 8 bytes Fonte: Kurose e Ross (2013). Os campos porta de origem e destino são utilizados na multiplexação e demultiplexação, conforme já analisamos, para identificar qual aplicação deverá receber o segmento. O campo comprimento especifica em bytes o tamanho do campo de dados da aplicação, já que esses dados podem ter tamanho variável de um segmento para outro. O campo soma de verificação é utilizado pelo host destino para verificar se ocorreu erro na transmissão entre a origem e o destino. O objetivo deste campo é detectar erro no segmento transmitido, como, por exemplo, bits invertidos. Apesar de o protocolo UDP fornecer a verificação de erros, ele não implementa mecanismo de recuperação do erro. 50 CAPÍTULO 3 • PROTOCOLOS DA CAMADA DE TRAnSPORTE 3.2 Protocolo TCP O protocolo Transmission Control Protocol ( TCP) é um protocolo orientado à conexão confiável utilizado entre dois hosts ou hospedeiros. Isto é, é orientado à conexão, pois é necessárioo estabelecimento de conexão entre emissor e receptor antes de enviar um pacote TCP. Esta conexão, seus parâmetros e estados estão localizados inteiramente nos sistemas finais. Os roteadores e demais elementos da rede não têm conhecimento dessa conexão e da camada de transporte. O TCP é confiável, pois se um pacote não for entregue, ele é retransmitido, isto é, faz a entrega dos segmentos em ordem e sem erros. Ele oferece também um mecanismo de controle de congestionamento que limita a capacidade de transmissão de um processo, seja ele cliente ou servidor, quando a rede está congestionada entre a origem e o destino. Para implementar um serviço de transferência confiável e para manter o controle de congestionamento, o protocolo TCP mantém o estado da conexão nos sistemas finais. Este estado inclui a utilização de buffers de envio e recebimento e parâmetros de controle, sequência e de reconhecimento. O TCP oferece ainda um serviço full-duplex e conexão ponto a ponto. Neste caso, os dados da aplicação da máquina de origem podem ser transmitidos ao mesmo tempo em que a máquina de destino também transmite para a origem. Segundo Tanenbaum e Wetherall (2011), o fluxo de dados proveniente das aplicações na origem é dividido em partes de até 64Kb enviadas através de diferentes datagramas IP. Na máquina destino elas são remontadas no fluxo de bytes original através do protocolo TCP. Como a camada de IP não oferece nenhuma garantia de que os datagramas serão entregues da forma e na velocidade apropriadas, cabe à camada de transporte oferecer o desempenho e a confiabilidade necessárias. Agora que compreendemos os fundamentos do protocolo TCP, vamos analisar suas principais funcionalidades: 51 PROTOCOLOS DA CAMADA DE TRAnSPORTE • CAPÍTULO 3 Figura 46. TCP: funcionalidades. Modelo de serviço Estrutura do segmento Estabelecimento de conexão Protocolo de janela deslizante Gerenciamento de contadores Fonte: Elaborada pela autora. Assim como o protocolo UDP, o protocolo TCP também implementa sockets na comunicação fim a fim com a diferença que é permitido que origem e destino implementem uma interface de comunicação onde os programas possam estabelecer, usar e encerrar uma conexão. Figura 47. Comunicação TCP. Enlace Rede Física Destino Comunicação ponto a ponto Full-duplex TCP com buffers, variáveis socket Origem Internet Processo Enlace Rede Física Controlado pelo desenvolvedor da aplicação Controlado pelo sistema operacional Processo socket TCP com buffers, variáveis Fonte: Adaptado de Kurose e Ross (2013). 52 CAPÍTULO 3 • PROTOCOLOS DA CAMADA DE TRAnSPORTE Quando uma aplicação repassa os dados para a camada de transporte, ele pode enviá-los diretamente ou armazená-los em um buffer para envio posterior. A tabela abaixo lista os comandos socket e apresenta os comandos do lado cliente e lado servidor: Tabela 8. Lista de comandos Socket TCP. Primitiva Descrição socket() Cria um ponto de comunicação bind() Associa o socket a um endereço local e uma porta listen() Anuncia a disposição para aceitar conexões e mostra o tamanho da fila accept() Bloqueia o responsável pela chamada até uma tentativa de conexão ser recebida connect() Tenta estabelecer uma conexão ativamente send() Transmite mensagens ao socket recv() Recebe mensagens por meio do socket Close() Encerra uma conexão Socket() Connect() Send() recv() Close() Cliente Socket() Listen() Send() recv() Close() Servidor Bind() accept() Fonte: Kurose e Ross (2013). As entidades da camada de transporte trocam informações através de segmentos. Um segmento TCP possui um cabeçalho fixo de 20 bytes e seguido de zero ou mais bytes de dados. A estrutura de um segmento TCP é dividida em duas partes: » um cabeçalho; » um campo denominado carga útil, que contém os dados encapsulados da camada de aplicação. O software TCP é quem decide o tamanho do segmento, entretanto ele deve caber no campo carga útil do protocolo IP, que é de 65.515 bytes. Vale ressaltar que cada enlace possui uma unidade máxima de transferência, também conhecida como Maximum Transfer Unit (MTU). Segundo Tanenbaum e Wetherall (2011), cada segmento da camada de transporte deve caber no MTU do transmissor e receptor sem fragmentação. O MTU normalmente utilizado é 1.500 bytes, pois representa a carga útil do protocolo de camada de enlace Ethernet. Outro ponto de atenção é sobre a possibilidade de fragmentação na camada de IP, já que os pacotes podem trafegar por algum caminho de rede em que o enlace tenha uma MTU pequena. 53 PROTOCOLOS DA CAMADA DE TRAnSPORTE • CAPÍTULO 3 Tabela 9. Estrutura segmento TCP. C ab eç al ho N. porta origem N. porta destino N. Sequência N. Reconhecimento Dados Comp. Cabeçalho Não utilizado Janela de recepção Soma de verificação da Internet Ponteiro de Urgência Opções C ar ga ú til Flag Fonte: Kurose e Ross (2013). O cabeçalho é composto pelos seguintes campos: » N. da porta TCP de origem e N. da porta TCP de destino: campo utilizado para a multiplexação e demultiplexação na camada de transporte. As portas podem variar de 1 a 65535. » Número de sequência e Número de reconhecimento (acknowledgment): são utilizados na execução de um serviço confiável. O número de sequência é o número do pacote sendo transmitido. O número de reconhecimento é o número de sequência do último pacote recebido acrescido de 1, ou seja, do próximo byte esperado pelo destino. » Comprimento do cabeçalho: especifica o comprimento do cabeçalho (em palavras de 32 bits) » Flag: contém 6 bits: › SYN (Synchronize): é utilizado na sincronização de números de sequência, no estabelecimento e encerramento da conexão; › FIN (Finalize): é utilizado para término de conexão; › ACK (Acknowledgment): confirmação de recebimento; › URG (Urgent): utilizado para indicar dados marcados com urgência pelo remetente. A localização do último byte de urgência é dada pelo campo “ponteiro de urgência”; › PSH (Push): utilizado para indicar que o receptor deve passar os dados recebidos para a aplicação; › RST (Reset): utilizado para indicar a solicitação de reset da conexão. Normalmente é enviado após o recebimento de um pacote que aparentemente não satisfaz o número de sequência esperado. 54 CAPÍTULO 3 • PROTOCOLOS DA CAMADA DE TRAnSPORTE » de recepção: indica o número de bytes que um destinatário está disposto a aceitar. É utilizado no controle de fluxo. » Soma de verificação: indica ao remetente se ocorreu erro na transmissão do segmento. » Ponteiro de urgência: indica a localização do último byte de urgência. É utilizado em conjunto com o bit URG. » Opções: é um campo opcional e de tamanho variável, utilizado quando a origem e o destino negociam o tamanho do MSS (Maximum Segment Size), ou seja, o tamanho máximo do segmento. Para que cliente e servidor possam se comunicar usando TCP, eles precisam primeiramente estabelecer uma conexão entre a origem e o destino que é composta pelos seguintes passos: » Cliente escolhe uma porta de origem; » Servidor aloca buffers e variáveis à conexão; » Estabelecimento da conexão pela apresentação de três vias (three-Way Handshake). A “apresentação de três vias” ou three-way handshake é utilizada no início e na finalização de uma conexão. Ela ocorre por meio dos seguintes passos: 5. cliente enviando ao servidor um segmento TCP especial com o bit “SYN” habilitado (igual a 1) com uma solicitação de conexão; 6. servidor responde com o segmento TCP especial com o bit SYN e o bit ACK habilitados; 7. cliente responde ao servidor com outro segmento TCP com o bit ACK habilitado. Figura 48. TCP: Three-way handshake. TCP Enlace Aplicação Rede Física Servidor TCP Aplicação Host A Internet Apresentação de três vias three-way handshake SYN SYN + ACK Dados Enlace Rede Física Fonte: Elaborada pela autora. 55 PROTOCOLOS DA CAMADA DE TRAnSPORTE
Compartilhar