Upload
internet
View
103
Download
0
Embed Size (px)
Citation preview
3: Camada de Transporte 3b-1
Capítulo 3: Camada de TransporteMetas do capítulo: compreender os
princípios atrás dos serviços da camada de transporte: multiplexação/
desmultiplexação controle de fluxo controle de
congestionamento
Sumário do Capítulo: serviços da camada de transporte multiplexação/desmultiplexação transporte sem conexão: UDP transporte orientado a conexão:
TCP transferência confiável controle de fluxo gerenciamento de conexões
principles de controle de congestionamento
controle de congestionamento em TCP
3: Camada de Transporte 3b-2
Serviços e protocolos de transporte
provê comunicação lógica entre processos de aplicação executando em hospedeiros diferentes
protocolos de transporte executam em sistemas terminais
serviços das camadas de transporte X rede:
camada de rede : dados transferidos entre sistemas
camada de transporte: dados transferidos entre processos depende de, estende
serviços da camada de rede
aplicaçãotransporte
redeenlacefísica
redeenlacefísica
aplicaçãotransporte
redeenlacefísica
redeenlacefísica
redeenlacefísica
redeenlacefísica
redeenlacefísica
transporte lógico fim a fim
3: Camada de Transporte 3b-3
Protocolos da camada de transporte
Serviços de transporte na Internet:
entrega confiável, ordenada, ponto a ponto (TCP) congestionamento controle de fluxo estabelecimento de
conexão (setup) entrega não confiável,
(“melhor esforço”), não ordenada, ponto a ponto ou multiponto: UDP
serviços não disponíveis: tempo-real garantias de banda multiponto confiável
aplicaçãotransporte
redeenlacefísica
redeenlacefísica
aplicaçãotransporte
redeenlacefísica
redeenlacefísica
redeenlacefísica
redeenlacefísica
redeenlacefísica
transporte lógico fim a fim
3: Camada de Transporte 3b-4
aplicaçãotransporte
rede
MP2
aplicaçãotransporte
rede
Multiplexação/desmultiplexação
Lembrança: segmento - unidade de dados trocada entre entidades da camada de transporte = TPDU: transport
protocol data unit
receptor
HtHn
Desmultiplexação: entrega de segmentos recebidos para os processos da camada de apl corretos
segmento
segmento Maplicaçãotransporte
rede
P1M
M MP3 P4
cabeçalhode segmento
dados da camada de aplicação
3: Camada de Transporte 3b-5
Multiplexação/desmultiplexação
multiplexação/desmultiplexação: baseadas em números de porta e
endereços IP de remetente e receptor números de porta de
remetente/receptor em cada segmento
lembrete: número de porta bem conhecido para aplicações específicas
juntar dados de múltiplosprocessos de apl, envelopandodados com cabeçalho (usado depois para desmultiplexação)
porta remetente porta receptor
32 bits
dados daaplicação
(mensagem)
outros campos do cabeçalho
formato de segmento TCP/UDP
Multiplexação:
3: Camada de Transporte 3b-6
Multiplexação/desmultiplexação: exemplos
estação A
servidor B
porta orig.: xporta dest: 23
porta orig:23porta dest: x
uso de portas: apl. simples de telnet
cliente WWWestação A
servidor WWW B
Web clienthost C
IP orig: CIP dest: B
porta orig: xporta dest: 80
IP orig : CIP dest: B
porta orig: yporta dest: 80
uso de portas : servidor WWW
IP orig: AIP dest: B
porta orig: xporta dest:
80
3: Camada de Transporte 3b-7
UDP: User Datagram Protocol [RFC 768]
Protocolo de transporte da Internet mínimo, “sem frescura”,
Serviço “melhor esforço”, segmentos UDP podem ser: perdidos entregues à aplicação fora
de ordem do remesso 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 no remetente/receptor
pequeno cabeçalho de segmento
sem controle de congestionamento: UDP pode transmitir o mais rápido possível
3: Camada de Transporte 3b-8
Mais sobre UDP
muito utilizado para apls. de meios contínuos (voz, vídeo) tolerantes de perdas sensíveis à taxa de
transmissão
outros usos de UDP (por quê?): DNS (nomes) SNMP (gerenciamento)
transferência confiável com UDP: incluir confiabilidade na camada de aplicação recuperação de erro
específica à apl.!
porta origem porta dest.
32 bits
Dados de aplicação
(mensagem)
UDP segment format
comprimento checksum
Comprimento embytes do
segmento UDP,incluindo cabeçalho
3: Camada de Transporte 3b-9
Checksum UDP
Remetente: trata conteúdo do segmento
como sequência de inteiros de 16-bits
campo checksum zerado checksum: soma (adição
usando complemento de 1) do conteúdo do segmento
remetente coloca complemento do valor da soma no campo checksum de UDP
Receiver: computa checksum do
segmento recebido verifica se checksum
computado é zero: NÃO - erro detectado SIM - nenhum erro
detectado. Mas ainda pode ter erros? Veja depois ….
Meta: detecta “erro” (e.g., bits invertidos) no segmento transmitido
3: Camada de Transporte 3b-10
TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581
transmissão full duplex: fluxo de dados bi-
direcional na mesma conexão
MSS: tamanho máximo de segmento
orientado a conexão: handshaking (troca de
msgs de controle) inicia estado de remetente, receptor antes de trocar dados
fluxo controlado: receptor não será afogado
ponto a ponto: 1 remetente, 1 receptor
fluxo de bytes, ordenados, confiável: não estruturado em msgs
dutado: tam. da janela ajustado por
controle de fluxo e congestionamento do TCP
buffers de envio e recepção
socketdoor
T C Psend buffer
T C Preceive buffer
socketdoor
segm ent
applicationwrites data
applicationreads data
3: Camada de Transporte 3b-11
TCP: estrutura do segmento
no. porta origemno. porta dest
32 bits
dados daaplicação
(tam. variável)
número de seqüêncianúmero de
reconhecimentojanela receptor
ptr dados urg.checksum
FSRPAUtam.cab.
semuso
Opções (tam. variável)
URG: dados urgentes (pouco usados)
ACK: no. ACKválido
PSH: envia dados já(pouco usado)
RST, SYN, FIN:gestão de conexão
(comandos deestabelecimento,
liberação)
no. bytes rcpt queraceitar
contagem de dadospor bytes (não segmentos!)
checksum Internet
(como UDP)
3: Camada de Transporte 3b-13
TCP: números de Seq. e ACKsNos. de seq.:
“número”dentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs: no. de seq do próx.
byte esperado do outro lado
ACK cumulativoP: como receptor trata
segmentos fora da ordem? R: espec do TCP
omissa - deixado ao implementador
Estação A Estação B
Seq=42, ACK=79, data = ‘C’
Seq=79, ACK=43, data = ‘C’
Seq=43, ACK=80
Usuáriotecla‘C’
A reconhecechegada
do ‘C’ecoado
B reconhecechegada de
‘C’, ecoa‘C’ de volta
tempocenário simples de telnet
3: Camada de Transporte 3b-14
TCP geração de ACKs [RFCs 1122, 2581]
Evento
chegada de segmento em ordemsem lacunas,anteriores já reconhecidos
chegada de segmento em ordemsem lacunas,um ACK retardado pendente
chegada de segmento fora de ordem, com no. de seq. maiorque esperado -> lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Ação do receptor TCP
ACK retardado. Espera até 500msp/ próx. segmento. Se não chegarsegmento, envia ACK
envia imediatamente um únicoACK cumulativo
envia ACK duplicado, indicando no. de seq.do próximo byte esperado
ACK imediato se segmento noinício da lacuna
3: Camada de Transporte 3b-15
HTTP request
HTTP response
HTTP response
HTTP response
TCP
TCP
TCP
TCP
TCPTCP
TCP
TCP
TCPEstabelecimento
da Conexão(3 Way Hand-shake)
Transmissão dos Dados com
Manutenção daConexão
Encerramentoda Conexão
Syn
Ack, Syn
Ack
Ack
Ack
Ack
Fyn
Fyn
Controle de fluxo através da técnicado Janelamento !!!
Cliente Servidor
TCP em ação: Tráfego http
3: Camada de Transporte 3b-16
Syn
Ack, Syn
Ack
Ack
Ack
Ack
Fyn
Fyn
PO: 2031, PD: 80, Seq: 100, Ack: 0, Janela: 3
PO:80, PD: 2031, Seq: 25, Ack: 101, Janela: 3
PO: 2031, PD: 80, Seq: 101, Ack: 26, Janela: 3
PO: 2031, PD: 80, Seq: 102, Ack: 26, Janela: 3 PO:80, PD: 2031, Seq: 26, Ack: 103, Janela: 3 PO:80, PD: 2031, Seq: 27, Ack: 103, Janela: 3 PO:80, PD: 2031, Seq: 28, Ack: 103, Janela: 3 PO:80, PD: 2031, Seq: 29, Ack: 103, Janela: 3
PO: 2031, PD: 80, Seq: 103, Ack: 30, Janela: 3
PO:80, PD: 2031, Seq: 31, Ack: 104, Janela: 3 PO:80, PD: 2031, Seq: 32, Ack: 104, Janela: 3
PO:80, PD: 2031, Seq: 30, Ack: 104, Janela: 3
PO: 2031, PD: 80, Seq: 104, Ack: 33, Janela: 3
PO:80, PD: 2031, Seq: 34, Ack: 105, Janela: 3 PO:80, PD: 2031, Seq: 35, Ack: 105, Janela: 3
PO:80, PD: 2031, Seq: 33, Ack: 105, Janela: 3
PO: 2031, PD: 80, Seq: 105, Ack: 36, Janela: 3
PO:80, PD: 2031, Seq: 36, Ack: 106, Janela: 3
PO: 2031, PD: 80, Seq: 106, Ack: 37, Janela: 3
Cliente Servidor
TCP em ação: Tráfego http(cont)
3: Camada de Transporte 3b-17
TCP: cenários de retransmissão
Estação A
Seq=92, 8 bytes de dados
ACK=100
perda
tem
pori
zaçã
o
tempo cenário doACK perdido
Estação B
X
Seq=92, 8 bytes de dados
ACK=100
Host A
Seq=100, 20 bytes de dados
ACK=100
Tem
p.p
/ Seq=
92
temporização prematura,ACKs cumulativos
Host B
Seq=92, 8 bytes de dados
ACK=120
Seq=92, 8 bytes de dados
Tem
p.
p/
Seq=
100
ACK=120
tempo
3: Camada de Transporte 3b-18
remetente não esgotaria buffers do receptor por
transmitir muito, ou muito rápidamente
controle de fluxo
TCP: Controle de Fluxoreceptor: explicitamente
avisa o remetente da quantidade de espaço livre disponível (muda dinamicamente) campo RcvWindow
no segmento TCP remetente: mantém a
quantidade de dados transmitidos, porém ainda não reconhecidos, menor que o valor mais recente de RcvWindow
buffering pelo receptor
RcvBuffer = tamanho do Buffer de recepção
RcvWindow = espaço vazio no Buffer
3: Camada de Transporte 3b-19
TCP: Gerenciamento de Conexões
Lembrete: Remetente, receptor TCP estabelecem “conexão” antes de trocar segmentos de dados
inicializam variáveis TCP: nos. de seq. buffers, info s/ controle de
fluxo (p.ex. RcvWindow) cliente: iniciador de conexão Socket clientSocket = new
Socket("hostname","port number"); servidor: contactado por cliente Socket connectionSocket =
welcomeSocket.accept();
Inicialização em 3 tempos:
Passo 1: sistema cliente envia segmento de controle SYN do TCP ao servidor especifica no. inicial de seq
Passo 2: sistema servidor recebe SYN, responde com segmento de controle SYNACK
reconhece SYN recebido aloca buffers especifica no. inicial de seq.
servidor-> receptor
3: Camada de Transporte 3b-20
TCP: Gerenciamento de Conexões (cont.)
Encerrando uma conexão:
cliente fecha soquete: clientSocket.close();
Passo 1: sistema cliente envia segmento de controle FIN ao servidor
Passo 2: servidor recebe FIN, responde com ACK. Encerra a conexão, enviando FIN.
cliente
FIN
servidor
ACK
ACK
FIN
fechar
fechar
fechada
esp
era
te
mpori
zada
3: Camada de Transporte 3b-21
TCP: Gerenciamento de Conexões (cont.)
Passo 3: cliente recebe FIN, responde com ACK.
Entre em “espera temporizada” - responderá com ACK a FINs recebidos
Step 4: servidor, recebe ACK. Conexão encerrada.
Note: com pequena modificação, consegue tratar de FINs simultâneos.
cliente
FIN
servidor
ACK
ACK
FIN
fechando
fechando
fechada
esp
era
tem
pori
zada
fechada
3: Camada de Transporte 3b-22
Princípios de Controle de Congestionamento
Congestionamento: informalmente: “muitas fontes enviando muitos
dados muito rapidamente para a rede poder tratar”
differente de controle de fluxo! manifestações:
perda de pacotes (esgotamento de buffers em roteadores)
longos atrasos (enfileiramento nos buffers dos roteadores)
um dos 10 problemas mais importantes em redes!
3: Camada de Transporte 3b-23
Capítulo 3: Sumário
Princípios atrás dos serviços da camada de transporte: multiplexação/
desmultiplexação transferência confiável de
dados controle de fluxo
instanciação e implementação na Internet UDP TCP
Próximo capítulo: saímos da “borda” da
rede (camadas de aplicação e transporte)
entramos no “núcleo”da rede