Aula 5 - Camada de Transporte

Preview:

Citation preview

Camada de Transporte

Profº Fábio Eder

Camada de Transporte

Fornecem comunicação lógica entre processos de aplicação executando em diferentes hospedeiros os protocolos de transporte são executados nos sistemas finais, ex:

Transmissor: quebra as mensagens da aplicação em segmentos, repassa-os para a camada de rede;

Receptor: remonta as mensagens a partir dos segmentos, repassa-as para a camada de aplicação;

Os protocolos mais importantes desta camada e que tratam das aplicações de Internet são: TCP e UDP

aplicação transporte rede enlace física

rede enlace física

aplicação

Transporteredeenlace

física

rede enlace física

rede enlace física

redeenlacefísica

redeenlacefísica

transporte lógico fim a fim

Fonte: Redes de Computadores e a Internet – Kurose, 2010

Camada de Transporte X Camada de Rede

Camada de rede: comunicação lógica entre hospedeiros (hosts);

Camada de transporte: comunicação lógica entre os processos;

Depende e estende serviços da camada de rede.

Camada de Transporte X Camada de Rede

Analogia doméstica:12 crianças enviando cartas para 12 crianças

processos = criançasmsg da aplicação = cartas em envelopeshospedeiros = casasprotocolo de transporte = Ana e Joãoprotocolo da camada de rede = serviço postal

Camada de Transporte na Internet

1 - Entrega confiável, ordenada : TCPcontrole de congestionamentocontrole de fluxoestabelecimento de conexão (“setup”)

2 - Entrega não confiável, não ordenada: UDPextensão sem “frescuras” do “melhor esforço” do IP

3 - Serviços não disponíveis: garantias de atraso máximogarantias de largura de banda mínima

Camada de Transporte na Internet

A camada de REDE na Internet:

Protocolo IP como principal protocolo, que provê a comunicação lógica entre hospedeiros;

IP oferece serviço de melhor esforço para levar os segmentos entre os hospedeiros comunicantes, mas sem garantia;

Camada de Transporte na Internet

A responsabilidade fundamental dos protocolos TCP e UDP é ampliar o serviço de entrega entre dois processos que rodam nos sistemas finais;

A ampliação da entrega de processos entre os nós finais é denominada multiplexação e demultiplexação de camada de transporte;

Estes dois serviços mínimos de camada de transporte são os únicos que o UDP fornece;

O UDP, como o IP não são serviços confiáveis, uma vez que não garantem que os dados enviados por um processo cheguem.

Camada de Transporte na Internet

O TCP oferece vários serviços adicionais às aplicações;

Ele oferece um serviço de transferência confiável de dados;

Utiliza controle de fluxo, números de sequência, reconhecimentos e temporizadores;

Este protocolo assegura que os dados sejam entregues do processo remetente ao processo destinatário corretamente e em ordem.

Camada de Transporte na Internet

Assim, o TCP converte o serviço não confiável do IP entre sistemas finais em um serviço confiável de transporte de dados entre processos;

Ele também fornece controle de congestionamento, evitando que qualquer outra conexão TCP inunde os enlaces e comutadores;

Em princípio, o TCP permite que suas conexões em um ambiente congestionado, mantenham-se em pé de igualdade a largura de banda.

Segmento TCP

Porta de origem Porta de destino

Número de seqüência

Número do reconhecimento

TC

Checksum

0 8 16 247 15 23 31

Opções

Dados (opcionais)

Ponteiro de urgência

Reservado Tamanho da janelaFIN

SY

N

RS

T

PS

H

AC

K

UR

G

Datagrama UDP

Porta de origem Porta de destino

Tamanho do datagrama

0 8 16 247 15 23 31

Dados (opcionais)

Checksum

Multiplexação e Demultiplexação

Socket: É um elemento de software que provê uma interface de rede para a aplicação;

São portas pelas quais os dados passam da rede para o processo e vice-versa (Kurose, 2010)

Através de um socket podemos realizar várias operações, como exemplo:

Estabelecer conexões entre máquinas;Enviar e receber dados;Encerrar conexões;Esperar por conexões em determinada porta.

3: Camada de Transporte

Multiplexação/Demultiplexação

Entrega dos segmentos recebidos ao socket correto

