Prévia do material em texto
REDES DE COMPUTADORES AULA 4 Prof. Luis José Rohling 2 CONVERSA INICIAL Conforme vimos em nossas aulas anteriores, para a definição das atribuições de cada um dos protocolos utilizados no processo de comunicação entre os dispositivos terminais em uma rede dados, temos dois modelos que dividem esses protocolos em camadas. Eles são o modelo TCP/IP, publicado pelo IETF, e o modelo OSI, publicado pela ISO, cuja correspondência entre as suas camadas é mostrada na figura a seguir. Figura 1 – Os modelos OSI e TCP/IP Fonte: Rohling, 2021. Em nossa aula passada, abordamos as duas camadas inferiores do modelo OSI, que são as camadas físicas e de enlace de dados, apresentando as principais características dos cabos de cobre e as fibras ópticas, que são utilizados para a implementação da infraestrutura das redes. Também foi abordado o principal protocolo empregado nas redes LAN, na camada de enlace de dados, que é o protocolo Ethernet. Além disso, se utilizarmos como referência o modelo TCP/IP, o protocolo Ethernet é a solução adotada para a camada de Acesso ao meio, pois os padrões Ethernet também definem as características e requisitos dos meios físicos, pois pode ser utilizado em redes com cabos de par trançado, com fibras ópticas ou até em redes sem fio, com o padrão WiFi. APRESENTAÇÃO APLICAÇÃO SESSÃO REDE TRANSPORTE ENLACE DE DADOS FÍSICA 6 7 5 3 4 2 1 ACESSO AO MEIO INTERNET TRANSPORTE APLICAÇÃO Modelo OSI Modelo TCP/IP 3 Assim, uma das funções do protocolo de camada de enlace é realizar o controle de acesso ao meio, estabelecendo as regras de transmissão dos bits no meio físico. E, para isto, o protocolo Ethernet utiliza o mecanismo chamado de CSMA/CD, conforme visto em nossa aula anterior. Porém, o protocolo de camada de enlace deve também fazer a interface com a camada superior, que é a camada de rede, no modelo OSI, ou a camada de Internet, no modelo TCP/IP. Inclusive, para identificar qual é o conteúdo dos quadros enviados através da rede LAN, o protocolo Ethernet insere um campo com o código binário que identifica os diversos protocolos de camada de rede que podem trafegar pelas redes de dados. Além do protocolo Ethernet, temos diversos outros protocolos empregados na camada de enlace de dados, nas redes WAN, tais como os protocolos utilizados nas redes de acesso à Internet, tais como o ADSL e o GPON. Assim, esses protocolos também devem ser conhecidos pelos profissionais que irão atuar nos provedores de acesso à Internet, além do protocolo Ethernet. Mas como o nosso foco são as redes LAN, não abordaremos esses outros protocolos de camada de enlace em nossa disciplina. Considerando os modelos em camadas, para que possamos entender o processo de comunicação nas redes de dados, é necessário conhecermos as atribuições de cada uma das camadas, desde a camada física, até a camada de aplicação. Inclusive, é na camada de aplicação que ocorre efetivamente a interação do usuário com as aplicações, as quais utilizarão a rede para a comunicação, tipicamente no modelo cliente/servidor. Assim, nesta aula, estudaremos as principais características das próximas duas camadas do modelo OSI, que são as camadas de rede e de transporte, que equivalem às camadas de Internet e de transporte do modelo TCP/IP. E como nosso objetivo é o entendimento das atribuições de cada camada, estudaremos as principais características dessas camadas, aprofundando os detalhes do protocolo IP, nas versões IPv4 e IPv6, em nossa próxima aula. 4 TEMA 1 – A CAMADA DE REDE No modelo OSI, a camada que está posicionada acima da camada de enlace de dados, e que é identificada como camada três, é a camada de Rede, que equivale exatamente à camada chamada de camada de Internet no modelo TCP/IP. Portanto, temos as mesmas atribuições para os protocolos dessa camada, seja no modelo TCP/IP, seja no modelo OSI. E as funções que deverão ser executadas pelos protocolos que operam na camada de rede são: • Processamento da comunicação ponta a ponta; • Endereçamento dos dispositivos finais; • Encapsulamento e desencapsulamento; • Roteamento. Uma das diferenças entre os dois modelos em camadas é que o modelo TCP/IP também descreve alguns protocolos que poderão ser utilizados nas diversas camadas, e o modelo OSI apenas descreva as atribuições de cada camada. Assim, o IETF, que definiu o modelo TCP/IP, também publicou alguns protocolos que irão operar na camada de Internet, sendo o principal protocolo é o Protocolo Internet, mais conhecido pela sua abreviação, que é o IP, que significa Internet Protocol. E o protocolo IP é utilizado atualmente em duas versões, que são a versão 4, que é o IPv4, e a versão 6, que é o IPv6. Portanto, as funções desses dois protocolos são as mesmas, pois ambos operam na mesma camada, porém, a diferença entre eles será o modo como as funções são executadas. Por exemplo, para o processo de endereçamento, teremos um tamanho de endereço diferente para cada uma das versões, sendo que o IPv4 utiliza um identificador de 32 bits e o IPv6 um identificador de 128 bits, o que leva a uma grande diferença na capacidade de endereçamento de cada uma das duas versões do protocolo IP. 1.1 Comunicação ponta a ponta Uma das atribuições do protocolo de camada de rede é o estabelecimento da comunicação ponta a ponta, ou seja, da comunicação entre os dois dispositivos terminais, nos quais teremos a execução das aplicações que permitirão a troca de dados. 5 No protocolo de enlace, visto na aula anterior, tínhamos o estabelecimento da comunicação entre os dispositivos, mas apenas dentro da rede LAN. Assim, os dados eram novamente encapsulados em outro protocolo da camada de enlace, para então serem enviados para a internet. Ou seja, temos a troca do protocolo de camada dois, em função das tecnologias de rede empregadas na rede WAN, ao longo da rede, desde o cliente até o servidor, em uma comunicação WEB, por exemplo. Figura 2 – Diversos protocolos de camada de enlace Fonte: Rohling. Na figura anterior, temos o exemplo da comunicação entre o cliente e o servidor WEB através da rede WAN. No processo de comunicação através do protocolo de camada de rede, que nesse exemplo é o protocolo IP, temos a montagem dos pacotes IP, que serão enviados entre o cliente e o servidor, em um processo de comunicação bidirecional. Os pacotes IP montados pelos equipamentos terminais da rede, que são o computador do usuário e o servidor WEB, serão encaminhados nas suas respectivas redes locais, que, no exemplo, são implementadas com a utilização de um switch Ethernet. Assim, os pacotes IP deverão ser encapsulados em quadros Ethernet, conforme visto em nossa aula anterior, para serem enviados para o switch, que em cada uma das redes LAN, fará o encaminhamento dos quadros para o roteador local, fazendo a conexão da rede LAN com a rede WAN. Pacote IP Cliente Servidor WEB 6 Ao receber o quadro Ethernet, o Roteador deverá então encaminhar o pacote IP para o próximo roteador na Internet. E para realizar esse encaminhamento, o roteador deverá montar um quadro de camada de enlace, de acordo com o protocolo utilizado na comunicação com o próximo roteador, que provavelmente não mais será o protocolo Ethernet. Assim, na figura do exemplo anterior, temos a indicação de que está sendo utilizado um protocolo diferente, nas duas conexões de WAN, com os pacotes sendo representados com cores diferentes. Porém, dentro dos quadros, seja na rede LAN ou na rede WAN, termos sempre a mesma estrutura, ou seja, o mesmo pacote IP. Ou seja, o protocolo IP é que estabelecerá a comunicação ponta a ponta, ou também designada como comunicação fim a fim, pois a estrutura de dados contida no pacote IP será enviada através da rede, mantendo-se inalteradaao longo do caminho. 1.2 Endereçamento dos dispositivos finais Outra funcionalidade implementada pelos protocolos que operam na camada de rede é o endereçamento dos dispositivos finais, pra que seja possível o processo de comunicação fim a fim, conforme visto no item anterior. Assim, por exemplo, o protocolo IP irá acrescentar essa informação ao conteúdo do pacote que será enviado através da rede. E o tamanho desse campo de endereço é que determinará a capacidade de endereçamento do protocolo, ou seja, da quantidade de endereços que poderão ser utilizados. Em nossa aula anterior, vimos o protocolo Ethernet, que opera na camada de enlace de dados, que insere no seu cabeçalho um endereço de 48 bits, que é o endereço MAC. Porém, como a informação do protocolo Ethernet é utilizada apenas na rede LAN, que opera com esse protocolo, não seria possível identificar o destinatário das mensagens em outras redes, pois esse endereço tem apenas significado local. Desta forma, é inserido um endereço de camada de rede, que será encaminhado junto com o pacote, para todos os demais dispositivos de rede, até o destinatário final. E, da mesma forma que o protocolo Ethernet, o protocolo IP inserirá os endereços de origem e de destino no cabeçalho dos pacotes, de modo que possam ser identificados o remetente e o destinatário das mensagens, 7 atendendo ao requisito básico do processo de comunicação, sendo o tamanho do endereço uma das diferenças entre os protocolos IPv4 e IPv6. E essa mudança no tamanho do endereço ocorreu em função da expansão da rede, sendo que, quando foi definido o padrão do protocolo IPv4, acreditava-se que um identificador de 32 bits, que era o endereço IP, seria suficiente para endereçar todos os dispositivos que seriam conectados na rede. Porém, com o crescimento da Internet, foi necessária a mudança do tamanho do identificador dos terminais, sendo alterado para 128 bits na nova versão do protocolo IP, que é o IPv6. Assim, uma das motivações para a migração do protocolo de rede, para o IPv6, é a possibilidade de conexão de todos os terminais com identificadores válidos, o que não ocorre atualmente com o IPv4, sendo utilizado um mecanismo de troca de endereços ao longo do caminho de rede, chamado de NAT. Portanto, para que ocorra a comunicação em uma rede de dados, será necessário então que cada terminal possua um identificador exclusivo, na camada de rede, sendo que esse identificador deverá ser atribuído aos terminais, em função do endereçamento de cada rede, por meio de uma configuração manual ou automática, conforme veremos adiante. 1.3 Encapsulamento e desencapsulamento Para a camada de rede, temos como unidade de transporte a estrutura de comunicação identificada como o pacote, que é o PDU de camada quatro. Ou seja, a estrutura que contém os dados transmitidos por meio da internet, que opera baseada no protocolo IP, são os pacotes IP. Portanto, uma das atribuições do protocolo de camada de rede é a montagem dos pacotes, no terminal do remetente das mensagens, acrescentando as informações da camada de rede aos segmentos recebidos da camada de transporte. As informações acrescidas pela camada de rede estão contidas no cabeçalho, inserido na parte inicial do pacote, conforme mostrado na figura a seguir. 8 Figura 3 – Encapsulamento na camada de rede Fonte: Rohling. Após a montagem do pacote pelo terminal do remetente, ele é transmitido através da rede até o destinatário da mensagem. Ao ser recebido pelo destinatário, é realizado o processo de desencapsulamento, em que o conteúdo do pacote, que é a unidade de dados chamada de segmento, é encaminhado para a camada superior, que é a camada de transporte. 1.4 Roteamento Para que os pacotes da camada de rede sejam encaminhados através da rede até o destinatário, é necessário que os dispositivos intermediários de rede realizem esse processo de maneira adequada, ou seja, que recebam e encaminhem os pacotes para o dispositivo intermediário de rede correto. E esse processo de encaminhamento dos pacotes nas redes de dados é chamado de roteamento. Os dispositivos intermediários de rede que realizam esse encaminhamento de pacotes são os roteadores, que operam baseados nas informações dos pacotes recebidos, que são os endereços de rede. Assim, ao receber um pacote, o roteador analisará o endereço de destino contido no cabeçalho do pacote e identificará qual será a interface por onde o pacote deverá ser encaminhado para que possa chegar ao destinatário. Por exemplo, a conexão da sua rede LAN com a Internet é feita através de um roteador, que identificará todas as solicitações recebidas da rede interna, Camada de Transporte SEGMENTO CABEÇALHO DE PACOTE SEGMENTO Camada de Rede Pacote 9 para dispositivos na rede externa, realizando o encaminhamento para a rede WAN. Assim, ao receber um pacote vindo da rede interna, ou externa, o roteador examinará o endereço de destino do pacote e, caso o endereço pertença à rede interna, ele encaminhará o pacote através da interface LAN, ou wireless, e caso o endereço de destino não pertença à rede interna, ele encaminhará o pacote através da interface de conexão com a Internet, que poderá ser uma interface óptica ou cabo telefônico, de acordo com a tecnologia de acesso utilizada pelo seu provedor de acesso. E para que possam tomar a decisão de encaminhamento, ou seja, definir por qual interfaces os pacotes serão encaminhados, os roteadores mantêm uma tabela com as informações das redes, associadas com as interfaces deste, chamadas de tabela de roteamento, que será vista com mais detalhes em nossas próximas aulas. TEMA 2 – A CAMADA DE TRANSPORTE A camada que fica localizada acima da camada de rede, vista no tema anterior, é a camada de transporte, que possui a mesma identificação, tanto no modelo OSI, quanto no modelo TCP/IP, possuindo as mesmas atribuições nos dois modelos. Figura 4 – A camada de Transporte Fonte: Rohling. APRESENTAÇÃO APLICAÇÃO SESSÃO REDE TRANSPORTE ENLACE DE DADOS FÍSICA 6 7 5 3 4 2 1 ACESSO AO MEIO INTERNET TRANSPORTE APLICAÇÃO Modelo OSI Modelo TCP/IP 10 E as principais atribuições da Camada de Transporte são: • Estabelecer as sessões de comunicação, de maneira temporária, entre as aplicações, permitindo a transferência de dados entre essas sessões. • Estabelecer o processo de conexão, realizando o controle de fluxo. • Realizar a multiplexação das conversas das camadas superiores. • Identificar as conversas e aplicações da camada superior. • Segmentar os dados recebidos da camada superior. Assim, temos algumas diferenças nas funções da camada de transporte, no processo de comunicação das redes de dados, em relação às camadas inferiores, pois podemos ter várias aplicações sendo executadas simultaneamente em um computador ou servidor. Assim, a camada de transporte deverá ter a capacidade de tratar diversas demandas vindas da camada superior, encaminhando os segmentos, que contém os dados das aplicações, para a camada de rede. 2.1 Multiplexação das conversas Como podemos ter várias aplicações sendo executadas no terminal de usuário, que podem necessitar da comunicação de dados por meio da rede, podemos então ter a demanda do uso da rede por mais de uma aplicação simultaneamente. Assim, o protocolo de camada de transporte deverá atender todas essas aplicações, criando as unidades de transporte, que são os segmentos, para cada uma delas, conforme mostrado na figura a seguir. 11 Figura 5 – A multiplexação na Camada de Transporte Fonte: Rohling. Como o processo de comunicação é, normalmente, bidirecional, é necessário que os segmentos de cada aplicação sejam identificados para que as respostas recebidas sejam encaminhadas corretamente para as aplicaçõesque estão aguardando essas respostas. Assim, na camada de transporte, também é necessária a inclusão de um identificador, que permitirá a identificação de qual aplicação está relacionada com os segmentos enviados e recebidos. E esse identificador é chamado de número de porta, que irá atribuir um valor binário para cada uma das aplicações da camada superior, que estejam utilizando o processo de comunicação através da rede de dados. 2.2 Segmentação A camada de transporte deverá realizar a interface entre as aplicações e a camada de rede e, assim, adequar os dados a serem transmitidos, de acordo com a demanda das aplicações, para que possam ser encapsulados corretamente pelo protocolo de camada de rede. E uma das características associadas a esse processo de encapsulamento é o tamanho do conteúdo da carga nesses pacotes, o que dependerá do protocolo que está sendo utilizado na camada de rede. Com isso, o protocolo de camada de rede deverá conhecer qual é o tamanho máximo e Aplicação 1 Aplicação 2 Aplicação 3 Camada de Transporte Segmento Segmento Segmento 12 realizar a divisão dos dados, vindos da camada superior, de acordo com esse limite, o que é chamado de segmentação. Na figura a seguir, temos o exemplo desse processo de segmentação, em que a aplicação demanda uma quantidade maior de dados a serem transmitidos do que o tamanho máximo que pode ser inserido nos pacotes. Assim, a camada de transporte divide os dados em segmento, que são então encaminhados para a camada de rede, no qual serão gerados os pacotes, sendo um para cada segmento. Figura 6 – O processo de segmentação Fonte: Rohling. Desta forma, as aplicações não serão impactadas pelas limitações das camadas inferiores, pois a camada de transporte é que fará essa adequação para que o processo de comunicação ocorra. Ou seja, o processo de comunicação das aplicações será independente do protocolo de rede, pois o protocolo de transporte é que fará os ajustes necessários para que a comunicação ocorra. Inclusive, este é o principal objetivo do modelo em camadas: a independência dos protocolos em relação às demais camadas. Camada de Transporte SEGMENTO 1 Camada de Rede Pacote1 DADOS Camada de Aplicação SEGMENTO 2 SEGMENTO 3 SEGMENTO 1 SEGMENTO 2 SEGMENTO 3 Pacote2 Pacote3 13 2.3 Controle de fluxo e confiabilidade Uma das principais atribuições da camada de transporte é o controle de fluxo, que consiste no acompanhamento do processo de envio e recebimento dos segmentos, ajustando a velocidade de envio em função do desempenho da rede. Para realizar essa tarefa, é necessário então o processo de contabilização dos segmentos enviados e recebidos, verificando a quantidade de segmentos que não foram entregues. Essa perda de pacotes na rede indica que, provavelmente, existe um congestionamento em algum ponto da rede, levando ao descarte de pacotes. Assim, a camada de transporte deverá diminuir a taxa de envio dos segmentos, para evitar o descarte. Figura 7 – O controle de fluxo Fonte: Rohling. Outra função da camada de transporte é garantir a confiabilidade do processo de comunicação. E, para isto, o mecanismo básico consiste no reenvio dos segmentos que foram eventualmente descartados, de forma que a aplicação nem perceberá essa perda de pacotes. Para essa perda, o mecanismo básico é a inclusão de um identificador sequencial dos segmentos, permitindo que o destinatário dos pacotes realize a conferência dos segmentos recebidos. Caso seja detectada a perda de pacotes, o destinatário poderá solicitar para o Diminuição da taxa de transmissão Pacote descartado 14 remetente a retransmissão, garantindo a confiabilidade do processo de comunicação. Figura 8 – O reenvio de pacotes Fonte: Rohling. TEMA 3 – OS PROTOCOLOS IETF Para implementar as funcionalidades da camada de transporte, temos dois protocolos que foram publicados pelo IETF, que são o protocolo TCP e o protocolo UDP. E temos várias diferenças entre esses dois protocolos, sendo que o protocolo UDP opera de maneira mais simples, apresentando menos recursos do que o protocolo TCP. Uma das diferenças é quanto ao mecanismo de confiabilidade, sendo que o protocolo TCP possibilita a confirmação da entrega de pacotes e o protocolo UDP não possui esse recurso. Para garantir a confiabilidade o protocolo TCP, utiliza o processo de numeração e rastreamento dos segmentos transmitidos, com a confirmação dos dados recebidos e retransmissão dos dados não confirmados após determinado período. Reenvio de pacote Solicitação de retransmissão Pacote descartado 15 Figura 9 – Os protocolos de transporte Fonte: Rohling. Já o protocolo UDP oferece as funções básicas para entrega de segmentos de dados entre as aplicações, apresentando uma baixa sobrecarga no processo de comunicação na rede de dados, sendo o protocolo mais adequado para aplicações que não exigem confiabilidade. Além disso, o protocolo TCP é chamado de stateful, pois, no processo de comunicação, é estabelecida uma sessão de comunicação entre os terminais, antes do envio dos segmentos. 3.1 O cabeçalho TCP Para implementar as funções da camada de transporte, o protocolo TCP irá acrescentar as informações necessárias para esses processos e que serão inseridas no cabeçalho dos segmentos montados nessa camada. E esse cabeçalho terá um tamanho total de 20 bytes. Desta forma, para cada segmento gerado, a partir da divisão dos dados da camada de aplicação, será acrescido um cabeçalho de 20 bytes. E os principais campos presentes no cabeçalho dos segmentos TCP são: • Porta de origem e porta de destino • Números de sequência e de confirmação • Bits de controle ACESSO AO MEIO IP TCP/UDP APLICAÇÃO Modelo TCP/IP 16 • Tamanho de janela Figura 10 – O cabeçalho TCP Fonte: Rohling. A estrutura do cabeçalho é representada no formato mostrado na figura para uma melhor compreensão, porém, na estrutura real dos quadros, esses campos estão colocados em sequência, conforme mostrado a seguir. E devemos nos lembrar ainda que para cada segmento gerado pela divisão da quantidade total de dados, recebidos da camada de aplicação, será acrescentado um cabeçalho para que sejam, então, encapsulados nos pacotes da camada de rede. Porta de origem Porta de destino Número de sequência Número de confirmação Flags Janela Checksum Urgente 20 bytes 17 Figura 11 – O segmento TCP Fonte: Rohling. 3.2 O cabeçalho UDP Como o protocolo UDP é utilizado em aplicações que não exigem que a confiabilidade seja implementada na camada de transporte, o cabeçalho do protocolo UDP é menor do que o cabeçalho do protocolo TCP, contendo menos campos, conforme mostrado a seguir. Figura 12 – O cabeçalho UDP Fonte: Rohling. Assim como no protocolo TCP, esse cabeçalho será acrescido a cada um dos segmentos, gerados pela divisão dos dados recebidos da camada superior. E como esse cabeçalho é menor do que o do TCP, é dito que o protocolo UDP DADOS #1 DADOS Camada de aplicação Segmentação dos dados DADOS #n Cabeçalho TCP DADOS . . . Segmento TCP = dados + cabeçalho TCP 20 bytes Porta de Origem Porta de Destino Comprimento Checksum 8 bytes 18 gera uma menor sobrecarga, pois acrescenta uma menor quantidade de bytes aos dados efetivamente úteis, gerados pelas aplicações. O outro campo que não está presente no cabeçalho do protocolo UDP são os números de sequência e de confirmação, de forma que o protocolo UDP não garantirá a confiabilidade do processo de comunicação. Assim, o processo de confiabilidade deverá ser implementado pela aplicação, caso seja utilizado o protocolo UDP na camada de transporte. Uma das aplicações que utiliza o protocolo UDP na camada de transporteé a transmissão de vídeo em tempo real, pois, nesse caso, temos um grande volume de dados a serem transmitidos, e o processo de comunicação deverá apresentar o menor atraso possível. Assim, como o UDP irá acrescentar apenas 8 bytes a cada segmento de dados, que são as amostras do sinal de vídeo digitalizadas, e a aplicação gera uma alta taxa de dados, quanto menor a quantidade de bytes dos cabeçalhos, menor será a largura de banda ocupada pela transmissão. E como temos poucos campos a serem gerados na camada de transporte, menor será o tempo necessário para gerar esse cabeçalho, o que contribui também para melhorar a qualidade da comunicação, apresentando um menor atraso no processamento dos dados. TEMA 4 – O PROTOCOLO TCP O protocolo TCP deverá, então, executar as tarefas da camada de transporte, que são a multiplexação das aplicações das camadas superiores, garantir a confiabilidade do processo de comunicação e realizar o controle de fluxo. Para executar essas diversas tarefas, são inseridos diversos campos no cabeçalho do protocolo TCP, conforme visto no tema anterior. E além dos campos inseridos no cabeçalho, é necessário que esses valores sejam gerados corretamente, de acordo com a sua finalidade, para que permitam que o protocolo TCP possa realizar efetivamente as suas atribuições. Assim, neste tema, veremos como esses campos permitirão a implementação dessas funcionalidades e, em nosso próximo tema, estudaremos a operação do protocolo TCP, com o estabelecimento e acompanhamento das sessões de comunicação em uma rede de dados. 19 4.1 A multiplexação Conforme vimos anteriormente, quando estamos utilizando a Internet, normalmente temos vários aplicativos sendo utilizados simultaneamente, tais como as diversas abas do navegador, realizando o acesso aos diversos servidores WEB, bem como outras aplicações específicas, tais como servidores de jogos e de aplicações corporativas. Porém, todas as comunicações geradas por essas aplicações utilizarão a mesma camada de rede, ou seja, o mesmo endereço IP de nosso computador para identificar os pacotes. Assim, será atribuição da camada de transporte realizar o gerenciamento desses diversos processo de comunicação, gerados pelas aplicações que estão sendo executadas nas camadas superiores, para que as respostas depois possam ser entregues às aplicações corretas. Esse processo é chamado de multiplexação das conversas de camada superior. Portanto, será necessária a inserção de um valor no cabeçalho do protocolo TCP que identifique essas aplicações, tanto no lado do cliente quanto no lado do servidor, pois um servidor poderá também executar diversas aplicações. E esse identificador das aplicações da camada superior, que geraram cada um dos segmentos, são os números de porta. Figura 13 – Os números de porta Fonte: Rohling. Porta de Origem Porta de Destino Número de sequência Número de confirmação Flags Janela Checksum Urgente 20 bytes 20 No cabeçalho do protocolo TCP, temos um campo de 16 bits para a identificação da Porta de Origem e outro campo de 16 bits para a identificação da Porta de Origem. Desta forma, podem ser diferenciadas até 65536 portas diferentes. Para a geração do cabeçalho, é necessário que esses dois campos sejam então preenchidos pelo protocolo da camada de transporte, sendo que a porta de origem dependerá das aplicações que estão sendo executadas no terminal do cliente, e a porta de destino, do servidor que está sendo acessado. Assim, os números de porta de destino devem ser padronizados, para que as aplicações que estão sendo executadas nos clientes possam identificar corretamente a porta que está respondendo às solicitações no servidor. E para padronizar esses números de porta, o IETF publicou uma recomendação específica, reservando o primeiro intervalo de número de portas para as aplicações usuais, que vai até a porta 1024, e que são chamadas de Portas Conhecidas (Well Known Ports). As portas mais usuais, cujas aplicações veremos de maneira mais detalhada adiante, são: Tabela 1 – Algumas portas IETF Porta Protocolo/Aplicação Funcionalidade 20 e 21 FTP Transferência de arquivos 22 SSH Acesso remoto seguro 23 TELNET Acesso remoto 25 SMTP Transferência de correspondência (e-mail) 53 DNS Resolução de nomes de domínio 80 HTTP Transferência de Hipertexto (www) 103 POP3 Transferência de correspondência (e-mail) 123 NTP Ajuste de hora 161 SNMP Gerenciamento de rede 443 HTTPS HTTP Seguro Fonte: Rohling. 21 4.2 Os sockets Uma outra forma de identificação das sessões, estabelecidas no processo de comunicação nas redes de dados, são os chamados Sockets, que, muitas vezes, são confundidos com o número de porta. Porém, o Socket, na realidade, é a combinação do endereço IP de origem e o número da porta de origem ou o endereço IP destino e o número da porta de destino. Com isso, no lado do cliente, toda vez que você abre uma nova aba do seu navegador solicitando um site diferente, o sistema operacional irá alocar uma porta de origem, que será identificada no cabeçalho do protocolo de transporte, seja o TCP ou o UDP, e inserirá como porta de destino o valor associado à aplicação que está sendo acessada. Porém, além das portas, teremos também os endereços de origem e de destino, que serão inseridos na camada de rede. E, neste caso, ao acessarmos diversos sites distintos, teremos uma porta de origem distinta, para cada solicitação, mas com o mesmo endereço IP de origem e teremos a mesma porta de destino para todas as solicitações que seria a porta 80, mas com endereços diferentes. Desta forma, o Socket é usado para identificar o servidor e o serviço que está sendo requisitado pelo cliente e, do outro lado da conexão, para identificar as sessões abertas pelos diversos clientes, sendo representado por dois conectores combinados, para formar um par de conectores. Por exemplo, um Socket cuja porta de origem é uma porta dinâmica e o destino é um servidor WEB teria a seguinte representação: (192.168.1.5:1099, 192.168.1.7:80). 22 Figura 14 – Os Sockets Fonte: Rohling. No exemplo da figura anterior, o servidor manterá dois Sockets, sendo um para atender às solicitações do endereço 10.10.34.15, que abriu a porta 1273 para esta sessão e outro Socket para atender às solicitações do endereço 192.168.10.25, que abriu a porta 1167 para a conexão com o servidor. E do lado do servidor, temos o mesmo endereço IP e o mesmo número de porta, pois os clientes estão acessando a mesma aplicação, o que evidencia a necessidade do Socket para diferenciar essas conexões. TEMA 5 – OPERAÇÃO DO PROTOCOLO TCP Uma das diferenças entre os protocolos TCP e UDP está associada ao estabelecimento da sessão, que é implementada apenas pelo protocolo TCP. Assim, antes do início da transmissão dos dados, o protocolo TCP irá estabelecer uma sessão entre o cliente e o servidor. E esse processo de estabelecimento de sessão é realizado em três etapas, que são: 1. O cliente iniciador envia uma requisição para o estabelecimento de uma sessão de comunicação, do tipo cliente-servidor, para o servidor de destino. Socket1: 172.16.13.50:80, 10.10.34.15:1273 Socket2: 172.16.13.50:80, 192.168.10.25:1167 10.10.34.15 Servidor WEB 192.168.10.25 172.16.13.50 23 2. O servidor confirma a sessão de comunicação cliente-servidor e faz uma requisição de uma sessão de comunicação, do tipo servidor-cliente, enviada para o cliente. 3. O cliente confirma a sessão de comunicação de servidor-cliente. Na etapa 1, a solicitação inicial do cliente contém o número da porta de origem, que é uma porta dinâmica e que foi aberta para o estabelecimento dessa sessão, identificando o serviço requisitado e inserindo o número de porta associado ao serviço, conforme números de porta padronizadospelo IETF. Na etapa 2, após a abertura do Socket que irá atender ao cliente, o servidor confirma o atendimento ao cliente, enviando também os seus parâmetros para essa conexão e aguarda a confirmação do estabelecimento da sessão pelo cliente. Apenas após o recebimento da confirmação do cliente, que ocorre na etapa 3, é que o servidor irá iniciar o envio dos dados da aplicação, conforme solicitado pelo cliente. Como a inicialização das sessões envolve então a troca de três mensagens entre o cliente e o servidor, esse processo também é chamado de “Handshake” triplo. Além da inicialização das sessões, o protocolo TCP também realiza um processo de encerramento das sessões. Assim, quando não existem mais dados a serem enviados, o remetente envia uma mensagem sinalizando o fim da sessão, e o destinatário envia, então, uma confirmação do recebimento dessa mensagem. Para confirmar que o remetente recebeu essa mensagem, é enviado uma mensagem de reconhecimento, sendo encerrada então a sessão, com o fechamento dos Sockets. 5.1 Números de sequência e confirmação Conforme vimos anteriormente, uma das funções da camada de transporte é a adequação dos dados para que sejam inseridos nos pacotes da camada de rede. Assim, o protocolo TCP fará a segmentação dos dados da camada superior, identificando cada um dos segmentos gerados, com a inserção de um identificador, que é o número de sequência e que será inserido no cabeçalho dos segmentos gerados. E o número de sequência inicial, para uma nova transmissão, é gerado de maneira aleatória, e é chamado de ISN – Initial 24 Sequence Number. Assim, a cada segmento enviado, esse número de sequência é incrementado, somando-se o número de bytes transmitidos. A partir desse número de sequência, o protocolo TCP poderá realizar a verificação dos segmentos recebidos, identificando eventuais perdas de pacotes no processo de transmissão, bem como reagrupar os segmentos na ordem correta, caso os pacotes cheguem fora de ordem. Portanto, é necessário que os segmentos recebidos sejam armazenados em um buffer antes de serem entregues à camada superior, já de forma ordenada. E o número de sequência também possibilita implementar a confiabilidade, pois caso algum dos pacotes seja descartado no processo de transmissão, por eventuais congestionamentos na rede, essa falha será detectada e poderá ser solicitada a retransmissão do segmento perdido. Assim, a camada de transporte irá entregar para a aplicação, que está sendo executada no destinatário todos os dados enviados pelo remetente, garantindo também a ordem correta dos segmentos. Figura 15 – Reordenação dos segmentos Fonte: Rohling. No exemplo da figura anterior, temos a chegada dos dois primeiros segmentos em ordem inversa no cliente e que são, então, reordenados pelo protocolo TCP, na camada de transporte, antes de serem entregues para o navegador web na camada de aplicação. Envio Cliente Servidor WEB Chegada Reordenação 25 Além da reordenação, o protocolo TCP realiza também a confirmação dos segmentos recebidos, enviando uma mensagem para o remetente, indicando qual será o próximo segmento que deverá ser enviado. Assim, caso sejam enviados 20 segmentos e seja perdido o 15º segmento, o TCP solicitará a retransmissão a partir desse segmento, mesmo que os demais segmentos tenham sido recebidos. 5.2 Tamanho de janela Uma das tarefas realizadas pelo protocolo TCP é o controle de fluxo, que irá garantir que os terminais que estão executando o protocolo TCP possam receber e processar os dados de forma confiável. Assim, o TCP realiza o controle de fluxo, ajustando a taxa de envio de dados entre o remetente e o destinatário, durante o processo de comunicação em uma determinada sessão. Ou seja, este é um processo dinâmico, que ocorre durante as sessões. Para realizar o processo de controle de fluxo, o protocolo TCP utiliza o campo de 16 bits contido no cabeçalho, que é identificado como Tamanho da Janela. E o tamanho da janela representa o número de bytes que o dispositivo de destino de uma sessão TCP pode aceitar e processar, antes de enviar a solicitação para o envio de mais segmentos. Esse tamanho da janela é definido inicialmente no processo de estabelecimento da sessão, de comum acordo entre o remetente e o destinatário, sendo que o tamanho da janela pode ser ajustado durante uma sessão, se necessário. Assim, caso ocorram congestionamentos na rede, que levarão à perda de pacotes, os terminais identificarão essas perdas, pela análise dos números de sequência inseridos no cabeçalho TCP, conforme visto anteriormente. E a partir da identificação dessa perda de pacotes, o tamanho de janela é reduzido, de forma que as confirmações sejam enviadas para uma menor quantidade de pacotes recebidos. Com isso, teremos uma diminuição da quantidade de retransmissões realizadas, pois a quantidade de bytes enviados até que seja aguardada uma confirmação é menor. 26 FINALIZANDO No processo de comunicação através da rede de dados, temos como os dois principais protocolos que implementam esse processo de comunicação os protocolos IP e TCP, que operam nas camadas de rede e de transporte, respectivamente. O protocolo IP está passando por uma atualização de versão, em um processo de utilização simultânea das versões IPv4 e IPv6, de modo que praticamente todos os computadores conectados na Internet já estão utilizando os dois protocolos, no modo chamado da pilha dupla. Porém, ainda é necessário que muitos provedores de acesso atualizem os seus equipamentos intermediários de rede, para suportar também o IPv6, pois todos operam com o IPv4, mas nem todos suportam a conectividade em IPv6. Quanto à camada de transporte, além do TCP, visto em detalhes nesta aula, temos ainda o UDP, que é utilizado em diversas aplicações. No processo de comunicação utilizando o UDP, a comunicação UDP cliente-servidor também é iniciada por uma aplicação executada no cliente, que seleciona dinamicamente um número de porta e utiliza esse identificador como a porta de origem. E assim como no TCP, a porta de destino é o número de porta associada ao processo do servidor, sendo que o mesmo par de portas origem e destino é utilizado no cabeçalho de todos os segmentos enviados. E os dados que retornam para o cliente, enviados pelo servidor, terão os números de porta de origem e destino no cabeçalho do segmento, porém invertidos. Além disso, o UDP não estabelece sessão, nem realiza o processo de numeração de sequência e de confirmação. Assim, as aplicações que utilizam o UDP são, tipicamente, as aplicações de comunicação ao vivo, que podem tolerar pequenas perdas de dados, mas exigem pouco ou nenhum atraso, tais como o VoIP e as transmissão de vídeo ao vivo. O UD também é utilizado pelas aplicações de solicitação e resposta simples, tais como o DNS e DHCP, ou pelas aplicações que implementam a sua própria confiabilidade, com controle de fluxo, detecção de erros, confirmações e recuperação de erros, tais como o SNMP e TFTP. E, em nossa próxima aula, estudaremos em detalhes o processo da camada de rede, com a definição do endereçamento IP e o processo de roteamento. 27 REFERÊNCIAS CHAPPELL, L. Diagnosticando redes: cisco internetwork toubleshooting. São Paulo, Pearson Education do Brasil, 2002. MAIA, L. P. Arquitetura de redes de computadores. 2. ed. Rio de Janeiro: LTC, 2013. TANEMBAUM, A. S. Redes de computadores. 2. ed. São Paulo: Pearson Education do Brasil, 2011.