Вы находитесь на странице: 1из 49

Camada de Transporte

Prof. Mauro Tapajs

Introduo
Sua funo oferecer transporte de dados confivel e efetivo entre uma mquina origem at uma mquina destino Dois tipos de servio de transporte: orientado a conexo e no-orientado a conexo O estabelecimento de conexo (nestes tipos de servios) garante que:

Um lado saiba da existncia do outro Haja negociao de parmetros Sejam alocados recursos da entidade de transporte

Por que a Camada de Transporte?


Camada de rede pode no oferecer um servio confivel Isola as aplicaes de quaisquer imperfeies no trnsito de pacotes (perdas, duplicatas, etc) Permite desenvolvimento de rotinas bsicas que funcionariam em qualquer tipo de plataforma de rede (o que pode variar muito IP, Novell, SNA) Permite a entrega de dados aplicaes especficas numa mquina

Protocolos de Transporte
Camada de enlace: comunicao entre vizinhos diretamente conectados na mesma tecnologia de rede Camada de Transporte: comunicao fim-a-fim atravs de diversas tecnologias de rede

Multiplexao
Vrias aplicaes usam o mesmo protocolo de transporte para suas conexes Tendncia normal ao uso de vrias conexes de transporte sobre um mesmo circuito virtual Uso de vrias conexes para um mesmo fluxo de dados visando aumentar a taxa de bits total

Protocolos de Transporte Endereamento


Necessidade de endereamento para aplicaes de rede Protocolo de incio de conexo deve saber com qual das aplicaes na mquina vai se comunicar Servidor de nomes/diretrios alternativa que indica servios registrados que podem mudar de endereo de rede e transporte

Encapsulamento de Protocolos de Transporte

Estabelecimento de Conexes
Estabelecimento de conexes: problemas com pacotes duplicados pela rede Soluo: handshakede 3 passos

Desconexo
Desconexo no um problema to simples como parece Normalmente usado uma desconexo de 3 passos com temporizadores
Desconexo assimtrica: interrupo abrupta da comunicao com possvel perda de dados Desconexo simtrica: assume duas conexes unidirecionais e exige que cada uma seja desconectada em separado

Desconexo Problema dos dois exrcitos

Como sincronizar o ataque azul?

Protocolos de Transporte
Implementados nos hosts finais e no nos roteadores Controle de fluxo: necessrio como na camada de enlace de dados, s que fim-a-fim Diferena bsica: numa pilha de transporte podem existir vrias conexes ao mesmo tempo exige disponibilidade de buffers no um esquema independente para cada link (o espao de memria nico para todas as conexes) Uma possvel soluo janelas deslizantes de tamanho varivel e ajustado pelo transmissor

Protocolos de Transporte

Protocolos de Transporte TCP/IP


Suas implementaes normalmente so em software (bibliotecas) No conjunto de protocolos TCP/IP temos a oferta de servio orientado a conexo e confivel (protocolo TCP) e servio no-orientado a conexo baseado em datagrama (protocolo UDP) Outros protocolos de transporte: protocolos OSI TP0, TP1, TP2, TP3 e TP4

Transmission Control Protocol (TCP)


Apresentado primeiramente na RFC 793, com o tempo foram registradas vrias evolues

Protocolo TCP
Baseado na transferncia de sequncias de bytes entre buffers de transmisso e recepo Bem projetado: no mudou muito desde sua apario nos anos 60 Suporta aplicaes bsicas como TELNET, FTP e correio eletrnico Especifica o formato dos dados e confirmaes usadas na transferncia daqueles, garantindo a correta entrega dos dados de clientes a servidores e vice-versa Implementa suporte para deteco de erros e disparo de retransmisses quando necessrio Permite que mltiplas aplicaes num sistema possam se comunicar concorrentemente tratando a operao multiplexada

Conexes TCP
Baseado no conceito de sockets (endpoints) Um socket em TCP identificado por uma porta e o endereo IP da mquina Um mesmo socket pode suportar vrias conexes ao mesmo tempo No suporta multicasting e broadcasting (sempre ponto-a-ponto e full-duplex) Cada conexo identificada pelos nmeros dos sockets nas duas pontas Sockets tambm o nome de uma biblioteca de subrotinas que prov acesso s facilidades TCP/IP

Software TCP

Cabealho TCP