Demultiplexação no receptor: reúne dados de muitos sockets, envelopa os dados com o cabeçalho (usado posteriormente para a demultiplexação)

Multiplexação no transm.:

Fonte: Redes de Computadores e a Internet – Kurose, 2010

Computador recebe os datagramas IP– cada datagrama possui os

endereços IP da origem e do destino

– cada datagrama transporta 1 segmento da camada de transporte

– cada segmento possui números das portas origem e destino (lembre: números de portas bem conhecidas para aplicações específicas)

• O hospedeiro usa os endereços IP e os números das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexação

porta remetenteporta receptor

32 bits

dados daaplicação(mensagem)

outros campos do cabeçalho

formato de segmento TCP/UDP

Fonte: Redes de Computadores e a Internet – Kurose, 2010

Portas

Cada número de porta é um número de 16 bits na faixa de 0 a 65535;

As portas com valores entre 0 e 1023 são denominadas portas baixas, que são restritas e reservadas por protocolos da camada de aplicação como: http-80; ftp-21; telnet-23; https-443;

Definidas pela pela RFC 1700 e atualizada pela RFC-3232 – www.iana.org;

Varredura de porta com o comando “nmap”

NMap

NMAP – Sintaxe: nmap <parâmetros> <alvo> -p <portas>

O alvo = endereço IP do host ou rede que se deseja escanear;

A opção -p = especifica as portas ou faixas de portas para análise;

NMap

Os parâmetros são ajustados de acordo com o que se deseja obter, os principais são:

-sT - Com esse parâmetro é feito um escaneamento através de tentativas de conexão TCP. Essa forma é muito fácil de ser identificada por firewalls e IDS;

-sS – Assim, a tentativa será com pacotes TCP com a flag SYN ligada, ou seja, como apenas uma requisição de conexão. Essa técnica dificulta um pouco a detecção;

NMap

Os parâmetros são ajustados de acordo com o que se deseja obter, os principais são:

-sP - Com essa opção o escaneamento será feito através de pacotes ICMP echo request. Verifica apenas se o host está ativo;

-sU - Envia pacotes UDP com 0 byte para determinar o estado dessas portas;

NMap

Os parâmetros são ajustados de acordo com o que se deseja obter, os principais são:

-sO - É usado para tentar determinar os protocolos suportados pelo host;

•-O - Com esse parâmetro é feito uma tentativa de determinar o sistema operacional através de uma técnica conhecida como Active FingerPrint.

NMap

Vamos a prática: Teste de pacotes SYN - sincronização, nas portas de 1 a

100:

nmap -sS [endereço IP] -p 1-100

NMap

Agora, vamos mapear um endereço de rede para determinar serviços ativos em mais de um host, basta informar o endereço da rede, como no exemplo:

nmap -sS [endereço ip]/24 -p 1-150

NMap

Podemos também identificar o Sistema OperacionalAgora, vamos mapear um endereço de rede para determinar serviços ativos em mais de um host, basta informar o endereço da rede, como no exemplo:

nmap -sS [endereço ip]/24 -p 1-150

UDP: User Datagram Protocol

Simples;Menor;Mais rápido;Utiliza portas para a troca de informações;

CARACTERÍSTICAS - UDP

UDP: User Datagram Protocol [RFC 768]

• Protocolo de transporte da Internet mínimo, “sem gorduras”,

• Serviço “melhor esforço”, segmentos UDP podem ser:– perdidos– entregues à aplicação fora de

ordem• sem conexão:

– não há “setup” UDP entre remetente, receptor

– tratamento independente de cada segmento UDP

Por quê existe um UDP?• elimina estabelecimento de

conexão (o que pode causar retardo)

• simples: não se mantém “estado” da conexão nem no remetente, nem no receptor

• cabeçalho de segmento reduzido

• Não há controle de congestionamento: UDP pode transmitir tão rápido quanto desejado

Mais sobre UDP

• muito utilizado para apls. de meios contínuos (voz, vídeo)– tolerantes a perdas– sensíveis à taxa de transmissão

• outros usos de UDP (por quê?):– DNS (nomes)– SNMP (gerenciamento)

• transferência confiável com UDP: acrescentar confiabilidade na camada de aplicação– recuperação de erro específica à

aplicação!

porta origem porta dest.

32 bits

