Buscar

Camada de Transporte

Prévia do material em texto

Unidade 2 – Tópico C
Camada de Transporte
Objetivos
– Explicar as funções principais da camada de Transporte
– Descrever o funcionamento dos dois protocolos da camada de Transporte: TCP e
UDP.
– Identificar quando é apropriado usar o TCP ou o UDP e apresentar exemplos de
aplicações que usam cada um desses protocolos.
2C.1 Camada de Transporte 
Responsável pela transferência fim-a-fim de dados de aplicação. A Camada de
Transporte aceita os dados da Camada de Aplicação e os prepara ser encaminhado a
camada de Rede. Há muitos protocolos da camada de Aplicação e outros novos estão
em desenvolvimento.
2C.2 Principais funções da Camada de Transporte
– Segmentação: divide os dados da aplicação em blocos de dados de tamanhos
menores;
– Remontagem: no destino, reagrupa os dados antes de enviá-los à aplicação de
destino;
– Multiplexação: faz o intercalamento dos dados, de forma que dados de várias
aplicações possam usar a rede ao mesmo tempo;
– Identificação das aplicações (rastreamento das comunicações): permite que um
pacote ao chegar ao destino seja entregue para aplicação correta;
2C.2.1 Suporte de comunicação confiável
Algumas aplicações necessitam que outros requisitos sejam fornecidos, como a
confiabilidade da transmissão dos dados. Assim, alguns protocolos da Camada de
Transporte ainda podem fornecer:
– Conversações orientadas à conexão : garante que a aplicação está pronta para se
comunicar;
– Entrega Confiável : garante a entrega das mensagens (sem erros) no destino; para
que 
– Ordenamento das mensagens: garante que os dados são remontados na ordem
correta no destino, antes de serem entregues a aplicação;
– Controle de Fluxo: evita que o emissor envie mais dados que o receptor pode tratar;
– Controle de Congestionamento: evita que a rede fique congestionada, ou seja, evita
enviar mais dados que a rede pode tratar;
2C.2.2 Provendo confiabilidade e implicações
Para prover a confiabilidade é necessário a realização de três operações:
– rastreamento de dados transmitidos 
– confirmação de dados recebidos 
– retransmissão de dados não confirmados
Prover a confiabilidade implica em sobrecarga adicional sobre os recursos de rede
devido à confirmação, rastreamento e retransmissão. Para suportar estas operações de
confiabilidade, mais dados de controle são trocados entre os hosts de envio e recepção.
Esta informação de controle está contida no cabeçalho da Camada de Transporte
(Camada 4).
2C.2.3 Determinação da Necessidade de Confiabilidade
Quando a aplicação não é tolerante a perdas e tolerante a atrasos, então essa
precisa da transmissão confiável dos dados. Quando a aplicação tolera a perda de parte
de seus dados, mas não é tolerante a atrasos, então não faz uso da transmissão
confiável dos dados.
2C.3 Protocolos TCP e UDP
* UDP (User Datagram Protocol) – serviço não orientado a conexão que somente provê
as funções básicas da camada de transporte. Protocolos e aplicações da camada de
aplicação que usam UDP:
DNS / DHCP / Voz sobre IP (VoIP) / Streaming de vídeo / Vídeo-conferência
* TCP (Transfer Control Protocol) – serviço orientado a conexão que além das funções
básicas, também fornece as funções de comunicação confiável, entrega ordenada,
controle de fluxo e de congestinamento. Protocolos e aplicações da camada de aplicação
que usam TCP:
HTTP / FTP / e-mail (SMTP, POP, IMAP) / Telnet, SSH, VNC
Cabeçalhos dos Protocolos TCP e UDP
UDP (8 bytes) 
TCP (20 bytes ou mais) 
Números de Porta
Identificador que permite entregar o segmento à aplicação correta. No cabeçalho
da camada de transporte, tanto no TCP como no UDP, são inseridos os números de porta
de origem e destino:
– porta de origem: indica a aplicação que criou o segmento; 
– porta de destino: indica a aplicação de destino que deve ser entregue o segmento;
Os números de portas podem ser atribuídos dinamicamente ou estaticamente:
– clientes: geralmente, atribuídos dinamicamente pelo sistema operacional;
– servidores: geralmente, estáticos atribuídos de acordo com a porta padrão do protocolo
da camada de aplicação ou manualmente; ex: servidor HTTP a porta padrão é a 80.
 