Cabealho TCP
Portas (origem e destino) Sequence number: do primeiro byte deste segmento Acknowledgement number: prximo byte a receber Data Offset - Header lenght: comprimento do cabealho em palavras de 32 bits

Cabealho TCP
Urgent Pointer: indica at onde vo os dados considerados urgentes neste segmento (out-of-band data) Window Size: tamanho da janela sendo usada. Caso seja 0 significa interromper a transmisso de mais segmentos temporariamente at o envio de valor maior que zero novamente De maneira semelhante aos cabealhos IPv4, possvel se ter cabealhos opcionais no TCP

Cabealho TCP
Bits de Controle:

Checksum: computado sobre o cabealho TCP e


o seguinte pseudo-cabealho:

Exemplo: Encapsulamento TCP sobre Ethernet

Algumas Opes TCP Performance


Normalmente negociadas na conexo
mss (maximum segment size) - maior tamanho suportado de um segmento nico wscale (window scale) expande o valor mximo do tamanho da janela (window) usado somente nos segmentos SYN - RFC 1323 timestamp uso em medies RTTM (Round Trip Time Measurements) e checagem de segmentos duplicados antigos RFC 1323 sack (selective ack) estratgia de confirmao selective repeat RFC 2018

Estabelecimento de Conexes TCP


Pedidos de conexo utilizam o bit SYN=1 Pedidos de desconexo utilizam o bit FIN=1
Conexes atravs de 3way handshake Mantidas com segmentos keepalive A desconexo simtrica (cada direo desfeita separadamente) Temporizadores so usados na desconexo para evitar o problema dos dois exrcitos

Desconexo TCP

Controles do TCP
Segmentos vazios (sem dados) keepalive podem ser usados para confirmaes e controle Controle de congestionamento implicitamente feito, j que a soluo baixar a taxa de dados que entra na rede Este controle feito com base nos limites do receptor (janela TCP) e da rede (janela de congestionamento) O controle de temporizadores no to simples (as respostas da rede IP dependem de vrios fatores)

Controle de Fluxo TCP


Uso de segmentos (cabealho TCP mais um ou mais bytes de dados a serem transmitidos) Numera individualmente os bytes sendo transmitidos para controle de fluxo Utiliza um esquema de janela deslizante para confirmar a informao recebida Caso um segmento seja maior que 65495 bytes (limite do pacote IP=64k) ou maior que o MTU da rede, ele deve ser fragmentado (podendo gerar problemas de confirmao e remontagem na recepo)

Piggybacking TCP
Dados de A para B ACK de B para A

SEQ

ACK

WIN

A
N SEQ ACK WIN

Dados de B para A

ACK de A para B

Controle de Fluxo de Segmentos TCP

Small Packet Problem


Causado por aplicaes que enviem apenas 1 byte por vez (algumas aplicaes tem este perfil como terminais remotos) Isto obriga o receptor a receber o byte e confirm-lo com todo um segmento Aps ler o byte, o receptor envia novamente todo um segmento com o novo valor no campo window Isto causa uma sequncia de segmentos pequenos (1 byte de payload) na rede que devem ser transportados junto com os 40 bytes do cabealho TCP/IP. Perda significativa de performance!

Small Packet Problem - Exemplo


Sender Application does a 1B write
1
SEQ= 0
1

Receiver 0

Receivers buffer 4K Empty

ACK = 1 WIN = 4095 ACK = 1 WIN = 4096

Application reads 1 B Empty

Application does a 1B write


1
SEQ= 1
1

ACK = 2 WIN = 4095

ACK = 2 WIN = 4096

Application reads 1 B Empty

etc.

Silly Window Sindrome


Causado por aplicaes que leiam apenas 1 byte por vez do seu buffer de recepo Estes receptores logo tem seu buffer cheio. Ao ler apenas 1 byte, o TCP envia todo um segmento para confirm-lo e liberando o envio de apenas mais um byte (campo window) Aps receber a confirmao, o transmissor segue e envia mais um segmento com somente 1 byte Mais uma vez Isto causa uma sequncia de segmentos pequenos na rede que devem ser transportados junto com os 40 bytes do cabealho TCP/IP. Perda significativa de performance!

Silly Window Sindrome - Exemplo


Sender Application does a 4K write
4K

Receiver 0

Receivers buffer 4K Empty

Sender blocked Full Application does a 1K write