Dados de aplicação (mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento embytes do

segmento UDP,incluindo cabeçalho

soma de verificação

Permite comunicação entre aplicações;Não orientado à conexão;Não fornece garantia de entrega e nem

verificação de dados;. Alternativa eficiente tratando-se de dados que

necessitam de certa velocidade como áudio e vídeo.

PROTOCOLO DE COMUNICAÇÃO UDP

Fluxo de dados em tempo real – vídeo e voz; Jogos de computadores;Mensagens com constante retransmissão;Modelos Pergunta – Resposta;

APLICAÇÕES DO PROTOCOLO UDP

EXEMPLO: MONITORAÇÃO REMOTA

• Serviço NFS (compartilhamento de discos remotos) – Invasor com IP falso pode ter acesso ao servidor;

• Protocolo RIP (utilizado por roteadores para detectar melhor caminho) – As informações não são checadas portanto um invasor pode enviar informações falsas e gravar os pacotes enviados.

FRAGILIDADES APRESENTADAS PELO UDP

TIPOS DE ATAQUES MAIS COMUNS COM UDP

• IP Spoofing – troca do IP de origem;• SYN Flood – processo que sobrecarrega a

máquina;• Fraggle – chuva de pacotes através de

broadcast;• New Teardrop – travamento das máquinas

pois falsifica tamanho do pacote;• WORM W32.SQLEXP – ataque de negação de

serviço.

O protocolo UDP, apesar de simples, faz a entrega de mensagens independentes, designadas por datagramas, entre aplicações ou processos em sistemas host, onde a rapidez na transmissão é prioridade.

CONCLUSÃO

Serviço sem conexão Serviço orientado por conexão

Não garante a entrega dos dados Entrega garantida através de confirmações

A confiabilidade necessária ao transporte de dados é oferecida

pelas aplicações.

Os programas que usam TCP têm garantia de transporte confiável

de dados.

RápidoLento devido a quantidade de

informações necessárias

PROTOCOLOS:

UDP X TCP

• Conceito idêntico ao conceito de portas TCP.• Permite a um processo de aplicação se

associar a uma porta• É através do uso de portas que o Sistema

Operacional sabe a qual programa se destina cada pacote UDP.

PORTAS DE COMUNICAÇÃO

PROTOCOLOS QUE UTILIZAM UDP

PORTAS DE COMUNICAÇÃO

PORTAS DE COMUNICAÇÃO

TCP: Transmission Control Protocol

Protocolo TCP

Full-duplex;Orientado por conexão;Transmissão confiável de dados;Garantia de transmissão de dados corretos e na

ordem adequada;Detecção e correção de erros;Retransmissão de dados;Garantia de não-duplicação.

Introdução

Protocolos de aplicação que usam o TCP:

Telnet;FTP;SMTP;IMAP;POP.

Cabeçalho TCP

Cabeçalho TCP

Cabeçalho TCP

Porta origem e destino = TCPNúmero de Seqüência

A partir do primeiro byte de dados transmitido;Usado para que o processo TCP no destino possa

guardar os segmentos recebidos na ordem correta;Quando a conexão é estabelecida existe um tempo

de sincronismo para informação do número do pacote;

Necessários pq o TCP não foi projetado para entregar dados como pacotes independentes;

TCP entrega dados como fluxo contínuo de bytes;

Cabeçalho TCP

Número de confirmação de recebimento:Verificar o recebimento dos dados corretos;Confirmação positiva com retransmissão;Se ocorrer timeout, a origem considera que o

pacote não chegou e retransmite;Número neste campo é o número do próximo dado

que o destino espera receber;Se este campo é usado o bit ACK do campo de

controle é ajustado.

Cabeçalho TCP

ControleOffset:

Especifica o tamanho do cabeçalho TCP – mínimo 20 bytes;

Campo com 4 bits;Reservado:

Para uso futuro;Campo com 6 bits.

Cabeçalho TCP6 flags (1 bit cada)

URG – dados urgentes, devem ser processados pelo destino o quanto antes;

ACK – segmento contém dados no campo de confirmação;PSH – inicializado por um processo da camada superior e

interpretado como “Transfira todos os dados da fila ao destino imediatamente”;

RST – reset, usado quando um evento causa uma desconexão indesejada. Termine a conexão imediatamente;

SYN – segmento contém dados no campo de número de seqüência;

FIN – terminar a conexão TCP.

Cabeçalho TCPJanelaNúmero máximo de bytes que o destino é capaz de aceitar;Campo de 2 bytes;Controle de fluxo fim-a-fim;Habilita o destinatário a controlar o fluxo de bytes do

remetente;Pode ser mudado a qualquer momento durante a conexãoJanela = 0, remetente para de transmitir;Remetente e destinatário podem prover informações de

controle de fluxo via campo Janela

Cabeçalho TCP

Checagem de soma

Checar se o segmento transmitido é válido;

Campo de 2 bytes;

Cabeçalho do TCP + dados;

Cabeçalho TCPApontador de urgência

Solicita ao destino informar ao programa de aplicação destino que a informação que está sendo enviada precisa ser processada;

Finalização de sessões Telnet;2 bytes;Usado junto com a flag URG;

Opções e apoioOpções: Quais são requeridas por um processo TCP;

Tamanho máximo do segmentoApoio: Preencher os bits restantes de um campo com 0s para

que sejam múltiplos de 32

Conexão TCP

TCP é orientado à conexãoConexão lógica deve ser estabelecida a priori entre

os nós, antes da transmissão dos dados;

Para tal, TCP usa um protocolo conhecido como 3-way handshake

Cliente requere conexão;Servidor aceita;Cliente confirma.

Finalização da Conexão TCP

Finalizada quando uma máquina não possui mais nada a ser transmitido;

TCP é full-duplexConexão pode ser finalizada em uma direção e

permanecer aberta em outra direção;“A” termina conexão, porém “B” continua

transmitindo.

Confiabilidade

Números de seqüência e confirmaçãoSempre que uma máquina recebe um segmento

TCP válido, ela envia uma confirmação como parte da resposta;

Se um segmento válido não é recebido, nenhuma confirmação é enviada.

Confiabilidade

TCP é do tipo confirmação positiva com retransmissão;

O uso dos números de seqüência também possibilita a remontagem dos segmentos de dados na ordem correta quando estes não chegam em seqüência.

Controle de FluxoUso do campo Janela;Controle de fluxo fim-a-fim:

Em cada extremidade do link, o TCP mantém buffers para envio e recebimento

Buffer de envio contém:Dados a ser transmitidos;Dados que foram transmitidos mas não confirmados;

Buffer de recebimento contém:Dados recebidos na ordem correta, mas ainda não

processados;Dados que chegaram fora de ordem, reordenar.

Controle de Fluxo

Através do campo Janela o receptor avisa o tamanho da janela;

Menor ou igual ao tamanho do buffer disponível;

No lado do receptor deve-se levar em consideração a quantidade de dados que ocupa o buffer a cada momento.

Controle de Fluxo

Na origem deve-se calcular um tamanho de janela que limita a quantidade de dados a ser enviada;

Em função do tamanho de janela enviado pelo receptor e a diferença entre a quantidade de dados enviada e a quantidade de dados já confirmada.

Controle de Fluxo

Exemplo:Janela do receptor = 1000 bytes;Dados já transmitidos = 700 bytes;500 bytes já confirmados;Tamanho da janela a ser enviada é:

1000 – (700 – 500) = 800 bytes;Emissor pode continuar enviando desde que o número

total de bytes não exceda 800;Emissor deve cuidar para que a aplicação não gere mais

dados a serem transmitidos do que suporta o buffer;

Controle de FluxoO buffer é dinâmico;

Quando o buffer do receptor está cheio, ele adverte para um tamanho menor;

Quando existe mais espaço, ele adverte para um tamanho maior de janela;

Durante todo o tempo, o emissor calcula o tamanho da janela a ser transmitida.

Controle de Fluxo

Se emissor é advertido de janela com tamnho 0, está proibido de enviar dados;

TCP irá bloquear a aplicação de gerar mais dados, até que haja o aviso de uma janela de tamanho diferente de 0;

Conclusão

TCP é mais confiável e oferece maior garantia;

Por conta do estabelecimento da comunicação, pode apresentar lentidão;

Ao contrário do UDP, o protocolo TCP prioriza a garantia de entrega e não a velocidade que os pacotes serão entregues.

Recommended