Atribuição de Números de Porta
A Internet Assigned Numbers Authority (IANA) designa os números de porta.
Existem diferentes tipos de números de portas: 
– Portas Conhecidas (0 a 1023) - Esses números estão reservados para serviços e
aplicações padrões. Ex: HTTP (80), HTTPS(443), FTP (21-controle e 20-dados), SSH
(22), Telnet (23), SMTP (25), POP (110), IMAP (143), DNS(53);
– Portas Registradas (1024 a 49151) - Estes números de portas são designados para
processos ou aplicações não padrões. 
– Portas Dinâmicas ou Privadas (49152 a 65535) - Geralmente designadas
dinamicamente a aplicações de cliente quando se inicia uma conexão.
OBS. Use o comando netstat -a na linha de comando para ver as conexões criadas no
seu computador. 
– O estado established/estabelecido indica que há uma conexão ativa;
– O estado time_wait/close_wait/esperando_fechar/tempo_espera indica que foi
solicitado ao destino o encerramento da conexão;
– O estado ouça/listen - indica que a porta esta aberta aguardando conexões.
2C.4 Segmentação e Reagrupamento
Algumas aplicações transmitem grandes quantidades de dados - em alguns casos,
muitos gigabytes. Seria impraticável enviar todos estes dados em um segmento muito
grande. Nenhum outro tráfego de rede poderia ser transmitido enquanto estes dados
estivessem sendo enviados. Um segmento muito grande de dados pode levar minutos ou
mesmo horas para ser enviado e se houver algum erro, o arquivo inteiro é perdido ou ou
precisa ser reenviado. TCP e UDP realizam a segmentação de maneiras diferentes:
– TCP: inclui um número de sequência a cada segmento enviado, o número de sequência
permite remontar os dados em ordem no destino;
– UDP: não inclui o número de sequência.
2C.5 Protocolo TCP
Estabelecendo e Encerrando Conexões
Antes que dois hosts se comuniquem (troquem dados) uma conexão deve ser
estabelecida. Cada conexão representa dois fluxos de comunicação, um de entrada e
outro de saída. Após a comunicação ser concluída, então a conexão é encerrada. É o
mecanismo de conexão entre dois hosts que habilitam a função de confiabilidade do TCP.
O estabelecimento de uma conexão envolve 3 passos (handshake-triplo):
1 – O cliente envia um segmento contendo um número de sequência inicial (ISN) e o
flag SYN, o flag SYN indica que é um segmento de inicio de seção;
2 – o ISN é incrementado em um para cada byte de dados enviados do cliente para o
servidor.
3 – O servidor responde com um segmento contendo seu número de sequência inicial
(ISN). No mesmo segmento, um valor de confirmação (ACK) também é enviado. O valor
do campo ACK é igual ao ISN do segmento recebido mais 1, isso porque esse valor é
sempre o próximo Byte ou Octeto esperado. Os flags SYN e ACK também são enviados
nesse segmento, indicando que é um segmento de confirmação do início de seção.
O cliente responde com ACK com valor igual ao ISN recebido mais 1, assim como seu
número de sequência atual e o flag SYN.
O encerramento de uma conexão envolve 4 passos:
1 – O cliente envia ao servidor um segmento com o flag FIN solicitando o encerramento
da conexão;
2 – O servidor confirma o recebimento, enviando ao cliente um segmento com os flag FIN
e ACK
3 – O servidor envia ao cliente um segmento com o flag FIN solicitando o encerramento
da conexão;
4 –- O servidor confirma o recebimento, enviando ao cliente um segmento com os flag
FIN e ACK
2C.5.1 Reagrupamento de Segmentos
Quando as aplicações enviam dados usando o TCP, os segmentos podem chegar
no seu destino fora de ordem. Para a mensagem original ser entendida pelo receptor, os
dados desses segmentos devem ser reagrupados na sua ordem original.2C.5.2 Números de sequência e confirmação
Os números de sequência tem dois objetivos principais:
– garantir que os segmentos sejam reagrupados na ordem correta;
– saber qual segmento foi perdido ou corrompido.
O número de sequência e o número de confirmação são usados juntamente
para confirmar o recebimento dos bytes de dados contidos nos segmentos. O número de
sequência é o número relativo de bytes que foram transmitidos na sessão mais 1 (que é
o número do primeiro byte de dado no segmento corrente). O TCP usa o número de
confirmação em segmentos enviados de volta à origem para indicar o próximo byte que o
receptor espera receber na sessão. Isto é chamado de confirmação esperada. 
* Lembre-se, cada conexão é na verdade composta por duas sessões
unidirecionais. Os números de sequência e de confirmação estão sendo trocados
em ambas as direções. 
* Tamanho de Janela - quantidade de dados que a origem pode transmitir antes que uma
confirmação seja recebida. O Tamanho de Janela habilita o gerenciamento de dados
perdidos e controle de fluxo.
2C.5.3 Retransmissão
O emissor, após enviar um conjunto de segmentos (no máximo o tamanho da
janela), fica aguardando pela confirmação do recebimento desses segmentos. O receptor,
geralmente reconhece os dados apenas para bytes sequenciais contíguos, isto é se
estiver faltando um ou mais segmentos, apenas os dados nos segmentos que completam
o fluxo serão confirmados. 
– Exemplo:
Se os segmentos com números de sequência de 1500 a 3000 e de 3400 a 3500
fossem recebidos, o número de confirmação seria 3001. Isto porque existem segmentos
com os números de sequência de 3001 a 3399 que não foram recebidos. Quando o
emissor não recebe uma confirmação depois de um período pré-determinado de tempo,
ele volta ao último número de confirmação que recebeu e retransmite os dados a partir
daquele ponto em diante (esse mecanismo é conhecido como Go-back-N). 
Para que pacotes que chegaram corretamente não sejam retransmitidos, algumas
implementações do TCP implementam o mecanismo de Retransmissão Seletiva, que
somente reenviar os pacotes que foram perdidos.
2C.5.4 Controle de Fluxo
Visa garantir que o emissor não vai enviar mais dados para o receptor possa tratar,
na prática isso é feito através da Janela de Transmissão (campo Tamanho de Janela no
cabeçalho TCP). O Tamanho de Janela especifica a quantidade de dados que podem
ser transmitidos antes que uma confirmação precise ser recebida. O Tamanho de
Janela inicial é determinado durante a inicialização da sessão através do handshake
triplo. Durante o processo de transferência dos dados, emissor e receptor ajustam o
tamanho da janela de acordo com a quantidade de dados que podem tratar.
2C.5.5 Controle de Congestionamento
Visa evitar que a rede não seja congestionada. Isso se deve, pois nada adianta
enviar dados a uma taxa que o emissor possa receber mas que a rede não possa tratar
devido a congestionamento. Para isso há a Janela de Congestionamento, custo
tamanho máximo é o do Tamanho da Janela. A janela de congestionamento visa também
controlar a quantidade de dados que são enviados para a rede. Assim o máximo de dados
que pode ser enviado antes de receber uma confirmação (ACK) é o menor das duas
janelas (Tamanho da Janela e Janela de Congestionamento). O tamanho da Janela
de Congestionamento é reduzido ou aumentado de acordo com o estado da rede, isto é,
se está mais congestionada o tamanho é reduzido e se não está congestionada o
tamanho é aumentado. 
Quando segmentos são perdidos, indica que a rede está congestionada, assim a
Janela de Congestionamento é reduzido a metade. Quando reconhecimentos (ACK) são
recebidos, indica que a rede está conseguindo entregar os segmentos, indicando que a
mesma não está congestionada, assim a Janela de Congestionamento é incrementada do
tamanho de um segmento. Esse mecanismo é conhecido como AIMD (Additive
increase/multiplicative decrease)
– Partida Lenta: Nesso processo, ao iniciar uma conexão, o tamanho da Janela de
Congestionamento é igual ao tamanho de um segmento, a cada reconhecimento de
segmento recebido, o tamanho da Janela de Congestionamento é dobrado, esse
processo ocorre até ocorrer o primeiro evento de perda de segmento.
2C.6 UDP
É um protocolo que fornece apenas as funções básicas da camada de Transporte.
Possui overhead (excesso de processamento) muito mais baixo do que o TCP, já que não
é orientado à conexão e não fornece mecanismos de retransmissão, sequenciamento e
controle de fluxo sofisticados.
2C.61. Reagrupamento de Segmentos UDP
Quando múltiplos datagramas são enviados a um destino, eles podem tomar
diferentes caminhos e chegar na ordem errada. Como no cabeçalho UDP, não há
números de sequência, o UDP não tem um modo para reordenar os datagramas na sua
ordem de transmissão. Portanto, o UDP simplesmente reagrupa os dados na ordem que
eles foram recebidos e os encaminha para a aplicação. 
Se a sequência dos dados é importante para a aplicação, ele terá que identificar a
sequência apropriada dos dados e determinar como os dados devem ser processados.
PRÁTICAS
– Roteiro de Laboratório 4 – Análise do protocolo TCP com o Wireshark

Continue navegando