ACK = 4096 WIN = 0
ACK = 4096 WIN = 1

Application reads 1 B 4095

Full
ACK = 4097 WIN = 0
ACK = 4097 WIN = 1

Application reads 1 B 4095

etc.

Como resolver estes casos?


Algoritmo de NAGLE: na transmisso, envie o primeiro byte e mantenha os demais em buffer. Ao receber a confirmao, envie todos os demais num nico segmento Algoritmo de CLARK: na recepo, no permita leituras de 1 byte somente. Exije que haja um considervel espao de buffer para se ler. Este espao o menor entre o tamanho mximo de segmento passado durante e conexo e a metade do seu buffer Deve haver cuidado com o tempo de resposta que pode crescer com estes procedimentos!

Round Trip Time - RTT


Tempo para o dado chegar Network Tempo para o ACK retornar RTT = tempo do pacote chegar ao destino + tempo para o ACK retornar Usado para clculos de tempo mximo de espera de uma confirmao (timeouts)

Slow Start TCP


Mtodo implcito de controle de congestionamento Inicia com o envio de 1 segmento e segue aumentando at chegar no limite (threshold) ou haverem perdas de pacotes

Controle de Congestionamento TCP


TCP: responsabilidade pelo controle de congestionamento fim-a-fim Uso da congestion window - inicia com valor igual ao mximo tamanho de segmento na conexo e duplicado a cada ACK recebido Em casos de congestionamento (timeout de segmentos), a congestion window voltar ao valor inicial O valor mximo que poder ser enviado ser o mnimo entre a congestion window e o ltimo valor de window recebido)

Controle de Congestionamento TCP Congestion Window


Threshold: metade do valor da CW no slow start (incio em 64k)

Congestion avoidance

TCP Congestion Avoidance

Aps o threshold a curva cresce de forma linear Este estado chamado de congestion avoidance Nele, a CW aumenta de forma linear, aumentando em 1, desde que todos os segmentos na janela tenham sido confirmados suavizao da curva

Timers TCP
Controlam a temporizao do protocolo algo j visto que difcil num protocolo de transporte
Timer de retransmisso o quanto se espera pela confirmao de um segmento (TCP usa um algoritmo que recalcula o timer pelo RTT) Algoritmo de Karn dobra o timer de retransmisso e no recalcula o RTT em segmentos retransmitidos evitar reclculos errados do RTT (o ack que chegou do segmento original ou da retransmisso?) Timer de persistncia o quanto se espera para se poder transmitir de novo (window 0) Timer de keepalive quando a conexo ficar em silncio, checa de o outro lado est l (controverso)

Limitaes TCP
Cabealhos extensos para um protocolo de transporte Checksum falho para integridade a nvel de transporte e redundante quando se usa protocolos de camada 2 confiveis (como HDLC ou Ethernet) A funcionalidade de dados urgent no uma soluo completa de sinalizao out-of-band por que submetida ao mesmo controle de fluxo dos dados normais Entrega rpida de trfego de mensagens deve usar a opo de push

User Datagram Protocol (UDP)


Descrito na RFC 768 com posteriores evolues Oferece s aplicaes a capacidade de enviar pacotes IP encapsulados (e no um fluxo de bytes) por um protocolo de transporte sem conexo Basicamente oferece a capacidade de endereamento de aplicao em portas ao protocolo IP

Protocolo UDP
Utilizado quando: necessrio o envio de mensagens de multicast ou broadcast O overhead gerado por procedimentos de conexo injustificado ou no tolerado pela aplicao em uso Aplicaes de amostragem de dados (Ex.: sensores) Servios request-response (a aplicao toma a responsabilidade de verificar mensagens que no chegam) Aplicaes de tempo-real onde temporizao o mais importante

Cabealho UDP

Portas de origem e destino Lenght: o comprimento de todo o segmento UDP Checksum: calculado sobre todo o segmento e mais o mesmo pseudo-cabealho usado em TCP

Algumas Portas Conhecidas (Well-Known)

O que um Socket?
Uma estrutura de dados que representa um ponto final na comunicao entre aplicaes Suas facilidades normalmente so disponiblizadas numa biblioteca (API)

Biblioteca Sockets
Primitivas na forma de uma biblioteca que oferece servios bsicos de transporte

Sockets

Sockets TCP (Exemplo)

Вам также может понравиться