Redes de Computadores II UDP Prof: Ricardo Luís R. Peres Tem como objetivo prover uma comunicação entre dois processos de uma mesma sessão que estejam rodando em computadores dentro da mesma rede ou não. Trata-se de um conjunto de dois protocolos: o (orientado à conexão) e o UDP (que não requer conexão). Destaca-se a função de gerenciamento da transmissão através das camadas inferiores: ele quebra os dados que serão transmitidos em blocos menores (pacotes), conforme a aplicação, passando-os para a camada Internet com a indicação do destino e requisitos de fluxo. Protocolos na camada de transporte: (Transmission Control Protocol): oferece um serviço de transferência confiável, através da utilização de mecanismos de controle e recuperação de dados. Ele é capaz de garantir que os pacotes sejam entregues ao processo destino livres de erros e na seqüência, sem perdas ou duplicação. Usado pelo FTP, SMTP e HTTP, entre outros. UDP (User Data Protocol): é um protocolo não orientado à conexão, ou seja, não oferece nenhuma garantia em relação à entrega dos dados ao destino. Utilizado pelo DNS, por exemplo. Principais funções do /UDP: Transferência de dados: transmissão de dados em blocos (datagramas) e em modo full-duplex (envio e recebimento simultâneos). Transferência de dados urgentes: transmite primeiramente os datagramas que contenham sinalização de urgência. Estabelecimento e liberação de conexão: garante a ligação lógica entre os computadores durante toda a transmissão da mensagem (), representada pelo envio de todos os respectivos pacotes. Principais funções do /UDP: Segmentação: pode dividir os dados a serem transmitidos em pequenos blocos os datagramas identificados individualmente, sendo que, no host destino, serão agrupados novamente. Controle de fluxo: é capaz de adaptar a transmissão dos datagramas às condições de transmissão (velocidade, tráfego,... ) entre os sistemas envolvidos. Controle de erros: como vimos na segmentação, os datagramas são identificados antes de serem transmitidos. Além disso é adicionado o checksum, um número utilizado para verificar e corrigir erros na transmissão. UDP (User Data Protocol) É um protocolo de transporte não orientado à conexão, ou seja, ele não verifica se o pacote de dados chegou ou não ao seu destino. Por esse motivo, esse protocolo não é usado no transporte de dados importantes, como no caso de arquivos e e-mail. As aplicações que usem o UDP deverão criar seus próprios mecanismos para verificar se os dados foram recebidos corretamente, e para colocar os datagramas recebidos em ordem. Em outras palavras as aplicação passa a fazer o papel do. 1
ESTRUTURA DO CABEÇALHO UDP Porta de Origem Porta de Destino Tamanho do Datagrama Checksum Dados VANTAGENS DO UDP SOBRE O A transmissão fica mais rápida: 1º: o tamanho do pacote de dados a ser transmitido fica menor, já que o cabeçalho UDP é bem menor que o do ; 2º: no UDP não existe um mecanismo de verificação de chegada do pacote (acknowledge) que existe no, acelerando o envio de pacotes. No, o transmissor precisa esperar receber uma mensagem do receptor, confirmando o recebimento de uma seqüência de pacotes, para enviar o próximo pacote (varia em função da janela estabelecida). VANTAGENS DO UDP SOBRE O Em redes locais confiáveis, onde não há quase perda de pacotes, o uso do protocolo UDP é plenamente viável. Porém, em grandes redes e, principalmente, na Internet, a taxa de perda de pacotes pode ser elevada, implicando em muito trabalho para a aplicação. Isto torna inviável, do ponto de vista prático, o uso do UDP para o envio de pacotes nestes ambientes de rede. (Transmission Control Protocol) É o mais complexo de todos os protocolos do conjunto /. Ele recebe os datagramas e trata de colocalos em ordem, já que, em redes grandes, os datagramas chegam fora de ordem e verifica se todos chegaram corretamente. Ao tratar do envio de uma mensagem, o empacota os dados recebidos segundo a aplicação, adicionando as informações da porta de origem e da porta de destino, entre outras, passando o pacote de dados ao protocolo. ESTRUTURA DO CABEÇALHO Porta de Origem Porta de Destino Número de Seqüência (32 bits) Número de Confirmação (32 bits) Offset (4bits) Reservado (6 bits) Bites de Controle (6 bits) Janela Checksum Ponteiro de Urgência Opções + Pad (32 bits) Dados Para que serve cada componente da estrutura do : Porta de origem indica a aplicação que originou os dados Porta de destino indica a aplicação para a qual os dados serão entregues no receptor Número de seqüência identifica o número do primeiro byte presente no segmento dentro do fluxo de dados gerado pelo aplicação Número de confirmação É onde é colocado o número de seqüência do próximo segmento que o receptor deverá receber 2
Para que serve cada componente da estrutura do : Offset especifica o tamanho do cabeçalho do pacote Reservado esse campo não é usado Bits de controle - esse bits são usados para controle Tamanho da janela define o tamanho da janela que será usada na conexão Checksum É calculado somando-se o cabeçalho, o pseudocabeçalho e a área de dados do segmento Para que serve cada componente da estrutura do : Ponteiro urgente caso existam dados que precisem ser processados antes de a conexão chegar ao fim, dentro de uma mesma conexão, o bit URG é ativado e este campo é usado para informar a posição, dentro do segmento, em que os dados urgentes terminam Opções + Pad - É um campo opcional que é usado para que o transmissor e o receptor troquem informações sobre qual será o tamanho máximo do segmento que será usado na conexão TRANSMISSÃO E RECEPÇÃO DE PACOTES Ao receber um pacote de dados, o protocolo envia uma mensagem de confirmação de recebimento à máquina transmissora, chamada ACKNOWLEDGE. Se o transmissor não receber uma confirmação de recebimento dos pacotes dentro de um determinado tempo, estes pacotes serão retransmitidos, já que isso significa que datagramas levando informações inseridas pelo protocolo foram descartados ou perdidos no meio do caminho, por algum motivo (esse tempo é calculado dinamicamente pelo protocolo). CONEXÃO A comunicação entre as aplicações em duas diferentes máquinas é chamada CONEXÃO. O protocolo é responsável por abrir uma conexão, mantê-la e fechá-la após concluir o processo de comunicação. A abertura da conexão é feita através de um processo chamado HANDSHAKE (aperto de mão), onde o transmissor e o receptor irão confirmar qual é o número de seqüência inicial que eles usarão. Exemplo de serviço orientado e não orientado a conexão: D A Origem Conexão C Conexão No nível, a comunicação não é orientada à conexão, portanto existem dois caminhos para ir de A até B: através de C ou através de D. Depende do tráfego. B Destino Aplicação Física Conexão No nível, a comunicação entre A e B ocorre como se houvesse uma conexão direta entre eles. Ou seja, se a nível de os dados podem chegar fora de ordem, o tem que garantir a ordenação, de forma que eles sempre cheguem na ordem correta, como se A estivesse ligado diretamente a B. PORTAS E SOCKETS As conexões via através do, obrigatoriamente precisam possuir uma porta de origem e destino assim como um socket de comunicação presente nos dois hosts. Podemos ter diversas aplicações / sendo executadas simultaneamente no mesmo computador. Para nos comunicarmos com uma destas aplicações especificamente, apenas o endereço não nos basta, pois geralmente ele é único ao host. Para isso existem portas e sockets, que conseguem diferenciar cada aplicação ou serviço em um host, mesmo utilizando um único endereço. 3
PORTAS Uma porta é um número inteiro de 16 bits utilizado pelos serviços de transporte para identificar a qual protocolo de alto nível ou aplicação (processo/serviço) deve ser entregue uma mensagem recebida. Existem algumas aplicações que utilizam portas padronizadas, como o FTP na porta 21, o SMTP na porta 25, o HTTP na porta 80, etc... Os protocolos UDP e utilizam o mesmo conceito de portas. Na medida do possível os mesmos números de portas são utilizados para os mesmos serviços que fazem uso de UDP ou. Na figura temos um exemplo de ambiente de rede cliente/servidor, no qual um host cliente 192.168.0.1 requisita conexão em um computador servidor 192.168.0.2. O cliente fez uma requisição na porta 80 do servidor. A porta 80 é uma porta padrão, utilizada para o protocolo HTTP, ou seja, serviços WWW. No momento da requisição, o cliente também envia uma porta arbitrária qualquer, escolhida pelo seu sistema operacional, neste caso a porta 40789. PORTAS Para facilitar, existem diversas portas padrões, uma para cada tipo de serviço mais comum. Essas portas padrões são bem conhecidas, para que os clientes possam encontrar os servidores mais facilmente. Já as portas nos computadores cliente não precisam ser padronizadas, por que são eles que iniciam a comunicação e o número da porta usada é enviado junto com os datagramas que vão ao servidor. Portas mais utilizadas na Internet Porta Serviço Descrição 21 FTP Transferência de Arquivos 22 SSH Administração Remota 23 TELNET Administração Remota 25 SMTP Envio de e-mails 53 DNS Relaciona com nomes 80 HTTP Acesso de websites 110 POP3 Recebimento de e-mails SOCKET Cada porta permite o uso de um conceito chamado SOCKET. O SOCKET define uma conexão dentro de uma porta. O SOCKET pode ser classificado em ativo ou passivo: Ativo: É aquele que envia dados. Passivo: É aquele que recebe dados. Normalmente as máquinas possuem um SOCKET passivo monitorando uma determinada porta à espera de uma conexão. Ao receber uma conexão esse SOCKET passivo pode gerar um SOCKET ativo ou um SOCKET passivo para aquela conexão, dependendo do sentido (se for uma transmissão ou uma recepção). Segmento de Dados e Controle de Fluxo O transfere seus segmentos através de um canal de bytes contínuo, e não através de pacotes independentes. Isto é feito agrupando-se os bytes em segmentos, os quais são passados ao protocolo para a transmissão. O não tem conhecimento dos dados que estão trafegando, e a interpretação desses dados cabe a camada de aplicação. Ele só se preocupa e controla a quantidade de bytes da mensagem original que está sendo transmitida, na forma de segmento de dados. 4
Controle de Fluxo - JANELA O controle de fluxo dos segmentos realizado pelo utiliza o conceito de janela (window) para agilizar o processo de transmissão de segmentos, e sua implementação é feita através do campo janela do cabeçalho. Este campo informa a disponibilidade de bytes livres no buffer de recepção do destino, e indica quantos bytes o emissário pode enviar (tamanho máximo do segmento). O tamanho da janela é estabelecido pelo receptor no início da conexão. Controle de Fluxo - JANELA No caso do, a janela é contada em números de bytes a serem enviados e o tamanho é variável e pode ser alterado a qualquer instante. O protocolo utiliza três ponteiros de janela. O 1º marca o início da janela, o 2º separa, dentro da janela, os bytes que foram enviados daqueles que ainda não o foram e o 3º indica o fim da janela. Esta se move a medida que a recepção dos bytes for sendo confirmada. O tamanho máximo da janela é de 64 KB. Redes de Computadores II UDP Prof: Ricardo Luís R. Peres 5