Download - Aula 5 - Camada de Transporte
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.