Capítulo 3: Camada de Transporte
Metas do capítulo:
Sumário do Capítulo:
 compreender os
 serviços da camada de transporte
princípios atrás dos
serviços da camada de
transporte:



multiplexação/
desmultiplexação
controle de fluxo
controle de
congestionamento
 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-1
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

aplicação
transporte
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
aplicação
transporte
rede
enlace
física
depende de, estende serviços
da camada de rede
3: Camada de Transporte
3b-2
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ção
transporte
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
aplicação
transporte
rede
enlace
física
3: Camada de Transporte
3b-3
Multiplexação/desmultiplexação
Lembrança: segmento unidade de dados trocada
entre entidades da camada
de transporte
 = TPDU: transport
protocol data unit
dados da camada
de aplicação
cabeçalho
de segmento
P1
M
aplicação
segmento Ht M transporte
Hn segmento
rede
Desmultiplexação: entrega de
segmentos recebidos para os
processos da camada de apl
corretos
P3
receptor
M
M
aplicação
transporte
rede
P4
M
P2
aplicação
transporte
rede
3: Camada de Transporte
3b-4
Multiplexação/desmultiplexação
Multiplexação:
juntar dados de múltiplos
processos de apl, envelopando
dados com cabeçalho (usado
depois para 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
32 bits
porta remetente porta receptor
outros campos
do cabeçalho
dados da
aplicação
(mensagem)
formato de segmento
TCP/UDP
3: Camada de Transporte
3b-5
Multiplexação/desmultiplexação: exemplos
estação
A
porta orig.: x
porta dest: 23
servidor
B
porta orig:23
porta dest: x
IP orig : C
IP dest: B
porta orig: y
porta dest: 80
uso de portas:
apl. simples de telnet
cliente WWW
estação A
Web client
host C
IP orig: A
IP dest: B
porta orig: x
porta dest: 80
IP orig: C
IP dest: B
porta orig: x
porta dest: 80
servidor
WWW B
uso de portas :
servidor WWW
3: Camada de Transporte
3b-6
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-7
Mais sobre UDP
Comprimento em
bytes do
segmento UDP,
incluindo
 muito utilizado para apls. de
cabeçalho
meios contínuos (voz, vídeo)


tolerantes de perdas
sensíveis à taxa de
transmissão
 outros usos de UDP (por
32 bits
porta origem
porta dest.
comprimento
checksum
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.!

Dados de
aplicação
(mensagem)
UDP segment format
3: Camada de Transporte
3b-8
Checksum UDP
Meta: detecta “erro” (e.g., bits invertidos) no
segmento transmitido
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 ….
3: Camada de Transporte
3b-9
TCP: Visão geral
RFCs: 793, 1122, 1323, 2018, 2581
 ponto a ponto:
 1 remetente, 1 receptor
 transmissão full duplex:
 fluxo de dados bidirecional na mesma
 fluxo de bytes, ordenados,
conexão
confiável:
 MSS: tamanho máximo de
 não estruturado em msgs
segmento
 dutado:
 orientado a conexão:
 tam. da janela ajustado por
 handshaking (troca de
controle de fluxo e
msgs de controle) inicia
congestionamento do TCP
estado de remetente,

socket
door
buffers de envio e recepção
application
writes data
application
reads data
TCP
send buffer
TCP
receive buffer
segment
socket
door
receptor antes de trocar
dados
 fluxo controlado:
 receptor não será afogado
3: Camada de Transporte 3b-10
TCP: estrutura do segmento
32 bits
URG: dados urgentes
(pouco usados)
ACK: no. ACK
válido
PSH: envia dados já
(pouco usado)
RST, SYN, FIN:
gestão de conexão
(comandos de
estabelecimento,
liberação)
checksum
Internet
(como UDP)
no. porta origem no. porta dest
número de seqüência
número de reconhecimento
tam. sem
UA P R S F
cab. uso
checksum
janela receptor
ptr dados urg.
Opções (tam. variável)
contagem
de dados
por bytes
(não segmentos!)
no. bytes
rcpt quer
aceitar
dados da
aplicação
(tam. variável)
3: Camada de Transporte 3b-11
TCP: números de Seq. e ACKs
Nos. 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 cumulativo
P: como receptor trata
segmentos fora da
ordem?
 R: espec do TCP
omissa - deixado ao
implementador
Estação A
Usuário
tecla
‘C’
Estação B
B reconhece
chegada de
‘C’, ecoa
‘C’ de volta
A reconhece
chegada
do ‘C’
ecoado
cenário simples de telnet
tempo
3: Camada de Transporte 3b-13
TCP geração de ACKs [RFCs 1122, 2581]
Evento
Ação do receptor TCP
chegada de segmento em ordem
sem lacunas,
anteriores já reconhecidos
ACK retardado. Espera até 500ms
p/ próx. segmento. Se não chegar
segmento, envia ACK
chegada de segmento em ordem
sem lacunas,
um ACK retardado pendente
envia imediatamente um único
ACK cumulativo
chegada de segmento fora de
ordem, com no. de seq. maior
que esperado -> lacuna
envia ACK duplicado, indicando no.
de seq.do próximo byte esperado
chegada de segmento que
preenche a lacuna parcial ou
completamente
ACK imediato se segmento no
início da lacuna
3: Camada de Transporte 3b-14
TCP em ação: Tráfego http
Cliente
Servidor
Estabelecimento
da Conexão
(3 Way Hand-shake)
TCP
Syn
TCP
TCP
Ack, Syn
Ack
HTTP request
TCP
HTTP response
Transmissão dos
Dados com
Manutenção da
Conexão
TCP
Ack
HTTP response
TCP
Controle de fluxo
através da técnica
do Janelamento !!!
Ack
HTTP response
TCP
Encerramento
da Conexão
TCP
Ack
Fyn
Fyn
TCP
3: Camada de Transporte 3b-15
Cliente
TCP em ação: Tráfego http
(cont)
Servidor
PO: 2031, PD: 80, Seq: 100, Ack: 0, Janela: 3
Syn
PO: 2031, PD: 80, Seq: 101, Ack: 26, Janela: 3
PO:80, PD: 2031, Seq: 25, Ack: 101, Janela: 3
Ack, Syn
Ack
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: 2031, PD: 80, Seq: 104, Ack: 33, Janela: 3
Ack
PO:80, PD: 2031, Seq: 30, Ack: 104, Janela: 3
PO:80, PD: 2031, Seq: 31, Ack: 104, Janela: 3
PO:80, PD: 2031, Seq: 32, Ack: 104, Janela: 3
Ack
PO:80, PD: 2031, Seq: 33, Ack: 105, Janela: 3
PO:80, PD: 2031, Seq: 34, Ack: 105, Janela: 3
PO:80, PD: 2031, Seq: 35, Ack: 105, Janela: 3
PO: 2031, PD: 80, Seq: 105, Ack: 36, Janela: 3
Ack
PO:80, PD: 2031, Seq: 36, Ack: 106, Janela: 3
PO: 2031, PD: 80, Seq: 106, Ack: 37, Janela: 3
Fyn
Fyn
3: Camada de Transporte 3b-16
TCP: cenários de retransmissão
Host A
tempo
X
perda
cenário do
ACK perdido
Host B
Temp. p/ Seq=100
Temp.p/ Seq=92
temporização
Estação A Estação B
tempo
temporização prematura,
ACKs cumulativos
3: Camada de Transporte 3b-17
TCP: Controle de Fluxo
controle de fluxo
remetente não esgotaria
buffers do receptor por
transmitir muito, ou
muito rápidamente
RcvBuffer = tamanho do Buffer de recepção
RcvWindow = espaço vazio no Buffer
receptor: 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
3: Camada de Transporte 3b-18
TCP: Gerenciamento de Conexões
Lembrete: Remetente,
Inicialização em 3 tempos:
receptor TCP estabelecem
Passo 1: sistema cliente envia
“conexão” antes de trocar
segmento de controle SYN do TCP
segmentos de dados
ao servidor
 inicializam variáveis TCP:
 especifica no. inicial de seq
 nos. de seq.
 buffers, info s/ controle
Passo 2: sistema servidor recebe
de fluxo (p.ex. RcvWindow)
SYN, responde com segmento de
 cliente: iniciador de conexão
controle SYNACK
Socket clientSocket = new
Socket("hostname","port


number");

servidor: contactado por

cliente
Socket connectionSocket =
welcomeSocket.accept();
reconhece SYN recebido
aloca buffers
especifica no. inicial de seq.
servidor-> receptor
3: Camada de Transporte 3b-19
TCP: Gerenciamento de Conexões (cont.)
Encerrando uma conexão:
cliente
servidor
fechar
cliente fecha soquete:
clientSocket.close();
Passo 1: sistema cliente envia
fechar
Passo 2: servidor recebe FIN,
responde com ACK. Encerra a
conexão, enviando FIN.
espera
temporizada
segmento de controle FIN ao
servidor
fechada
3: Camada de Transporte 3b-20
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.
servidor
fechando
fechando
espera
temporizada

cliente
fechada
fechada
3: Camada de Transporte 3b-21
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-22
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
Próximo capítulo:
 saímos da “borda” da
rede (camadas de
aplicação e transporte)
 entramos no “núcleo”da
rede
 instanciação e implementação na
Internet
 UDP
 TCP
3: Camada de Transporte 3b-23
Download

Camada de Transporte