Redes de Computadores
6. Camada de Transporte
Elvio Leonardo
DIN/CTC/UEM
Principais Fun¸c˜oes
I
Oferece conex˜ao l´ogica entre duas extremidades da rede
I
Oferece controle fim-a-fim de fluxo e confiabilidade
I
Independente da tecnologia utilizada na rede
I meio f´ısico, estrutura e topologia da rede, etc.
I
Significa a fronteira entre equipamento de rede e de usu´ario
I
Tipicamente utiliza o modelo cliente-servidor
I
Protocolos mais populares:
I Transmission Control Protocol (TCP) I User Datagram Protocol (UDP)
I
Tarefas:
I Segmenta¸c˜ao de dados da camada superior I Estabelecimento da conex˜ao fim-a-fim I Multiplexa¸c˜ao de fluxos
I Envio de segmentos com confiabilidade (com controle de fluxo,
Berkeley Sockets
I
Fornece uma API (application programming interface) para
comunica¸c˜ao entre processos (locais ou remotos)
I
Inclui uma biblioteca em linguagem C; hoje dispon´ıvel em
outras linguagens
I
Inicialmente desenvolvido para Unix; hoje dispon´ıvel em outros
sistemas operacionais
I
Tornou-se a interface padr˜ao para abstrair conex˜oes de rede
I
Utiliza o modelo cliente-servidor
Berkeley Sockets
I
Servidor
I Cria um socket utilizando a primitiva (fun¸c˜ao) SOCKET I Liga o socket a uma porta (utilizando BIND)
I Prepara o socket para ouvir (utilizando LISTEN)
I Permanece bloqueado enquanto aceita solicita¸c˜oes de conex˜ao
(utilizando o ACCEPT)
I Comunica-se com o cliente (utilizando SEND e RECEIVE) I Fecha o socket que n˜ao ´e mais necess´ario (utilizando CLOSE)
I
Cliente
I Cria um socket (utilizando SOCKET)
I Conecta com o servidor (utilizando CONNECT)
I Comunica-se com o servidor (utilizando SEND e RECEIVE) I Termina a conex˜ao que n˜ao ´e mais necess´aria (utilizando
Endere¸camento
I
Endere¸co de rede especifica a m´aquina (interface)
I
Endere¸co de transporte especifica o processo/aplica¸c˜ao
I
Na internet, esse endere¸co ´e denominado porta
Endere¸camento
I
Como o cliente sabe o endere¸co (n´umero da porta) onde o
servidor estar´a oferecendo os seus servi¸cos?
I
Servi¸cos tˆem o endere¸co fixo e publicamente conhecido
I Servi¸cos com menor demanda podem usar um servidor de
processos
I Servidor de processos aceita pedidos de conex˜ao e encaminha
Estabelecimento da Conex˜ao
I
Problema: segmentos que ficam vagando pela rede e podem
causar efeitos indesej´aveis
I
Solu¸c˜ao:
I Segmentos e suas confirma¸c˜oes tˆem vida limitada I Evita reutilizar os n´umeros se existe chance de segmentos
antigos ainda existirem
I Objetivo ´e evitar que 2 PDUs diferentes com numera¸c˜ao
idˆentica existam na rede I
Mecanismo:
I Todas as m´aquinas mant´em um rel´ogio imune a falhas I Os k bits menos significativos desse rel´ogio s˜ao usados para
numera¸c˜ao dos segmentos
I A faixa de numera¸c˜ao deve ser ampla o suficiente evitar que
segmentos diferentes utilizem o mesmo n´umero
Estabelecimento da Conex˜ao
Estabelecimento da Conex˜ao
Encerramento da Conex˜ao
I
Encerramento sim´etrico com 3-way handshake
I Cada sentido ´e tratado independentemente (isto ´e, como se
User Datagram Protocol (UDP)
I
Servi¸co sem conex˜ao (veja RFC 768)
I
Porta (endere¸co) utiliza 16 bits: de 0 a 65535
I Portas 0 a 1023 s˜ao denominadas “bem conhecidas” (well
known) e foram as primeiras definidas
I Portas 1024 a 49151 s˜ao designadas pela Internet Corporation
for Assigned Names and Numbers (ICANN)
I Portas 49152 a 65535 s˜ao de uso geral e tempor´ario
I
Utilizado por:
I Aplica¸c˜oes sens´ıveis ao atraso (retardo) porque um segmento
perdido ´e melhor do que um segmento atrasado
I Servidores respondendo a pequenas requisi¸c˜oes I Exemplos: DNS, IPTV, VoIP, jogos em rede, etc.
Real-time Transport Protocol (RTP)
I
Protocolo padr˜ao para transporte de dados em tempo real
(audio e v´ıdeo on demand ou interativo) (veja RFC 3551 e
RFC 4571)
I
Controle ´e definido pelo RTP Control Protocol (RTCP)
I
Utiliza UDP e mais raramente TCP (portas 5004 para dados e
5005 para controle)
I
Protocolo de carga (RTP)
I Camada fina para tr´afego cont´ınuo oferece detec¸c˜ao de perda,
seguran¸ca, reconstru¸c˜ao temporal e identifica¸c˜ao de conte´udo I
Protocolo de controle (RTPC)
I Permite conferˆencia em tempo real
I Oferece controle de QoS (Quality of Service) e sincroniza¸c˜ao
Real-time Transport Protocol (RTP)
I
Cabe¸calho RTP
I V (version): vers˜ao do protocolo (atualmente 2) I P (padding): enchimento foi utilizado
I X (extension): indica presen¸ca do cabe¸calho de extens˜ao I CC (CSRC count): n´umero de identificadores CSRC existentes I M (mark): utilizado pela aplica¸c˜ao (por exemplo, indica fim de
bloco)
I PT (payload type): formato dos dados
I sequence number: n´umero do segmento (para detec¸c˜ao de
perda de segmentos)
I timestamp: informa¸c˜ao de tempo
I SSRC (synchronization source): identifica fluxos de dados para
efeito de sincroniza¸c˜ao temporal
I CSRC (contributing source): identifica fontes contribuindo
para o fluxo (opcional)
I Extension header: cabe¸calho de extens˜ao, dependente do perfil
Real-time Transport Protocol (RTP)
I
Cabe¸calho RTP
I
RTP Control Protocol (RTCP)
I Principal fun¸c˜ao ´e oferecer feedback da qualidade da
transmiss˜ao
I Transmite periodicamente mensagens de controle a todos os
participantes da sess˜ao
Transmission Control Protocol (TCP)
I
Servi¸co orientado a conex˜ao (veja RFC 793 para come¸co)
I
E provavelmente o protocolo mais importante da Internet
´
I
Caracter´ısticas principais
I Servi¸co full ou half duplex
I Confirma¸c˜ao de recebimento (com ACK) I Janela deslizante com tamanho vari´avel I Sequence number conta bytes
I Checksum no cabe¸calho e no dado
I Receptor re-ordena segmentos e descarta duplicados I Permite controle de fluxo
Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP)
I
Cabe¸calho
I Source port e destination port: endere¸cos I Sequence number: n´umero de seq¨uˆencia
I Acknowledgement number: confirma¸c˜ao de recebimento I URG: campo Urgent pointer ´e v´alido
I ACK: campo Acknowledgement number ´e valido
I PSH (push): dado deve ser passado `a aplica¸c˜ao imediatamente I RST (reset): reinicia a conex˜ao
I SYN: sincroniza n´umeros de seq¨uˆencia para iniciar conex˜ao I FIN: fonte terminou de enviar dados
I Window size: janela de transmiss˜ao
I Checksum: para detec¸c˜ao de erros do cabe¸calho e dado I Urgent pointer: aponta para conte´udo urgente (por exemplo,
Transmission Control Protocol (TCP)
I
Estabelecimento da conex˜ao
I 3-way handshake
Transmission Control Protocol (TCP)
I
M´aquina de estados finitos:
I CLOSED: nenhuma conex˜ao ativa ou pendente I LISTEN: servidor esperando conex˜ao
I SYN RCVD: pedido de conex˜ao recebido I SYN SENT: aplica¸c˜ao solicitou conex˜ao
I ESTABLISHED: conex˜ao estabelecida; transferˆencia de dados I FIN WAIT 1: aplica¸c˜ao solicitou fim da conex˜ao
I FIN WAIT 2: outro lado concordou com t´ermino da conex˜ao I TIMED WAIT: aguarda todos os segmentos extinguirem-se I CLOSING: ambos os lados tentam terminar simultaneamente I CLOSE WAIT: outro lado iniciou t´ermino da conex˜ao I LAST ACK: aguarda todos os segmentos extinguirem-se
Transmission Control Protocol (TCP)
Linhas grossas = transi¸c˜oes normais para cliente; Linhas pontilhadas = transi¸c˜oes normais para servidor; e Linhas finas = transi¸c˜oes anormais
Transmission Control Protocol (TCP)
I
N´umeros de seq¨uˆencia (sequence numbers)
I Importante que n˜ao se re-utilizem n´umeros de segmentos que
ainda estejam circulando pela rede
I Existe um amplo espa¸co para numera¸c˜ao (32 bits) I Valor inicial ´e definido por um rel´ogio na fonte
I M´aquinas devem evitar n´umeros de seq¨uˆencia na faixa proibida I N´umeros de seq¨uˆencia (enviados e confirmados) referem-se a
bytes
I O ACK indica o pr´oximo byte que o receptor espera receber I Mesmo parˆametro utilizado para janelas: quantos bytes o
destino est´a apto a receber I
Persistence timer
I Evita a seguinte situa¸c˜ao:
I receptor enviou ACK com janela = 0, e depois com
janela 6= 0, mas esse ´ultimo segmento perdeu-se
I ambos os lados agora esperam algo acontecer I Origem temporiza pausas de transmiss˜ao e pergunta ao
Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP)
I
Pol´ıtica de transmiss˜ao
I Desde que respeitando a janela do receptor, a origem pode
enviar dados segundo seu desejo
I Deve-se:
I Esperar (500 ms) para que uma quantidade de dados se
acumule antes do envio para evitar tinygrams
I Aplica¸c˜ao pode solicitar um PUSH para for¸car transmiss˜ao I Atrasar o envio de ACK na esperan¸ca de que ele possa ser
embutido em um segmento de dados
I Evitar a sindrome da janela boba I Algoritmo de Nagle
I Uso tipico: aplica¸c˜oes como telnet
I Origem envia primeiro byte e armazena os seguintes I Quando o primeiro byte ´e confirmado (ACK) envia aqueles
armazenados e volta a armazenar os seguintes
Transmission Control Protocol (TCP)
I
Pol´ıtica de transmiss˜ao
Transmission Control Protocol (TCP)
I
Controle de congestionamento
I Na Internet, com o protocolo de rede (IP) sendo sem conex˜ao,
a maior parte da responsabilidade em evitar congestionamentos cai sobre o protocolo de transporte (TCP)
Transmission Control Protocol (TCP)
I
Controle de congestionamento
I Problemas com capacidade do receptor: I Utiliza janela deslizante
I Problemas com capacidade da rede:
I Perda de pacotes devido a ru´ıdo ou erros causados pelo meio
s˜ao raros
I Assim, perda de pacote ´e causado por timeout I E timeout ´e causado por congestionamento
I Conclus˜ao: TCP assume que perda de pacotes ´e devido a
congestionamento
I Janela de Congestionamento (congestion window) I Fonte mant´em janela de congestionamento (valor inicial:
m´aximo tamanho de segmento)
I Se ACK recebido, janela de congestionamento tem valor
dobrado at´e chegar ao limiar (valor inicial: 64 Kbytes) ou aumenta linearmente se j´a est´a acima do limiar
I Se ocorrer timeout, o limiar ´e reduzido a metade e a janela de
Transmission Control Protocol (TCP)
I
Controle de congestionamento
I Mecanismo denominado slow-start
I Janela de transmiss˜ao = valor m´ınimo entre janela do
Transmission Control Protocol (TCP)
I
Controle de retransmiss˜ao
I Dificuldade em estimar o tempo correto de timeout
I Para funcionamento efetivo, retransmiss˜ao deve ser adaptativa I Fonte monitora atraso do ACK e calcula o timeout utilizando
an´alise estat´ıstica
Densidade de probabilidade do tempo de recebimento do ACK (a) camada de enlace de dados; (b) camada de transporte
Transmission Control Protocol (TCP)
I
Controle de retransmiss˜ao
I Com uma nova medida M do tempo necess´ario para
transmiss˜ao e recebimento do ACK (round trip time ou RTT), calcula-se
I Nova estimativa do round trip time:
RTTnovo = RTTvelho + (1 − α) M onde α ´e um fator de escala (tipicamento 7/8)
I Estimativa do desvio padr˜ao (D) do RTT
Dnovo = α Dvelho + (1 − α) |RTT − M|
I Tipicamente o valor do timeout ´e dado por
Transmission Control Protocol (TCP)
I
Controle de retransmiss˜ao
I Algoritmo de Karn
I Quando ocorre timeout, o segmento TCP ´e retransmitido I Quando o ACK chega, ele ´e para a transmiss˜ao original ou
para o segmento retransmitido?
I Uma reposta incorreta pode ter uma influˆencia muito negativa
na estimativa do RTT
I O algoritmo de Karn recomenda atualizar o RTT s´omente
para segmentos que n˜ao s˜ao retransmitidos
Transmission Control Protocol (TCP)
I
Wireless TCP
I Enlaces por r´adio (sem fio) tem confiabilidade mais baixa e
podem perder mensagens/pacotes por causa do ru´ıdo
I Portanto a presun¸c˜ao do TCP de que retransmiss˜ao indica
congestionamento n˜ao ´e mais v´alida
I Conex˜oes TCP s˜ao fim-a-fim e podem incluir um segmento
feito por r´adio
I Alternativas:
I Quebrar a conex˜ao TCP em 2 partes: a parte com fio e a
parte sem fio
I Base Station antecipar-se e enviar ACK para evitar “falso”
Transmission Control Protocol (TCP)
I
Transactional TCP (T/TCP)
I TCP n˜ao ´e eficiente para conex˜oes de curta dura¸c˜ao I UDP n˜ao ´e confi´avel
I Uma solu¸c˜ao: TCP transacional